{
  "task_ref": "task-2561",
  "track": "B",
  "ts_utc": "2026-05-12T15:15:00Z",
  "source_diagnosis": "memory/events/baseline-noise-diagnosis.20260512T142519Z.json",
  "classification": "MIS_SCOPED_TEST",
  "source_test": {
    "file": "anu_v2/tests/test_post_merge_smoke_runner_2539.py",
    "function": "test_clean_origin_main_base_assertion",
    "line_range_pre_fix": "584-627",
    "introducing_commit": "37d52f42d4bdfe4f24e4493ff275088dfda1b2d2",
    "introducing_pr": "#91",
    "introducing_task": "task-2539+1",
    "introducing_date": "2026-05-11T00:36:36+09:00"
  },
  "allowed_paths_hardcoded": [
    "anu_v2/post_merge_smoke_runner.py",
    "anu_v2/tests/test_post_merge_smoke_runner_2539.py",
    "anu_v2/fixtures/post_merge_smoke_pass_task_2524.json",
    "anu_v2/fixtures/post_merge_smoke_warn_to_pass_task_2537.json",
    "memory/reports/task-2539+1.md",
    "memory/events/task-2539+1.done",
    "memory/capabilities/task-2539+1.json"
  ],
  "failure_mechanism_summary": "git diff --name-only origin/main..HEAD 결과를 task-2539+1 의 7-paths whitelist 와 무조건 비교 → task-2539+1 worktree 가 아닌 모든 branch 에서 첫 비-whitelist 파일에서 AssertionError. 본질: scope-guard 가 commit 시 누락된 mis-scoped one-shot guard.",
  "scope_guard_design": {
    "helper": "_is_task_2539plus1_scope()",
    "detection_conditions_OR": [
      {"kind": "env_var", "expr": "os.environ.get('TASK_ID') == 'task-2539+1'"},
      {"kind": "git_branch", "expr": "current branch starts with 'task/task-2539+1'"},
      {"kind": "worktree_basename", "expr": "Path.cwd() basename contains 'task-2539+1'"}
    ],
    "out_of_scope_action": "pytest.skip(deterministic reason)",
    "in_scope_action": "preserve original ALLOWED_PATHS assertion (task-2539+1 보호 의도 유지)"
  },
  "repro_cases": [
    {
      "name": "in_scope_clean_diff",
      "task_id_env": "task-2539+1",
      "branch_simulated": "task/task-2539+1",
      "diff_output": [
        "anu_v2/post_merge_smoke_runner.py",
        "anu_v2/tests/test_post_merge_smoke_runner_2539.py",
        "memory/reports/task-2539+1.md"
      ],
      "expected_outcome": "PASS",
      "rationale": "in-scope + 모든 변경 paths 가 ALLOWED_PATHS 에 포함 → 기존 보호 의도 동작"
    },
    {
      "name": "out_of_scope_arbitrary_branch",
      "task_id_env": "task-2561",
      "branch_simulated": "task/task-2561-dev2",
      "diff_output": [
        "anu_v2/tests/test_post_merge_smoke_runner_2539.py",
        "anu_v2/tests/fixtures/baseline_noise_repro_2561.json",
        "memory/plans/tasks/task-2561/plan.md"
      ],
      "expected_outcome": "SKIP",
      "rationale": "out-of-scope (task-2561 worktree) → deterministic skip, false failure 0"
    },
    {
      "name": "in_scope_forbidden_path",
      "task_id_env": "task-2539+1",
      "branch_simulated": "task/task-2539+1",
      "diff_output": [
        "anu_v2/post_merge_smoke_runner.py",
        "anu_v2/executor_scheduler.py"
      ],
      "expected_outcome": "AssertionError",
      "rationale": "in-scope + forbidden path 변경 → task-2539+1 보호 의도가 정상 작동"
    }
  ],
  "regression_tests_added_4": [
    "test_baseline_noise_fixture_2561_present_and_well_formed",
    "test_clean_origin_main_skipped_outside_task_2539plus1_scope",
    "test_clean_origin_main_runs_under_task_2539plus1_scope_with_clean_diff",
    "test_clean_origin_main_in_scope_detects_forbidden_path"
  ],
  "chairman_decision_referenced": "2026-05-12 §명시 Track B (2순위) — Option A primary > Option B 보조 > Option C 우선 선택 금지"
}
