# PR #155 POST-MERGE VERIFICATION PACKET (★ 회장 verbatim 2026-05-27 · merge 후 ANU 실행)

- 작성: 2026-05-27T11:25 KST · ANU 본 chair-facing session
- 적용 시점: **회장 직접 merge 실행 후** (★ PENDING_CHAIR_EXECUTION · ANU merge 0)
- 전제: `PR155_RUNTIME_ENFORCEMENT_FINAL_MERGE_APPROVED_PENDING_CHAIR_EXECUTION`

## 0. merge 전 확정 상태 (★ ANU 독립 재검증 GitHub actual)

- PR #155 head: `af24dbf5c4eb0356207d73ea6e5ec5300504e27d`
- mergeStateStatus: CLEAN / mergeable: MERGEABLE
- unresolved: 0/8 / CI: 11/11 SUCCESS
- code push 0 (★ thread resolve only)

## 1. post-merge mandatory 4 gate (★ 회장 verbatim)

### Gate 1 — merge runtime evidence
- 검증: `git fetch origin main` → `git log origin/main` 에 PR #155 merge commit 존재
- `gh pr view 155 --json state,mergedAt,mergeCommit` → state=MERGED + mergeCommit SHA
- origin/main HEAD 가 PR #155 변경(validator/marker/helper/finish-task.sh) 포함 확인
- PASS 기준: merge commit actual 존재 + origin/main 반영

### Gate 2 — callback persistence
- 검증: origin/main 에 `utils/normal_callback_registration_validator.py` + `utils/callback_registration_marker.py` 실재
- `git show origin/main:utils/normal_callback_registration_validator.py | wc -l` → 482 lines 확인
- finish-task.sh callback enforce 단계 origin/main 반영 확인
- PASS 기준: enforcement 코드 origin/main persistence

### Gate 3 — watcher artifact persistence
- 검증: `memory/events/task-2695.*` + `memory/events/anu_callback/task-2695-normal-completion.json` 보존
- task-2695.done / thread-verify.log / qc-result 보존
- PASS 기준: watcher artifact 삭제 0

### Gate 4 — report persistence
- 검증: `memory/reports/task-2695.md` (6922 bytes) 보존
- PASS 기준: report 삭제 0 (★ ARTIFACT_PERSISTENCE_GAP 해소 확정)

## 2. self-key fail-open 재현 재검증 (★ 회장 verbatim 핵심)

**목표**: PR #155 merge 가 self-key fail-open 을 실제 차단했는지 runtime 재현

**방법** (★ merge 후 다음 normal callback 발생 시):
1. task-2695 와 동일 watcher path (★ 다음 watcher/dispatch 의 callback)
2. callback cron schedule_id 회수
3. 4-source 교차:
   - ANU key channel cron-history hit 여부 (★ merge 전: miss → merge 후: hit 기대)
   - self-key channel hit 여부 (★ merge 전: hit → merge 후: 0 기대)
   - schedule_history bot_key_verifier = ANU f95febd8 여부 (★ merge 전: dev1 68d2fff9 → merge 후: ANU 기대)
4. 판정:
   - merge 후 ANU key channel hit + self-key 0 → **SELF_KEY_FAIL_OPEN_CLOSED** (★ PR #155 enforcement 성공)
   - merge 후에도 self-key hit → **SELF_KEY_FAIL_OPEN_PERSISTS** (★ enforcement 미흡 · 추가 hardening 필요 · 회장 보고)

## 3. 검증 명령 (★ read-only · merge 후)

```bash
# Gate 1
git fetch origin main && gh pr view 155 --repo Jeon-Jonghyuk/dev_workspace --json state,mergedAt,mergeCommit
git log origin/main --oneline -5

# Gate 2
git show origin/main:utils/normal_callback_registration_validator.py | wc -l
git show origin/main:utils/callback_registration_marker.py | head -5

# Gate 3/4
ls memory/events/task-2695.* memory/events/anu_callback/task-2695-normal-completion.json
ls memory/reports/task-2695.md

# self-key fail-open 재현 (★ 다음 callback 발생 시)
cokacdir --cron-history <next_sid> --key c119085addb0f8b7   # ANU channel hit 기대
cat /home/jay/.cokacdir/schedule_history/<next_sid>.log | python3 -c "import json,sys; print(json.loads(sys.stdin.readline())['bot_key_verifier'])"
```

## 4. 금지 (★ 회장 verbatim · post-merge 시에도 유지)

- auto-merge (★ ANU merge 실행 0 · 회장 직접)
- Layer5/session continuity scope 확장
- dispatch.py 전역 개조
- hooks/settings/runtime 전역 변경
- branch cleanup (★ task/task-2694+1-dev7 삭제 0)
- HARNESS_ENFORCED 전체 선언

## 5. ANU 본 세션 흐름

1. 현재: 본 packet 작성 완료 / 회장 직접 merge 실행 대기
2. 회장 merge 실행 후: 4 gate 검증 + self-key fail-open 재현 runtime 재검증
3. 결과 보고:
   - 4 gate 모두 PASS + SELF_KEY_FAIL_OPEN_CLOSED → callback enforcement production verified
   - 1+ gate FAIL 또는 SELF_KEY_FAIL_OPEN_PERSISTS → 회장 보고 + 추가 hardening 판단

## 6. merge 후 후속 트랙

- PR #152 (session propagation): `PR152_REEVALUATION_ALLOWED_AFTER_DOGFOOD_PASS` (★ PR #155 merge 후 다음)
- Layer 5 session continuity: 별도 Track B 유지 (★ scope 확장 0)
- dispatch false-ok: operational doctrine + spawn verification 운영 (★ Track C)

끝
