---
task_id: task-2485
type: plan
scope: task
created: 2026-05-07
updated: 2026-05-08
status: completed
---

# 계획서: task-2485 — task_id parser/verifier task-N+M 호환 자동화 hardening

**task**: task-2485
**목표**: parser/verifier 계층에서 task-N과 task-N+M (retry suffix)을 모두 인식하도록 코드 자동화. 회귀 테스트와 dry-run 검증 스크립트 동반.
**승인**: 회장 (task 본문 명시 4파트 + 합격 9건)
**근거**: `memory/tasks/task-2485.md`, `memory/events/task-2472+1.merge-pending-rerun-evidence`

---

## 목표

1. `teams/dev1/qc/verifiers/browser_verify.py`가 `task-2472+2` 같은 retry suffix task_id를 정상 인정.
2. `teams/dev1/qc/verifiers/git_evidence.py`가 main repo의 다른 task 변경으로 현재 task FAIL 처리하지 않음 (현재 task worktree dirty는 FAIL 유지).
3. `utils/task_id_parser.py` 공통 API 확장 (`TASK_ID_RE`, `TASK_ID_PATTERN`, `is_valid_task_id`, `extract_task_id`).
4. 회귀 테스트 7항 + `scripts/verify_task_id_hardening.py` dry-run PASS.
5. PR 생성 → CI required PASS → 머지 → .done.

## 범위

### 포함
- `utils/task_id_parser.py` API 보강 (별칭 노출 + extract_task_id 일반 텍스트 함수)
- `teams/dev1/qc/verifiers/browser_verify.py` 패턴 교체
- `teams/dev1/qc/verifiers/git_evidence.py` worktree/main repo 분리 판단 추가
- `scripts/verify_task_id_hardening.py` 신설 (검증 자동화)
- `tests/regression/test_task_id_parser_hardening.py` 신설
- `tests/regression/test_browser_verify_hardening.py` 신설
- `tests/regression/test_git_evidence_hardening.py` 신설
- `memory/events/task-2485.inventory.md` 박제

### 제외 (forbidden_paths / 후속 task)
- `.github/workflows/**` (task-2472+2에서 처리)
- `scripts/taskctl.py`, `scripts/dispatch.py`, `scripts/finish-task.sh`, `scripts/refresh_bot_token.py`
- `utils/state_repair.py`, `utils/g3_fail_classifier.py`, `utils/silent_corruption_guard.py`
- `dispatch/__init__.py`, `scripts/done-watcher.py`, `scripts/notify-completion.py`,
  `scripts/auto_merge.py`, `scripts/token-tracker.py`, `dashboard/**`, `report_parser.py`
  → 인벤토리에 박제, 별도 후속 task 권고
- `teams/shared/verifiers/browser_verify.py` (allowed_resources에 dev1만 포함)

## 위임 계획

- A: 인벤토리 — **헤르메스(팀장)** — Step A 전수 검색 (Opus 분석)
- B: parser API 확장 — **불칸(백엔드, sonnet)**
- C: browser_verify 패치 — **불칸(백엔드, sonnet)**
- D: git_evidence worktree 분리 — **불칸(백엔드, sonnet)**
- E: 회귀 테스트 7항 + verify_task_id_hardening.py — **아르고스(테스터, sonnet)**
- 통합 검증/머지 — **헤르메스(팀장)**

## 검증 기준

- `python3 -m pytest tests/regression/test_task_id_parser_hardening.py tests/regression/test_browser_verify_hardening.py tests/regression/test_git_evidence_hardening.py -v` → all PASS
- `python3 scripts/verify_task_id_hardening.py` → exit 0
- browser_verify에 `task-2472+2` 입력 시 `잘못된 task_id 형식` 메시지 미발생
- git_evidence: main repo에 다른 task의 dirty 파일이 있어도 현재 task FAIL 처리하지 않음
- worktree 자체가 dirty이면 FAIL 유지
