---
task_id: task-2507
type: checklist
scope: task
created: 2026-05-08
updated: 2026-05-08
status: completed
---

# 체크리스트: task-2507

**task**: task-2507

---

## Phase 0 — G1 사전 게이트 (마르두크)

- [x] A. plan/context-notes/checklist 업데이트
- [x] B. Codex 사전 검증 PASS (codex_gate_check.py)
- [x] C. sanitize 게이트 통과 (PII 마스킹)
- [x] D. worktree 생성 완료

## Phase 1 — 백엔드 (엔키, sonnet)

- [x] A. `_safe_grep_pattern(task_id)` 헬퍼 추가 (regex escape)
- [x] B. `_search_commit_in_workspaces(task_id)` 헬퍼 추가 (worktree → main 폴백)
- [x] C. `_get_merge_commit_from_timers(task_id)` 헬퍼 추가 (mergeCommit evidence)
- [x] D. `_ensure_origin_main_fetched(proj_dir)` 헬퍼 추가 (fetch 보장)
- [x] E. `verify()` 본문에 4 헬퍼 통합 (COMMIT_EXISTS / NON_EMPTY_COMMIT 양쪽)
- [x] F. Edit 직후 grep 검증 (헬퍼 4종 모두 정의 확인)
- [x] G. micro-commit (`feat: git_evidence 4 fix`)

## Phase 2 — 테스터 (닌기르수, sonnet)

- [x] A. `tests/regression/test_git_evidence_worktree_2507.py` 신규 (FP 5건 + TP 5건)
- [x] B. FP-1: task-2503 squash merge case (timers mergeCommit 단독)
- [x] C. FP-2: task-2487+1 regex escape (`+` 포함 ID)
- [x] D. FP-3: task-2502 worktree 격리 (main 폴백)
- [x] E. FP-4: task-2485+1 fetch 후 origin/main 발견 (mock fetch)
- [x] F. FP-5: mergeCommit 단독 evidence (git log 0건)
- [x] G. TP-1: 커밋 0 + mergeCommit 0 → FAIL
- [x] H. TP-2: uncommitted 변경 → FAIL
- [x] I. TP-3: 빈 commit → FAIL
- [x] J. TP-4: 시스템 자동 파일만 → PASS
- [x] K. TP-5: non-code task → SKIP
- [x] L. micro-commit (`test: git_evidence 회귀 10건`)

## Phase 3 — 통합/검증 (마르두크)

- [x] A. pytest 10/10 PASS
- [x] B. 기존 git_evidence 단위 테스트 0건 회귀
- [x] C. 자기참조 — task-2507 commit으로 verify() PASS
- [x] D. L1 스모크: verifier 직접 호출 + 결과 기록
- [x] E. G3 독립 검증 (g3_independent_verifier.py) PASS
- [x] F. SCQA 보고서 작성

## 검증

- [x] 테스트 통과 확인 (pytest 회귀 10/10 + 단위 35/35)
- [x] QC 검증 완료 (셀프 8항목)
- [x] 마아트 독립 검증 PASS (자기참조 PASS evidence)
- [x] 최종 보고
- [ ] PR 생성 + Gemini 리뷰 (다음 단계)
