# task-2487 — task-N 잔여 패턴 hardening (분할 PR)

- 작업 유형: **task_id parser 호환 hardening 후속**
- 작업 레벨: **Lv.2** (분할 PR 권장)
- 위임팀: **dev2-team (오딘 v2)** — 추천
- 우선순위: **★ medium** (병렬 발사 1)
- Track: **dev_workspace**
- 일시: 2026-05-08
- 선행: task-2485 inventory (memory/events/task-2485.inventory.md)

## ⚠️ 본 task의 본질 — 회장 명시

> 헤르메스 inventory에 기록된 task-N 잔여 패턴 11+개 hardening. **utils/task_id_parser.py 수정 금지, 공통 유틸은 import만 허용**. 파일 ownership 분리. 한 PR에 과도하게 묶지 말고 dispatch / scripts / dashboard·report 계열을 가능하면 분할.

## 작업 대상 (헤르메스 inventory 기준)

### Group A. dispatch 계열 (PR-A)
- `dispatch/__init__.py:3900` — `^task-\d+$`
- `dispatch/__init__.py:1494` — `^task-[\d._]+$`

### Group B. scripts 계열 (PR-B)
- `scripts/done-watcher.py:146, 328`
- `scripts/notify-completion.py:38`
- `scripts/auto_merge.py:1193`
- `scripts/token-tracker.py:24`
- `scripts/pattern-detector.py:94`
- `scripts/report_utils.py:226`
- `scripts/start_task_guard.py:438`

### Group C. dashboard / report 계열 (PR-C)
- `dashboard/helpers.py:116, 133, 166`
- `report_parser.py:152-153`

## allowed_resources

```yaml
allowed_resources:
  paths:
    - "dispatch/__init__.py"
    - "scripts/done-watcher.py"
    - "scripts/notify-completion.py"
    - "scripts/auto_merge.py"
    - "scripts/token-tracker.py"
    - "scripts/pattern-detector.py"
    - "scripts/report_utils.py"
    - "scripts/start_task_guard.py"
    - "dashboard/helpers.py"
    - "report_parser.py"
    - "tests/regression/test_*hardening_2487*.py"
    - "memory/tasks/task-2487*"
    - "memory/reports/task-2487*"
    - "memory/plans/tasks/task-2487/**"
    - "memory/events/task-2487*"
  forbidden_paths:
    - "utils/task_id_parser.py"  # ★ 수정 금지, import만 허용
    - "utils/state_repair.py"
    - "utils/g3_fail_classifier.py"
    - "scripts/taskctl.py"
    - "scripts/dispatch.py"
    - "scripts/finish-task.sh"
    - "scripts/refresh_bot_token.py"
    - "scripts/gemini_review_gate.py"  # task-2486 영역
    - ".github/workflows/**"  # task-2486 영역
    - "teams/**"  # task-2485 영역
    - ".secrets/**"
    - "memory/events/task-2472*"
    - "memory/events/task-2479*"
    - "memory/events/task-2481*"
    - "memory/events/task-2483*"
    - "memory/events/task-2484*"
    - "memory/events/task-2485*"
    - "memory/events/task-2486*"
  forbidden_actions:
    - admin_override
    - branch_protection_bypass
    - force_merge
    - hardcoded_task_id
    - utils_task_id_parser_modification  # ★ 회장 명시
    - merge_all_groups_in_one_pr  # 분할 권장
```

## 합격 조건

1. ✅ 각 Group별 분할 PR 생성 (또는 단일 PR이라도 group별 commit 분리)
2. ✅ utils/task_id_parser.py 미수정 (import만 사용)
3. ✅ 회귀 테스트 PASS (각 그룹별 task-N + task-N+M 정상 인식)
4. ✅ legacy task-N 동작 미파괴
5. ✅ CI required PASS
6. ✅ PR MERGED
7. ✅ .done 생성

## 금지

- ❌ utils/task_id_parser.py 수정
- ❌ 한 PR에 모든 group 묶기 (회장 명시 분할)
- ❌ task-2485 / task-2486 영역 침범

## 시스템 3문서 참조

- 헤르메스 inventory: `memory/events/task-2485.inventory.md`
- task-2485 본질 evidence: `memory/events/task-2485.code-pass-merge-pending`
- 시스템 청사진: `/home/jay/.claude/projects/-home-jay--cokacdir-workspace-autoset/memory/system_bot_orchestration_blueprint_260506.md`

## 보고

- SCQA 4섹션
- Group별 결과
- merge train 따라 머지 (헤르메스/아누 통합 요약 경유)
- 회장 직접 장문 보고 X