# task-2672 — PR_149_67BA75DE_CI_GEMINI_WATCHER (Track A · task-2671 후속)

- Level: Lv.2 (★ read-only 관찰 · 코드 0 · merge 0 · nudge 0)
- 담당: **dev4 비슈누** (★ 회장 verbatim · task-2670 dev8 라 / task-2671 dev6 페룬과 충돌 회피)
- 단일소스: 본 task md
- chair_authorization_id: **`CHAIR-AUTH-PR149-67BA75DE-CI-GEMINI-WATCH-20260526-JJONGS-WATCH-001`** (★ 회장 verbatim 권고)

## 배경

PR #149 X1 round 3 완료 (head `67ba75deab72ec659ef9559df639ced3f1e811a4`). /gemini review nudge 1회 발사 (★ comment_id 4535507250 · 00:48:35 KST). fresh Gemini review for 67ba75de 도착 + CI 재실행 관찰 강제.

★ task-2671 (b557fe71) / task-2667 (4bb627fe) 결과 혼합 금지.

## CI_WATCH_HANDOFF 12 필드

pr=149 / head=67ba75de / branch=task/task-2662-dev2 / expected_files=관찰만 / forbidden=전체 / watcher_owner=dev4 비슈누 / max_watch=60min / poll=120s / gemini_nudge_policy=**NUDGE_0** / auto_remediation=**AUTO_REMEDIATION_0** / callback=ANU normal 1회 (★ ANU key c119085addb0f8b7 · ≤3900 bytes) / terminal_states=5 enum

## 허용 8

1. PR #149 상태 관찰 (gh pr view · gh api graphql)
2. CI 11 checks 관찰
3. gemini-review-gate 관찰
4. phase3-merge-gate 관찰
5. latest Gemini review head SHA 확인 (★ head 67ba75de 기준)
6. unresolved thread count 확인
7. mergeable / mergeStateStatus 확인
8. terminal state 도달 시 ANU normal callback 1회 보고

## 금지 10 (회장 verbatim)

1. 코드 수정
2. PR #149 merge
3. auto-merge
4. 추가 Gemini nudge
5. dev bot 재dispatch
6. expected_files 밖 수정
7. Axis 1/2/3 runtime 변경
8. dispatch.py 변경
9. live settings.json 변경
10. HARNESS_ENFORCED 전체 선언

## ★ 격리 anchor (회장 verbatim)

- task-2667 (head 4bb627fe) / task-2671 (head b557fe71) 결과 혼합 금지
- task-2670 RCA / Track G fix implementation 혼합 금지
- head 67ba75de 기준만 평가
- ★ HOLD_FOR_CHAIR 조기 전환 권장 (★ task-2671 watcher 사례 참조 · poll #N unresolved 발생 즉시 분류)

## terminal_state 분류

- MERGE_READY: mergeStateStatus=CLEAN + CI 11 SUCCESS + Gemini fresh review head 67ba75de match + unresolved=0
- HOLD_FOR_CHAIR: BLOCKED + CI fail/queued + unresolved>0
- GEMINI_EXTERNAL_TRIGGER_STALE: head 67ba75de 기준 fresh Gemini 60min 내 미도착
- CI_FAILED_NON_REMEDIABLE: Critical7 또는 코드결함 FAILURE
- LOOP_BOUNDARY: max_watch 60 도과 + 위 4 미도달

## 보고 필수 11

1. terminal state · 2. PR 번호 · 3. head SHA · 4. CI 11 checks · 5. gemini-review-gate · 6. phase3-merge-gate · 7. latest Gemini head match · 8. unresolved thread count · 9. mergeStateStatus · 10. forbidden_action_count (0) · 11. recommended next action

## 완료 상태

성공: **`PR_149_67BA75DE_CI_GEMINI_WATCH_TERMINAL_STATE_REPORTED`**

## expected_files (~3)

- `memory/events/task-2672.pr-149-67ba75de-ci-gemini-watch-result-260526.json`
- `memory/events/task-2672.done`
- `memory/reports/task-2672.md`

## allowed_resources

```yaml
allowed_resources:
  paths:
    - "memory/events/task-2672.*"
    - "memory/reports/task-2672.md"
    - "memory/tasks/task-2672.md"
    - "memory/system/.callback_ledger.jsonl"
    - "memory/.callback_inbox/**"
    - "INDEX.md"
  read_only_reference:
    - "PR #149 GitHub state"
    - "memory/events/anu-timeline-queue-collision-normalized-cfa86a2-260526.json"
  forbidden_paths:
    - "/home/jay/.claude/settings.json"
    - "/home/jay/.claude/hooks/**"
    - "/usr/local/bin/cokacdir"
    - ".github/**"
    - "hooks/**"
    - "dispatch.py"
    - "dispatch/**"
    - "scripts/finish-task.sh"
    - "utils/**"
    - "tests/**"
    - "schemas/**"
    - "memory/specs/**"
    - "memory/events/task-2662*"
    - "memory/events/task-2663*"
    - "memory/events/task-2664*"
    - "memory/events/task-2665*"
    - "memory/events/task-2666*"
    - "memory/events/task-2667*"
    - "memory/events/task-2668*"
    - "memory/events/task-2669*"
    - "memory/events/task-2670*"
    - "memory/events/task-2671*"
    - "memory/tasks/task-2662*"
    - "memory/tasks/task-2663*"
    - "memory/tasks/task-2664*"
    - "memory/tasks/task-2665*"
    - "memory/tasks/task-2666*"
    - "memory/tasks/task-2667*"
    - "memory/tasks/task-2668*"
    - "memory/tasks/task-2669*"
    - "memory/tasks/task-2670*"
    - "memory/tasks/task-2671*"
    - "**/.env*"
    - "**/credentials*"
  commands:
    - "gh pr view"
    - "gh api graphql"
    - "gh api"
    - "python3 -c"
    - "python3 -m json.tool"
    - "ls"
    - "cat"
    - "sha256sum"
    - "wc"
    - "printf"
    - "grep"
    - "find"
    - "tail"
    - "head"
    - "cokacdir --cron"
    - "cokacdir --currenttime"
    - "touch"
    - "mkdir"
    - "sleep"
  merge_policy: "watch_only_67ba75de_no_pr_no_merge_no_code"
  ttl_hours: 2
```

## 종결

성공: **`PR_149_67BA75DE_CI_GEMINI_WATCH_TERMINAL_STATE_REPORTED`**

끝
