# ANU v2.10 방향 vs 실제 구현 전수조사 체크리스트 (2026-05-31)

> 4축: **impl**(코드/entrypoint 존재) · **verified**(regression 통과) · **wired**(운영 진입점이 실제 호출) · **active**(실 workflow 사용)
> 기준: origin/main `5e714887` (PR#164/#165 반영). 조사: ANU 3-agent fan-out 전수조사.
> `[x]`=충족 / `[ ]`=미충족 / `[~]`=부분.

---

## A. ANU v3.x master direction 모듈

### v3.0 — Feature Acceptance Contract + Release Evidence Advisory
- [ ] impl  [ ] verified  [ ] wired  [ ] active  → **MISSING** (acceptance_contract/release_evidence 파일·테스트·흔적 0)

### v3.1 — Codex Micro Refinement Loop
- [~] impl  [x] verified(18 passed)  [ ] wired  [~] active
- 근거: `scripts/anu/codex_review_loop_decider.py`(anu_v3 밖, tracked). `decision_digest_generator` ABSENT. 자동결선 0, task-2711/2712 수동 구동.

### v3.2 — Completion Callback Orchestrator  ★v2.10 핵심 정정 대상
- [x] impl  [~] verified(격리8+runtime10 통과, **contract 1 FAILED**)  [x] wired  [x] active
- 근거: `anu_v3/dispatch_callback_contract.py` — finish-task.sh→helper→contract 실 import. events 113 + `callback_4tuple_index.jsonl` 51 records.
- ⚠️ **GAP: v2.10 "old normal callback 폐기 → result-JSON-only" 미반영**. finish-task.sh가 여전히 normal callback cron argv 발사 구조(`callback_kind=normal`). 폐기/deprecation 마커 grep 0.
- ⚠️ FAIL: `test_..._dispatch_py_shim_reexports` — dispatch.py 결선 미완.

### v3.3 — Parallel Delegation Planner
- [x] impl  [ ] verified(**4 FAILED** env/baseline drift)  [ ] wired  [ ] active
- 근거: `parallel_batch_coordinator.py`/`batch_dependency_classifier.py`/`batch_dependency_matrix.py`. importer 0.

### v3.4 — Post-result Planner
- [x] impl  [ ] verified(전용 test 0)  [ ] wired  [ ] active
- 근거: `runtime_next_action_resolver.py`/`goal_loop_planner.py`/`result_ready_recovery.py`. importer 0.

### v3.5 — NL Intake & Execution Contract
- [ ] impl  [ ] verified  [ ] wired  [ ] active  → **MISSING** (spec 5종만, anu_v3 런타임 0)

### v3.6 — Runtime Harness Enforcement  ★별도로 active (아래 C 참조)
- [~] impl(gate 코드 일부 + `goal_activation_controller.py`=빈 스텁`{}`)  [ ] verified(전용 test 0)  [ ] wired  [~] active
- 단, **실 PreToolUse harness는 C 항목으로 별도 active** (아래).

---

## B. batch HOLD/adjudication v2.10 모듈 (anu_v3/)
- batch_hold_adjudicator      : [x] impl [x] verified(9) [~] wired(run-script만) [~] active(audit only)
- auto_remediation_planner    : [x] impl [x] verified(41) [ ] wired [~] active  (PLAN_ONLY=True 정적가드)
- batch_dependency_classifier : [x] impl [x] verified(5)  [~] wired [~] active
- critical7_classifier        : [x] impl [x] verified(17) [~] wired(intra) [~] active
- codex_high_classifier       : [x] impl [~] verified(indirect) [~] wired(intra) [~] active
- **remediation_dispatch_planner : [ ] MISSING**
- 종합: 5/6 존재, 72 passed. **운영 dispatch/finish-task 결선 0** — `scripts/run_batch_hold_adjudicator.py` 수동(Track-F) 진입만. active=audit artifact only.

### batch 부속 (schemas/config/scripts/tests)
- schemas: batch_hold_adjudication/auto_remediation_plan/dependency_wait_state/not_started_by_design [x] / hold_candidate·codex_high(inline) [~] / dispatch_not_received·watcher_contract·tool_call_guard_decision [ ]MISSING(일부 functional equivalent)
- config: critical7_rules·codex_high_classification_rules [x] / auto_remediation_rules·batch_dependency_rules [ ](모듈 하드코딩)
- scripts: run_batch_hold_adjudicator [x] / run_auto_remediation_planner·anu_batch_adjudicate.sh [ ]
- tests: 4/5 존재(72 passed) / test_codex_high_classification 전용 [ ](간접 커버)

---

## C. PreToolUse Harness  ★★ v2.10 핵심 — 실제 ACTIVE
- v2.10 이름 `hooks/pre_tool_use_anu_guard.py` : [ ] **ABSENT**
- **실제 구현 = v3.6 harness (chair-auth task-2703)**:
  - [x] impl  [x] verified(live DENY 실증)  [x] wired(`~/.claude/settings.json` PreToolUse)  [x] active(144 decision records)
  - 근거: `~/.claude/hooks/pre_tool_use_v36_harness.py` → `scripts/harness/v36/rules.py`. `gh run watch`/`while…gh…sleep`/`.done` polling loop를 **Bash 실행 전 block(exit 2)**. `memory/system/.v36_harness_decision.jsonl` 144건.
  - ✅ **v2.10 "ANU session-bound direct CI polling 차단" 의도 = 운영 작동 중** (이름만 stale, 보호는 실재).

---

## D. 8C.4 관리대상 capability (8개)
- 1. auto_gemini_triage          : [x] impl [x] verified(42) [x] wired [x] active → **IMPLEMENTED_AND_WIRED**
- 2. owner_gemini_trigger        : [x] impl [x] verified(66) [~] wired [x] active → **PARTIAL_WIRED**
- 3. callback_pickup             : [x] impl [x] verified(113) [~] wired(argv-only) [~] active → **이중경로 모순 / BLOCKED_BY_CAPABILITY**
- 4. merge_queue_executor        : [x] impl [x] verified(51) [ ] wired [ ] active → **IMPLEMENTED_NOT_WIRED** (real merge 미활성, 회장 확정 일치)
- 5. replacement_pr_runner       : [x] impl [x] verified(32) [ ] wired [ ] active → **IMPLEMENTED_NOT_WIRED**
- 6. ci_gemini_watcher           : [x] impl [x] verified(30) [ ] wired [ ] active → **IMPLEMENTED_NOT_WIRED** (run_watch_cycle 호출 driver 0)
- 7. critical_escalation_reporter: [x] impl [x] verified(14) [~] wired [x] active → **PARTIAL_WIRED**
- 8. **dispatch_template_policy_guard : [ ] impl [ ] verified [ ] wired [ ] active → MISSING** (DIRECT-WORKFLOW.md:287 `gh pr merge` 지시 잔존, 막는 guard 0)

---

## ★ 최상위 GAP 요약 (v2.10 방향 vs 실제)
1. **callback result-JSON-only 정정 미반영 + argv-only 모순**: finish-task.sh는 normal callback cron argv를 생성하나 **실제 발사 0**(파일에 argv만 기록). 그래서 ANU key schedule=0, ANU 자동 미기상. v2.10 "result JSON only"에 절반 근접했으나 ANU를 깨우는 대체 경로 부재 → **BLOCKED_BY_CAPABILITY**.
2. **PreToolUse harness = 실제 작동** (긍정). polling 차단이 코드로 강제됨(144 decisions).
3. **dispatch_template_policy_guard MISSING**: G3 자동 PR/머지 지시를 막는 guard 부재 → ANU가 매 dispatch 수동 보강 cron으로 대행 중.
4. **ci_gemini_watcher/merge_queue/replacement_pr = IMPLEMENTED_NOT_WIRED**: 코드+테스트 완비, 실 driver 결선 0.
5. **v3.0/v3.5 미구현**, v3.3/v3.4 미결선+테스트 실패(v3.3 4 FAIL).
6. **batch 모듈 5/6 = implemented+verified but NOT wired** (run-script 수동 진입만).
7. **테스트 실패 3건**(v3.2 contract shim / v3.3 parallel 4 / verdict selector 1) → verified 축 부분 훼손.
</content>
