# Task ID 채번 규칙

## 형식
- `task-{N}.{M}` — N: 작업 순번, M: 하위 번호 (보통 1)
- 예: task-1183.1, task-1184.1

## 채번 메커니즘

### 카운터 파일 기반 (v2, 2026-03-28~)
- 파일: `memory/.task-counter`
- 정수 하나 저장, 신규 task 생성 시 읽고 +1 증가
- `fcntl.flock`으로 동시성 보호
- 카운터 파일 손상/부재 시 task-timers.json에서 복구 (이상치 필터링 적용)

### 이상치 필터링
- task-timers.json에서 ID 복구 시, 연속 ID 간 갭이 1000 이상이면 그 위를 이상치로 간주
- 테스트 ID나 비정상적으로 큰 ID가 채번 시퀀스를 오염시키는 것을 방지

### 기존 방식 (v1, ~2026-03-28)
- `dispatch.py:294`에서 `max(모든 task ID) + 1`로 채번
- 문제: 테스트 ID(task-9991 등)가 max를 점프시킴

## 테스트 ID 규칙
- 검증/테스트 목적의 task는 정상 시퀀스에 영향을 주지 않도록 주의
- 테스트 task 생성 시, 종료 후 반드시 관련 엔트리 정리 필요

## 사고 기록 (2026-03-28)

### 경위
1. task-1182.1(dev5팀) 검증 테스트에서 task-9991.1~9993.1을 task-timers.json에 생성
2. dispatch.py의 채번 로직이 `max(모든 task ID) + 1`이라, max=9993 → 다음=9994
3. 이후 정상 작업이 9994~10002로 채번됨 (정상적으로는 1183~1194)

### 조치
1. 데이터 복구: 9991~10000을 1183~1192로 리넘버링
2. dispatch.py 수정: 카운터 파일 기반 채번으로 전환
3. 이상치 필터링 방어 로직 추가
