---
task_id: task-2431
type: checklist
scope: task
created: 2026-05-03
updated: 2026-05-03
status: in-progress
---

# 체크리스트: task-2431

**task**: task-2431

---

## Phase A — changed_paths 추출 (이미 구현됨, 검증)

- [x] A. `_changed_paths(project_path, merge_sha)` 존재 (post_merge_probe.py:97)
- [x] B. git diff 실패 시 [] 반환 (test_changed_paths_returns_empty_on_git_failure PASS)

## Phase B — SCOPE_MAP 기반 scope 결정 (이미 구현됨, 검증)

- [x] A. SCOPE_MAP 7개 키 존재 (extension/, server/, skills/satori-cardnews/, skills/hybrid-image/, scripts/, dashboard/, src/)
- [x] B. `_resolve_test_scope(changed)` — prefix 매치 + union + 결정적 정렬 (test_resolve_test_scope_unions_multiple_areas PASS)
- [x] C. SMOKE_TEST_PATHS fallback (test_unmapped_changed_paths_runs_smoke_only PASS)

## Phase C — 무관 영역 fail 제외 (이미 구현됨, 검증)

- [x] A. `_run_tests_scoped(test_paths)` — pytest --testpaths 인자로 scope 한정 (post_merge_probe.py:162)
- [x] B. test_paths 미존재 시 skipped (no scoped test target)

## Phase D — 회귀 테스트 (이미 구현됨, 검증)

- [x] A. 시나리오 1 — 익스텐션 PR + server/tests fail → revert 차단 PASS
- [x] B. 시나리오 2 — 익스텐션 PR + extension/ 진짜 fail → revert 트리거 PASS
- [x] C. 시나리오 3 — server/tests PR + server/tests fail → revert 트리거 PASS
- [x] D. 시나리오 4 — SCOPE_MAP 미매치 → smoke만 실행 PASS
- [x] E. 시나리오 5 — baseline pre-existing fail → revert 차단 + marker PASS
- [x] F. 시나리오 6 — _resolve_test_scope union (단위) PASS
- [x] G. 시나리오 7 — _changed_paths git failure (단위) PASS

## Phase E — 회장 4대 규칙

- [x] A. 빌드: `python3 -m py_compile scripts/post_merge_probe.py` rc=0
- [x] B. 배포: 기존 cron 통합 — 별도 인프라 변경 불요
- [x] C. 실 작동 시뮬레이션: 시나리오 1 mock 검증 + Phase E 직접 시뮬레이션 (보고서)
- [ ] D. 회장 confirm: 본 task 머지 시 자기 자신이 새 룰 통과 (셀프 검증 메타) — 머지 후 audit log 확인 가능

## 검증

- [x] 테스트 통과 확인 (7/7 PASS)
- [x] 셀프 QC 8항목 체크
- [x] G3 독립 검증
- [x] 최종 보고
