# task-2690 — PR_152_CALLBACK_SESSION_PROPAGATION_WIRING_WATCHER (★ 회장 verbatim 2026-05-26 watcher 발사 명령)

- Level: Lv.2 (★ read-only watcher · 코드 0 · merge 0 · nudge 1회만)

## 레벨

코드 수정 없음 (★ read-only watcher · ANCHOR-3 honored · QC git_evidence SKIP 메타데이터 — 회장 verbatim 2026-05-26 watcher_role "read-only only" 정합 · task-2689 패턴 일관).

- 담당: **dev1 헤르메스** (★ ANU 추천 · collector 독립성 · task-2686+1 executor dev8 분리)
- 제외: dev8 라 (★ task-2686+1 executor) / dev2 오딘 (★ task-2688) / dev3 다그다 (★ task-2689) / dev4/dev5 (★ self-key 사고)
- chair_authorization_id: **`CHAIR-AUTH-PR152-CALLBACK-SESSION-PROPAGATION-WIRING-WATCHER-20260526-JJONGS-WATCH-001`** (★ ANU 추천 표준 패턴 · 회장 verbatim 추인 대기)
- 완료 상태: **`PR_152_CALLBACK_SESSION_PROPAGATION_WIRING_WATCHER_TERMINAL_STATE_REPORTED`**

## 배경

task-2686+1 (★ dev8 라 conflict resolve + PR 생성) 완료:
- PR #152 생성 ✅
- URL: https://github.com/Jeon-Jonghyuk/dev_workspace/pull/152
- base main SHA: `319170b95b1330c3e9554eca88973e68f60e93e9`
- branch: task/task-2686+1-* (★ dev8 worktree)
- chair_facing_session dogfood PASS (★ 3 SID 일치)
- regression 신규 34 + 기존 163 PASS · forbidden 0

회장 verbatim 2026-05-26 결정: "PR #152 전용 read-only watcher를 붙여라".

## 회장 verbatim watcher 목표 8

1. CI 11 checks
2. gemini-review-gate
3. phase3-merge-gate
4. Gemini fresh review head match
5. unresolved thread count
6. mergeStateStatus
7. forbidden_action_count
8. terminal_state 분류

## 회장 verbatim terminal states 5

- `MERGE_READY`
- `HOLD_FOR_CHAIR`
- `GEMINI_EXTERNAL_TRIGGER_STALE`
- `CI_FAILED_NON_REMEDIABLE`
- `LOOP_BOUNDARY`

## 회장 verbatim 금지 12

1. PR #152 merge 0
2. auto-merge 0
3. code modification 0
4. additional nudge without stale confirmation 0
5. PR #149 코드와 혼합 0
6. PR #151 코드와 혼합 0
7. live settings.json 변경 0
8. hooks live 변경 0
9. dispatch.py 변경 0
10. Axis runtime 변경 0
11. HARNESS_ENFORCED 전체 선언 0
12. policy 승격 0 / BLOCK 확대 0

## CI_WATCH_HANDOFF 12 필드

- pr_number: **152**
- head_sha: (★ task-2686+1 envelope new_pr_head_sha 인용 · launch 시 확정)
- branch: task/task-2686+1-* (★ task-2686+1 conflict resolve worktree)
- watcher_owner: **dev1 헤르메스**
- max_watch_minutes: 60
- poll_interval_seconds: 120
- gemini_nudge_policy: stale 확인 후 OWNER_GEMINI_TRIGGER_ROUTER 1회 hard limit
- auto_remediation_policy: AUTO_REMEDIATION_0 (★ watcher 코드 수정 0)
- callback_on_terminal_state: ANU normal callback `c119085addb0f8b7` --session 53e89540...
- terminal_states: 5 enum (★ 위)
- expected_files: (★ read-only · 코드 0)
- forbidden_paths: PR #149 / PR #151 / task-2686 / task-2688 / task-2689 / task-2686+1 영역 모두

## ★ stale 확인 후 nudge 1회 hard limit (★ 회장 verbatim 강화)

- 회장 verbatim "additional nudge without stale confirmation" 금지 → **stale confirmation 통과 후만 nudge 1회**
- stale 확인 = Gemini 마지막 응답 후 gemini_stale_threshold 초 초과 + unresolved>0 + head match 일치
- stale 미확인 상태 nudge 0

## ★ 조기 HOLD 트리거 strict

PR #152 만 평가 (★ PR #149/#151 영역 접근 0). poll #N unresolved>0 + Gemini fresh + BLOCKED 즉시 HOLD_FOR_CHAIR.

## 완료 11 보고

1. terminal_state (★ 5 enum 중)
2. PR 152
3. head SHA (★ task-2686+1 envelope 인용)
4. CI 11 status
5. gemini-review-gate
6. phase3-merge-gate
7. Gemini head match
8. unresolved count
9. mergeStateStatus
10. forbidden_action_count 0
11. recommended next action

## allowed_resources

```yaml
allowed_resources:
  paths:
    - "memory/events/task-2690.*"
    - "memory/reports/task-2690.md"
    - "memory/tasks/task-2690.md"
    - "INDEX.md"
  forbidden_paths:
    - "/home/jay/.claude/**"
    - "/usr/local/bin/cokacdir"
    - ".github/**"
    - "hooks/**"
    - "dispatch.py"
    - "scripts/finish-task.sh"
    - "utils/**"
    - "tests/**"
    - "schemas/**"
    - "memory/specs/**"
    - "memory/events/task-2688*"
    - "memory/events/task-2689*"
    - "memory/events/task-2686*"
    - "memory/events/task-2686+1*"
    - "**/.env*"
    - "**/credentials*"
  commands:
    - "gh pr view"
    - "gh api graphql"
    - "gh api"
    - "python3 -c"
    - "python3 -m json.tool"
    - "ls / cat / wc / grep / find / tail / head / printf / sha256sum"
    - "cokacdir --cron"
    - "cokacdir --currenttime"
    - "touch"
    - "mkdir"
    - "sleep"
  merge_policy: "watch_only_pr152_no_pr_no_merge_no_code"
  ttl_hours: 2
```

## ANU normal callback (★ self-key 금지 + session propagation 적용)

- envelope: `memory/events/anu_callback/task-2690-normal-completion.json`
- owner key: ANU `c119085addb0f8b7`
- ★ cokacdir --cron --session `53e89540-5bed-4692-a726-ed857820758a` 적용 강제
- envelope ≤ 3900 bytes
- absolute fire timestamp: terminal_state 도달 시점 +30s
- envelope 3 field: chair_facing_session_id / collector_session_id / delivery_session_id

## frozen anchors

- ANCHOR-1: "PR #152 만 평가 · PR #149 / PR #151 / PR #150 영역 접근 0"
- ANCHOR-2: "stale confirmation 통과 후 OWNER_GEMINI_TRIGGER_ROUTER nudge 1회 hard limit"
- ANCHOR-3: "watcher read-only · 코드 / merge / auto-merge 금지"
- ANCHOR-4: "task-2686+1 / task-2688 / task-2689 영역 영역 충돌 0"
- ANCHOR-5: "callback dogfood --session 53e89540... 강제 (★ chair-facing session resume)"

## 종결

성공: **`PR_152_CALLBACK_SESSION_PROPAGATION_WIRING_WATCHER_TERMINAL_STATE_REPORTED`**

끝