# TERMINAL_STATE_CALLBACK_CONTRACT — finish-callback 강제 결선 후속 task 초안 (read-only draft)

작성: 2026-06-10 KST / ANU 직접 / 상태: 후속 task 후보(미발행·미dispatch)
근거: dev1(task-2730) + dev2(task-2730-r2) **closeout 미완 2회 반복** 실증. callback 발사가 finish-task 끝단 + prompt 텍스트 + 수동 흐름 의존·코드 미강제.
★ 회장 지시: 후속 task 는 **문서가 아니라 실행 경로 강제 장치**로 설계.

## 문제 (실증 2회)
- dev1: finish closeout(result.json/.done/callback) 미완 종료(git hygiene 복구로 65분 소진).
- dev2: finish-task closeout 단계 start_task_guard 전용 worktree 경로 불일치 + branch regex(-r2→task-2730) + task-lock 마찰 → finish 미완 종료. callback=finish 끝단이라 미도달.
- 공통 근본: **callback 발사가 executor 완료 경로에 코드로 강제되지 않음**(prompt §callback 텍스트 지시 + 수동 finish-task.sh 의존). finish 가 막히면 callback 도 죽음.

## 설계 원칙 (문서 아닌 강제 장치)
1. **callback 을 finish-task 끝단 수동 단계에서 분리** → executor 작업 종료를 OS/코드가 감지해 **결정론적으로 callback 발사 강제**.
2. **task-2730 OS pickup runner 와 직접 연계**: dev bot 은 result.json 만 작성(callback schedule 생성 금지) → OS-level pickup runner(systemd path + deterministic closeout)가 result.json 수거 → owner-proof(read-only) → CLOSEOUT_DONE/relay. 즉 **callback 미발사여도 OS runner 가 활동-독립적으로 수거**. ★ 이것이 task-2730 의 본래 목적 — dev1/dev2 closeout 미완이 그 필요성 실증.
3. callback 발사 의존 제거: executor self-report callback 대신 **result.json 존재 = 완료 신호**, OS runner 가 closeout 책임.

## 후속 task 후보 범위 (초안 — 발행/dispatch 미정)
- (A) **finish-task closeout 강제 결선**: finish-task.sh 가 git-hooks/guard/worktree 경로 마찰과 무관하게 result.json + .done + callback 트랜잭션을 원자적으로 보장(또는 OS runner 로 위임).
- (B) **start_task_guard worktree 경로 표준화**: dispatch prompt 가 worktree 경로(.worktrees/<task>) 명시 강제 + guard 와 일치. (dev2 마찰 근본 — ANU dispatch prompt 책임 포함.)
- (C) **branch regex -rN/+N 지원**: guard task-id 추출이 replacement/chain suffix 인식(현재 -r2 → task-2730 추출, dev1 state 충돌).
- (D) **callback executor-path 강제**: TERMINAL_STATE 도달 시 OS/코드가 callback 발사(executor 세션 생존 무관). = OS_LEVEL_PICKUP_RUNNER 의 production activation 과 직결.

## task-2730 계열과의 관계
- task-2730(merged): OS-level pickup deterministic closeout **코드** main 반영. 단 **ACTIVE=false·미activation**.
- 이 후속(TERMINAL_STATE_CALLBACK_CONTRACT)은 task-2730 runner 를 **finish-callback 강제 경로로 활용**하는 활성화/결선 계열. → task-2730 production activation gate(systemd 설치·flag·epoch)와 함께 회장 별도 결정.

## 금지 / 주의
- 사후 callback 임의 발사 0(evidence purity — dev1/dev2 미발사 그대로 증거 보존).
- 이 초안 = 후속 task **후보**(발행·dispatch·구현 0). 회장 결정 시 정식 task md + spec-anchor + D-SPEC-EXACTNESS.
- ACTIVE=false / production_activation_gate=HARD BLOCK 무관(설계 초안).

## 판정
- **FINISH_CALLBACK_ENFORCEMENT_FOLLOWUP_DRAFT_READY**. dev1/dev2 closeout 미완 2회 = callback executor-path 미강제 실증. 후속 = 문서 아닌 강제 장치(OS runner 수거 + finish-task 원자성 + guard 경로 표준화 + branch regex + callback 강제). task-2730 production activation 계열과 직결. 발행/dispatch/구현 = 회장 별도 결정.
