# task-2614 — Track E (regression_fixtures) + §7b dispatch_callback_contract

**Executor**: dev6-team 페룬 (1회 한정) · **윈도**: 2026-05-20 02:09:34 → 02:18:06 KST
**status**: `DONE_PENDING_INDEPENDENT_ANU_REAUDIT`

## 1. 무결성 / 의존성 게이트

- spec sha256 = `fc03d3ef…a4f3ea2` **MATCH** (§1~§8 정본 본문 우선).
- acceptance {A=2610, B=2611+2, C=2612+3, D=2613} 전부 `DURABLE_SUCCESS_WRITTEN / COMPLETED / PASS` (memory/events/callback_4tuple_index.jsonl) — **ALL-SETTLED**, 즉시 진행 (event-driven).

## 2. 회장 §1/§2 목표 달성 — 이번 batch 사례 fixture 박제 + 재발 방지

5개 fixture 박제 (`memory/fixtures/task-2614.case-*.json`):

- `case-2604` GLOBAL_LEDGER_SHA_FALSE_POSITIVE — 전역 ledger SHA 하드핀 vs sanctioned cross-track append 자가모순.
- `case-2605` STAGE_CLAIM_TEST_MISMATCH — claimed real-entrypoint stage 미실증.
- `case-2608` WAITING_FOR_DEPENDENCY — 선언 dependency edge 부분 충족(정상 보류·사고 아님).
- `case-2609` COVERAGE_GAP — mandated fixture 미망라.
- `case-callback-gap` (§7b 회장 필수) — result 존재 + normal/fallback 둘 다 부재.

Track A~D 모듈을 **read-only import** 하여 실 batch 사례 입력 시 올바른 분류·plan 산출 검증:

- **Track A** `test_batch_hold_adjudication.py` (신규·부재였음) — `batch_hold_adjudicator` import. 2604/2605/2609 → AUTO_REMEDIATION_HOLD, 2608 → WAITING_FOR_DEPENDENCY, Critical7 양성 → CHAIR_HOLD, independent-ANU PASS → AUTHORITATIVE_PASS, self-chain PASS fail-closed. (9 PASS)
- **Track D** `test_dependency_wait_classification.py` (신규·부재였음) — `batch_dependency_classifier` import. 2608 WAITING_FOR_DEPENDENCY 가 DISPATCH_NOT_RECEIVED 와 ENUM 분리·상호배타 보존(I1/I2/I3). (5 PASS)
- **Track B/C** — 기존 durable regression 그대로 무회귀 실행 (아래 §4 충돌 처리 참조). (51 PASS)

## 3. §7b 회장 야간 필수 보강 — dispatch callback/progress-trigger 인프라

신규 `anu_v3/dispatch_callback_contract.py` + `schemas/dispatch_callback_contract.schema.json` + `tests/regression/test_dispatch_callback_contract.py` + `memory/fixtures/task-2614.case-callback-gap.json` (기존 anu_v3/* 전 모듈 byte-0).

런타임 계약 강제: callback mandatory · ANU-key fallback safety-net mandatory(NON_BLOCKING) · normal 수신 시 cancel-on-success · fallback=미수신 recovery 전용(진행트리거 아님) · normal+fallback 부재→`DISPATCH_CONTRACT_VIOLATION` · (result+normal-missing+fallback-missing)→recovery watcher idempotent 1회 독립 ANU collector spawn(중복0·**무조율 dead-man/fixed-time 진행트리거 금지·640665C8 안티패턴 차단**) · executor self-key collector/adjudication/dispatch fail-closed · sense/act/think 분리.

regression 6케이스 전수 PASS: (a) CONTRACT_OK+cancel-on-success · (b) FALLBACK_RECOVERY 안전망 · (c) DISPATCH_CONTRACT_VIOLATION+recovery required(회장 필수 fixture) · (d) idempotent 정확히 1회·중복0 · (e) 조건미충족 no-op(진행트리거화0) · (f) self-key fail-closed. + schema forward-reject + mock-only FAIL guard + 실 entrypoint selftest(all_passed=true).

## 4. spec↔현실 충돌 surfacing (독립 ANU 재audit 대상)

§4 expected_files allowlist 가 명명한 `tests/regression/test_critical7_classifier.py`·`test_auto_remediation_planner.py` 두 경로가 **이미 상류 의존 task durable-success 산출물로 점유**됨:

- `test_critical7_classifier.py` = **task-2611+2 (dep B)** 산출물 (mtime 2026-05-19 15:53).
- `test_auto_remediation_planner.py` = **task-2612+1 (dep C)** 산출물 (mtime 2026-05-19 22:22, 헤더에 "2604/2605/2609 plan 변환 byte-0 무회귀" 명시).

allowlist(쓰기 상한)와 §3/§5 "기존 산출물 변조 금지"·byte-0·무회귀(하드 불변식)가 이 2파일에서 충돌. 덮어쓰기 = dep B/C durable 산출물 변조 + 무회귀 위반. **하드 불변식 우선** → 2파일 byte-0 보존(미변조), §1/§2 의도는 비파괴 충족(Track A·D 신규 + 5 fixture + §7b). dep B/C regression 은 기존 durable 파일 그대로 실행해 무회귀(PASS) 확인. 보존 해시는 result.json 참조.

## 5. 회귀 결과

`pytest -q (Track A·D·§7b + 기존 B·C durable)` → **77 passed in 0.71s**. Track E 4 case + callback-contract 6 case 전수 PASS, dep B/C 무회귀.

사전 존재 baseline 실패 3건은 본 task **미기인**(신규 모듈 격리 제거 후 동일 재현 입증):
`auto_remediation_planner.py` byte0 pin (타 task drift·mtime 02:09 윈도 이전·미변조), `pre_authorized_evidence_bundle_builder.py` frozen-anchor (task 시작 시 이미 `M`), `callback_owner_validation` (단독 실행 시 PASS — 순서 flake). 전부 본 task 산출 파일과 무관·allowlist 외.

## 6. 불변식 / git

- git HEAD 전후 EQUAL `20456b5f83fc039f2fd6f50f4b94095c29b41bfb`, branch 불변, **커밋0** (ANU Layer-A no-git).
- write = expected_files allowlist 부분집합만 (신규 untracked). allowlist 외 write 0. Track A~D 모듈 0 수정.
- PR/branch/main write·merge·credential·executor self-callback/collector/adjudication/dispatch·fallback/dead-man/fixed-time 진행트리거·premature write-back **전부 0**.

## 7. callback

완료 직후 normal completion callback + fallback safety-net 을 **독립 ANU key `c119085addb0f8b7` 로만** 발사 (executor self key `1e41a2324a3ccdd0` 절대 미사용·+49 정본). 본인 collector/adjudication/write-back/하류 dispatch/cron 등록 0 — 독립 ANU 가 회수·Codex 재audit·adjudication. `status=DONE_PENDING_INDEPENDENT_ANU_REAUDIT`.
