---
task_id: task-2509+1
type: checklist
scope: task
created: 2026-05-08
updated: 2026-05-08
status: completed
---

# 체크리스트: task-2509+1

**task**: task-2509+1

---

## Phase 1 — 루 (백엔드)

- [x] A. `GeminiStatus` 상수 7종 + 분류 헬퍼 추가 (`classify_gemini_status`)
- [x] B. `RiskLevel` 상수 3종 + `assess_risk_level` 함수 추가 (HIGH_CORE 파일 4종 매칭)
- [x] C. `evaluate_fallback_review` 함수 신규 (8조건 검사)
- [x] D. `static_risky_pattern_scan` 함수 신규 (force push / admin override / cherry-pick / manual .done 정적 검사)
- [x] E. `evaluate_pr` §7 영역을 `review_gate_passed` 로직으로 교체
- [x] F. `verify_head_lock_then_merge`에 non-dry-run + smoke_command=None → BLOCK 게이트 추가
- [x] G. `recheck_following_prs` 7개 신규 항목 추가
- [x] H. `QueueDecision`에 신규 필드 7종 추가 + `write_audit`에 자동 포함
- [x] I. CLI JSON 출력에 신규 필드 노출 (breaking change 없음)

## Phase 1 — 모리건 (테스터)

- [x] J. `tests/regression/test_merge_queue_executor_review_gate_2509p1.py` 신규 작성 (12 케이스)
  - [x] TC-01 Gemini COMPLETED + unresolved 0 → review_gate_passed=true
  - [x] TC-02 Gemini UNAVAILABLE_QUOTA + fallback PASS → review_gate_passed=true (★ PR #58)
  - [x] TC-03 Gemini UNAVAILABLE_QUOTA + fallback FAIL → BLOCK
  - [x] TC-04 Gemini TIMEOUT + fallback PASS → PASS
  - [x] TC-05 Gemini UNRESOLVED + real_bug → BLOCK
  - [x] TC-06 Gemini SCOPE_EXPANSION → CRITICAL_GEMINI_SCOPE_EXPANSION
  - [x] TC-07 smoke_command=None + dry_run=True → WARN/SKIP
  - [x] TC-08 smoke_command=None + dry_run=False → BLOCK
  - [x] TC-09 HIGH_CORE risk + Gemini quota → static risky pattern scan + Codex 요구
  - [x] TC-10 후행 PR stale BEHIND 감지
  - [x] TC-11 후행 PR effective diff 오염 감지
  - [x] TC-12 audit JSON 신규 7 필드 기록 검증

## Phase 2 — 다그다 통합

- [x] K. 12 신규 + 14 기존 회귀 테스트 PASS 확인
- [x] L. CLI dry-run으로 PR #58 fixture 재현 → `gemini_status=GEMINI_UNAVAILABLE_QUOTA` + `fallback_review_passed=true` + `review_gate_passed=true` 확인
- [x] M. micro-commit + worktree finish (G3까지)

## 검증

- [x] Codex gate PASS (사전)
- [x] Sanitize gate (PII 마스킹) — 외부 AI 호출 시
- [x] G3 독립 검증 PASS
- [x] 테스트 26/26 PASS
- [x] 보고서 SCQA 포맷 작성
- [x] finish-task.sh 실행
