{
  "schema": "auto_gemini_triage.fixture_candidate.v1",
  "fixture_name": "minor_in_expected_files.case_001_pr_110",
  "fixture_purpose": "auto_gemini_triage.minor_in_expected_files 분류 자동 처리 표준 케이스 첫 fixture (회장 §명시 2026-05-12 박제)",
  "captured_at_kst": "2026-05-12 23:05",
  "fields": {
    "pr_number": 110,
    "source_pr": "PR #100 (task-2550 6 Gemini unresolved → replacement)",
    "baseline_carry_over": true,
    "original_pr_head_pre_followup": "324e5d03a401ca715c3fc2fa22a21cd0cad71cd2",
    "follow_up_commit_sha": "cd594866a5b76fab3f7b8250af30b34d36486526",
    "merge_commit": "09f2f3d0e0054fd1f97f5503eb66c80a0c837223",
    "correct_classification": "minor_in_expected_files",
    "incorrect_alternative_classification_rejected": "Critical 7 #6 IMPLEMENTATION_SPEC_INCOMPLETE_RECURRENCE (replacement failure)",
    "correct_action": "single_follow_up_commit",
    "max_follow_up_commits_cap": 1,
    "follow_up_commits_actually_used": 1,
    "critical_escalation": false,
    "functionality_impact": 0,
    "expected_files_internal": true,
    "forbidden_path_required": false,
    "scope_expansion_required": false
  },
  "lessons_learned": {
    "cascade_pattern_observed": "follow-up commit triggers fresh Gemini review; fresh review may surface NEW minor finding at DIFFERENT line (here: line 106 boundary regex vs line 495 original dead-code)",
    "cascade_handling_decision": "if new finding is NOT a real bug (Gemini self-acknowledges existing safeguard catches case), reply+resolve thread without 2nd code change to respect max_follow_up_commits=1 hard cap; else ESCALATE per §9",
    "owner_trigger_capability_proven_5th_use": "token_hash_prefix=a9e05574 capability invoked 5th time (after PR #103/#107/#108/#109); 1st use for minor_in_expected_files classification",
    "gemini_review_gate_severity_filter": "CI gate blocks only on HIGH/CRITICAL — medium findings do NOT block CI; but branch protection ruleset 'required_review_thread_resolution=True' DOES block merge → thread resolution required even for medium",
    "thread_outdated_after_code_fix": "thread #0 marked OUTDATED automatically after code change at same line; still requires explicit resolve to clear branch protection",
    "regression_baseline_known_failure": "test_post_merge_smoke_runner_2539.py::test_clean_origin_main_base_assertion is hard-coded to task-2539+1 ALLOWED_PATHS — mis-scoped, fails on any non-task-2539+1 branch; treat as pre-existing baseline noise"
  },
  "ts_utc": "2026-05-12T14:05:00Z"
}
