{
  "schema": "task.dispatch_decision.v1",
  "task_id": "task-2558",
  "issued_at_kst": "2026-05-12",
  "team": "dev5",
  "level": "L3-L4",
  "track": "Track A (1순위, 회장 §명시 2026-05-12)",
  "expected_files": [
    "anu_v2/auto_gemini_triage.py",
    "anu_v2/fixtures/minor_in_expected_files_case_001_pr_110.json",
    "anu_v2/tests/test_auto_gemini_triage_minor_in_expected_files.py",
    "anu_v2/tests/test_auto_gemini_triage_2538.py",
    "memory/reports/task-2558.md",
    "memory/events/task-2558.dispatch-decision.json",
    "memory/plans/tasks/task-2558/plan.md",
    "memory/plans/tasks/task-2558/context-notes.md",
    "memory/plans/tasks/task-2558/checklist.md"
  ],
  "expected_files_internal_only_policy": "strict — 외부 경로 수정 0",
  "expected_files_carry_over_reason": "test_auto_gemini_triage_2538.py 의 ACTIONS=4 가드는 task-2558 §명시 doctrine 확장과 직접 충돌하므로 v0 4종 보존 (issubset) + 확장 허용 형태로 1:1 박제 갱신 (doctrine 자체는 보존)",
  "forbidden_paths": [
    "scripts/ci.sh",
    "dashboard/**",
    "dispatch/__init__.py",
    "team_prompts.py",
    ".github/workflows/**",
    ".env",
    ".env.keys",
    "anu_v2/owner_trigger_only.py",
    "anu_v2/owner_trigger_audit.py",
    "anu_v2/owner_trigger_decision.py",
    "anu_v2/owner_trigger_pat.py",
    "anu_v2/executor_scheduler.py",
    "anu_v2/merge_queue_executor.py",
    "anu_v2/post_merge_smoke_runner.py",
    "anu_v2/worktree_cleanup.py",
    "anu_v2/replacement_pr_runner.py",
    "anu_v2/pr_open_gemini_trigger_prevention.py",
    "anu_v2/gemini_stale_prevention_runner.py",
    "anu_v2/polling_policy.py",
    "anu_v2/idle_pr_diagnoser.py"
  ],
  "deliverables": {
    "rule_9_conditions": "anu_v2/auto_gemini_triage.py::classify_minor_in_expected_files",
    "schema_17_fields": "anu_v2/auto_gemini_triage.py::build_gemini_triage_decision (GEMINI_TRIAGE_DECISION_FIELDS)",
    "cascade_handling": "anu_v2/auto_gemini_triage.py::handle_cascade_finding",
    "owner_trigger_hook": "anu_v2/auto_gemini_triage.py::owner_trigger_decision",
    "fixture": "anu_v2/fixtures/minor_in_expected_files_case_001_pr_110.json",
    "tests": "anu_v2/tests/test_auto_gemini_triage_minor_in_expected_files.py (16 tests)"
  },
  "evidence_anchors": {
    "pr_110_merge_commit": "09f2f3d0e0054fd1f97f5503eb66c80a0c837223",
    "pr_110_original_head": "324e5d03a401ca715c3fc2fa22a21cd0cad71cd2",
    "pr_110_follow_up_head": "cd594866a5b76fab3f7b8250af30b34d36486526",
    "owner_trigger_token_hash_prefix": "a9e05574",
    "owner_trigger_use_count": 5,
    "fixture_candidate": "memory/events/task-2550+1.minor-in-expected-files-fixture-candidate.json",
    "existing_decision_json": "memory/events/task-2550+1.gemini_triage_decision.json (pr_110_auto_triage_decision)"
  },
  "test_results": {
    "task_2558_tests": "16/16 PASS",
    "task_2538_tests": "34/34 PASS (ACTIONS guard 갱신 후)",
    "anu_v2_full_suite": "448/448 PASS"
  }
}
