{
  "schema_version": "2515.1",
  "scenarios": [
    {
      "id": "PR55_clean_auto_merge",
      "category": "normal",
      "pr_number": 55,
      "task_id": "task-2507",
      "description": "clean queue auto-merge + smoke 10/10 PASS",
      "expected_files": ["utils/git_evidence.py"],
      "effective_files": ["utils/git_evidence.py"],
      "extra_forbidden_files": [],
      "merge_state": {"mergeStateStatus": "CLEAN", "headRefOid": "sha-pr55", "baseRefName": "main"},
      "ci_state": {"status": "SUCCESS", "details": ["SUCCESS"]},
      "gemini_state": {"status": "ok", "unresolved": [], "hook": null},
      "dependency": [],
      "parallel_policy": "serial_only",
      "merge_queue_position": 1,
      "stale_recheck_required": true,
      "cherry_pick_allowed": false,
      "pr_head_sha": "sha-pr55",
      "fixture_main_sha": "main-sha-s1",
      "smoke_command": ["pytest", "-q"],
      "smoke_runner_returncode": 0,
      "merge_runner_returncode": 0,
      "triage_threads": [],
      "fix_commits": [],
      "following_queue": [
        {
          "pr_number": 56,
          "mergeStateStatus": "CLEAN",
          "headRefOid": "sha-pr56-clean",
          "effective_files": ["utils/git_evidence.py"],
          "expected_files": ["utils/git_evidence.py"],
          "prior_effective_files": ["utils/git_evidence.py"],
          "gemini_head_sha_at_last_review": "sha-pr56-clean"
        }
      ],
      "expected_following_states": [
        {
          "pr_number": 56,
          "needs_recheck": false,
          "behind": false,
          "blocked": false,
          "effective_diff_drift": false,
          "forbidden_path_present": false,
          "gemini_stale": false,
          "ci_rerun_needed": false,
          "expected_files_maintained": true
        }
      ],
      "expected_decision": "AUTO_MERGE_SUCCESS",
      "expected_critical_code": null,
      "expected_smoke_status": "PASS",
      "expected_review_gate_passed": true,
      "expected_replacement_used": false,
      "expected_triage_invoked": false,
      "expected_triage_verdicts": [],
      "expected_classification": "auto-handled",
      "expected_escalation_type": null,
      "verify_merge": true,
      "expected_diff_equal": true,
      "expected_forbidden_count": 0,
      "main_log_grep_returns_true": true,
      "fallback_review_used_expected": false,
      "fallback_review_passed_expected": false
    },
    {
      "id": "PR57_false_positive_triage",
      "category": "normal",
      "pr_number": 57,
      "task_id": "task-2503+1",
      "description": "PR #57 (task-2503+1) regex/wrapper FP × 2 + PR #62 (task-2511) style-only × 1 — combined replay → all auto_resolved → review_gate_passed",
      "expected_files": ["utils/merge_topology_gate.py"],
      "effective_files": ["utils/merge_topology_gate.py"],
      "extra_forbidden_files": [],
      "merge_state": {"mergeStateStatus": "CLEAN", "headRefOid": "sha-pr57", "baseRefName": "main"},
      "ci_state": {"status": "SUCCESS", "details": ["SUCCESS"]},
      "gemini_state": {"status": "ok", "unresolved": [], "hook": null},
      "dependency": [],
      "parallel_policy": "serial_only",
      "merge_queue_position": 1,
      "stale_recheck_required": true,
      "cherry_pick_allowed": false,
      "pr_head_sha": "sha-pr57",
      "fixture_main_sha": "main-sha-s2",
      "smoke_command": null,
      "smoke_runner_returncode": 0,
      "merge_runner_returncode": 0,
      "triage_threads": [
        {"id": "th-fp-01", "isOutdated": false, "isResolved": false, "comments": [{"body": "This wrapper pattern is already handled correctly"}]},
        {"id": "th-fp-02", "isOutdated": false, "isResolved": false, "comments": [{"body": "이미 처리된 케이스입니다"}]},
        {"id": "th-style-01", "isOutdated": false, "isResolved": false, "comments": [{"body": "naming convention is inconsistent here, consider renaming"}]}
      ],
      "fix_commits": [],
      "following_queue": [],
      "expected_following_states": [],
      "expected_decision": "AUTO_MERGE_ALLOWED",
      "expected_critical_code": null,
      "expected_smoke_status": null,
      "expected_review_gate_passed": true,
      "expected_replacement_used": false,
      "expected_triage_invoked": false,
      "expected_triage_verdicts": ["FALSE_POSITIVE", "FALSE_POSITIVE", "STYLE_ONLY"],
      "expected_classification": "auto-handled",
      "expected_escalation_type": null,
      "verify_merge": false,
      "expected_diff_equal": true,
      "expected_forbidden_count": 0,
      "main_log_grep_returns_true": true,
      "fallback_review_used_expected": false,
      "fallback_review_passed_expected": false
    },
    {
      "id": "PR58_gemini_quota_fallback",
      "category": "normal",
      "pr_number": 58,
      "task_id": "task-2509",
      "description": "Gemini quota unavailable → fallback 8조건 PASS → review_gate_passed",
      "expected_files": ["utils/merge_queue_executor.py"],
      "effective_files": ["utils/merge_queue_executor.py"],
      "extra_forbidden_files": [],
      "merge_state": {"mergeStateStatus": "CLEAN", "headRefOid": "sha-pr58", "baseRefName": "main"},
      "ci_state": {"status": "SUCCESS", "details": ["SUCCESS"]},
      "gemini_state": {"status": "unavailable_quota", "unresolved": [], "errors": [{"message": "quota exceeded"}]},
      "dependency": [],
      "parallel_policy": "serial_only",
      "merge_queue_position": 1,
      "stale_recheck_required": true,
      "cherry_pick_allowed": false,
      "pr_head_sha": "sha-pr58",
      "fixture_main_sha": "main-sha-s3",
      "smoke_command": ["pytest", "-q"],
      "smoke_runner_returncode": 0,
      "merge_runner_returncode": 0,
      "triage_threads": [],
      "fix_commits": [],
      "following_queue": [],
      "expected_following_states": [],
      "expected_decision": "AUTO_MERGE_ALLOWED",
      "expected_critical_code": null,
      "expected_smoke_status": null,
      "expected_review_gate_passed": true,
      "expected_replacement_used": false,
      "expected_triage_invoked": false,
      "expected_triage_verdicts": [],
      "expected_classification": "auto-handled",
      "expected_escalation_type": null,
      "verify_merge": false,
      "expected_diff_equal": true,
      "expected_forbidden_count": 0,
      "main_log_grep_returns_true": true,
      "fallback_review_used_expected": true,
      "fallback_review_passed_expected": true
    },
    {
      "id": "PR64_smoke_pass",
      "category": "normal",
      "pr_number": 64,
      "task_id": "task-2512",
      "description": "evaluate → AUTO_MERGE_ALLOWED → verify_head_lock_then_merge → smoke PASS → AUTO_MERGE_SUCCESS",
      "expected_files": ["utils/post_merge_smoke_runner.py"],
      "effective_files": ["utils/post_merge_smoke_runner.py"],
      "extra_forbidden_files": [],
      "merge_state": {"mergeStateStatus": "CLEAN", "headRefOid": "sha-pr64", "baseRefName": "main"},
      "ci_state": {"status": "SUCCESS", "details": ["SUCCESS"]},
      "gemini_state": {"status": "ok", "unresolved": [], "hook": null},
      "dependency": [],
      "parallel_policy": "serial_only",
      "merge_queue_position": 1,
      "stale_recheck_required": true,
      "cherry_pick_allowed": false,
      "pr_head_sha": "sha-pr64",
      "fixture_main_sha": "main-sha-s4",
      "smoke_command": ["pytest", "-q"],
      "smoke_runner_returncode": 0,
      "merge_runner_returncode": 0,
      "triage_threads": [],
      "fix_commits": [],
      "following_queue": [
        {
          "pr_number": 65,
          "mergeStateStatus": "CLEAN",
          "headRefOid": "sha-pr65-clean",
          "effective_files": ["utils/post_merge_smoke_runner.py"],
          "expected_files": ["utils/post_merge_smoke_runner.py"],
          "prior_effective_files": ["utils/post_merge_smoke_runner.py"],
          "gemini_head_sha_at_last_review": "sha-pr65-clean"
        }
      ],
      "expected_following_states": [
        {
          "pr_number": 65,
          "needs_recheck": false,
          "behind": false,
          "blocked": false,
          "effective_diff_drift": false,
          "forbidden_path_present": false,
          "gemini_stale": false,
          "ci_rerun_needed": false,
          "expected_files_maintained": true
        }
      ],
      "expected_decision": "AUTO_MERGE_SUCCESS",
      "expected_critical_code": null,
      "expected_smoke_status": "PASS",
      "expected_review_gate_passed": true,
      "expected_replacement_used": false,
      "expected_triage_invoked": false,
      "expected_triage_verdicts": [],
      "expected_classification": "auto-handled",
      "expected_escalation_type": null,
      "verify_merge": true,
      "expected_diff_equal": true,
      "expected_forbidden_count": 0,
      "main_log_grep_returns_true": true,
      "fallback_review_used_expected": false,
      "fallback_review_passed_expected": false
    },
    {
      "id": "PR57_contamination_replacement",
      "category": "capability_gap",
      "pr_number": 57,
      "task_id": "task-2510",
      "description": "PR #57 오염 (extra rogue file) → DIFF_CONTAMINATION_REPLACEMENT → replacement_runner success",
      "expected_files": ["utils/merge_topology_gate.py"],
      "effective_files": ["utils/merge_topology_gate.py", "utils/rogue_extra_file.py"],
      "extra_forbidden_files": [],
      "merge_state": {"mergeStateStatus": "CLEAN", "headRefOid": "sha-pr57-c", "baseRefName": "main"},
      "ci_state": {"status": "SUCCESS", "details": ["SUCCESS"]},
      "gemini_state": {"status": "ok", "unresolved": [], "hook": null},
      "dependency": [],
      "parallel_policy": "serial_only",
      "merge_queue_position": 1,
      "stale_recheck_required": true,
      "cherry_pick_allowed": false,
      "pr_head_sha": "sha-pr57-c",
      "fixture_main_sha": "main-sha-s5",
      "smoke_command": null,
      "smoke_runner_returncode": 0,
      "merge_runner_returncode": 0,
      "triage_threads": [],
      "fix_commits": [],
      "following_queue": [],
      "expected_following_states": [],
      "expected_decision": "DIFF_CONTAMINATION_REPLACEMENT",
      "expected_critical_code": null,
      "expected_smoke_status": null,
      "expected_review_gate_passed": null,
      "expected_replacement_used": true,
      "expected_triage_invoked": false,
      "expected_triage_verdicts": [],
      "expected_classification": "auto-handled",
      "expected_escalation_type": null,
      "verify_merge": false,
      "expected_diff_equal": false,
      "expected_forbidden_count": 0,
      "main_log_grep_returns_true": true,
      "fallback_review_used_expected": false,
      "fallback_review_passed_expected": false
    },
    {
      "id": "PR61_review_thread_blocker",
      "category": "capability_gap",
      "pr_number": 61,
      "task_id": "task-2510",
      "description": "5 unresolved threads (3 outdated + 2 fix-commit matched) → all auto_resolved → review_gate_passed",
      "expected_files": ["utils/auto_gemini_triage.py"],
      "effective_files": ["utils/auto_gemini_triage.py"],
      "extra_forbidden_files": [],
      "merge_state": {"mergeStateStatus": "CLEAN", "headRefOid": "sha-pr61", "baseRefName": "main"},
      "ci_state": {"status": "SUCCESS", "details": ["SUCCESS"]},
      "gemini_state": {"status": "ok", "unresolved": [], "hook": null},
      "dependency": [],
      "parallel_policy": "serial_only",
      "merge_queue_position": 1,
      "stale_recheck_required": true,
      "cherry_pick_allowed": false,
      "pr_head_sha": "sha-pr61",
      "fixture_main_sha": "main-sha-s6",
      "smoke_command": null,
      "smoke_runner_returncode": 0,
      "merge_runner_returncode": 0,
      "triage_threads": [
        {"id": "th-out-01", "isOutdated": true, "isResolved": false, "comments": [{"body": "Old comment, already fixed"}]},
        {"id": "th-out-02", "isOutdated": true, "isResolved": false, "comments": [{"body": "Outdated review"}]},
        {"id": "th-out-03", "isOutdated": true, "isResolved": false, "comments": [{"body": "No longer relevant"}]},
        {"id": "th-fix-01", "isOutdated": false, "isResolved": false, "comments": [{"body": "Fix applied in commit abc12345: resolved the issue"}]},
        {"id": "th-fix-02", "isOutdated": false, "isResolved": false, "comments": [{"body": "This was fixed in commit def67890"}]}
      ],
      "fix_commits": [
        {"sha": "abc12345", "message": "fix: resolve issue in auto_gemini_triage.py"},
        {"sha": "def67890", "message": "fix: address review comment"}
      ],
      "following_queue": [],
      "expected_following_states": [],
      "expected_decision": "AUTO_MERGE_ALLOWED",
      "expected_critical_code": null,
      "expected_smoke_status": null,
      "expected_review_gate_passed": true,
      "expected_replacement_used": false,
      "expected_triage_invoked": false,
      "expected_triage_verdicts": ["OUTDATED", "OUTDATED", "OUTDATED", "CODE_ALREADY_FIXED", "CODE_ALREADY_FIXED"],
      "expected_classification": "auto-handled",
      "expected_escalation_type": null,
      "verify_merge": false,
      "expected_diff_equal": true,
      "expected_forbidden_count": 0,
      "main_log_grep_returns_true": true,
      "fallback_review_used_expected": false,
      "fallback_review_passed_expected": false
    },
    {
      "id": "critical_smoke_failure",
      "category": "critical",
      "pr_number": 71,
      "task_id": "task-2512",
      "description": "Critical #7 — smoke FAIL → BLOCKED_WITH_REASON + CRITICAL_POST_MERGE_SMOKE",
      "expected_files": ["utils/post_merge_smoke_runner.py"],
      "effective_files": ["utils/post_merge_smoke_runner.py"],
      "extra_forbidden_files": [],
      "merge_state": {"mergeStateStatus": "CLEAN", "headRefOid": "sha-pr71", "baseRefName": "main"},
      "ci_state": {"status": "SUCCESS", "details": ["SUCCESS"]},
      "gemini_state": {"status": "ok", "unresolved": [], "hook": null},
      "dependency": [],
      "parallel_policy": "serial_only",
      "merge_queue_position": 1,
      "stale_recheck_required": true,
      "cherry_pick_allowed": false,
      "pr_head_sha": "sha-pr71",
      "fixture_main_sha": "main-sha-s7",
      "smoke_command": ["pytest", "-q"],
      "smoke_runner_returncode": 1,
      "merge_runner_returncode": 0,
      "triage_threads": [],
      "fix_commits": [],
      "following_queue": [],
      "expected_following_states": [],
      "expected_decision": "BLOCKED_WITH_REASON",
      "expected_critical_code": "CRITICAL_POST_MERGE_SMOKE",
      "expected_smoke_status": "FAIL",
      "expected_review_gate_passed": null,
      "expected_replacement_used": false,
      "expected_triage_invoked": false,
      "expected_triage_verdicts": [],
      "expected_classification": "critical",
      "expected_escalation_type": "POST_MERGE_SMOKE_FAILED",
      "verify_merge": true,
      "expected_diff_equal": true,
      "expected_forbidden_count": 0,
      "main_log_grep_returns_true": true,
      "fallback_review_used_expected": false,
      "fallback_review_passed_expected": false
    },
    {
      "id": "critical_forbidden_path",
      "category": "critical",
      "pr_number": 72,
      "task_id": "task-2508",
      "description": "Critical #1 — forbidden path .github/workflows → BLOCKED_WITH_REASON + CRITICAL_FORBIDDEN_PATH",
      "expected_files": ["utils/git_evidence.py"],
      "effective_files": ["utils/git_evidence.py", ".github/workflows/foo.yml"],
      "extra_forbidden_files": [".github/workflows/foo.yml"],
      "merge_state": {"mergeStateStatus": "CLEAN", "headRefOid": "sha-pr72", "baseRefName": "main"},
      "ci_state": {"status": "SUCCESS", "details": ["SUCCESS"]},
      "gemini_state": {"status": "ok", "unresolved": [], "hook": null},
      "dependency": [],
      "parallel_policy": "serial_only",
      "merge_queue_position": 1,
      "stale_recheck_required": true,
      "cherry_pick_allowed": false,
      "pr_head_sha": "sha-pr72",
      "fixture_main_sha": "main-sha-s8",
      "smoke_command": null,
      "smoke_runner_returncode": 0,
      "merge_runner_returncode": 0,
      "triage_threads": [],
      "fix_commits": [],
      "following_queue": [],
      "expected_following_states": [],
      "expected_decision": "BLOCKED_WITH_REASON",
      "expected_critical_code": "CRITICAL_FORBIDDEN_PATH",
      "expected_smoke_status": null,
      "expected_review_gate_passed": null,
      "expected_replacement_used": false,
      "expected_triage_invoked": false,
      "expected_triage_verdicts": [],
      "expected_classification": "critical",
      "expected_escalation_type": "FORBIDDEN_PATH_INTRUSION",
      "verify_merge": false,
      "expected_diff_equal": false,
      "expected_forbidden_count": 1,
      "main_log_grep_returns_true": true,
      "fallback_review_used_expected": false,
      "fallback_review_passed_expected": false
    },
    {
      "id": "critical_diff_contamination_replacement_failed",
      "category": "critical",
      "pr_number": 73,
      "task_id": "task-2510",
      "description": "Critical #2 — contaminated diff + replacement_runner fails → BLOCKED_WITH_REASON + CRITICAL_DIFF_REPLACEMENT_FAILED",
      "expected_files": ["utils/replacement_pr_runner.py"],
      "effective_files": ["utils/replacement_pr_runner.py", "utils/rogue.py"],
      "extra_forbidden_files": [],
      "merge_state": {"mergeStateStatus": "CLEAN", "headRefOid": "sha-pr73", "baseRefName": "main"},
      "ci_state": {"status": "SUCCESS", "details": ["SUCCESS"]},
      "gemini_state": {"status": "ok", "unresolved": [], "hook": null},
      "dependency": [],
      "parallel_policy": "serial_only",
      "merge_queue_position": 1,
      "stale_recheck_required": true,
      "cherry_pick_allowed": false,
      "pr_head_sha": "sha-pr73",
      "fixture_main_sha": "main-sha-s9",
      "smoke_command": null,
      "smoke_runner_returncode": 0,
      "merge_runner_returncode": 0,
      "triage_threads": [],
      "fix_commits": [],
      "following_queue": [],
      "expected_following_states": [],
      "expected_decision": "BLOCKED_WITH_REASON",
      "expected_critical_code": "CRITICAL_DIFF_REPLACEMENT_FAILED",
      "expected_smoke_status": null,
      "expected_review_gate_passed": null,
      "expected_replacement_used": false,
      "expected_triage_invoked": false,
      "expected_triage_verdicts": [],
      "expected_classification": "critical",
      "expected_escalation_type": "REPLACEMENT_PR_AUTO_CREATION_FAILED_FOR_CONTAMINATED_DIFF",
      "verify_merge": false,
      "expected_diff_equal": false,
      "expected_forbidden_count": 0,
      "main_log_grep_returns_true": true,
      "fallback_review_used_expected": false,
      "fallback_review_passed_expected": false
    }
  ]
}
