# task-440.1: chain_manager.py task_id 매칭 버그 수정

## 배경
자기체이닝 인프라(task-439.1)를 구축했으나, chain_manager.py create 시 task_id가 null로 저장되는 버그로 인해 notify-completion.py의 `check --task-id` 호출 시 체인 매칭 실패.

결과: 팀장이 Phase N+1 지시서를 정상 작성했으나 자동 dispatch가 발동하지 않음 (task-436.3 → task-436.4 실패 사례).

## 버그 위치
`/home/jay/workspace/chain_manager.py`

## 재현
```bash
# 1. 체인 생성 시 task_id 전달
python3 chain_manager.py create --chain-id test-chain --tasks '[{"task_id":"task-100.1","team":"dev1-team","task_file":"memory/tasks/test.md","order":1}]'

# 2. 생성된 JSON 확인
cat memory/chains/chain-test-chain.json
# → tasks[0].task_id가 null이 됨 (전달한 "task-100.1"이 저장 안 됨)

# 3. check 호출
python3 chain_manager.py check --task-id task-100.1
# → in_chain: false (매칭 실패)
```

## 수정 사항

### 1. create 커맨드: task_id 저장
- `create` 핸들러에서 tasks JSON의 `task_id` 필드를 chain 파일에 그대로 저장하도록 수정
- 현재 task_id를 무시하고 null로 초기화하는 로직 찾아서 수정

### 2. check 커맨드: task_id 매칭 로직 검증
- `check --task-id task-436.3` 호출 시 chains/ 디렉토리의 모든 체인 파일을 스캔
- 각 체인의 tasks 배열에서 task_id가 매칭되는 항목 찾기
- 매칭되면 `{"in_chain": true, "is_last": bool, "chain_id": str, "next_task_id": str}` 반환

### 3. next 커맨드: task_id 기반 진행 검증
- `next --task-id task-436.3` 호출 시 해당 task를 completed로 마킹
- 다음 task의 task_file로 dispatch.py 호출
- task_id가 매칭되지 않으면 `{"action": "no_chain"}` 반환

### 4. 테스트 추가
기존 `tests/test_chain_manager.py`의 TestCheck에 추가:
- test_create_preserves_task_id: create 후 JSON에 task_id 보존 확인
- test_check_finds_chain_by_task_id: task_id로 체인 매칭 확인
- test_next_advances_by_task_id: task_id로 next 진행 확인

## 수정 대상 파일
1. `/home/jay/workspace/chain_manager.py` (수정)
2. `/home/jay/workspace/tests/test_chain_manager.py` (수정)

## 테스트 후 검증
```bash
# 기존 테스트 전부 통과
cd /home/jay/workspace && python3 -m pytest tests/test_chain_manager.py -v

# 수동 검증: 테스트 체인 생성 → check → next 흐름
python3 chain_manager.py create --chain-id verify-test --tasks '[{"task_id":"task-999.1","team":"dev1-team","task_file":"memory/tasks/dispatch-remotion-phase3.md","order":1},{"task_id":"task-999.2","team":"dev1-team","task_file":"memory/tasks/task-436.4.md","order":2}]'
python3 chain_manager.py check --task-id task-999.1
# 기대: {"in_chain": true, "is_last": false, ...}
# 테스트 후 정리: rm memory/chains/chain-verify-test.json
```

## 레벨: Lv.1
파일/라인 특정 가능한 버그 수정. 미팅 불필요.
