{
  "schema_version": "anu_v2.recovery_decision.v1",
  "task_id": "task-2545+1",
  "pr_number": null,
  "runner": "replacement_pr_runner",
  "classification": "REPLACEMENT_PR_DISPATCH_BLOCKED_BY_MISSING_BOT_TOKEN",
  "current_head": null,
  "base_branch": "main",
  "mergeStateStatus": null,
  "expected_files": [
    "anu_v2/gemini_stale_prevention_runner.py"
  ],
  "forbidden_paths": [
    "anu_v2/fixtures/__init__.py",
    "anu_v2/post_merge_smoke_runner.py",
    "anu_v2/replacement_pr_runner.py",
    "anu_v2/auto_gemini_triage.py",
    "anu_v2/merge_queue_executor.py",
    "anu_v2/critical_escalation_reporter.py",
    "anu_v2/executor_self_resume.py",
    "anu_v2/recovery_decision_contract.py",
    "memory/tasks/task-2545.md",
    "memory/events/task-2545.*",
    "anu_v2/tests/test_gemini_stale_prevention_runner_2545.py",
    "anu_v2/fixtures/gemini_stale_*.json",
    "memory/orchestration-audit/critical-escalations.jsonl"
  ],
  "lineage": {
    "original_pr": 92,
    "original_task": "task-2545",
    "original_head": "15cf6ad011e184ca298996d47253501152700287",
    "replacement_task": "task-2545+1",
    "replacement_reason": "REPLACEMENT_REQUIRED_BY_SELF_POLICY"
  },
  "env_check": {
    "BOT_GITHUB_TOKEN_present": false,
    "BOT_GITHUB_TOKEN_envvar_name": "BOT_GITHUB_TOKEN",
    "owner_pat_observed_via_gh_cli": true,
    "owner_pat_login": "JonghyukJeon",
    "owner_pat_usage_for_dispatch": "FORBIDDEN_BY_SPEC_§8-7",
    "default_GH_TOKEN_fallback_for_merge": "FORBIDDEN_BY_SPEC_§8-8",
    "fail_fast_rule": "spec §7-6: [[ -n \"$BOT_GITHUB_TOKEN\" ]] || exit 1",
    "fail_fast_triggered_at_step": "§6 step 1 prerequisite (clean worktree dispatch)"
  },
  "preserved_pr_92": {
    "state": "OPEN",
    "head": "15cf6ad011e184ca298996d47253501152700287",
    "head_unchanged": true,
    "close_reopen": false,
    "force_push": false,
    "rebase": false,
    "empty_commit": false,
    "additional_commits": 0,
    "verified_at": "2026-05-10T16:20:04.470016+00:00",
    "verification_method": "gh pr view 92 --json state,headRefOid,mergeStateStatus,mergeable"
  },
  "self_policy_block": {
    "rule": "task-2545_GEMINI_STALE_PREVENTION_RUNNER_module_self_reference",
    "rule_source": "회장 §본질 명령 2026-05-11: PR #92는 task-2545 본인 모듈이며 자기정책에 따라 code-changing fix는 same PR push 금지",
    "code_changing_fix_in_same_pr": "FORBIDDEN",
    "applied_to_path_b_3": true,
    "carried_over_from": "memory/events/task-2545.recovery-decision.json"
  },
  "decision": {
    "allowed_action": "ESCALATED_OWNER_INTERVENTION_REQUIRED",
    "next_step": "owner_provisions_BOT_GITHUB_TOKEN_then_redispatches_task-2545+1",
    "rationale": "§7-6 BOT_GITHUB_TOKEN fail-fast 발동. 본 워크스페이스(scheduled task runtime)에 bot 자격 미주입. 오너 PAT(JonghyukJeon)는 §8-7로 사용 금지, 기본 GH_TOKEN fallback 머지는 §8-8로 금지. 따라서 §6 14단계 진입 자체 차단 — 코드 편집/푸시/PR 생성 0건 수행. PR #92 original 100% 보존(state=OPEN, head=15cf6ad0… unchanged, close-reopen/force/rebase/empty commit 0).",
    "critical_kind_mapping": {
      "primary": "REPLACEMENT_PR_ALSO_FAILED",
      "primary_canonical_index": 6,
      "primary_canonical_constant": "CRITICAL_REPLACEMENT_FAILED",
      "subtype": "BOT_GITHUB_TOKEN_MISSING_FOR_REPLACEMENT_PR_DISPATCH",
      "severity": "HIGH",
      "reason": "replacement PR을 dispatch하는 단계에서 §7-6 BOT_GITHUB_TOKEN fail-fast가 발동되어 §6 14단계 중 step 1조차 진입하지 못함. replacement_pr_runner.py:133 bot_token_env='BOT_GITHUB_TOKEN' 의존."
    },
    "forbidden_actions_explicit": [
      "owner_pat 사용한 PR 생성/머지 (§8-7)",
      "default GH_TOKEN fallback merge (§8-8)",
      "PR #92 추가 commit / close-reopen / force / rebase / empty commit (§8-1~4)",
      "신규 /gemini review 발사 (§8-5)",
      "expected_files amendment (§8-6)",
      "test_gemini_stale_prevention_runner_2545.py 수정 (§8-13)",
      "fixture gemini_stale_*.json 변경 (§8-14)"
    ]
  },
  "preserved_markers": [
    "memory/events/task-2545.done.escalated",
    "memory/events/task-2545.escalate",
    "memory/events/task-2545.gemini-triage-result.json",
    "memory/events/task-2545.recovery-decision.json",
    "memory/events/task-2545.replacement-pr-required",
    "memory/events/task-2545.qc-done",
    "memory/events/task-2545.qc-result",
    "memory/events/task-2545.scope-guard-done",
    "memory/events/task-2545.codex-gate"
  ],
  "additional_markers_emitted": [
    "memory/events/task-2545+1.replacement-lineage.json",
    "memory/events/task-2545+1.recovery-decision.json",
    "memory/events/task-2545+1.escalate",
    "memory/events/task-2545+1.done.escalated",
    "memory/reports/task-2545+1.md",
    "memory/orchestration-audit/critical-escalations.jsonl (1줄 append)"
  ],
  "ts": "2026-05-10T16:20:04.470016+00:00"
}
