# task-2046: dispatch.py wake-up 로직 v2 — 작업 프롬프트 직접 전송 방식

## 배경
- task-2041에서 "." wake-up 메시지 제거 → 봇 세션이 안 열리는 문제 발생
- "."를 보내면 봇이 작업으로 인식하고, 안 보내면 세션이 안 열림
- 근본 원인: wake-up 메시지와 실제 작업 프롬프트가 분리되어 있음

## ★ 먼저 읽을 파일
- `/home/jay/workspace/dispatch.py` — `_wake_up_bot()` 함수, `_send_task_cron()` 또는 cron 전송 부분

## 해결 방안: wake-up + 작업 프롬프트 통합

### 핵심 변경
현재 흐름:
1. `_wake_up_bot()` → "." 또는 빈 메시지 전송 (세션 깨우기)
2. 45초 딜레이
3. 실제 작업 프롬프트 cron 전송

변경 후 흐름:
1. `_wake_up_bot()` → **실제 작업 프롬프트를 바로 cron으로 전송** (딜레이 없이)
2. 봇 프로세스 미감지 시 → 딜레이 없이 즉시 작업 프롬프트 전송 (cron이 봇을 깨우고 동시에 작업 전달)

### 구현 상세
1. `_wake_up_bot()` 함수에서 polling만 수행 (메시지 전송 제거 — task-2041에서 이미 완료)
2. **wake-up 실패 시에도 작업 cron을 즉시 전송** (딜레이 제거 또는 최소화)
   - 현재: wake-up 실패 → `_dispatch_delay = 45` → 45초 후 작업 전송
   - 변경: wake-up 실패 → `_dispatch_delay = 0` 또는 `5` → 즉시/5초 후 작업 전송
   - cron 자체가 봇을 깨우므로 별도 wake-up 불필요
3. cokacdir의 cron이 봇에 도착하면 봇 프로세스가 자동 시작됨 (cokacdir의 기본 동작)

### 핵심 포인트
- **cokacdir --cron 명령 자체가 봇을 깨운다** — 별도 wake-up 메시지 불필요
- 봇 프로세스가 없어도 cron이 도착하면 cokacdir가 새 세션을 시작함
- 따라서 `_wake_up_bot()`의 polling은 불필요할 수 있음 — 제거 또는 skip 처리

### 확인 필요
- cokacdir --cron으로 보낸 메시지가 봇 프로세스 없이도 도착하는지 확인
- 만약 봇 프로세스가 없으면 cron이 소실된다면, wake-up은 여전히 필요하지만 "." 대신 작업 프롬프트 자체로 wake-up

## 완료 시그니처
- [grep] `_dispatch_delay.*=.*0\|_dispatch_delay.*=.*5` @ `dispatch.py` (딜레이 축소)
- 또는 [grep] `_wake_up_bot` 함수에서 메시지 전송 코드 없음 + 딜레이 축소

## 검증 시나리오
1. 봇 프로세스 미감지 상태에서 dispatch → 봇이 작업 수신 성공
2. `python3 -m pytest tests/test_dispatch.py -x` → PASS
3. 기존 "." 메시지 전송 코드 없음 (task-2041 유지)

## 레벨
- critical

## 프로젝트
- dev-system