# task-timer running 미종료 버그 조사 및 수정

## 작업 레벨: Lv.2

## 문제
task-2160, task-2161이 실제로는 완료(.done 처리, 보고서 존재)됐는데 task-timers.json에서 status="running"으로 남아있었음. 수동으로 `task-timer.py end`를 해야 정리됨.

이로 인해 whisper-briefing에서 "1팀:작업중 / 2팀:작업중"으로 잘못 표시 → 제이회장님에게 오보.

## 조사 사항

### 1. timer end가 호출되는 시점 추적
- dispatch.py에서 timer start는 어디서 호출되는지
- .done 파일 생성 시 timer end가 자동 호출되는지
- worktree finish 시 timer end가 호출되는지
- 어느 경로에서 timer end가 누락되는지

### 2. 관련 파일
- `/home/jay/workspace/dispatch.py` — timer start 로직
- `/home/jay/workspace/memory/task-timer.py` — timer 관리
- `/home/jay/workspace/prompts/DIRECT-WORKFLOW.md` — 팀장이 따르는 워크플로우 (.done 생성 시점)
- `/home/jay/workspace/scripts/worktree_manager.py` — worktree finish 로직
- whisper-compile 또는 briefing 생성 스크립트 — timer 상태 읽는 곳

### 3. 근본 원인 후보
1. 팀장 봇이 .done은 생성하지만 task-timer.py end를 호출하지 않음
2. worktree finish가 timer end를 호출하지 않음
3. dispatch.py의 cleanup 로직이 불완전
4. cron 세션 종료 시 timer end가 호출되지 않음

### 4. 수정 방안
- .done 파일 생성 시 자동으로 timer end 호출 (가장 확실)
- 또는 whisper-compile에서 .done.clear/.done.acked 파일이 있으면 running timer를 자동 정리
- 또는 DIRECT-WORKFLOW.md에 timer end 명시적 지시 추가

## 검증
- 테스트 태스크 생성 → dispatch → 완료 → .done 생성 → timer 자동 종료 확인
- 기존 running leak이 있으면 일괄 정리

## 참고
- task-2160: timer start 2026-04-25T07:37 → end 안 됨 → 수동 end 2026-04-25T13:06 (5시간 29분 leak)
- task-2161: timer start 2026-04-25T08:04 → end 안 됨 → 수동 end 2026-04-25T13:06 (5시간 1분 leak)
