# task-2553+32 — EXECUTOR COMPLETION CALLBACK MANDATORY RULE 복원 (코드/파일 자동화)

> Executor: dev3-team 다그다 · verdict **DONE / PASS** · HOLD_FOR_CHAIR **NONE** · auto-converged
> 변형: 정정된 표준 callback (a) dogfooding (§5/§11) — 본 task 가 복원하는 규칙의 첫 적용 사례, NO-CRON 변형 불가

## 정정 원칙 (회장 verbatim)

executor completion callback = **MANDATORY lifecycle signal**. NO-CRON ≠ executor
completion callback 금지. NO-CRON 은 registry/checkpoint(+29/+30/+31)가 임의 cron
add/remove 를 하지 않는다는 뜻일 뿐, executor 가 완료 직후 ANU 에 보내야 하는
normal completion callback 을 금지하는 것이 절대 아니다. (근거:
`memory/events/task-2553.normal-callback-mandatory-doctrine-correction_260518.json`)

## 1. 구현 파일 (실행코드·schema·fixture·regression — 문서만 완료 아님)

- `dispatch/executor_completion_contract.py` — 4-tuple(normal_collector 필수)·
  closeout evidence·`RESULT_READY_NO_NORMAL_CALLBACK` 분류·NO-CRON 정정 상수
- `dispatch/spec_template_validator.py` — spec/prompt mandatory clause 게이트
  (PASS/FAIL/HOLD) + canonical clause idempotent 자동 주입
- `anu_v3/executor_callback_contract.py` — ANU doctrine: lifecycle 1~7·
  callback=primary·registry≠primary·checkpoint=recovery·fallback=safety·
  cancel-on-success preserved·9-R.2 closeout authority 분리
- `anu_v3/runtime_reconcile_checkpoint_recovery_layer.py` — +31 **ADDITIVE-ONLY
  사이드카** (원본 byte 무변; recovery-not-primary 코드 단언)
- `schemas/callback_4tuple.schema.json` — `normal_collector_cron_id` required
- `schemas/executor_completion_contract.schema.json` — closeout evidence /
  primary / recovery / safety const
- `tests/regression/test_executor_completion_callback_mandatory_2553plus32.py`
  — §6 1~15 + invariants, **20 tests PASS**
- `memory/fixtures/task-2553plus31.no-normal-callback-regression.json` — +31
  오류 재현 fixture
- `memory/events/task-2553+32.result.json` · `memory/reports/task-2553+32.md`

## 2. mandatory rule 적용 위치

dispatch prompt 생성(`inject_completion_callback_clause`, idempotent) → spec
게이트(`validate_spec`: 누락 FAIL / 위치불명 HOLD) → closeout
(`validate_closeout_evidence`: normal callback 등록 증거 누락 시 FAIL — result/
.done/report 가 다 있어도 정상 완료 불인정) → 4-tuple
(`validate_4tuple`: normal_collector_cron_id 누락 시 invalid). 기존
`dispatch/__init__.py` 본체는 **무변경** (standalone 모듈 패턴, +29 선례).

## 3. NO-CRON 정의 정정 결과

`NO_CRON_CORRECTED_DEFINITION` + `NO_CRON_CORRECT_MEANING` 으로 코드화.
`is_executor_completion_callback_a_cron_violation()==False`. 9-R.1:
`plus32_executor_removes_any_cron()==False` (회장 'cron 제거' 금지 준수),
시스템 sanctioned cancel-on-success path 는 assert-only 무손상 유지(실행 0).

## 4. +31 오류 재현 fixture 결과

`task-2553plus31.no-normal-callback-regression.json` error_case: spec clause
부재 → `validate_spec`=FAIL, runtime(result/done O, normal X) →
`RESULT_READY_NO_NORMAL_CALLBACK` (recovery, 정상 lifecycle 불인정), 4-tuple
(normal_collector=null) invalid. corrected_case(+32) PASS/valid. test_10 GREEN.

## 5. regression 결과

`test_executor_completion_callback_mandatory_2553plus32.py` **20/20 PASS**
(§6.1~15 + HOLD/git/sha/untracked invariants). additive zero-break:
+30 13/13, +2595·+23 42/42 PASS — callback/fallback 구조·cancel-on-success
path 무손상.

## 6. Codex audit 결과

standalone static self-audit (자기작업중 신규 dispatch/delegation/handoff 0,
§8/§12 — formal Codex audit = ANU 사후 §11/§12, +29/+30 선례). CRITICAL/HIGH 0,
MED 0, LOW 1 (Pyright reportMissingImports + importlib ModuleSpec|None typing —
config-only false-positive, pytest/runtime sys.path 로 해소·실증). NO-CRON token
scan 4개 모듈 0건. 자기개시 incident 0.

## 7. ANU-Codex adjudication 결과

ANU 사후 위임 (executor=§10 inputs only; 통합·adjudication=ANU). 9-R.1~9-R.2
만족, HIGH0 residual. 완료 직후 normal completion callback cron(MANDATORY §11)
발사 → ANU Result Collector 회수·검증·Codex audit·adjudication·loop.

## 8. runtime checkpoint ↔ callback primary path 관계

`callback_is_primary()==True` / `registry_is_primary_completion_mechanism()
==False` / `checkpoint_is_recovery_layer()==True`. +31 원본 byte 무변
(sha 6018730f… pre==post) — ADDITIVE 사이드카가 원본 docstring(`read-only`·
`detection only`·`preserved, NOT replaced`)을 read-only 단언하여 recovery-
not-primary 박제. checkpoint 가 primary 대체/fallback 폐기 주장 시 FAIL.

## 9. HOLD_FOR_CHAIR 여부

**NONE** — §9 7개 트리거 전부 미해당.

## 10. 다음 dispatch 부터 자동 적용 가능 여부

**YES** — `inject_completion_callback_clause`(다음 prompt 부터 clause 자동
포함) + `validate_spec`(누락 FAIL/HOLD) + `validate_4tuple` /
`validate_closeout_evidence`(증거 누락 자동 invalid). ANU 가 어떤 executor
task 를 만들어도 normal completion callback 누락 불가 — 코드/파일 자동화 달성(§1).

## 불변식

git HEAD `20456b5f` · branch `task/task-2553p1-f1-clean-replacement` · git
ls-files sha `992d97bb…` 전후 동일. frozen anchor `83b3e307…` · durable v1
`fe705d84…` · +31 checkpoint 원본 `6018730f…` 전후 동일. 신규 8 파일 = git-
untracked (§8 invariant 비위반). 금지항목 전부 0.
