{
  "schema_version": "ai_agent_candidate_operation_dry_run_evidence_v1",
  "generated_at": "2026-06-12T16:20:00+08:00",
  "program_status": {
    "overall_completion_percent": 98,
    "current_priority": "P2",
    "current_task_id": "P2-102",
    "next_task_id": "P2-103",
    "read_only_mode": true,
    "runtime_authority": "candidate_operation_dry_run_evidence_only_no_live_execution_or_send",
    "status_note": "P2-102 承接 P2-101 操作類別權限模型，把所有候選操作固定成 無寫入 dry-run 證據、side-effect count、verifier plan 與人工 handoff；目前仍不啟動 live worker、不寫 Gateway queue、不送 Telegram、不寫 production target。"
  },
  "source_refs": [
    "docs/evaluations/ai_agent_operation_permission_model_2026-06-12.json",
    "docs/evaluations/ai_agent_runtime_worker_shadow_gate_2026-06-12.json",
    "docs/evaluations/ai_agent_report_runtime_fixture_readback_2026-06-12.json",
    "docs/ai/AI_AGENT_AUTOMATION_WORKLIST_2026-06-04.md",
    "docs/superpowers/specs/2026-04-15-MASTER-ai-autonomous-flywheel-v2.md"
  ],
  "dry_run_truth": {
    "p2_101_permission_model_loaded": true,
    "dry_run_evidence_gate_ready": true,
    "all_candidate_operations_have_dry_run_evidence": true,
    "side_effect_counter_ready": true,
    "verifier_plan_ready": true,
    "rollback_or_noop_plan_ready": true,
    "owner_review_packet_ready": true,
    "runtime_execution_enabled": false,
    "gateway_queue_write_enabled": false,
    "telegram_send_enabled": false,
    "telegram_bot_api_call_enabled": false,
    "delivery_receipt_write_enabled": false,
    "ai_runtime_worker_enabled": false,
    "medium_low_auto_worker_enabled": false,
    "post_action_verifier_live_readback_enabled": false,
    "production_write_enabled": false,
    "secret_value_read_enabled": false,
    "paid_provider_call_enabled": false,
    "host_or_cluster_command_enabled": false,
    "destructive_operation_enabled": false,
    "work_window_transcript_display_allowed": false,
    "runtime_execution_count_24h": 0,
    "gateway_queue_write_count_24h": 0,
    "telegram_send_count_24h": 0,
    "telegram_bot_api_call_count_24h": 0,
    "delivery_receipt_write_count_24h": 0,
    "ai_runtime_worker_run_count_24h": 0,
    "medium_low_auto_execution_count_24h": 0,
    "post_action_verifier_live_readback_count_24h": 0,
    "production_write_count_24h": 0,
    "secret_value_read_count_24h": 0,
    "paid_provider_call_count_24h": 0,
    "host_or_cluster_command_count_24h": 0,
    "destructive_operation_count_24h": 0,
    "truth_note": "本段只代表候選操作都具備可審核 dry-run 證據與 verifier plan；所有 runtime、queue、Telegram、production write、secret / paid provider 與 destructive action 仍為 0 / false。"
  },
  "candidate_operations": [
    {
      "candidate_id": "candidate_observe_inventory_read",
      "source_category_id": "observe_inventory_read",
      "display_name": "只讀清冊盤點 dry-run",
      "risk_tier": "low",
      "permission_lane": "observe_only",
      "owner_agent": "hermes",
      "dry_run_status": "passed_no_write",
      "dry_run_scope": "讀取 committed snapshot / schema / source refs，產生 freshness、coverage 與缺口摘要；不讀 live host、不改任何目標。",
      "input_evidence_hash": "sha256:0101010101010101010101010101010101010101010101010101010101010101",
      "output_evidence_hash": "sha256:0111111111111111111111111111111111111111111111111111111111111111",
      "side_effect_count": 0,
      "production_write_count": 0,
      "gateway_queue_write_count": 0,
      "telegram_send_count": 0,
      "secret_value_read_count": 0,
      "destructive_action_count": 0,
      "blocked_actions": ["live host read", "production write", "notification send"],
      "required_human_decision": "人工確認 committed evidence 是否足以支撐下一步；若需要 live readback，必須另開 allow-list gate。",
      "verifier_plan_id": "verifier_redacted_evidence_hash",
      "rollback_or_noop_plan": "no-op；只讀清冊輸出不產生 rollback 需求。",
      "next_gate": "operator evidence review"
    },
    {
      "candidate_id": "candidate_diagnose_correlate_evidence",
      "source_category_id": "diagnose_correlate_evidence",
      "display_name": "診斷證據關聯 dry-run",
      "risk_tier": "low",
      "permission_lane": "observe_only",
      "owner_agent": "openclaw",
      "dry_run_status": "passed_no_write",
      "dry_run_scope": "使用 committed incident / MCP evidence refs 重放分類與關聯，輸出紅線摘要與下一步建議。",
      "input_evidence_hash": "sha256:1010101010101010101010101010101010101010101010101010101010101010",
      "output_evidence_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
      "side_effect_count": 0,
      "production_write_count": 0,
      "gateway_queue_write_count": 0,
      "telegram_send_count": 0,
      "secret_value_read_count": 0,
      "destructive_action_count": 0,
      "blocked_actions": ["repair execution", "queue write", "Telegram send"],
      "required_human_decision": "若 evidence 缺口仍在，人工只需補來源或標記 no-action，不得直接執行修復。",
      "verifier_plan_id": "verifier_redacted_evidence_hash",
      "rollback_or_noop_plan": "no-op；只讀 evidence replay 無需 rollback。",
      "next_gate": "operator evidence review"
    },
    {
      "candidate_id": "candidate_report_digest_queue",
      "source_category_id": "report_digest_queue_candidate",
      "display_name": "SRE 戰情室 queue digest dry-run",
      "risk_tier": "medium",
      "permission_lane": "no_write_replay_allowed",
      "owner_agent": "hermes",
      "dry_run_status": "needs_owner_review",
      "dry_run_scope": "把日報 / 週報 / action-required digest 轉成 queue preview，不寫 Gateway queue、不呼叫 Bot API。",
      "input_evidence_hash": "sha256:2020202020202020202020202020202020202020202020202020202020202020",
      "output_evidence_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
      "side_effect_count": 0,
      "production_write_count": 0,
      "gateway_queue_write_count": 0,
      "telegram_send_count": 0,
      "secret_value_read_count": 0,
      "destructive_action_count": 0,
      "blocked_actions": ["Gateway queue write", "Telegram sendMessage", "delivery receipt write"],
      "required_human_decision": "人工確認 route、dedupe key、failure-only 門檻與 redaction 後，才可進 queue write approval gate。",
      "verifier_plan_id": "verifier_gateway_queue_preview",
      "rollback_or_noop_plan": "no-op；preview 不進 queue，若內容不合格只回退到 Hermes digest draft。",
      "next_gate": "gateway_queue_write_permission_gate"
    },
    {
      "candidate_id": "candidate_shadow_no_write_replay",
      "source_category_id": "shadow_no_write_replay",
      "display_name": "shadow 無寫入 replay dry-run",
      "risk_tier": "medium",
      "permission_lane": "no_write_replay_allowed",
      "owner_agent": "nemotron",
      "dry_run_status": "passed_no_write",
      "dry_run_scope": "重放 P2-404 shadow candidate，產生 promotion hash、輸出差異與 verifier input。",
      "input_evidence_hash": "sha256:3030303030303030303030303030303030303030303030303030303030303030",
      "output_evidence_hash": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
      "side_effect_count": 0,
      "production_write_count": 0,
      "gateway_queue_write_count": 0,
      "telegram_send_count": 0,
      "secret_value_read_count": 0,
      "destructive_action_count": 0,
      "blocked_actions": ["live worker", "result write", "verifier live readback"],
      "required_human_decision": "人工確認 replay hash 與 verifier fixture 是否一致；未通過不得升級成 worker。",
      "verifier_plan_id": "verifier_shadow_replay_fixture",
      "rollback_or_noop_plan": "no-op；只保留 replay 證據，不寫任何 runtime result。",
      "next_gate": "runtime worker approval package"
    },
    {
      "candidate_id": "candidate_manual_sop_draft",
      "source_category_id": "manual_sop_draft",
      "display_name": "人工 SOP 產生 dry-run",
      "risk_tier": "medium",
      "permission_lane": "proposal_only",
      "owner_agent": "hermes",
      "dry_run_status": "passed_no_write",
      "dry_run_scope": "把修復候選轉成人工步驟、驗證步驟與 rollback 草案，不執行任何命令。",
      "input_evidence_hash": "sha256:4040404040404040404040404040404040404040404040404040404040404040",
      "output_evidence_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
      "side_effect_count": 0,
      "production_write_count": 0,
      "gateway_queue_write_count": 0,
      "telegram_send_count": 0,
      "secret_value_read_count": 0,
      "destructive_action_count": 0,
      "blocked_actions": ["host command", "service restart", "config reload"],
      "required_human_decision": "人工依 SOP 決定是否進 owner approval；AI 不自行套用。",
      "verifier_plan_id": "verifier_manual_sop_completeness",
      "rollback_or_noop_plan": "no-op；SOP 只是文字草案，若不採用則關閉候選。",
      "next_gate": "owner review"
    },
    {
      "candidate_id": "candidate_repair_candidate_proposal",
      "source_category_id": "repair_candidate_proposal",
      "display_name": "修復候選提案 dry-run",
      "risk_tier": "medium",
      "permission_lane": "proposal_only",
      "owner_agent": "openclaw",
      "dry_run_status": "needs_owner_review",
      "dry_run_scope": "用 MCP evidence、PlayBook trust 與 blast radius 產生修復候選，不跑 Ansible / kubectl / restart。",
      "input_evidence_hash": "sha256:5050505050505050505050505050505050505050505050505050505050505050",
      "output_evidence_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
      "side_effect_count": 0,
      "production_write_count": 0,
      "gateway_queue_write_count": 0,
      "telegram_send_count": 0,
      "secret_value_read_count": 0,
      "destructive_action_count": 0,
      "blocked_actions": ["Ansible apply", "kubectl apply", "service restart"],
      "required_human_decision": "人工審查 MCP evidence、PlayBook trust、rollback owner 與 verifier plan；缺任一項就退回補證。",
      "verifier_plan_id": "verifier_repair_candidate_consistency",
      "rollback_or_noop_plan": "若 dry-run mismatch，標記候選 degraded 並回到 evidence collection。",
      "next_gate": "repair owner approval"
    },
    {
      "candidate_id": "candidate_low_risk_noop_execution",
      "source_category_id": "low_risk_noop_execution",
      "display_name": "低風險 no-op 自動處理 dry-run",
      "risk_tier": "medium",
      "permission_lane": "human_approval_required",
      "owner_agent": "openclaw",
      "dry_run_status": "needs_owner_review",
      "dry_run_scope": "只產生 no-op plan、expected result 與 post-action verifier，不啟動中低風險 worker。",
      "input_evidence_hash": "sha256:6060606060606060606060606060606060606060606060606060606060606060",
      "output_evidence_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
      "side_effect_count": 0,
      "production_write_count": 0,
      "gateway_queue_write_count": 0,
      "telegram_send_count": 0,
      "secret_value_read_count": 0,
      "destructive_action_count": 0,
      "blocked_actions": ["auto worker execution", "result write", "delivery receipt write"],
      "required_human_decision": "人工確認這真的是 no-op；批准前只能顯示候選，不產生任何 runtime action。",
      "verifier_plan_id": "verifier_noop_result_contract",
      "rollback_or_noop_plan": "no-op；若 verifier plan 無法定義，候選自動降級人工 SOP。",
      "next_gate": "medium_low_auto_worker_permission_gate"
    },
    {
      "candidate_id": "candidate_medium_risk_repair_execution",
      "source_category_id": "medium_risk_repair_execution",
      "display_name": "中風險修復執行 dry-run",
      "risk_tier": "high",
      "permission_lane": "human_approval_required",
      "owner_agent": "openclaw",
      "dry_run_status": "blocked_by_policy",
      "dry_run_scope": "只能保留 dry-run evidence、rollback owner 與維護窗口草案；不可 apply 或 restart。",
      "input_evidence_hash": "sha256:7070707070707070707070707070707070707070707070707070707070707070",
      "output_evidence_hash": "sha256:7777777777777777777777777777777777777777777777777777777777777777",
      "side_effect_count": 0,
      "production_write_count": 0,
      "gateway_queue_write_count": 0,
      "telegram_send_count": 0,
      "secret_value_read_count": 0,
      "destructive_action_count": 0,
      "blocked_actions": ["repair apply", "restart", "config reload"],
      "required_human_decision": "需要 owner approval、maintenance window、rollback owner、post-action verifier 四者齊備。",
      "verifier_plan_id": "verifier_repair_postcheck_plan",
      "rollback_or_noop_plan": "未批准時維持 no-op；批准後仍需另行 runtime write gate。",
      "next_gate": "production_write_permission_gate"
    },
    {
      "candidate_id": "candidate_post_action_verifier_live_readback",
      "source_category_id": "post_action_verifier_live_readback",
      "display_name": "post-action verifier readback dry-run",
      "risk_tier": "high",
      "permission_lane": "human_approval_required",
      "owner_agent": "nemotron",
      "dry_run_status": "blocked_until_allowlist",
      "dry_run_scope": "先定義 readback allow-list、redaction 與 failure lane；不讀 live target、不寫結果。",
      "input_evidence_hash": "sha256:8080808080808080808080808080808080808080808080808080808080808080",
      "output_evidence_hash": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
      "side_effect_count": 0,
      "production_write_count": 0,
      "gateway_queue_write_count": 0,
      "telegram_send_count": 0,
      "secret_value_read_count": 0,
      "destructive_action_count": 0,
      "blocked_actions": ["canonical target readback", "result write", "failure receipt send"],
      "required_human_decision": "人工確認 allow-list 與 redaction 後，才可進 live verifier gate。",
      "verifier_plan_id": "verifier_live_readback_allowlist",
      "rollback_or_noop_plan": "allow-list 不完整時維持 no-op，並產生人工檢查清單。",
      "next_gate": "post_action_verifier_live_gate"
    },
    {
      "candidate_id": "candidate_telegram_gateway_queue_write",
      "source_category_id": "telegram_gateway_queue_write",
      "display_name": "Telegram Gateway queue write dry-run",
      "risk_tier": "high",
      "permission_lane": "human_approval_required",
      "owner_agent": "hermes",
      "dry_run_status": "blocked_until_allowlist",
      "dry_run_scope": "只產生 SRE 戰情室 queue candidate、dedupe key 與 delivery verifier；不寫 queue、不送 Bot API。",
      "input_evidence_hash": "sha256:9090909090909090909090909090909090909090909090909090909090909090",
      "output_evidence_hash": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
      "side_effect_count": 0,
      "production_write_count": 0,
      "gateway_queue_write_count": 0,
      "telegram_send_count": 0,
      "secret_value_read_count": 0,
      "destructive_action_count": 0,
      "blocked_actions": ["Gateway queue write", "Bot API sendMessage", "route mutation"],
      "required_human_decision": "人工確認唯一通道為 AwoooI SRE 戰情室、route / dedupe / receipt 完整後才可進下一 gate。",
      "verifier_plan_id": "verifier_gateway_queue_preview",
      "rollback_or_noop_plan": "未批准時只保留 preview；若 route 不符，標記 legacy route gap。",
      "next_gate": "telegram_send_permission_gate"
    },
    {
      "candidate_id": "candidate_production_config_or_data_write",
      "source_category_id": "production_config_or_data_write",
      "display_name": "production config / data write dry-run",
      "risk_tier": "critical",
      "permission_lane": "explicitly_blocked",
      "owner_agent": "openclaw",
      "dry_run_status": "blocked_by_policy",
      "dry_run_scope": "只能產生 source-of-truth diff、rollback ref、maintenance window 草案；不寫 production。",
      "input_evidence_hash": "sha256:a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0",
      "output_evidence_hash": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "side_effect_count": 0,
      "production_write_count": 0,
      "gateway_queue_write_count": 0,
      "telegram_send_count": 0,
      "secret_value_read_count": 0,
      "destructive_action_count": 0,
      "blocked_actions": ["DB write", "ConfigMap apply", "Nginx reload", "workflow mutation"],
      "required_human_decision": "必須另行 owner approval、rollback owner、maintenance window 與 post-check，不可由 P2-102 開 gate。",
      "verifier_plan_id": "verifier_production_write_preflight",
      "rollback_or_noop_plan": "no-op；任何 apply 都需新的批准包。",
      "next_gate": "production_write_permission_gate"
    },
    {
      "candidate_id": "candidate_secret_or_paid_provider_access",
      "source_category_id": "secret_or_paid_provider_access",
      "display_name": "secret / paid provider boundary dry-run",
      "risk_tier": "critical",
      "permission_lane": "explicitly_blocked",
      "owner_agent": "nemotron",
      "dry_run_status": "blocked_by_policy",
      "dry_run_scope": "只產生 metadata-only checklist、費用批准需求與降級提案；不讀 secret、不呼叫付費 provider。",
      "input_evidence_hash": "sha256:b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0",
      "output_evidence_hash": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
      "side_effect_count": 0,
      "production_write_count": 0,
      "gateway_queue_write_count": 0,
      "telegram_send_count": 0,
      "secret_value_read_count": 0,
      "destructive_action_count": 0,
      "blocked_actions": ["機密明文讀取", "paid API call", "授權標頭讀取"],
      "required_human_decision": "只能審查 metadata、secret name、費用批准與供應商 fallback 理由；明文與付費呼叫需另行批准。",
      "verifier_plan_id": "verifier_redaction_and_cost_boundary",
      "rollback_or_noop_plan": "no-op；不提供 runtime escalation。",
      "next_gate": "secret_or_paid_provider_gate"
    },
    {
      "candidate_id": "candidate_destructive_host_or_cluster_action",
      "source_category_id": "destructive_host_or_cluster_action",
      "display_name": "破壞性主機 / 叢集動作 dry-run",
      "risk_tier": "critical",
      "permission_lane": "explicitly_blocked",
      "owner_agent": "openclaw",
      "dry_run_status": "blocked_by_policy",
      "dry_run_scope": "只產生 break-glass 前置檢查、維護窗口、rollback owner 與替代 no-op；不 SSH、不 sudo、不刪除、不重啟、不套用叢集變更。",
      "input_evidence_hash": "sha256:d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0",
      "output_evidence_hash": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
      "side_effect_count": 0,
      "production_write_count": 0,
      "gateway_queue_write_count": 0,
      "telegram_send_count": 0,
      "secret_value_read_count": 0,
      "destructive_action_count": 0,
      "blocked_actions": ["ssh write", "sudo", "delete", "reboot", "kubectl apply"],
      "required_human_decision": "需 owner approval、maintenance window、rollback owner、blast radius 與 post-check；P2-102 不允許開啟任何 destructive gate。",
      "verifier_plan_id": "verifier_destructive_boundary_preflight",
      "rollback_or_noop_plan": "no-op；破壞性動作一律留在 break-glass 批准包外，不由 AI 自行執行。",
      "next_gate": "break_glass_or_destructive_action_gate"
    }
  ],
  "verifier_plans": [
    {
      "plan_id": "verifier_redacted_evidence_hash",
      "display_name": "redacted evidence hash verifier",
      "owner_agent": "hermes",
      "verifier_scope": "比對 input / output hash、source refs 與 redaction 欄位。",
      "expected_signal": "hash 存在、source ref 可追溯、未顯示原始載荷。",
      "failure_lane": "退回 evidence collection，不進 queue 或 runtime。",
      "live_readback_enabled": false,
      "writes_result": false,
      "requires_secret_value": false,
      "evidence_hash": "sha256:c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1"
    },
    {
      "plan_id": "verifier_gateway_queue_preview",
      "display_name": "Gateway queue preview verifier",
      "owner_agent": "hermes",
      "verifier_scope": "驗證 SRE 戰情室 route、dedupe key、receipt plan 與 failure-only 門檻。",
      "expected_signal": "preview 可讀、route 為 AwoooI SRE 戰情室、queue write count 仍為 0。",
      "failure_lane": "標記 route gap 或 redaction gap，退回 P2-403K / P2-403L。",
      "live_readback_enabled": false,
      "writes_result": false,
      "requires_secret_value": false,
      "evidence_hash": "sha256:c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2"
    },
    {
      "plan_id": "verifier_shadow_replay_fixture",
      "display_name": "shadow replay fixture verifier",
      "owner_agent": "nemotron",
      "verifier_scope": "檢查 無寫入 replay、promotion hash、side-effect count 與 model comparison output。",
      "expected_signal": "side-effect count 為 0，replay output 可被人工審查。",
      "failure_lane": "標記 replay degraded，回到 shadow candidate。",
      "live_readback_enabled": false,
      "writes_result": false,
      "requires_secret_value": false,
      "evidence_hash": "sha256:c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3"
    },
    {
      "plan_id": "verifier_repair_candidate_consistency",
      "display_name": "repair candidate consistency verifier",
      "owner_agent": "openclaw",
      "verifier_scope": "比對 MCP evidence、PlayBook trust、rollback owner、blast radius 與 dry-run output。",
      "expected_signal": "修復候選具備 evidence、rollback 與明確人工下一步。",
      "failure_lane": "退回人工 SOP 或補 MCP evidence。",
      "live_readback_enabled": false,
      "writes_result": false,
      "requires_secret_value": false,
      "evidence_hash": "sha256:c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4"
    },
    {
      "plan_id": "verifier_live_readback_allowlist",
      "display_name": "live readback allow-list verifier",
      "owner_agent": "nemotron",
      "verifier_scope": "先審查允許讀回的欄位、redaction 與 failure receipt template。",
      "expected_signal": "allow-list 完整、機密明文、原始載荷與私有推理內容都不顯示。",
      "failure_lane": "阻擋 live readback，產生人工檢查清單。",
      "live_readback_enabled": false,
      "writes_result": false,
      "requires_secret_value": false,
      "evidence_hash": "sha256:c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5"
    },
    {
      "plan_id": "verifier_destructive_boundary_preflight",
      "display_name": "destructive boundary preflight verifier",
      "owner_agent": "openclaw",
      "verifier_scope": "確認破壞性候選仍停留在 break-glass 文件與 no-op 替代方案，沒有任何 host / cluster action。",
      "expected_signal": "destructive action count 為 0，且 next gate 明確指向 break-glass 或人工批准包。",
      "failure_lane": "阻擋候選，回退到人工 SOP 與風險盤點。",
      "live_readback_enabled": false,
      "writes_result": false,
      "requires_secret_value": false,
      "evidence_hash": "sha256:c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6"
    }
  ],
  "gate_evidence_requirements": [
    {
      "gate_id": "p2_102_dry_run_evidence_gate",
      "display_name": "P2-102 dry-run evidence gate",
      "required_evidence": ["dry-run input hash", "dry-run output hash", "side-effect count", "verifier plan"],
      "missing_or_blocked": [],
      "opens_live_execution": false
    },
    {
      "gate_id": "gateway_queue_write_permission_gate",
      "display_name": "Gateway queue write permission gate",
      "required_evidence": ["AwoooI SRE 戰情室 route", "dedupe key", "delivery receipt plan", "failure-only policy"],
      "missing_or_blocked": ["queue write approval", "delivery receipt E2E"],
      "opens_live_execution": false
    },
    {
      "gate_id": "medium_low_auto_worker_permission_gate",
      "display_name": "中低風險 auto worker permission gate",
      "required_evidence": ["owner approval", "no-op / rollback plan", "post-action verifier", "blast radius"],
      "missing_or_blocked": ["runtime worker approval", "live verifier approval"],
      "opens_live_execution": false
    },
    {
      "gate_id": "post_action_verifier_live_gate",
      "display_name": "post-action verifier live gate",
      "required_evidence": ["readback allow-list", "redaction plan", "failure lane", "result write boundary"],
      "missing_or_blocked": ["live readback allow-list approval"],
      "opens_live_execution": false
    },
    {
      "gate_id": "production_write_permission_gate",
      "display_name": "production write permission gate",
      "required_evidence": ["source-of-truth diff", "rollback owner", "maintenance window", "post-check plan"],
      "missing_or_blocked": ["owner approval", "runtime write gate"],
      "opens_live_execution": false
    },
    {
      "gate_id": "secret_or_paid_provider_gate",
      "display_name": "secret / paid provider gate",
      "required_evidence": ["metadata-only scope", "cost approval", "redaction policy", "owner response"],
      "missing_or_blocked": ["機密明文讀取仍禁止", "paid provider expansion approval"],
      "opens_live_execution": false
    },
    {
      "gate_id": "break_glass_or_destructive_action_gate",
      "display_name": "break-glass / destructive action gate",
      "required_evidence": ["owner approval", "maintenance window", "rollback owner", "blast radius", "post-check plan"],
      "missing_or_blocked": ["break-glass approval", "runtime destructive action approval"],
      "opens_live_execution": false
    }
  ],
  "operator_handoffs": [
    {
      "handoff_id": "handoff_collect_missing_evidence",
      "display_name": "補證據",
      "owner_agent": "hermes",
      "human_instruction": "補 source ref、MCP evidence、incident / run 關聯或 redaction hash；不要執行修復。",
      "creates_runtime_action": false,
      "requires_human_review": true
    },
    {
      "handoff_id": "handoff_review_repair_candidate",
      "display_name": "審修復候選",
      "owner_agent": "openclaw",
      "human_instruction": "檢查 PlayBook trust、MCP evidence、dry-run hash、rollback owner、blast radius；缺一項就退回補證。",
      "creates_runtime_action": false,
      "requires_human_review": true
    },
    {
      "handoff_id": "handoff_review_sre_queue_preview",
      "display_name": "審戰情室 queue preview",
      "owner_agent": "hermes",
      "human_instruction": "確認 route 只指向 AwoooI SRE 戰情室、dedupe / receipt / failure-only 門檻完整後，才可另行批准 queue write。",
      "creates_runtime_action": false,
      "requires_human_review": true
    },
    {
      "handoff_id": "handoff_review_verifier_allowlist",
      "display_name": "審 verifier allow-list",
      "owner_agent": "nemotron",
      "human_instruction": "確認 readback 欄位、redaction、failure receipt 與 result write 邊界；未通過不得 live readback。",
      "creates_runtime_action": false,
      "requires_human_review": true
    },
    {
      "handoff_id": "handoff_escalate_blocked_operation",
      "display_name": "升級阻擋操作",
      "owner_agent": "openclaw",
      "human_instruction": "對 production write、secret / paid provider、host / cluster destructive action 只建立批准包，不在 P2-102 開 gate。",
      "creates_runtime_action": false,
      "requires_human_review": true
    }
  ],
  "display_redaction_contract": {
    "redaction_required": true,
    "raw_prompt_display_allowed": false,
    "private_reasoning_display_allowed": false,
    "secret_value_display_allowed": false,
    "raw_telegram_payload_display_allowed": false,
    "work_window_transcript_display_allowed": false,
    "allowed_display_fields": [
      "candidate_id",
      "source_category_id",
      "display_name",
      "risk_tier",
      "permission_lane",
      "owner_agent",
      "dry_run_status",
      "dry_run_scope",
      "input_evidence_hash",
      "output_evidence_hash",
      "side_effect_count",
      "blocked_actions",
      "required_human_decision",
      "verifier_plan_id",
      "rollback_or_noop_plan",
      "next_gate"
    ],
    "blocked_display_fields": [
      "未脫敏提示內容",
      "推理鏈內容",
      "Telegram chat id",
      "Telegram message id",
      "Bot token 識別欄位",
      "授權標頭",
      "機密明文",
      "原始工具輸出",
      "內部協作逐字稿"
    ]
  },
  "rollups": {
    "candidate_operation_count": 13,
    "candidate_with_dry_run_evidence_count": 13,
    "passed_no_write_count": 4,
    "needs_owner_review_count": 3,
    "blocked_until_allowlist_count": 2,
    "blocked_by_policy_count": 4,
    "verifier_plan_count": 6,
    "gate_evidence_requirement_count": 7,
    "operator_handoff_count": 5,
    "side_effect_count": 0,
    "runtime_execution_count": 0,
    "gateway_queue_write_count": 0,
    "telegram_send_count": 0,
    "production_write_count": 0,
    "secret_value_read_count": 0,
    "destructive_operation_count": 0
  }
}
