---
task_id: task-2512
type: checklist
scope: task
created: 2026-05-09
updated: 2026-05-09
status: completed
---

# 체크리스트: task-2512

**task**: task-2512 — post_merge_smoke_runner

---

## Phase 0 — 다그다 (사전 검증)

- [x] 작업 파일 분석 + 3문서 초안 작성
- [x] 의존성 머지 확인 (PR #58/#60/#61/#62 main 반영)
- [x] worktree 생성 + origin/main 기준 reset
- [x] G1 Codex 사전 검증 (구현 후 actionable risk 4종 fix 완료)

## Phase 1 — 루(백엔드, 구현)

- [x] MT-1: SmokeStatus enum + PostMergeSmokeRun envelope dataclass
- [x] MT-2: smoke_command 추출기 (yaml block + registry fallback)
- [x] MT-3: subprocess 실행 + timeout + zombie 방지
- [x] MT-4: stdout/stderr head/tail capture (64KB cap)
- [x] MT-5: PASS/FAIL/SKIPPED/TIMEOUT/BLOCKED 분류 + Critical #7 packet 생성
- [x] MT-6: merge_commit ↔ origin/main HEAD 비교 + stale 게이트
- [x] MT-7: CLI entrypoint

## Phase 2 — 모리건(테스터, 회귀)

- [x] MT-8: PASS/FAIL/TIMEOUT 3 케이스 (회장 §1~3)
- [x] MT-9: SKIPPED + BLOCKED (회장 §4~5)
- [x] MT-10: stdout/stderr capture + JSON serialization (회장 §6~8)
- [x] MT-11: Critical #7 enum + merge_commit propagation (회장 §9~10)
- [x] MT-12: ★ replay fixtures (task-2506/2507/2509/2511 실파일) + allow_continuation + stale 게이트 (회장 §11~12)

## Phase 3 — 다그다 (게이트)

- [x] pytest 15/15 PASS (12 함수, parametrize 4건 expand)
- [x] L1 스모크: CLI 직접 호출 + JSON 출력 (10 키 모두 존재)
- [x] sanitize_gate 통과 (PII 0건)
- [x] Merge Topology Gate 자기참조 (effective diff = 정확히 2 파일)
- [x] forbidden path 0
- [ ] G2 Gemini PR 리뷰 PASS (PR 생성 후)
- [x] 마아트 독립 검증 PASS
- [ ] G3 g3_independent_verifier.py PASS (보고서 작성 후 재실행)

## 검증

- [x] 보고서 SCQA 작성
- [x] L1 스모크테스트 결과 기록
- [ ] worktree finish --action pr → 자동 머지
- [ ] finish-task.sh 실행 → .done
