# task-2561 checklist (회장 §명시 14 완료 조건 1:1)

## 구현 4 (회장 §명시 Track B 본질)

- [ ] §1 scope-guard 헬퍼 (`_is_task_2539plus1_scope()`) 추가
- [ ] §2 `test_clean_origin_main_base_assertion` 에 scope-guard 적용 (out-of-scope SKIP)
- [ ] §3 task-2539+1 보호 의도 유지 (in-scope 에서는 기존 ALLOWED_PATHS 검증)
- [ ] §4 정적 baseline_noise_repro_2561.json fixture + 회귀 4 (후속 branch false failure 0)

## 회장 §명시 권장 방식

- [ ] Option A (scope-guard) primary 적용
- [ ] Option B (정적 fixture) 보조 합성
- [ ] Option C (test 삭제) **채택 안 함** — 회장 §명시 우선 선택 금지

## 필수 테스트 4

- [ ] task-2539+1 fixture context 기존 검증 유지 (in-scope + clean diff → PASS)
- [ ] unrelated branch diff deterministic fail 0 (out-of-scope → SKIP)
- [ ] mis-scoped ALLOWED_PATHS noise 재현 fixture PASS (정적 fixture 검증)
- [ ] post_merge_smoke_runner 기존 회귀 PASS (12 + 4 = 16/16)

## 14 완료 조건

- [ ] 1. plan/context/checklist 작성
- [ ] 2. scope-guard 헬퍼 추가
- [ ] 3. 기존 test scope-guard 적용
- [ ] 4. baseline_noise_repro_2561.json fixture 신설
- [ ] 5. 회귀 테스트 4 추가
- [ ] 6. pytest test_post_merge_smoke_runner_2539.py 회귀 PASS (16/16)
- [ ] 7. expected_files strict (post_merge_smoke_runner.py 본체 변경 0)
- [ ] 8. forbidden path 0
- [ ] 9. BOT identity commit + push
- [ ] 10. PR 생성 (admin override 0)
- [ ] 11. Gemini fresh review (owner_trigger 또는 scheduler 자동)
- [ ] 12. unresolved 0 + CI 11/11 + CLEAN
- [ ] 13. BOT squash merge (admin override 0)
- [ ] 14. post-merge smoke + reconcile + 보고서 + .done

## forbidden 0 (회장 §명시)

- [ ] `anu_v2/post_merge_smoke_runner.py` 본체 변경 0
- [ ] PR #98~#111 branch 변경 0
- [ ] task-2558 expected_files 재수정 0
- [ ] task-2560 (FUC-4) / task-2562 (G4) 영역 변경 0
- [ ] 다른 anu_v2 modules 변경 0
- [ ] dashboard/ 변경 0
- [ ] 회장 수동 `/gemini review` 0

## ESCALATED 매핑

- task-2539+1 기존 검증 회귀 → #6 `REGRESSION_OF_EXISTING_PROTECTION`
- Option C test 삭제 강행 → #1 `FORBIDDEN_REMOVAL_OF_PROTECTION`
- forbidden hit → #1 `FORBIDDEN_PATH_HIT`

## 완료 5조건 (회장 §명시)

- [ ] baseline-noise-diagnosis.json 근거 반영 (Track D 결과)
- [ ] regression PASS
- [ ] expected_files strict
- [ ] forbidden path 0
- [ ] BOT merge
