# task-2689 — PR_149_X1_R7_NEW_HEAD_NUDGE_WATCHER (★ 회장 verbatim 2026-05-26 watcher 발의 · X1 R7 push 후 발사 대기)

- Level: Lv.2 (★ read-only watcher · 코드 0 · merge 0 · nudge 1회만)
- 담당: **dev3 다그다** (★ X1 R7 executor dev2 와 분리 · collector 독립성)

## 레벨

코드 수정 없음 (★ read-only watcher · ANCHOR-3 honored · QC git_evidence SKIP 메타데이터 — 회장 verbatim 2026-05-26 Decision 4 의 watcher_role "read-only only" 정합)

- 제외: dev2 오딘 (★ X1 R7 executor) / dev4/dev5 (self-key 사고) / dev1/dev8 (task-2686 영역)
- chair_authorization_id: **`CHAIR-AUTH-PR149-X1-R7-NEW-HEAD-WATCHER-20260526-JJONGS-WATCH-001`** (★ 회장 verbatim 발사 시 확정)
- 완료 상태: **`PR_149_X1_R7_NEW_HEAD_WATCHER_TERMINAL_STATE_REPORTED`**

## 배경

task-2688 (★ dev2 오딘 PR #149 X1 R7 Thread 1+2+3 묶음) push 완료 후 new head 생성.
- old head: `afb37bd3616339a6468d940cdd417e331a51b36c` (★ R6)
- new head: TBD (★ task-2688 envelope 의 new_head_sha 인용)
- branch: task/task-2662-dev2

회장 verbatim 2026-05-26 결정 4: "X1 R7 push 후 새 head 가 생기면 per-head nudge count 0 확인 후 nudge 1회와 watcher 재부착 진행".

## 회장 verbatim 작업 순서

1. **per-head nudge count 0 확인** (★ new head 에 nudge 0 보장)
2. **OWNER_GEMINI_TRIGGER_ROUTER nudge 1회** (★ 회장 UI 최후수단 회피 · OWNER PAT 봇 routing 사용)
3. **watcher 재부착** (★ poll 120s · max 60min)
4. **terminal_state 도달 시 ANU normal callback** (★ --session 53e89540... 적용)

## 회장 verbatim 금지

- 코드 수정 0
- PR merge 0
- auto-merge 0
- 추가 nudge 0 (★ 1회 hard limit)
- dev bot re-dispatch 0
- task-2688 코드 영역 접근 0
- PR #151 / task-2686 영역 접근 0
- Axis runtime / dispatch.py / live settings.json / hooks live 변경 0
- HARNESS_ENFORCED 전체 선언 0

## CI_WATCH_HANDOFF 12 필드

- pr_number: 149
- head_sha: TBD (★ task-2688 envelope 의 new_head_sha 인용 · launch 시 확정)
- branch: task/task-2662-dev2
- watcher_owner: dev3 다그다
- max_watch_minutes: 60
- poll_interval_seconds: 120
- gemini_nudge_policy: 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: MERGE_READY / HOLD_FOR_CHAIR / GEMINI_EXTERNAL_TRIGGER_STALE / CI_FAILED_NON_REMEDIABLE / LOOP_BOUNDARY
- expected_files: (★ read-only · 코드 0)
- forbidden_paths: task-2688 / PR #151 / task-2686 / PR #150 영역 모두

## ★ 조기 HOLD 트리거 strict

new head 만 평가. poll #N unresolved>0 + Gemini fresh + BLOCKED 즉시 HOLD_FOR_CHAIR.

## 완료 11 보고

1. terminal_state (★ 5 enum 중)
2. PR 149
3. new head SHA
4. CI 11 status
5. gemini-review-gate
6. phase3-merge-gate
7. Gemini head match new_head_sha
8. unresolved count
9. mergeStateStatus
10. forbidden_action_count 0
11. recommended next action

## allowed_resources

```yaml
allowed_resources:
  paths:
    - "memory/events/task-2689.*"
    - "memory/reports/task-2689.md"
    - "memory/tasks/task-2689.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-2686*"
    - "**/.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_new_head_no_pr_no_merge_no_code"
  ttl_hours: 2
```

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

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

## frozen anchors

- ANCHOR-1: "X1 R7 new head 만 평가 · old head afb37bd3 평가 0"
- ANCHOR-2: "OWNER_GEMINI_TRIGGER_ROUTER nudge 1회 hard limit"
- ANCHOR-3: "watcher read-only · 코드 / merge / auto-merge / 추가 nudge 금지"
- ANCHOR-4: "task-2688 / task-2686 / PR #151 / PR #150 영역 충돌 0"

## 종결

성공: **`PR_149_X1_R7_NEW_HEAD_WATCHER_TERMINAL_STATE_REPORTED`**

★ **본 task md 는 발행 준비만 완료. task-2688 X1 R7 push 완료 + new_head_sha 도착 후 회장 verbatim 발사 명령 (executor dev3 다그다 확정 + head_sha 인라인 + dispatch.py 호출 승인) 대기.**

끝