# task-2139: dispatch.py wake-up 단순화 — cron 직접 전송 방식으로 원복

**팀**: dev4-team (비슈누 팀장)
**레벨**: critical
**프로젝트**: dev-system

---

## S - Situation

dispatch.py에서 봇에 작업을 전송할 때 `_wake_up_bot()` 함수가 2단계 wake-up(Stage1: 시스템 메시지 전송 + Stage2: 45초 polling 대기)을 수행하고 있었다.

## C - Complication

cokacdir --cron은 지정 시간에 자동으로 세션을 열고 프롬프트를 전달하므로, 별도 wake-up 메시지가 불필요하며 오히려 봇 세션 수신 실패의 원인이 되고 있었다. wake-up 성공/실패에 따라 딜레이가 30초/60초로 가변되어 불필요한 지연도 발생했다.

## Q - Question

wake-up 로직을 제거하고 dispatch 딜레이를 10초 고정으로 단순화하면 세션 수신 안정성이 회복되는가?

## A - Answer

`_wake_up_bot()` 함수 전체(48줄)를 삭제하고, 일반/composite dispatch 양쪽의 wake-up 호출부 + 가변 딜레이 로직을 `_dispatch_delay = 10`으로 단순화했다. pytest 180건 전체 통과. 관련 테스트(TestWakeUpDelay)를 TestDispatchDelayFixed로 교체하여 `_wake_up_bot` 제거를 검증한다.

---

## 수정 파일

| 파일 | 변경 내용 | grep 검증 | 상태 |
|------|-----------|-----------|------|
| dispatch.py:1306~1353 | `_wake_up_bot()` 함수 전체 삭제 (48줄) | grep "_wake_up_bot" → 0건 | verified |
| dispatch.py:2314 | composite dispatch wake-up 블록 → `_dispatch_delay = 10` 한 줄 | grep "_dispatch_delay" OK (= 10) | verified |
| dispatch.py:3111 | single dispatch wake-up 블록 → `_dispatch_delay = 10` 한 줄 | grep "_dispatch_delay" OK (= 10) | verified |
| tests/test_dispatch.py:3718 | TestWakeUpDelay → TestDispatchDelayFixed 교체 | grep "TestDispatchDelayFixed" OK | verified |

## 검증 시나리오 결과

1. `_wake_up_bot` grep 0건: **PASS**
2. `_schedule_status_rollback` grep 0건: **PASS** (이미 존재하지 않음)
3. pytest 통과: **180 passed, 0 failed** (7.30s)
4. dispatch 시 cron 1건만 전송 (wake-up 메시지 없음): **PASS** (코드 리뷰로 확인 — wake-up용 cokacdir --cron 호출 자체가 제거됨)

## 발견 이슈 및 해결

### 자체 해결 (2건)
1. **TestWakeUpDelay 테스트 실패** — `_wake_up_bot` 제거로 AttributeError 발생. TestDispatchDelayFixed로 교체하여 해결
   - 수정: tests/test_dispatch.py:3718 — TestWakeUpDelay 클래스(37줄) → TestDispatchDelayFixed(8줄) 교체
2. **`_schedule_status_rollback` 미존재** — task 파일에 삭제 대상으로 명시되어 있었으나, 현재 코드에 이미 존재하지 않음 (task-2138에서 선행 제거). 추가 작업 불필요

### 범위 외 미해결 (0건)

## L1 스모크테스트 결과

- 서버 재시작: 해당없음 (dispatch.py는 subprocess로 호출되는 유틸리티, 상시 서버 아님)
- API 응답 확인: 해당없음 (dispatch 함수는 CLI 호출 방식)
- 스크린샷: 해당없음
- pytest 결과: 180 passed, 0 failed (7.30s) — dispatch.py import 및 함수 존재 검증 포함

## 모델 사용 기록

- 팀원: 카르티케야 / 작업: _wake_up_bot 함수 및 호출부 제거, 딜레이 10초 고정 / 사용 모델: sonnet
- 팀원: 비슈누(팀장) / 작업: 테스트 수정, 검증, 보고서 / 사용 모델: opus (팀장 기본)

## 보안 감사

- 로키 보안 감사: 해당없음 (dead code 제거 작업. 인증/결제/PII 코드 미접촉. 보안 관련 변경 없음)
- 비고: finish-task.sh가 task 파일의 `## 레벨: critical`을 Lv.4로 오판. 실제는 QC 검증 레벨 critical이며 위임 레벨 Lv.4가 아님.

## 3 Step Why 자문

- 1st Why: wake-up 2단계가 cokacdir --cron의 자동 세션 시작과 충돌하여 봇 세션 수신 실패 유발
- 2nd Why: cokacdir --cron이 자체적으로 세션을 열므로 별도 wake-up이 근본적으로 불필요
- 3rd Why: 기존 동작 복원 원칙. 복잡한 가변 딜레이는 예측 불가한 타이밍 문제를 만들고, cokacdir이 자체적으로 세션 시작을 처리하므로 긴 딜레이 불필요

## 세션 통계
- 총 도구 호출: 0회


## 세션 통계
- 총 도구 호출: 0회

