# task-2553+45 — cancel-on-success live integration (회장 지시 2, 코드/파일 자동화)

> **Lv**: Lv.4. **Executor**: (ANU 배정 1회 한정). **TTL**: 3h. **상태**: 회장 지시 2 GO. 단 **task-2553+44/+46 선행 의존** — durable 4-tuple registry·artifact root resolver 부재/불완전 시 +45는 HOLD 또는 순차 대기. 문서화 아님 — 실행코드·schema·fixture·regression·decision/result JSON 필수. **callback: 정정 표준 (a) MANDATORY.**

---

## 1. 목표 (회장 verbatim)

normal collector durable-success 후 fallback/dead-man cron이 실제로 cancel-on-success 경로를 타도록 live collector path를 코드/파일 자동화로 결선한다.

## 2. 해결할 문제 (회장 verbatim)

1. +41은 normal completion callback이 성공했고 collector adjudication도 완료됐지만, fallback 8A0E088E가 2시간 뒤 발화했다. 이는 중복 fallback이 안전하게 무시된 사례일 뿐, cancel-on-success live remove 성공 사례가 아니다.
2. +39도 normal collector-result가 존재하고 ACCEPTED였지만, fallback/dead-man collector가 뒤늦게 발화해 정상 callback 선행을 확인했다. 이는 normal success 후 fallback이 삭제되지 않았다는 같은 계열의 증거다.
3. +37에서 cancel-on-success collector-path wiring은 mock/격리 검증됐으나, 실제 live normal collector path가 operational_collector_wiring entrypoint를 경유하지 않았다.

> 이번 작업은 문서화가 아니다. 반드시 실행 가능한 코드, schema, fixture, regression, decision/result JSON을 포함하라.

## 3. 구현 목표 (회장 verbatim)

실제 normal collector 경로가 operational_collector_wiring::run_operational_completion_callback_collector를 경유하게 한다. normal collector durable-success 후 run_operational_cancel_seam(operational=True)을 1회 호출한다. fallback_cron_id는 durable 4-tuple registry에서 lookup한다. fallback_cron_id binding이 없으면 cron-remove를 하지 않고 fallback을 보존한다. live cron-state verifier 5조건 AND PASS일 때만 bound fallback cron 1건을 제거한다. verifier mismatch / task_id mismatch / chat_id mismatch / role mismatch / missing cron이면 cron-remove 0. cancel-audit JSON을 생성한다. cron-remove 실패 / skip / exception이 normal collector success를 실패로 바꾸지 않도록 decouple한다. existing DUPLICATE_CALLBACK_IGNORED fallback safety path는 유지한다. runtime checkpoint는 recovery layer로 유지한다. callback mandatory rule은 약화하지 않는다.

> anchor (사실): +37 entrypoint `utils/normal_completion_callback_collector_entrypoint.py::run_wired_normal_completion_callback_collector`(L398) 실재. `operational_collector_wiring::run_operational_completion_callback_collector` / `run_operational_cancel_seam` 의 실제 모듈 경로는 +25/+37 linkage 로 executor 가 repo 구조에 맞게 특정(실 파일명 조정 허용).

## 4. 선행 조건 (회장 verbatim)

task-2553+44/+46이 durable 4-tuple registry와 artifact root resolver를 제공하면 이를 사용한다. 만약 +44/+46 산출물이 아직 없거나 불완전하면, +45는 HOLD 또는 순차 대기로 분류한다. fallback_cron_id를 안전하게 lookup할 수 없는 상태에서 live cron-remove를 시도하지 않는다.

## 5. 필수 파일 후보 (회장 verbatim — 실제 파일명 repo 구조 조정, 문서/메모리만 완료 금지)

`anu_v3/operational_collector_wiring.py` 보강 · `anu_v3/cancel_on_success_live_wiring.py` · `anu_v3/cancel_audit_writer.py` · `schemas/cancel_on_success_audit.schema.json` · `schemas/live_cancel_verifier_result.schema.json` · `tests/regression/test_cancel_on_success_live_wiring_2553plus45.py` · `memory/fixtures/task-2553plus41.fallback-fired-after-normal-success.json` · `memory/fixtures/task-2553plus39.fallback-fired-after-normal-success.json` · `memory/events/task-2553+45.result.json` · `memory/reports/task-2553+45.md`. +37 entrypoint·+25 seam·frozen anchor·+22~+44_46 원본·기존 +39/+41/+42/+43 산출물 무변(재사용=read-only/additive).

## 6. 필수 regression (회장 verbatim 1~20)

1 normal success+fallback_cron_id bound+live verifier PASS→cron-remove called / 2 normal success+fallback_cron_id missing→cron-remove 0·preserved / 3 task_id mismatch→cron-remove 0 / 4 chat_id mismatch→cron-remove 0 / 5 role not fallback→cron-remove 0 / 6 normal collector failure/HOLD/partial→cron-remove 0 / 7 cron-remove exception→normal success preserved / 8 cancel-audit JSON 생성 / 9 fallback duplicate safety path 무회귀 / 10 +41 fixture normal success 후 fallback 발화 재현 / 11 +41 fixture 수정 경로 cancel-on-success PASS / 12 +39 fixture normal success 후 fallback 발화 재현 / 13 +39 fixture 수정 경로 cancel-on-success PASS / 14 unrelated cron remove attempt 0 / 15 +32 mandatory normal callback contract 무회귀 / 16 +37 cancel wiring regression 무회귀 / 17 +44/+46 4-tuple/root resolver와 호환 / 18 raw token/credential exposure 0 / 19 runtime checkpoint primary path 대체 없음 / 20 normal collector success와 cancel failure decoupled.

## 7. 허용 (회장 verbatim)

operational collector wiring 보강 · cancel-on-success live wiring 보강 · cancel-audit schema/result 추가 · fixture/regression 추가 · Codex audit + ANU-Codex adjudication.

## 8. 금지 (회장 verbatim — D-SPEC-EXACTNESS 원문 박제)

unrelated cron 제거 · live cron 강제삭제 · dev 재가동 · 신규 unrelated dispatch · branch/commit/push/PR/merge · GitHub write · credential/OWNER PAT 조작 · 기존 +39/+41/+42/+43 산출물 수정 · callback/fallback 구조 폐기 · runtime checkpoint를 primary callback 대체물로 격상 · 문서/메모리만으로 완료 처리.

## 9. HOLD_FOR_CHAIR (회장 verbatim)

live normal collector entrypoint를 안전하게 특정할 수 없음 · fallback_cron_id durable lookup이 안전하지 않음 · live verifier를 우회해야 함 · unrelated cron 제거 위험 · normal collector success가 cron-remove 실패로 실패 처리될 위험 · +32/+37/+44/+46 regression 깨짐 · Codex unresolved HIGH/CRITICAL · credential/permission expansion 필요.

## 10. 완료 후 보고 (회장 verbatim — consolidated 입력, 단독·중간 0)

1 +45 PASS/HOLD / 2 live collector entrypoint 결선 위치 / 3 fallback_cron_id lookup 방식 / 4 live verifier 5조건 적용 결과 / 5 cancel-audit JSON 결과 / 6 +39/+41 fixture 재현/해결 결과 / 7 regression 결과 / 8 Codex audit / ANU-Codex adjudication / 9 향후 normal success 시 fallback 발화 0 기대 여부 / 10 HOLD_FOR_CHAIR 여부. `memory/events/task-2553+45.result.json` + `memory/reports/task-2553+45.md`.

## 11. callback (a) — 정정 표준 MANDATORY

executor 완료 직후 normal completion callback cron 발사(MANDATORY) + ANU fallback 등록. 4-tuple={task-2553+45, dispatch_cron, normal_collector_cron(필수), fallback_cron}. cancel-on-success 실 cron-remove 대상은 §3 5조건 AND PASS 의 bound fallback 1건 한정(테스트=Fake/Spy 격리, 실 운영 cron 무접촉). §8 "unrelated cron 제거·live cron 강제삭제 금지"와 별개 — bound·verified 단일 cancel seam(9-R.1 Layer A: 모듈 임의 cron 조작 0 / Layer B: verified single bound cancel = 본 task 목표 자체).

## 12. 9-R — Codex lint 반영 (확정 — 본 절이 본문에 우선)

### 9-R.1 (HIGH §3/§11 live cancel seam ↔ §8 "unrelated cron 제거·live cron 강제삭제 금지") — 2-layer 분리·확정
**본 9-R 절이 본문(§3/§8/§11)에 우선한다.**

- **Layer A — deliverable module 경계 (§5/§8 구속)**: cancel_on_success_live_wiring·operational_collector_wiring 보강·cancel_audit_writer 모듈은 cron 을 자체 로직으로 임의 추가/제거하지 않는다. §8 "unrelated cron 제거 / live cron 강제삭제 금지"는 이 산출 모듈을 구속 — *unrelated* / *강제(force)* / *임의(arbitrary)* cron 조작 0. 테스트는 Fake/Spy 격리, 실 운영 cron 무접촉.
- **Layer B — verified single bound cancel seam (§3 목표 자체)**: §3 의 cron-remove 대상은 (i) durable 4-tuple registry(+44/+46) 에서 안전 lookup 된 fallback_cron_id 1건, (ii) live cron-state verifier 5조건 AND PASS, (iii) task_id·chat_id·role 정합 — 이 **단일 bound·verified** cancel 1건만이다. 이는 *unrelated* 도 *강제삭제* 도 아니며 본 task 의 목표 자체(회장 §1 verbatim "fallback/dead-man cron이 실제로 cancel-on-success 경로를 타도록 결선")이다. 5조건 미충족·mismatch·missing·lookup 불가·exception = cron-remove 0·fallback 보존·normal success decouple 유지.

→ 두 layer 직교. §8 금지(unrelated/force)와 §3 목표(single verified bound cancel)는 충돌하지 않음. **선행 게이트**: §4 — +44/+46 durable registry·artifact root resolver 산출이 present·complete 함을 확인하기 전에는 live cron-remove 0(HOLD 또는 순차 대기). CRITICAL0. Codex re-lint GO_READY + +44/+46 settle 확인 후 ANU 1회 위임.
