# task-2562 — Checklist

## Final Preflight (4건, 발사 전 강제)

- [x] task-2560 stale .done.escalated supersede evidence 확인 — `memory/events/task-2560.reconcile-evidence.json` `merged_supersedes_stale_escalated.verdict == MERGED_SUPERSEDES_STALE_ESCALATED`
- [x] task-2561 intended skip evidence 확인 — `memory/events/task-2561.reconcile-evidence.json` `post_merge_smoke.skip_reason` 에 `INTENDED` 명시
- [x] task-2562 expected_files 최종 확정 (8 mandatory + 2 conditional 분리 + 본 dispatch에서 OD_3 (a) 채택으로 conditional → expected_files 승격, 총 10)
- [x] conditional files 정책 박제: 수정 시 expected_files 승격, 미수정 시 actual_changed_files 포함 금지

## 구현 (8 항목)

- [x] `scripts/gemini_cli_gate_check.py` 신규 (OAuth-personal 강제 / scope_violation / fix_loop counter / Lv 기반 mixed gate)
- [x] `scripts/finish-task.sh` line 830 부근 `[G4-GATE]` block 추가
- [x] fix_loop counter `memory/events/<task_id>.g4-fix-loop-count` atomic write, max=2 hard cap
- [x] Lv 기반 mixed gate 분기 — Lv.1~2 soft / Lv.2 risk-trigger hard / Lv.3+ hard
- [x] OAuth-personal 사용 범위 + 금지 7건 박제 (task-2562.md + context-notes.md)
- [x] regression test (pass/fail/soft/hard 분기 + scope_violation + fix_loop_cap + API key 거부)
- [x] fixture / 시나리오 (Lv 별)
- [x] dispatch_decision.json authoritative 작성

## 봇 직접 행동 8 (cron 발사 후)

- [ ] cokacdir 시작
- [x] worktree (`/home/jay/workspace/.worktrees/task-2562-dev1`)
- [ ] PR 생성 (BOT_GITHUB_TOKEN)
- [ ] CI 11 checks SUCCESS
- [ ] Gemini fresh + unresolved 0
- [ ] BOT squash merge (admin override 0)
- [ ] smoke + reconcile evidence
- [ ] lifecycle markers + 보고서

## 금지 9건 어셀션

- [x] task-2559 번호 사용 0
- [x] task-2560/2561 후속 수정 섞기 0
- [x] G4 = Pre-PR 단발 gate (공식 merge gate 아님) 박제
- [x] finish-task.sh 수정 + regression test 동반
- [x] 회장 수동 `/gemini review` 0
- [x] long polling 0 (timeout 60s)
- [ ] force push / rebase / admin override 0 (PR 단계에서 어셀션)
- [ ] BOT `/gemini review` 0 (PR 단계에서 어셀션)
- [x] task-2558/2559/2560/2561 영역 변경 0
