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

# 계획서: task-2472 — Hard Enforcement Against Silent-Corruption Bypass

**task**: task-2472
**목표**: silent corruption 우회 경로 5+7건을 코드/테스트/audit으로 영구 차단 (drink-your-own-champagne layer 3)
**승인**: 회장 2026-05-07 "task-2472는 운영정책이 아니라 코드 강제 차단 task다. 봇이 조심하게 만드는 것이 아니라 코드가 거부하고 테스트가 재발을 막고 audit이 증거를 남기게 만들어라."
**근거**: memory/tasks/task-2472.md (회장 명시 13 + 7 + 7 = 27 완료 조건)

---

## 목표

1. **production code 차단**: 6 + 7 = 13개 hardening 구현
2. **regression test 재발 방지**: 17 + 7 = 24건 테스트
3. **audit channel 증거 보존**: 5개 jsonl 채널 신설
4. **drink-your-own-champagne**: 본 task PR이 자체 hardening 코드를 통해 정상 merge

## 범위

### 포함
- §1 필수 구현 6건 (resolve thread block, 수동 state 차단, RECOVERABLE_BLOCKED 분류기, Gemini gate 강화, checksum repair, audit 5채널)
- §8.A 추가 hardening 7건 (finish-task.sh:450 raw emit 제거 → JSON payload, shell emitter Python guard 강제, 0-byte/coexistence/state-missing 차단, Gemini unresolved 정책 정합)
- §2 + §2.A regression test 24건
- §4 + §4.A 완료 조건 22건 충족
- task-2471+1 + task-2473 위반 evidence 보존 (read-only)
- PR + Gemini 리뷰 + Maat G2/G3 + merge through own hardening

### 제외 (다음 페이즈 이후)
- task-2471+1 정상 경로 재시도 → task-2472 main 반영 후 별도 진행
- forbidden_paths 수정 (`.tasks/state/task-2471+1.json`, `memory/events/task-2471+1.*`, `memory/specs/allowed_*.json`)

## 위임 계획

- **토르(백엔드)**: utils/* 4개 신설 (review_thread_guard / gemini_gate_validator / recoverable_block_classifier / state_repair) + silent_corruption_guard 보강 + taskctl 수동 state 차단 + finish-task.sh:450 raw emit 제거
- **헤임달(테스터)**: regression test 24건 (17 + 7), audit jsonl schema 검증, taskctl smoke test, L1 스모크, drink-your-own-champagne 메타 검증
- **프레이야/미미르**: 시스템 task — 호출 안 함

## 검증 기준

- 회귀 0: `python3 -m pytest tests/ -v` → 기존 테스트 0건 실패
- 신규 테스트 24건 PASS: `python3 -m pytest tests/regression tests/lifecycle_guards tests/state_machine tests/dispatch_id -v`
- audit 채널 5: `ls memory/orchestration-audit/{review-thread-resolution,state-recovery,checksum-repair,recoverable-merge-block,gemini-gate-decision}.jsonl`
- evidence 보존: `git ls-files --error-unmatch memory/events/task-2471+1.done.escalated .tasks/state/task-2471+1.json` (변경 0)
- PR/G3/머지: `gh pr view <PR> --json state,mergeCommit && git merge-base --is-ancestor <SHA> origin/main`
