# INDEX — task-2644 ANU_CALLBACK_COLLECTOR_CONTROL_PLANE artifacts

- task: `memory/tasks/task-2644.md`
- spec: `memory/specs/system_anu_callback_collector_control_plane_spec_260524.md` (sha256 `b27da557d4245bce476cd63f4ab174aefc8a25d2da07ec2c8d2c83b01ee96153`)
- 완료 등급: RUNTIME_GUARDED (HARNESS_ENFORCED 별도 task)
- 진행: worktree `.worktrees/task-2644-dev1` · branch `task/task-2644-dev1` · base `0e172435`

## 15 산출물 (회장 verbatim 1:1)

| # | 산출물 | 경로 |
|---|--------|------|
| 1 | SessionStart hook (staged) | `hooks/session_start_anu_callback_collector.py` |
| 2 | Stop hook (staged) | `hooks/stop_anu_callback_collector_verifier.py` |
| 3 | callback adjudicator | `utils/callback_adjudicator.py` |
| 4 | next_action runner | `utils/callback_next_action_runner.py` |
| 5 | callback ledger schema | `schemas/callback_ledger_v1.json` |
| 6 | next_action decision schema | `schemas/callback_next_action_decision_v1.json` |
| 7 | .anu_state minimal schema | `schemas/anu_state_v1.json` |
| 8 | batch callback aggregation schema | `schemas/callback_batch_aggregation_v1.json` |
| 9 | telegram chair report packet template | `memory/specs/telegram_chair_report_packet_template_260524.json` |
| 10 | source attribution guard | `utils/source_attribution_guard.py` |
| 11 | UserPromptSubmit .callback inbox hook (staged) | `hooks/user_prompt_submit_hook_callback_inbox.py` |
| 12 | fixtures 8 | `tests/fixtures/callback_control_plane/{merge_ready,critical7,auto_remediation,sibling_incomplete,sibling_final,log_only_fail,callback_received_misuse,fallback_safety_net_log_recovery_without_control_plane_adjudication}/` |
| 13 | regression tests (4 모듈 × 8 fixture) | `tests/regression/callback_control_plane/test_*.py` |
| 14 | rollback plan | `memory/specs/task_2644_rollback_plan_260524.md` |
| 15 | staged settings template | `memory/specs/staged_settings_template_anu_callback_collector_260524.json` |

## 검증

```
python3 -m pytest tests/regression/callback_control_plane/ -v
```

- 신규 89 test (8 fixture × 4 모듈 + 모듈별 단위) · 83 pass / 6 skipped / 0 fail
- 기존 baseline: 별도 유지 (3 pre-existing 무관)

## doctrine 핵심 박제

- frozen anchor 15 (10 + 회장 보강 5)
- next_action enum 11 + 3 분기 mutually exclusive
- source attribution enum 8 (★ CALLBACK_COLLECTOR_PROCESSED 주 경로 · LOG_LOOKUP_OR_SCHEDULE_HISTORY_VERIFICATION 1C0F6F52 박제)
- Stop hook 종료 차단 10 조건 + 추가 invariant 2
- next_action_result 4 필드 + 6 enum
- merge execution = 0 hardcoded (보강-3)
- state freshness fail-closed (보강-4)
