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

# 계획서: task-2431 — P0 Scope-aware Probe

**task**: task-2431
**목표**: post_merge_probe.py가 PR이 변경한 영역의 test만 책임 범위로 인식하도록 scope-aware 판정 로직을 분리·검증한다.
**승인**: 회장 2026-05-03 "이번 작업의 핵심은 '무엇을 PR 책임으로 판단할 것인가'다."
**근거**: memory/tasks/task-2431.md (회장 직접 명시 + 사고 timeline)

---

## 목표

- `scripts/post_merge_probe.py`의 PR 책임 판정 로직을 "scope-aware"로 정의 — 변경 영역(`changed_paths`) → SCOPE_MAP → 테스트 디렉토리 union → pytest 실행 한정.
- 무관 영역 fail은 revert 트리거 X (시나리오 1: 익스텐션 PR + server/tests env fail = NO revert).
- 회귀 테스트 5+ 시나리오 PASS, 셀프 검증 메타(자기 자신이 새 룰 통과) 확정.

## 범위

### 포함
- Phase A: `_changed_paths(merge_sha)` — `git diff --name-only`
- Phase B: `_resolve_test_scope(changed)` — SCOPE_MAP prefix 매치 + union
- Phase C: `_run_tests_scoped(test_paths)` — pytest 인자로 scope 한정. 매치 0건이면 smoke만
- Phase D: 회귀 테스트 (이미 7시나리오 존재)
- Phase E: 회장 4대 규칙 (빌드/배포/실 작동 시뮬레이션/회장 confirm)

### 제외 (다음 페이즈 이후)
- server/tests `ModuleNotFoundError` 핫픽스 (별도 task)
- baseline pre-flight 신규 도입 (P1 별도 task — 단, task-2430 머지로 코드는 이미 존재. 본 task에서는 손대지 않음)
- 체리픽커 (P2)
- merge queue (P3)

## 현실 상태 (2026-05-03 22:50 KST)

- task-2430(cancelled)이 머지(2f299f9e)되어 본 task가 요구하는 Phase A/B/C/D 코드가 이미 존재
- 회귀 테스트 7건 PASS 확인됨
- 본 task의 단일 책임은 "재구성 + 셀프 검증 메타 + 보고서 거버넌스"

## 위임 계획

- 검증/통합/보고서: **오딘(직접)** — 코드 이미 머지됨, 추가 코딩 불요. 검증·문서화·셀프 검증 메타가 핵심
- 필요 시 토르(백엔드) 보강 — 신규 코드 작성 필요 시에만 위임

## 검증 기준

- `python3 -m py_compile scripts/post_merge_probe.py` → returncode 0
- `python3 -m pytest tests/scripts/test_post_merge_probe_scope.py -v` → 7/7 passed
- Phase E 실 작동 시뮬레이션: server/tests env fail mock + extension PR → auto_revert 호출 0회 (시나리오 1로 검증됨)
- 셀프 검증 메타: 본 task가 머지될 때 자기 자신이 새 scope-aware probe를 통과 (changed_paths={scripts/, tests/scripts/} → scoped 모드)
