# task-2553+25 — OPERATIONAL COLLECTOR WIRING: run_operational_cancel_seam(operational=True) 결선 (회장 GO, 코드/파일 자동화)

> **Lv**: Lv.4 — 운영 normal-collector 경로에 cancel seam 실결선. **Executor**: 적합 dev 1회 한정 (ANU-Codex loop 선행). **TTL**: 2h.
> **상태**: 회장 GO — task-2553+23 ACCEPT(operational readiness PASS: live_cron_state_verifier 5조건 AND·operational_cancel_seam·regression 12/12·디커플·frozen anchor byte-0). 단 운영 collector **결선 미완** → 본 task = normal completion callback collector durable-success 직후 `run_operational_cancel_seam(operational=True)` **1회 호출** 결선. md 박제만 금지.
> **선행**: +23(seam·verifier·regression 완성, PASS). +9a 분리모듈. **병렬**: Track P(+22)·Track AUTH(+24) SAFE_PARALLEL(callback infra 도메인, expected_files ∅). +23 산출물=입력.

---

## 1. 확정 전제 (+23 collector log 검증 — 변경 불가)

+23 PASS: `utils/live_cron_state_verifier.py`(실 remove 직전 live cron-state **5조건 AND**: ①task_id ②chat_id==6937032012 ③role==fallback ④marker.fallback_cron_id==target==live id ⑤pending) + operational_cancel_seam + regression **12/12** + 33 passed(+9a 17 무회귀) + frozen anchor `utils/anu_delegation_completion_callback.py` sha256 `83b3e307c8207c76a3e311c408aab4951373bd317896e51687d3007907b0c3d4` byte-0 + +9a 무수정 + 디커플 증명 + git invariant. operational readiness = operational=True 결선 시 normal success 후 fallback 자동취소→발화 0(미결선 상태).

## 2. 목표 (회장 verbatim)

normal completion callback collector **durable-success 직후** `run_operational_cancel_seam(operational=True)` 를 **1회 호출**하도록 운영 collector 경로에 결선.

## 3. 조건 (회장 verbatim)

- live cron-state verifier **5조건 AND PASS 일 때만** 자기 task fallback cron **1건** 제거.
- verifier SKIP / mismatch / 조회 실패 / role 불일치 / chat_id 불일치 / task_id 불일치 → fallback **보존**(remove 0).
- cron-remove 실패가 normal collector 성공을 실패로 **바꾸지 않음**(디커플).
- cancel audit JSON 생성.
- 기존 **DUPLICATE_CALLBACK_IGNORED fallback 안전망 유지**(무회귀).

## 4. 무변경 anchor (byte-0 강제 — ANU 핵심 제약)

`utils/anu_delegation_completion_callback.py` sha256 `83b3e307…` **byte-0**(orchestrator 본체 — 수정·import 결합 0). 결선은 **additive seam-call 만**: normal-collector 의 durable-success seam 에서 `run_operational_cancel_seam(operational=True)` 호출하는 **wrapper/seam-call(신규 또는 +23 산출 seam 확장)** — frozen orchestrator·collector 본체 직접 mutation 0. +9a/+23 strict-additive 규율 상속. **운영 collector forbidden target 직접 수정이 결선의 유일 경로면 → §7 HOLD_FOR_CHAIR**(우회·frozen edit 0). 기타 frozen anchor(pre_authorized_*·isolated_worktree_evidence·goal_activation_controller·pre_authorized_activation_runner·branch_ref_allocator·anu_v3 coordinator·completion_callback_fallback_cancel 기존 시그니처) 무변, +23 verifier/seam 기존 API 무회귀.

## 5. 필수 산출 (회장 verbatim 6 — 실행파일/JSON)

1. **운영 collector 결선 코드 또는 seam 호출 wrapper**(additive — normal-collector durable-success 직후 run_operational_cancel_seam(operational=True) 1회 호출. 결선 위치·방식 명시).
2. **cancel audit JSON schema/result**(`memory/events/task-2553+25.cancel-audit.schema.json` + 샘플 result: 대상 cron_id·5조건 각 결과·invoked/skip·사유·normal-success 독립 boolean).
3. **regression test**(결선 경로 단위: ①durable-success→seam 1회 호출 ②verifier 5조건 PASS→remove called ③각 mismatch/SKIP→preserve remove 0 ④cron-remove 실패→normal success 불변(디커플) ⑤기존 DUPLICATE_CALLBACK_IGNORED 무회귀 ⑥frozen anchor byte-0 ⑦seam 중복호출 0/idempotent).
4. **dry-run fixture**(operational=True 결선 경로 mock — 실 운영 cron 실제 삭제 0, 격리).
5. **operational readiness decision JSON**(`memory/events/task-2553+25.operational-readiness.json`: 결선 위치·additive 증명·frozen byte-0 sha·디커플 증명·실 cron-remove 적용 가능 여부·향후 normal success→fallback 발화 0 보장).
6. **final packet**(result.json).

## 6. 금지 (회장 verbatim + scope)

unrelated cron 제거 / live verifier 실패 시 cron-remove / dev 재가동 / dispatch / branch·commit·push·PR / merge / credential·OWNER PAT 조작 / callback collector 권한 확대 / 기존 duplicate suppression 제거 / frozen anchor(특히 anu_delegation_completion_callback) 수정·import 결합 / Track P(+22)·AUTH(+24)·+23(입력 외 수정)·Track M·coordinator artifact 수정·인용 / **본 task 구현·테스트 중 실 운영 cron 실제 삭제 0**(mock/fixture/격리만; 실 런타임 발화는 결선 완료·verifier PASS 후 운영단계 동작이지 본 task 행위 아님). live `/home/jay/workspace` git tracked HEAD/branch/ref(`task/task-2553p1-f1-clean-replacement` `20456b5f`) 전후 assertEqual(task-2553+25.* marker=git-untracked batch-internal, 위반 아님).

## 7. HOLD_FOR_CHAIR (회장 verbatim)

운영 collector forbidden target 직접 수정 필요 / live cron-state verifier 우회 필요 / task_id·chat_id·role 검증 없이 remove 필요 / unrelated cron 건드릴 가능성 / cron-remove 실패가 collector success 를 깨뜨릴 위험(디커플 불가) / regression 실패 / Codex HIGH·CRITICAL / ANU-Codex 반복충돌 / frozen anchor 변경 필요 / Critical7.

## 8. 완료 후 보고 (회장 verbatim — consolidated summary 통합, 단독 0)

결선 위치 / normal success → fallback cancel evidence / verifier mismatch → fallback preserved evidence / duplicate fallback path 무회귀 / 실 cron-remove 적용 가능 여부 / HOLD 여부. batch consolidated summary 통합. result.json final packet.

## 9. ANU-Codex loop + callback (자동, 중간보고 0)

batch plan(§5) → Codex lint → ANU refine(9-R) → re-lint → ANU→executor 1회 위임(loop 기계, §6 'dispatch 금지'=executor 작업중 신규 dispatch 금지와 무관; 적합 dev 1회 TTL2h, callback (a) normal+fallback, 4-tuple task_id=task-2553+25 분리·타 track artifact 인용 0) → 결선·audit·regression·dry-run → frozen byte-0 검증 → post-result audit → adjudication → result.json → batch 통합. §7 트리거만 회장 보고, 그외(LOW/MED·fixture·regression·false-positive) 자동 수렴.

## 11. 9-R — Codex lint 반영 (NEEDS_REFINEMENT → 자동 수렴, agent ad8f3d1e493ec688e: CRITICAL0/HIGH3/MED3/LOW1)

### 9-R.1 (HIGH#1) §9 "위임" 용어 — 행위자 구분 (+23 9-R.1 상속)
§6 "dispatch 금지" = **executor(dev 봇)가 작업 수행 중 신규 dev/cron dispatch 발생 금지**. §9 "ANU→executor 1회 위임" = **ANU 가 본 task 를 executor 에 1회 위임하는 ANU-Codex loop 기계 단계**(ANU 행위, task 행위 아님 — 정상). 모순 아님(행위자 상이). §9 표현 확정: "→ ANU→executor 1회 위임(ANU-Codex loop 기계; executor 는 자기 작업 중 신규 dispatch·cron·delegation·executor handoff 0, 필요 시 HOLD_FOR_CHAIR) →". callback (a) normal+fallback 자가등록은 §9 callback 절차 한정(정책상 collector cron, 신규 dev dispatch 아님).

### 9-R.2 (HIGH#2) additive seam hard-gate (frozen edit 강제 차단)
허용 결선 = **+23 산출 operational_cancel_seam 을 normal-collector durable-success 인접 *기존* additive seam/wrapper 호출점에서 1회 invoke** 만. durable-success 지점에 frozen/forbidden collector 본체 편집 없이 결선 가능한 **기존 additive seam/hook 이 부재**하면 → **즉시 HOLD_FOR_CHAIR**(frozen·forbidden collector 강제 편집 0, 우회 0). 결선 위치는 additive call-site 로 명시 식별·기록(어떤 frozen/forbidden 파일도 1byte 변경 0 — sha 전후 동일 증거).

### 9-R.3 (HIGH#3) exact-once — seam-entry-time canonical token + atomic claim
`run_operational_cancel_seam(operational=True)` 는 **고유 durable-success 이벤트당 최대 1회**. **이벤트 identity 는 collector 가 durable-success 를 *판정하는 그 시점에 이미 손에 든 입력*에서 도출**(result.json 재독 의존 0): `event_id = sha256(task_id + collector durable-success 판정 튜플)` — 여기서 판정 튜플 = collector 가 success 결정 시 보유한 값(fallback_cron_id + dispatch-fired marker 경로 + durable-success 판정 입력 해시)으로, **seam 호출 시도 이전(pre-seam)에 항상 존재·안정**. seam invoke **직전 atomic claim**: `event_id` 기반 marker 를 `O_EXCL`(원자적 create-if-absent)로 선점 — 선점 성공 시에만 seam 1회 진입, 이미 존재(retries/duplicate callback/복수 success branch)면 **즉시 no-op**(seam 미진입). claim marker 는 task-2553+25.* (untracked). 중복 호출 0·exact-once 를 atomic claim 으로 기계 증명(regression §5.3-① ⑦ 강화: 동시 2호출→1 invoke·1 no-op).

### 9-R.4 (MED#1#2#3) verifier authority 재명시 + audit schema 확장 + evidence mock-only
- §3 보강: 실 removal 은 **fresh live cron-state 5조건 AND PASS 단독 권위**, dispatch-fired marker 필드는 **cross-check only·단독 불충분**(marker-only·stale-state remove 0).
- §5.2 cancel-audit schema 필수 필드: `lookup_status` / `five_condition_results`(5각) / `remove_attempted` / `remove_result` / `skip_reason` / `already_removed_or_missing` / `normal_success_unchanged`(디커플 증명) / `event_id`.
- §5.3-§5.4·§8: 본 task 전 test·evidence·증명 단계는 **mock/fixture/격리 only — 실 운영 cron 실제 삭제·실 운영 발화 요구 0**(real firing 은 결선완료·verifier PASS 후 운영단계, 본 task 행위 아님).

### 9-R.5 (LOW) invariant scope = repo root
§6 live `/home/jay/workspace` HEAD/branch/ref assertEqual = **repo root `/home/jay/workspace` 기준 한정**(비-repo cwd noise 배제).

→ 9-R.1~9-R.5 로 HIGH3+MED3+LOW1 해소. CRITICAL0. Codex re-lint GO_READY 시 dispatch.

## 10. task-2553 계열

+9a=cancel-on-success(dry-run 검증) / +23=operational integration(seam·verifier·regression PASS, 결선 미완) / **+25(본건)=운영 collector durable-success 직후 run_operational_cancel_seam(operational=True) 1회 결선** / +22=Track P profile refresh(병렬) / +24=Track AUTH(병렬) / Track M 재실행=AUTH+P 후.
