# task-2558 plan — auto_gemini_triage.minor_in_expected_files 자동화 박제

## 목표 (회장 §명시 Track A 1순위, 2026-05-12)

PR #110 (merge_commit `09f2f3d0`) 에서 실전 검증된 `minor_in_expected_files` 패턴을 코드 rule + decision schema + fixture + regression test 로 영구 박제.

## Phase 1 — Rule 코드화 (anu_v2/auto_gemini_triage.py 확장)

1. 5번째 classification 상수 `CLASSIFICATION_MINOR_IN_EXPECTED_FILES` 추가
2. `ACTION_SINGLE_FOLLOW_UP_COMMIT_ALLOWED`, `ACTION_REPLY_AND_RESOLVE` 신규 action
3. `MinorInExpectedFilesInput` dataclass — 9조건 입력 정규화
4. `classify_minor_in_expected_files()` 9 조건 game-tree:
   - C1 severity<=medium / C2 path in expected_files / C3 no forbidden / C4 no scope expansion
   - C5 no func impact or test guaranteed / C6 fix nature minor / C7 follow-up <=1
   - C8 effective diff in expected_files / C9 new head fresh+CI+CLEAN
5. `MAX_FOLLOW_UP_COMMITS_HARD_CAP = 1`

## Phase 2 — 17 필드 schema (`gemini_triage_decision.v1`)

`build_gemini_triage_decision()` — 17 필드 1:1:
task_id / pr_number / source_thread_id / severity / path / classification /
expected_files_internal / forbidden_path_required / scope_expansion_required /
functionality_impact / baseline_carry_over / allowed_action / max_follow_up_commits /
follow_up_commits_used / cascade_findings / final_action / critical_escalation

## Phase 3 — Cascade handling

`CascadeFinding` + `handle_cascade_finding()`:
- real bug / behavior changing / forbidden / scope expansion → escalate
- cap 도달 + non-functional + in-scope → reply_and_resolve
- cap 미도달 + non-functional + in-scope → reply_and_resolve (보수적)
- 그 외 → escalate

## Phase 4 — owner_trigger 연동 hook

`owner_trigger_decision()`:
- FIRST_GEMINI_TRIGGER_MISSING / GEMINI_STALE_ON_HEAD → owner_trigger_only 자동
- 회장 수동 fallback `manual_review_fallback_forbidden=True` 박제

## Phase 5 — Fixture

`anu_v2/fixtures/minor_in_expected_files_case_001_pr_110.json`
- PR #110 17 필드 + cascade + owner_trigger 5번째 활용 박제

## Phase 6 — 회귀 16

`anu_v2/tests/test_auto_gemini_triage_minor_in_expected_files.py`
- 9 필수 케이스 + 7 보너스 (decision schema / owner_trigger / fixture round-trip / cascade variants / fix_nature / new head revalidation)

## Phase 7 — 14단계 standard 실행

1. cokacdir → worktree task-2558-dev5
2. PR 생성 (BOT_GITHUB_TOKEN)
3. Gemini fresh (owner_trigger_only 또는 executor scheduler — 회장 수동 0)
4. unresolved 0
5. CI 11/11 SUCCESS
6. mergeStateStatus CLEAN
7. BOT squash merge (admin override 0)
8. smoke + reconcile + lifecycle markers + 보고서
