# task-2135: dispatch.py에 --resume 옵션 추가

## ★ 프로젝트: `/home/jay/workspace/`

## 배경
작업 중간에 봇이 죽어서 재위임할 때, dispatch.py를 우회(직접 cron)하면 Task ID 규칙(v2)을 위반하는 문제 반복.
에이전트 미팅(다빈치/아틀라스/비너스/로키, 2026-04-23) 합의: **별도 resolver.py 파일 불필요, dispatch.py에 --resume 옵션 추가**

## 기능 명세

### 사용법
```bash
python3 dispatch.py --resume task-2133 --team dev4-team [--level critical]
```

### 동작
1. `task-2133`의 상태를 확인:
   - task-timers.json에서 status 확인
   - memory/events/task-2133.done 존재 여부
   - memory/events/task-2133.retry_count 확인
2. 자동 채번:
   - .done 없음 (미완료) → `task-2133+1` (재시도)
   - .done 있음 + --phases로 시작된 작업 → `task-2133_N.M` (다음 Phase)
   - .done 있음 + Phase 아님 → 에러 ("이미 완료된 작업. 새 task로 위임하세요")
3. 기존 task 파일 재활용:
   - `memory/tasks/task-2133.md`를 base로 사용
   - 새 task 파일 `memory/tasks/task-2133+1.md` 생성 (원본 복사 + 재시도 메타 추가)
4. 정상 dispatch 흐름 진행:
   - member-status 업데이트
   - wake-up 메커니즘 (task-2134에서 개선된 45초 대기)
   - cron 전송

### 에러 처리
- base task가 존재하지 않으면 에러
- 이미 +3 이상 재시도면 경고 ("3회 이상 재시도. 계속하려면 --force 추가")
- --resume과 --task-id 동시 사용 시 에러

### 구현 위치
dispatch.py에 argparse 옵션 추가:
```python
parser.add_argument("--resume", type=str, help="재시도할 base task ID (예: task-2133)")
```

main 함수에서 --resume 처리:
```python
if args.resume:
    base_id = args.resume
    # 1. 상태 확인
    # 2. 자동 채번 (retry_count + 1)
    # 3. task 파일 복사
    # 4. args.task_id에 새 ID 설정
    # 5. 정상 dispatch 흐름으로 진입
```

### retry_count 관리
- `memory/events/{task_id}.retry_count` 파일에 현재 재시도 횟수 저장
- --resume 시 자동 증가
- 기존 session-watchdog.sh의 +N 채번 로직과 통합

## ★ 먼저 읽을 파일
- `/home/jay/workspace/dispatch.py` — argparse 영역 + generate_task_id() 함수
- `/home/jay/workspace/memory/task-timer.py` — TASK_ID_PATTERN regex
- `/home/jay/workspace/scripts/session-watchdog.sh` — 재시도 +N 채번 로직
- `/home/jay/.claude/projects/-home-jay--cokacdir-workspace-autoset/memory/project_task_id_format.md` — Task ID 포맷 v2 규칙

## 검증 시나리오 (이게 되면 성공)

### 시나리오 1: 재시도 채번
```bash
# task-2133이 .done 없는 상태에서
python3 dispatch.py --resume task-2133 --team dev4-team --level normal
# → task-2133+1로 자동 채번 + 정상 dispatch
```

### 시나리오 2: 2회 재시도
```bash
python3 dispatch.py --resume task-2133 --team dev4-team
# → task-2133+2 (retry_count 자동 증가)
```

### 시나리오 3: 완료된 작업 재시도 방지
```bash
# task-2133.done 존재 시
python3 dispatch.py --resume task-2133 --team dev4-team
# → 에러: "이미 완료된 작업입니다"
```

### 시나리오 4: 기존 --task-id와 충돌 방지
```bash
python3 dispatch.py --resume task-2133 --task-id task-9999 --team dev4-team
# → 에러: "--resume과 --task-id는 동시 사용 불가"
```

## 완료 시그니처
- --resume 옵션 동작 (재시도 자동 채번)
- retry_count 자동 관리
- 기존 dispatch 흐름 회귀 없음
- pytest 통과

## 레벨
- normal

## 프로젝트
- dev-system
