# task-2554+2 checklist

## Phase A — Bootstrap
- [x] cokacdir 시작
- [x] origin/main fetch + clean worktree (`.worktrees/task-2554plus2-dev5`)
- [x] baseline 어셀션 (git diff origin/main..HEAD == ∅)
- [x] PR #105 head 08f2d29c 코드 read-only 분석
- [x] 3 docs 생성 (plan / context-notes / checklist)

## Phase B — Implementation
- [ ] §1 `anu_v2/owner_trigger_only.py` — PR #105 baseline + RESULT_PENDING import + http_post 직전 PENDING txn.record
- [ ] §2 `anu_v2/owner_trigger_audit.py` — PR #105 baseline + bounded/reverse scan
- [ ] §1+§2 부속 `anu_v2/owner_trigger_decision.py` carry-over
- [ ] §3 `anu_v2/merge_queue_executor.py` — GEMINI_STALE_ON_HEAD hook + OWNER_TRIGGER_REQUIRED method
- [ ] §4 file evidence helpers (decision.json + 5종 marker)
- [ ] 7 existing tests carry-over (104 baseline 보존)
- [ ] §5 6 신규 regression fixture 작성

## Phase C — Verification
- [ ] Codex 사전 검증 PASS (G1)
- [ ] pytest regression 전부 PASS (104 baseline + 6 new)
- [ ] static check (py_compile, type check)
- [ ] effective diff == expected_files 1:1
- [ ] forbidden path 0 어셀션
- [ ] PR #104 head 4e8f89795ab1 unchanged + PR #105 head 08f2d29c unchanged

## Phase D — PR + Finalize
- [ ] git commit + push
- [ ] PR 생성 (BOT_GITHUB_TOKEN identity)
- [ ] Gemini fresh review 대기 (1st review 자동 trigger 보장)
- [ ] unresolved 0 어셀션
- [ ] CI all SUCCESS + mergeStateStatus CLEAN
- [ ] BOT squash merge + post-merge smoke + reconcile evidence
- [ ] markers (.done / .done.acked / .merge-done / .smoke-evidence / .reconcile-evidence)
- [ ] 보고서 작성

## L1 스모크테스트 (★ .done 전 필수)
- [ ] pytest -q anu_v2/tests/test_owner_trigger_* (104 + 6 = 110 PASS)
- [ ] python -m py_compile anu_v2/owner_trigger_*.py anu_v2/merge_queue_executor.py
- [ ] 6 신규 fixture 개별 PASS 어셀션
- [ ] expected_files 1:1 어셀션
