# task-2774+2 PR#250 remediation round1 — ANU 독립검증 결과 2026-06-24

**상태명**: `TASK2774_PR250_REMEDIATION_ROUND1_VERIFICATION_REQUIRED_ACTIVE_FALSE`
**판정**: 코드/테스트/CI/fail-closed 전 축 PASS · **merge 차단 = Gemini unresolved 처리(회장 영역)뿐**. ACTIVE=false.

## 1. diff/dirty 축 — PASS
- round delta `cb910567..64d4ec1f` = 정확히 **2파일**(governor, test). `dispatch/anu_result_pickup_runner.py` round diff **0줄**.
- PR final diff `main(177792e5)..64d4ec1f` = 정확히 **3파일** (+1218/-0).
- dirty baseline(`*.acked/.notified`·matrix·replacement_pr_runner) PR 혼입 **0**.
- author dev2-odin, 14:03:13 KST.

## 2. fail-closed 차단증명 — ANU 직접 재현 PASS (테스트 이름 아닌 evaluate_spawn 실구동)
- broken counter JSON → **BLOCK / COUNTERS_UNREADABLE** / spawn 0
- counter save 실패(read-only dir) → **BLOCK / COUNTERS_SAVE_FAILED** / spawn 0  *(1차에 load오류로 빠져 read-only dir로 재유발해 정확히 재현)*
- ledger 읽기 불가 → **BLOCK / LEDGER_UNREADABLE** / spawn 0
- 첫 실행 파일 부재 → **ALLOW 유지** (기존 경로 무손상)
- 모든 결정 spawn_decisions.jsonl 에 reason·task_id·key·ts 4필드 기록 확인.
- 신규 reason enum 3종 코드 실재(42-44줄). `_get_event_epoch`(187줄) 실구현(305/306/328 사용) — live MED 실질 해소.

## 3. 테스트 — PASS (격리 detached worktree @64d4ec1f)
- pytest `test_spawn_safety_governor_2774.py` **12 passed**(기존 9 + 신규 3) 직접 재현.
- py_compile PASS.

## 4. GitHub gate
- CI: **전체 PASS**(cancel-kill-switch/ci-guard/gemini-review-gate/guard/hidden-path-audit/lock-in-check/merge-safety-check/phase3-merge-gate/qc-check/taskctl-state-guard). 실패/대기 0.
- mergeable=MERGEABLE, mergeStateStatus=BLOCKED(필수 thread/리뷰 대기).
- **Gemini unresolved(resolved==false 전수, outdated 무관) = 10**.
  - HIGH 4: **전부 outdated**(fix가 해당 라인 교체) · resolved 0.
  - MED 6: 5 outdated + 1 live · resolved 0. (live MED = events epoch 파싱, _get_event_epoch 로 실질 반영됨)
  - ★ 회장 doctrine 준수: outdated 로 거르지 않고 **unresolved=10 그대로 보고**. thread resolve 는 회장 영역(임의 금지).

## 5. scope-gate 거짓양성 — 분리 확정
- finish-task.sh scope-gate base = merge-base(origin/main,HEAD)=177792e5 → PR 누적 전체(3파일)를 +2 forbidden 목록과 비교 → base PR 의 pickup_runner 를 오플래그.
- round delta 기준 pickup_runner 변경 **0** → +2 위반 아님 = **evidence-based false positive**. 봇은 우회 안 하고 `.escalate`+ANU 판정 요청(올바름).
- 단 PR final 3파일 자체는 검증 완료(§1).

## 6. merge-ready 판정 — NOT YET (차단 = thread resolution, 회장 영역)
- 코드/테스트/CI/fail-closed/diff/dirty = **전부 PASS**. HIGH 4 실질 해소를 ANU 가 fail-closed 재현으로 입증.
- 유일 잔여 = Gemini unresolved 10(전부 substantively 해소·HIGH 4 superseded by verified fix·MED 6 반영). thread 를 resolved 로 마킹해야 unresolved 0.
- thread resolve = 회장 승인 영역 → ANU 임의 resolve/merge 금지. **unresolved 0 전까지 merge 안 함.**

## 불변식
- ACTIVE=false · activation flag 0 · systemd/canary 0 · matrix true 0 · 자동 merge 0 · 수동 .done 0 · 추가 코드수정 0.
