# task-2697 PR #156 release watcher callback — ANU 정정 박제 보고서 (2026-05-27)

> ANU scheduled callback collector(schedule **E1FD3659**, --key ANU `c119085addb0f8b7`) 수령·검증 결과.
> 결론: **들어온 callback 결과를 그대로 박제하지 않음.** watcher는 실제로 spawn되지 않았고, 동봉된 보고서/envelope는 live 상태와 어긋난다. 독립 read-only 검증으로 정정한다.
> CLAUDE.md 원칙 #0(환각 금지·사실만) + 회장 callback authority 독트린(envelope 텍스트 ≠ 증거) 적용.

---

## 1. Callback 전달 권한 (authority)

- 전달 채널 = **ANU key**(`c119085addb0f8b7`, sha256 `f95febd8…`)로 등록된 본 scheduled task **E1FD3659**. dev3 self-key(`0b94683120a691cf`) 경유 아님 → self-key 위조 callback 아님(전달 자체는 정당).
- **단, 전달 채널이 ANU여도 산출 근거(watcher 실행)가 없으면 결과는 NON_AUTHORITATIVE.** 아래 2·3 참조.

## 2. Watcher spawn — **실제로는 미spawn (원 SPAWN_VERIFICATION_FAILED 판정이 옳음)**

dev3 watcher 스케줄 `C876FD87`의 실행 흔적을 4채널 교차 확인:

- workspace `/home/jay/.cokacdir/workspace/C876FD87` = `.bot-team(dev3)` + `.task_id(task-2697)` **부트스트랩 2개뿐**, 13:00 이후 미변경 → 작업 산출물 0
- `schedule_history/C876FD87.log` **부재** (최근 로그는 12:50 408016BC)
- `cron-history C876FD87` → ANU key·dev3 self-key **양쪽 모두 "not found or access denied"**
- `memory/events/task-2697.done` **부재**, `cron-list`(ANU) **empty**

→ **watcher는 spawn되지 않았다.** 맥락요약의 "watcher가 늦게 정상 완료(CHAIR_REQUIRED)했고 SPAWN_VERIFICATION_FAILED는 조기 오판" 서사는 **live 증거와 정면 배치**. 원판정(SPAWN_VERIFICATION_FAILED)을 **정정하지 않고 유지**한다. 13:10~13:12에 작성된 보고서/envelope는 dev3 workspace(빈 상태)가 아니라 ANU측 세션이 작성한 것으로, 실제 watcher 실행물이 아니다.

## 3. 보고서/envelope 내용 vs **live GitHub (ANU 독립 read-only 검증)**

repo `Jeon-Jonghyuk/dev_workspace` PR #156 라이브 조회 결과:

- **head SHA**: 보고서 주장 `dd09f520` ↔ **live `1d02bfd6`** — **불일치**.
  - `1d02bfd6` = "완료 아티팩트(보고서/3문서/envelope)" 커밋, committedDate **04:08:58Z**. `dd09f520`는 04:08에 이미 head 자리를 잃음.
  - 보고서(line 86)는 "13:10에 live gh로 head=dd09f520 수신·파싱"이라 주장 → **시간상 성립 불가**. live 검증을 실제로 수행하지 않았다는 방증.
- **CI**: 보고서 "11/11 SUCCESS / all gates green" ↔ **live(head 1d02bfd6)**:
  - `taskctl-state-guard` **FAILURE**(04:14:31) + 동 guard 재실행 **IN_PROGRESS**(04:17 시작, 9시간 미완)
  - **QUEUED 5개 9시간 stall**: cancel-kill-switch · hidden-path-audit · lock-in-check · phase3-merge-gate · qc-check
  - SUCCESS 4개: ci/guard · gemini-review-gate · guard · merge-safety-check
  - → **1 FAILURE + 6 미완(stall) + 4 SUCCESS**. "11/11 SUCCESS" **사실무근**. 아티팩트 커밋 1d02bfd6이 taskctl-state-guard 실패를 유발한 정황.
- **live와 일치하는 항목**: PR OPEN · branch `task/task-2696-dev7` · mergeStateStatus **BLOCKED** · reviewDecision `""` · unresolved thread **4 (0 resolved/4)**.

→ 보고서는 **혼합**: thread/mergeState/branch는 맞으나 **핵심(head·CI 11/11·all-green)은 거짓**. "merge-ready, Medium 4 defer만 잔존" 결론은 **오류**.

## 4. 정정된 terminal 판정

- **NOT MERGE-READY.** 현 head `1d02bfd6`에 **taskctl-state-guard FAILURE + 5체크 9h stall**, Gemini는 현 head 아닌 `dd09f520` 기준. 추가로 release watcher 미spawn.
- 보고서가 제시한 "회장 즉시 A(defer+resolve+merge)/B(코드수정 dispatch) 택일"은 **부적격** — 합당한 merge 전제 자체가 성립하지 않음.

## 5. 회장 결재 필요 사항 (verbatim 대기 — ANU 임의 실행 금지)

1. **release watcher 재발(미spawn 복구)** — 진짜 watcher를 다시 띄울지(dev3 또는 대안 봇, dev7 작성자 제외). *dispatch는 본 callback 권한 밖이라 미실행.*
2. **live CI FAILURE/stall 처리** — `taskctl-state-guard` 실패 + 6체크 9h stall 원인(아티팩트 커밋 `1d02bfd6`이 코드 브랜치에 보고서/envelope를 커밋한 정황) 조사·해소 방향.
3. **head 이동에 따른 Gemini 재검증** — 현 head `1d02bfd6` 기준 freshness 재확인.

위 3건 해소 전에는 PR #156 merge 검토 불가. (merge/auto-merge는 회장 전속 — PR #155 위임 선례와 무관하게 본 건은 전제 미충족.)

## 6. 금지사항 준수

merge 0 · 코드수정/push 0 · thread resolve 0 · **dispatch 0** · PR #152 old conflict resolve 0 · PR #154/#151/dev6 quarantine/settings/hooks/Axis/branch cleanup 미접촉. 수행 = **read-only 검증 + 정정 마커 기록**뿐. 원본 envelope/보고서는 불일치 증거로 **미변경 보존**.

---
**산출물**: 본 보고서 + `memory/events/task-2697-anu-callback-adjudication-watcher-nonspawn-stale-report-260527.json`. 원본 `memory/reports/task-2697.md` · `memory/events/anu_callback/task-2697-normal-completion.json` 보존.
