# task-2508 — SCOPE-GUARD effective diff 보정 (false-positive base 누적 차단)

- 작업 유형: **QC verifier 정밀도 향상 (scope_guard 로직 수정)**
- 작업 레벨: **Lv.2~3** (코드 수정 + 회귀 테스트)
- 담당: **TBD (회장 결정 대기)** — composite ③ 페르소나 권고 (로키 + 마아트)
- 우선순위: **★ blocking-after-2503+1/2506/2507** — replacement PR 일괄 처리 후 발행
- Track: **qc_verifier_precision / scope_guard_effective_diff**
- 일시: 2026-05-08
- 회장 결정: 2026-05-08T13:15 (A안 §7 — 후보 등록, 이번 replacement PR에 미포함)
- 상태: **회장 승인 대기** — 발사 미진행

## ⚠️ 본 task의 본질 — 회장 명시

> SCOPE-GUARD가 PR의 base 누적 commit 또는 이미 main에 머지된 commit을 PR scope violation으로 오판하지 않도록 effective diff 기준으로 보정한다.

## 트리거 incident (2026-05-08)

| task | scope_guard_violation 건수 | 본 task 직접 변경 | 원인 |
|---|---|---|---|
| task-2506 | 117건 | 0건 | 공유 브랜치 task-2479-dev1 base 누적 |
| task-2507 (PR #54) | 78건 | 2건 | base 누적 + task-2503/task-2487+1 commit |
| task-2503+1 | (n/a, PR 미생성) | 4건 | emergency bootstrap |

세 건 모두 replacement PR로 처리 (회장 결정 A안). 그러나 근본 원인인 SCOPE-GUARD 로직 결함은 미해결.

## 핵심 회귀 케이스 (회장 §7 명시)

> "핵심 회귀 케이스는 PR #54 effective diff 78건 false-positive 사례로 둔다."

PR #54의 effective diff 78건 (base 누적 task-2487+1/task-2503/task-2485+1/task-2488/task-2489/task-2493 + POC + scripts 등)이 본 task의 회귀 테스트 입력. 본 task fix 후 SCOPE-GUARD가 본 task 직접 변경 2건만 scope 검사하고 base 누적 76건은 무시해야 함.

## 필수 수정 항목 (예비 — 회장 검토 후 확정)

### a. effective diff 기준 명확화
- 현재: SCOPE-GUARD가 `main..HEAD` 또는 PR squash diff 사용 → base 누적 commit 포함
- 수정: PR head commit과 main의 merge-base 사이 diff에서 본 task가 직접 만든 commit만 추출
- 옵션 A: `git log --author=<bot_id> --since=<task_start>` 기반 commit 추출
- 옵션 B: task-timers.json에 `commits` 필드 추가 + scope_guard가 그 commit list만 검사
- 옵션 C: PR description 내 `[task-XXXX]` prefix commit 추출

### b. 이미 main에 머지된 commit 자동 제외
- task-2503 (`fc49a9fd`), task-2487+1 (`278fa414`) 등 이미 main에 squash merge된 commit은 SCOPE-GUARD 검사 대상에서 자동 제외
- 헬퍼: `_filter_merged_commits(commits, main_ref)` 신설
- main에 동일 변경이 있으면 새 PR scope에 포함되지 않음

### c. base 누적 detection
- worktree branch의 base가 main이 아니면 경고 + 자동 main 동기화 권고
- 또는 PR 생성 단계에서 base mismatch detection
- 헬퍼: `_detect_contaminated_base(branch, main_ref)` 신설

### d. 회귀 테스트
- PR #54 effective diff 78건 사례 → fix 후 SCOPE-GUARD 검사 결과 2건만 (직접 변경)
- task-2506 117건 사례 → fix 후 0건
- task-2503+1 emergency bootstrap 사례 → fix 후 정상 commit 검사

## Merge Topology Gate 7 metadata (예비)

```yaml
expected_files:
  - "scripts/scope_guard.py" 또는 "teams/shared/verifiers/scope_check.py"  # SCOPE-GUARD 로직 위치 — 발행 시 확정
  - "tests/regression/test_scope_guard_effective_diff_2508.py"  # 신규
  # 추가 의존: dispatch.py / utils/* / scripts/finish-task.sh — 발행 시 확정

risk_area: "qc_verifier_precision / scope_guard / effective_diff"

dependency: ["task-2503+1.merged", "task-2506.merged", "task-2507.merged"]  # replacement PR 모두 머지 후

parallel_policy: "serial_only"  # SCOPE-GUARD 단일 영역

merge_queue_position: 5  # task-2503+1 replacement(=1), 2506 replacement(=2), 2507 replacement(=3) 다음

stale_recheck_required: true

cherry_pick_allowed: false
```

## allowed_resources (예비)

발행 시 확정. 핵심:
- read_only_paths: SCOPE-GUARD 코드 위치 확인 후 결정
- workflow_paths: scope_guard.py 또는 scope_check.py + 회귀 테스트 1건
- forbidden_actions: 회장 통합 명령 §6 공통 금지 + amendment_ignore + mid_dispatch_correction_disregard

## 완료 조건

1. ✅ effective diff 추출 로직 구현 (옵션 A/B/C 중 회장 결정 사항)
2. ✅ 이미 머지된 commit 자동 제외
3. ✅ base 누적 detection
4. ✅ PR #54 78건 사례 회귀 → 2건만 검사
5. ✅ task-2506 117건 사례 회귀 → 0건
6. ✅ Merge Topology Gate 자기참조 PASS
7. ✅ CI 11/11 SUCCESS
8. ✅ Gemini fresh evidence
9. ✅ 회장 §6 공통 금지 위반 0건
10. ✅ amendment 보호 의무 명시 + 적용 evidence

## 시스템 3문서 참조

- 본 task의 트리거 incidents:
  - task-2506: `memory/events/task-2506.scope-violation.json` (117건)
  - task-2507: PR #54 effective diff 78건 + `memory/events/task-2507.scope-violation.json`
  - task-2503+1: emergency bootstrap (PR 미생성)
- 정책 본체: `memory/feedback/feedback_merge_topology_gate_260508.md`
- amendment 보호: `memory/feedback/feedback_amendment_not_enforced_260508.md`
- composite 3종: `memory/feedback/feedback_composite_three_types_260508.md`

## 회장 승인 대기 (회장 추가 지시 2026-05-08T13:18 적용)

본 task는 spec 초안 작성만 완료. **발사는 회장 명시 승인 후**.

### 발사 전제조건 (회장 추가 지시 명시 — 절대 준수)

1. ✅ task-2503+1 replacement PR 머지 완료
2. ✅ task-2506 replacement PR 머지 완료
3. ✅ task-2507 replacement PR 머지 완료
4. ✅ task-2494-rejudge 정식 dispatch 결과 확인 (회장 §5 이전 결정 — task-2503+1 머지 후 정식 dispatch)

> **회장 직접 인용 (2026-05-08T13:18)**:
> "task-2508은 아직 발사하지 않는다. task-2508은 replacement 3건 머지 후, task-2494-rejudge 정식 dispatch 결과를 확인한 뒤 발사 판단한다."

위 4 조건 모두 충족 후에만 회장 발사 판단 시점 도달. 4 조건 미충족 상태에서 본 task spec을 dispatch 하면 amendment 무력화 사고 패턴 재현 가능.

## 후행

- 본 task 머지 후 SCOPE-GUARD가 모든 PR에 effective diff 기준 적용
- task-2503+1/2506/2507 replacement 머지 시 발견된 다른 false-positive 패턴이 있으면 본 task의 회귀 테스트로 추가
