---
task_id: task-2472
type: checklist
scope: task
created: 2026-05-07
updated: 2026-05-07
status: in-progress
---

# 체크리스트: task-2472

**task**: task-2472

---

## Phase 1 — 토르(백엔드) production code

### A. 신규 utils 모듈 4개
- [ ] A1. `utils/review_thread_guard.py` — resolveReviewThread block + audit (medium+ severity는 chairman approval evidence 필수)
- [ ] A2. `utils/gemini_gate_validator.py` — latestReviews + review comments + review threads + unresolved + severity + image badge 통합 검사
- [ ] A3. `utils/recoverable_block_classifier.py` — branch protection / merge_state_status / unresolved thread → RECOVERABLE_BLOCKED 분류
- [ ] A4. `utils/state_repair.py` — checksum repair 구현 모듈 (sha256 백업 + chairman approval evidence + audit)

### B. 기존 모듈 보강
- [ ] B1. `scripts/taskctl.py` — `state inspect` / `state repair` / `verify-consistency` subcommand 추가
- [ ] B2. `scripts/taskctl.py` — `cmd_done` / `cmd_merge` / `cmd_recover` import 실패 fail-CLOSED 변경
- [ ] B3. `scripts/taskctl.py` — `cmd_recover` `check_gemini_severity` 시그니처 버그 fix
- [ ] B4. `utils/silent_corruption_guard.py` — 0-byte `.done.escalated` 발행 차단 + `.done` + `.done.escalated` 동시 존재 reject + state file missing reject
- [ ] B5. `utils/audit_chairman_recovery.py` — schema 확장 (10필드: task_id/actor/action/input_state/output_state/approval_evidence/result/reason/timestamp/sha256)
- [ ] B6. `scripts/lifecycle_guards.py` — Gemini gate가 utils/gemini_gate_validator를 호출하도록 변경
- [ ] B7. `scripts/gemini_severity_parser.py` — latestReviews + thread severity + image badge 검사 추가

### C. shell emitter hardening (§8.A 추가 8/9/10)
- [ ] C1. `scripts/finish-task.sh:450` raw `: > .done.escalated` 제거 → Python wrapper 호출
- [ ] C2. `scripts/done-watcher.sh` raw emit 차단
- [ ] C3. Python wrapper(escalation marker emitter) 신설 → JSON payload validation + post-write stat/sha256/JSON 재검증

### D. audit 채널 5
- [ ] D1. `memory/orchestration-audit/review-thread-resolution.jsonl`
- [ ] D2. `memory/orchestration-audit/state-recovery.jsonl`
- [ ] D3. `memory/orchestration-audit/checksum-repair.jsonl`
- [ ] D4. `memory/orchestration-audit/recoverable-merge-block.jsonl`
- [ ] D5. `memory/orchestration-audit/gemini-gate-decision.jsonl`

## Phase 2 — 헤임달(테스터) regression test 24건

### E. §2 17건
- [ ] E1-17. `tests/regression/test_bypass_block.py` 등 — 17건 (resolve thread reject / state JSON 직접 수정 reject / RECOVERABLE_BLOCKED 분류 / Gemini gate body+thread / unresolved thread block / checksum repair / verify-consistency)

### F. §2.A 7건 (task-2473 evidence 기반)
- [ ] F18. shell raw `: > *.done.escalated` 차단 테스트
- [ ] F19. JSON payload 없는 escalation marker 발행 reject
- [ ] F20. 0-byte `.done.escalated` 발행 후 stat 검증 reject
- [ ] F21. state file missing 상태 done/merge reject
- [ ] F22. `.done` + `.done.escalated` 동시 존재 시 DONE reject
- [ ] F23. Gemini medium unresolved thread → RECOVERABLE_BLOCKED 분류
- [ ] F24. shell emitter Python guard wrapper 호출 강제 (raw bypass 차단)

### G. 기타 검증
- [ ] G1. taskctl smoke test 실행 로그
- [ ] G2. 기존 regression 회귀 0 (전체 pytest run)
- [ ] G3. audit jsonl live entry sample 5채널 모두

## Phase 3 — 통합 + PR

- [ ] H1. 보고서 작성 `memory/reports/task-2472.md`
- [ ] H2. 3문서 final update
- [ ] H3. G3 독립 검증 PASS (`scripts/g3_independent_verifier.py`)
- [ ] H4. PR 생성 + Gemini 리뷰 대응
- [ ] H5. 마아트 G2/G3 독립 검증 PASS
- [ ] H6. PR merge + origin/main ancestry 확인
- [ ] H7. drink-your-own-champagne 메타 검증 (본 PR이 자체 hardening 통과)
- [ ] H8. task-2471+1 + task-2473 evidence 보존 검증

## 검증

- [ ] 테스트 통과 확인: 24/24 + 회귀 0건
- [ ] QC 검증 완료: `qc_verify.py` PASS
- [ ] 최종 보고: `finish-task.sh` 호출
