# Task: dispatch.py에서 task-timer 자동 시작 구현

## 프로젝트 경로
`/home/jay/workspace/`

## 문제
아누(개발실장)가 위임 전에 수동으로 `task-timer.py start`를 호출하고, 이후 `dispatch.py`가 별도 task ID를 생성하여 원래 타이머가 고스트로 남는 문제가 반복 발생.

예시:
1. 아누: `task-timer.py start task-246.1 --team dev1-team`
2. 아누: `dispatch.py --team dev1-team --task-file ...`
3. dispatch 내부: `generate_task_id()` → task-247.1 생성
4. task-246.1은 running 상태로 영원히 남음 → 대시보드 오류

## 수정 내용

### dispatch.py 수정
`dispatch()` 함수에서 `generate_task_id()` 호출 직후, **자동으로 `task-timer.py start`를 호출**하도록 추가.

수정 위치: `dispatch()` 함수, `task_id = generate_task_id()` 바로 다음 (약 260번 줄)

```python
# task-timer 자동 시작 (아누가 수동으로 할 필요 없음)
short_desc = task_desc[:60] + ("..." if len(task_desc) > 60 else "")
timer_cmd = [
    "python3", str(TASK_TIMER), "start", task_id,
    "--team", team_id,
    "--desc", short_desc
]
timer_result = subprocess.run(timer_cmd, capture_output=True, text=True)
if timer_result.returncode != 0:
    logger.warning(f"task-timer start 실패: {timer_result.stderr.strip()}")
```

### generate_task_id() 수정
현재 `reserved` 상태로 placeholder를 기록하는 로직 (115번 줄)은 `task-timer.py start`가 대체하므로, **reserved 기록 로직을 제거**하거나, task-timer start가 이미 존재하는 항목을 overwrite하도록 보장.

→ 가장 안전한 방법: `generate_task_id()`에서 reserved placeholder 기록은 유지 (ID 중복 방지 역할), `task-timer.py start`가 reserved를 running으로 업데이트.

`task-timer.py`를 확인하여 이미 존재하는 task_id에 대해 start를 호출하면 어떻게 되는지 확인 필요. overwrite되면 OK, 에러나면 처리 추가.

### 추가: dispatch 실패 시 타이머 정리
현재 `_cleanup_reserved()`가 cokacdir 실패 시 reserved를 지우는데, 이제 running 상태도 정리해야 함.
→ `_cleanup_reserved()` → `_cleanup_task()` 로 확장하여 reserved와 running 모두 정리.

## 테스트
1. `dispatch.py --team dev1-team --task "테스트"` 실행 후 task-timers.json에서 해당 task가 running 상태인지 확인
2. dispatch 전에 수동으로 task-timer start를 하지 않아도 타이머가 자동 시작되는지 확인
3. `generate_task_id()`의 reserved → task-timer start의 running 전환이 정상인지 확인

## 수정 대상 파일
- `/home/jay/workspace/dispatch.py`
- 필요 시 `/home/jay/workspace/memory/task-timer.py` (reserved→running 전환 처리)

## 주의사항
- dispatch.py는 인프라 핵심 파일. 기존 기능(generate_task_id, followup 등) 깨뜨리지 말 것
- task-timer.py의 기존 인터페이스 유지