# task-2614 — Track E: regression_fixtures (회장 6-track 시스템화·독립 task)

> **Lv**: Lv.3. **Executor**: dev6-team 페룬 (key 1e41a2324a3ccdd0) 1회 한정. **TTL**: 3h. **상태**: 회장 BATCH_LEVEL_HOLD 시스템화 Track E — 병렬 dispatch·acceptance={A,B,C,D}(task-2610~2613) durable-success EVENT 소비(event-driven·미산출 시 WAITING_FOR_DEPENDENCY 보류). 문서-only 금지. **callback: 반드시 독립 ANU key c119085addb0f8b7(executor self key 1e41a2324a3ccdd0 절대 금지·+49 코드 정본).**
> **preflight 정본**: `memory/events/task-2610-batch-hold-system-preflight-decision_260519.json`. **+N 아님 — 독립 task.**

## 1. 목표 (회장 verbatim)

실제 이번 batch 사례를 fixture로 박제하고 재발 방지한다.

## 2. 구현 (회장 verbatim — Track E)

`tests/regression/test_batch_hold_adjudication.py` · `tests/regression/test_auto_remediation_planner.py` · `tests/regression/test_critical7_classifier.py` · `tests/regression/test_dependency_wait_classification.py` · fixtures: 2604/2605/2608/2609 사례(`memory/fixtures/task-2614.case-2604.json`·`case-2605.json`·`case-2608.json`·`case-2609.json`). Track A~D 모듈을 read-only import 하여 실제 batch 사례 입력 시 올바른 분류·plan 산출을 검증(mock-only FAIL). {A,B,C,D} 모듈 미산출 시 WAITING_FOR_DEPENDENCY 보류(고정시각/dead-man 대기 아님·event-driven).

## 3. 공통 원칙 (회장 verbatim)

Critical7만 회장 보고 · non-Critical HOLD는 AUTO_REMEDIATION_HOLD로 자동 수렴 · 개별 collector는 HOLD_CANDIDATE만 기록 · 모든 track 상태 모은 뒤 consolidated adjudication · 문서-only 금지(py/sh/yaml/schema/test/fixture/result 필수) · executor self-* 금지 · independent ANU collector만 authoritative · fallback/dead-man/fixed-time 진행 트리거 금지 · PR/merge/credential/branch/main write 금지.

## 4. expected_files allowlist (DISJOINT write — Track A/B/C/D/F 와 write-overlap 0)

`tests/regression/test_batch_hold_adjudication.py` · `tests/regression/test_auto_remediation_planner.py` · `tests/regression/test_critical7_classifier.py` · `tests/regression/test_dependency_wait_classification.py` · `memory/fixtures/task-2614.case-2604.json` · `memory/fixtures/task-2614.case-2605.json` · `memory/fixtures/task-2614.case-2608.json` · `memory/fixtures/task-2614.case-2609.json` · **[회장 야간 지시 필수 보강 §7b — callback/progress-trigger 인프라]** `anu_v3/dispatch_callback_contract.py`(신규 runtime·기존 anu_v3/* 무수정) · `schemas/dispatch_callback_contract.schema.json`(신규) · `tests/regression/test_dispatch_callback_contract.py`(신규) · `memory/fixtures/task-2614.case-callback-gap.json`(신규) · `memory/events/task-2614.{decision,result}.json` · `memory/reports/task-2614.md`. 이 외 write 0. **Track A~D 모듈(anu_v3/·schemas/·config/)·기존 anu_v3/* 전 모듈·기존 task-2553·task-2604 multitrack 산출물·frozen anchor byte-0(read-only consume·import only — 신규 dispatch_callback_contract.py 만 추가, 기존 모듈 0 수정)**. git HEAD·branch 전후 EQUAL.

## 5. 금지 (회장 verbatim 공통)

기존 산출물 변조 · Track A~D 모듈 수정(import only) · 문서-only 완료 · executor self-* · independent ANU authoritative 약화 · fallback/dead-man/fixed-time 진행트리거(dependency 대기는 event-driven) · PR/branch/main write·merge·credential.

## 6. HOLD_FOR_CHAIR (회장 verbatim)

shared invariant 파손 또는 Critical7 = 전체 CHAIR_HOLD. 그 외 non-Critical은 AUTO_REMEDIATION_HOLD 자동 수렴.

## 7. callback (a) — 독립 ANU key 강제

완료 직후 normal completion callback **ANU key c119085addb0f8b7로만 발사** → 독립 ANU collector 회수·검증·Codex·adjudication. acceptance={A,B,C,D} durable-success EVENT(event-driven). non-Critical HIGH 잔존 시 AUTO_REMEDIATION_HOLD 자동 수렴. HIGH/CRITICAL 0 또는 non-critical 자동분류·재lint PASS 후 +53 write-back → +54·+55 dogfood → {A,B,C,D,E} all-settled 시 Track F 자연 트리거. executor self key 1e41a2324a3ccdd0 절대 금지(+49 정본). ANU fallback=ANU key·안전망 한정·진행 트리거 아님.

## 7b. 회장 야간 지시 필수 보강 — callback/progress-trigger 인프라 (py/schema/test/runtime·문서-only 금지)

회장 2026-05-20 야간 최종 지시. BATCH_LEVEL_HOLD 시스템 필수 보강(새 범위 아님 — 회장 명시 mandate). **신규 모듈 `anu_v3/dispatch_callback_contract.py` + schema + regression test + fixture 만 추가**(기존 anu_v3/* 전 모듈 byte-0).

**런타임 계약 (`anu_v3/dispatch_callback_contract.py`):**
1. **callback mandatory**: 모든 executor dispatch 는 normal completion callback(독립 ANU key c119085addb0f8b7) 계약을 가져야 한다.
2. **ANU-key fallback safety-net mandatory**: dispatch 시 ANU-key fallback safety-net(미수신 recovery 전용·NON_BLOCKING) 동시 등록 계약.
3. **normal callback 수신 시 cancel-on-success**: normal callback durable-success 확정 즉시 fallback cancel-on-success 제거(노이즈 0).
4. **fallback = 미수신 recovery 전용**: 진행 트리거 아님. fixed-time/dead-man 진행트리거 금지.
5. **DISPATCH_CONTRACT_VIOLATION**: normal callback·fallback 둘 다 부재면 `DISPATCH_CONTRACT_VIOLATION` 분류.
6. **recovery watcher**: `result exists + normal callback missing + fallback missing` 조건에서만(=DISPATCH_CONTRACT_VIOLATION) **idempotent**하게 독립 ANU collector spawn. ★ 무조율 dead-man/fixed-time 진행트리거 절대 금지(640665C8 안티패턴 재발 차단). 중복 spawn 0(idempotency key=task_id·1회 보장). executor self-key(collector/adjudication/dispatch) 절대 금지 — 독립 ANU key 전용.
7. sense/act/think 분리·dry-run 우선·관측 후 행동(데몬 안전원칙). recovery watcher 는 상태를 변경하지 않고 조건 탐지만 → 조건 충족 시 1회 spawn → self-record(재진입 차단).

**schema (`schemas/dispatch_callback_contract.schema.json`)**: dispatch_contract record(normal_callback_present·fallback_present·result_present·classification∈{CONTRACT_OK,DISPATCH_CONTRACT_VIOLATION,RECOVERY_SPAWNED}·idempotency_key·collector_key=ANU·executor_self_key_forbidden) invariant + forward-reject.

**regression (`tests/regression/test_dispatch_callback_contract.py`) — PASS 필수:**
- (a) normal callback present → CONTRACT_OK·fallback cancel-on-success
- (b) normal missing·fallback present → fallback recovery 경로(정상 안전망)
- (c) **result exists + normal callback missing + fallback missing → DISPATCH_CONTRACT_VIOLATION + recovery watcher required**(회장 필수 fixture·`memory/fixtures/task-2614.case-callback-gap.json`)
- (d) recovery watcher idempotent — 동일 task 2회 호출 시 collector spawn 정확히 1회(중복 spawn 0)
- (e) recovery watcher 가 fixed-time/dead-man 아님(조건 미충족 시 no-op·진행트리거화 0)
- (f) executor self-key collector/adjudication/dispatch 시도 → fail-closed
- mock-only FAIL(실 entrypoint 검증). 기존 4 regression(2604/2605/2608/2609) 전수 무회귀.

## 8. 9-R (확정 — 본 절 본문 우선)

원 spec ANU-Codex lint = GO_READY 였으나 **§7b 회장 야간 지시 필수 보강 증강으로 ANU-Codex re-lint 필수**. 정합성: §7b 는 회장 verbatim mandate(새 범위 아님·BATCH_LEVEL_HOLD 필수 보강) · 신규 `anu_v3/dispatch_callback_contract.py`+schema+test+fixture 만 추가(기존 anu_v3/* 전 모듈 byte-0·Track A~D import only) · expected_files A~D/F 와 DISJOINT · recovery watcher 무조율 dead-man 진행트리거 금지 명문(640665C8 안티패턴 차단)·idempotent·독립 ANU key 전용·executor self-key 금지 · 2604/2605/2608/2609 fixture 무회귀 · callback-gap fixture(result/normal-missing/fallback-missing→DISPATCH_CONTRACT_VIOLATION) PASS · 문서-only 금지(py/schema/test/fixture) · fallback/fixed-time 진행트리거 금지 · PR/merge/branch/credential 금지 · independent ANU authoritative. **ANU-Codex re-lint GO_READY 확정 후 dispatch**. ANU key 로 dev6 페룬 1회 위임. callback=normal(ANU key)+fallback safety-net(ANU key·cancel-on-success) 둘 다 등록(본 spec 이 강제하는 계약을 dispatch 자체에도 적용).
