Files
awoooi/docs/evaluations/ai_agent_runtime_readback_promotion_gate_2026-06-13.json
Your Name ea1c825b16
All checks were successful
Code Review / ai-code-review (push) Successful in 13s
CD Pipeline / tests (push) Successful in 1m27s
CD Pipeline / build-and-deploy (push) Successful in 3m43s
CD Pipeline / post-deploy-checks (push) Successful in 1m29s
feat(governance): 新增 runtime readback promotion gate
2026-06-13 18:01:34 +08:00

512 lines
21 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"schema_version": "ai_agent_runtime_readback_promotion_gate_v1",
"generated_at": "2026-06-13T18:20:00+08:00",
"program_status": {
"overall_completion_percent": 100,
"current_priority": "P2",
"current_task_id": "P2-113",
"next_task_id": "P2-114",
"read_only_mode": true,
"runtime_authority": "runtime_readback_promotion_gate_only_no_live_queue_or_result_write",
"status_note": "P2-113 只建立 failure receipt、reviewer queue、result capture 的 no-write promotion gate未批准前不得 live query、不得寫 Gateway / Telegram / reviewer queue / result capture / production。"
},
"source_refs": [
"docs/evaluations/ai_agent_runtime_readback_fixture_approval_2026-06-13.json",
"docs/evaluations/ai_agent_owner_approved_result_capture_readback_2026-06-13.json",
"docs/evaluations/ai_agent_report_live_delivery_approval_package_2026-06-13.json",
"docs/superpowers/specs/2026-04-15-MASTER-ai-autonomous-flywheel-v2.md#33-建立-runtime-readback-fixture-approval"
],
"prior_fixture_approval": {
"fixture_approval_schema_version": "ai_agent_runtime_readback_fixture_approval_v1",
"fixture_approval_card_count": 5,
"adapter_contract_count": 4,
"verifier_fixture_check_count": 5,
"blocker_mapping_count": 5,
"operator_action_count": 5,
"owner_approval_received_count": 0,
"fixture_readback_execution_count": 0,
"live_query_count": 0,
"production_write_count": 0,
"readiness_note": "P2-112 已正式驗證 fixture-only approval packageP2-113 只把它轉成 no-write promotion gate不讀 live target、不寫任何 queue 或 result。"
},
"promotion_truth": {
"p2_112_fixture_approval_loaded": true,
"promotion_gate_ready": true,
"failure_receipt_fixture_ready": true,
"reviewer_queue_preview_ready": true,
"result_capture_preview_ready": true,
"owner_acceptance_required_before_promotion": true,
"canonical_runtime_target_read_enabled": false,
"live_query_enabled": false,
"failure_receipt_send_enabled": false,
"reviewer_queue_write_enabled": false,
"gateway_queue_write_enabled": false,
"telegram_send_enabled": false,
"bot_api_call_enabled": false,
"report_receipt_write_enabled": false,
"result_capture_write_enabled": false,
"learning_write_enabled": false,
"playbook_trust_write_enabled": false,
"production_write_enabled": false,
"secret_read_enabled": false,
"destructive_operation_enabled": false,
"owner_approval_received_count": 0,
"promotion_execution_count": 0,
"canonical_runtime_target_read_count": 0,
"live_query_count": 0,
"failure_receipt_send_count": 0,
"reviewer_queue_write_count": 0,
"gateway_queue_write_count": 0,
"telegram_send_count": 0,
"bot_api_call_count": 0,
"report_receipt_write_count": 0,
"result_capture_write_count": 0,
"learning_write_count": 0,
"playbook_trust_write_count": 0,
"production_write_count": 0,
"truth_note": "promotion gate 已可審查;真正 failure receipt、reviewer queue、result capture 與 live readback 仍全部為 0。"
},
"promotion_lanes": [
{
"lane_id": "telegram_failure_receipt_promotion",
"display_name": "Telegram failure receipt no-send promotion",
"owner_agent": "hermes",
"source_task_id": "P2-112",
"status": "ready_for_owner_review",
"risk_tier": "high",
"allowed_artifact": "no_send_failure_receipt_fixture",
"blocked_runtime_actions": [
"telegram_send",
"bot_api_call",
"report_receipt_write"
],
"operator_guidance": "只允許檢查 no-send failure receipt fixture真正送出 Telegram 或寫 receipt 必須等 P2-114 之後另行批准。",
"owner_approval_required": true,
"promotion_only": true,
"evidence_hash": "sha256:1010101010101010101010101010101010101010101010101010101010101010"
},
{
"lane_id": "reviewer_queue_preview_promotion",
"display_name": "Reviewer queue preview no-write promotion",
"owner_agent": "openclaw",
"source_task_id": "P2-112",
"status": "ready_for_owner_review",
"risk_tier": "medium",
"allowed_artifact": "reviewer_queue_preview_digest",
"blocked_runtime_actions": [
"reviewer_queue_write",
"timeline_write",
"audit_db_write"
],
"operator_guidance": "把 reviewer 要看的欄位、決策模板與阻擋原因做成 preview不得建立實際 queue item。",
"owner_approval_required": true,
"promotion_only": true,
"evidence_hash": "sha256:2020202020202020202020202020202020202020202020202020202020202020"
},
{
"lane_id": "result_capture_no_write_promotion",
"display_name": "Result capture no-write promotion",
"owner_agent": "nemotron",
"source_task_id": "P2-112",
"status": "approval_required",
"risk_tier": "critical",
"allowed_artifact": "result_capture_preview_digest",
"blocked_runtime_actions": [
"score_write",
"result_capture_write",
"playbook_trust_write"
],
"operator_guidance": "只比對 critic / reviewer score fixture 與 no-write result digest不得寫 score、result capture 或 PlayBook trust。",
"owner_approval_required": true,
"promotion_only": true,
"evidence_hash": "sha256:3030303030303030303030303030303030303030303030303030303030303030"
},
{
"lane_id": "report_delivery_receipt_link",
"display_name": "Report delivery receipt fixture link",
"owner_agent": "hermes",
"source_task_id": "P2-111",
"status": "approval_required",
"risk_tier": "high",
"allowed_artifact": "report_delivery_receipt_preview",
"blocked_runtime_actions": [
"gateway_queue_write",
"report_receipt_write",
"ai_analysis_run"
],
"operator_guidance": "僅把報表 no-send receipt 與 P2-112 fixture 做關聯;不得觸發報表實發或 AI 讀報分析。",
"owner_approval_required": true,
"promotion_only": true,
"evidence_hash": "sha256:4040404040404040404040404040404040404040404040404040404040404040"
},
{
"lane_id": "p2_114_handoff_scope",
"display_name": "P2-114 handoff scope hold",
"owner_agent": "openclaw",
"source_task_id": "P2-113",
"status": "blocked_by_policy",
"risk_tier": "critical",
"allowed_artifact": "operator_handoff_scope",
"blocked_runtime_actions": [
"canonical_runtime_target_read",
"live_query",
"production_write"
],
"operator_guidance": "P2-114 前只能整理 handoff scopeowner acceptance record、rollback owner 與 verifier plan 未齊前不得 live readback。",
"owner_approval_required": true,
"promotion_only": true,
"evidence_hash": "sha256:5050505050505050505050505050505050505050505050505050505050505050"
}
],
"receipt_contracts": [
{
"contract_id": "no_send_failure_receipt_contract",
"display_name": "no-send failure receipt contract",
"status": "ready",
"source_schema": "ai_agent_runtime_readback_fixture_approval_v1.fixture_approval_cards",
"output_artifact": "failure_receipt_preview",
"required_evidence": [
"failure_reason",
"route_lock_id",
"redaction_contract_id"
],
"live_send_enabled": false,
"receipt_write_enabled": false,
"evidence_hash": "sha256:6060606060606060606060606060606060606060606060606060606060606060"
},
{
"contract_id": "sre_war_room_route_lock_contract",
"display_name": "SRE 戰情室 route lock contract",
"status": "ready",
"source_schema": "ai_agent_report_live_delivery_approval_package_v1.route_lock_gates",
"output_artifact": "sre_route_lock_preview",
"required_evidence": [
"sre_group_route",
"legacy_route_suppression",
"dedupe_fingerprint"
],
"live_send_enabled": false,
"receipt_write_enabled": false,
"evidence_hash": "sha256:7070707070707070707070707070707070707070707070707070707070707070"
},
{
"contract_id": "redacted_receipt_payload_contract",
"display_name": "redacted receipt payload contract",
"status": "ready",
"source_schema": "ai_agent_report_live_delivery_approval_package_v1.payload_redaction_checks",
"output_artifact": "redacted_receipt_payload_digest",
"required_evidence": [
"payload_digest",
"redaction_check_id",
"no_secret_marker"
],
"live_send_enabled": false,
"receipt_write_enabled": false,
"evidence_hash": "sha256:8080808080808080808080808080808080808080808080808080808080808080"
},
{
"contract_id": "no_bot_api_call_contract",
"display_name": "Bot API call hold contract",
"status": "blocked_by_policy",
"source_schema": "ai_agent_runtime_readback_fixture_approval_v1.blocker_mappings",
"output_artifact": "bot_api_hold_record",
"required_evidence": [
"owner_acceptance_record",
"telegram_token_injection_e2e",
"rollback_owner"
],
"live_send_enabled": false,
"receipt_write_enabled": false,
"evidence_hash": "sha256:9090909090909090909090909090909090909090909090909090909090909090"
}
],
"reviewer_queue_previews": [
{
"preview_id": "owner_review_task_preview",
"display_name": "Owner review task preview",
"status": "ready",
"required_fields": [
"owner_role",
"decision",
"decision_reason"
],
"queue_write_enabled": false,
"audit_write_enabled": false,
"evidence_hash": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
},
{
"preview_id": "reviewer_decision_template_preview",
"display_name": "Reviewer decision template preview",
"status": "ready",
"required_fields": [
"risk_tier",
"allowed_artifact",
"blocked_action"
],
"queue_write_enabled": false,
"audit_write_enabled": false,
"evidence_hash": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
},
{
"preview_id": "escalation_reason_preview",
"display_name": "Escalation reason preview",
"status": "approval_required",
"required_fields": [
"blocked_until",
"missing_evidence",
"next_owner"
],
"queue_write_enabled": false,
"audit_write_enabled": false,
"evidence_hash": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
},
{
"preview_id": "no_write_queue_digest_preview",
"display_name": "No-write queue digest preview",
"status": "ready",
"required_fields": [
"preview_digest",
"source_snapshot",
"redaction_status"
],
"queue_write_enabled": false,
"audit_write_enabled": false,
"evidence_hash": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
}
],
"result_capture_previews": [
{
"preview_id": "critic_score_preview",
"display_name": "Critic score no-write preview",
"status": "ready",
"required_fields": [
"score_fixture",
"reason_digest",
"confidence_bucket"
],
"result_capture_write_enabled": false,
"learning_write_enabled": false,
"evidence_hash": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
},
{
"preview_id": "reviewer_score_preview",
"display_name": "Reviewer score no-write preview",
"status": "approval_required",
"required_fields": [
"reviewer_fixture",
"safety_decision",
"disagreement_hold"
],
"result_capture_write_enabled": false,
"learning_write_enabled": false,
"evidence_hash": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
},
{
"preview_id": "playbook_trust_preview",
"display_name": "PlayBook trust no-write preview",
"status": "blocked_by_policy",
"required_fields": [
"matched_playbook_id",
"trust_delta_fixture",
"owner_acceptance"
],
"result_capture_write_enabled": false,
"learning_write_enabled": false,
"evidence_hash": "sha256:1212121212121212121212121212121212121212121212121212121212121212"
},
{
"preview_id": "km_learning_preview",
"display_name": "KM learning no-write preview",
"status": "approval_required",
"required_fields": [
"km_draft_id",
"source_incident",
"owner_review"
],
"result_capture_write_enabled": false,
"learning_write_enabled": false,
"evidence_hash": "sha256:1313131313131313131313131313131313131313131313131313131313131313"
}
],
"no_write_verifier_checks": [
{
"check_id": "no_live_query_promotion_check",
"display_name": "no live query promotion check",
"status": "ready",
"required_fixture": "promotion lane must not read canonical runtime target",
"failure_if_missing": "缺 no-live-query 證據時不得推進 P2-114。",
"live_verifier_enabled": false,
"evidence_hash": "sha256:1414141414141414141414141414141414141414141414141414141414141414"
},
{
"check_id": "no_gateway_queue_write_check",
"display_name": "no Gateway queue write check",
"status": "ready",
"required_fixture": "Gateway queue write count remains 0",
"failure_if_missing": "queue write 不是 fixture任何非 0 都要退回。",
"live_verifier_enabled": false,
"evidence_hash": "sha256:1515151515151515151515151515151515151515151515151515151515151515"
},
{
"check_id": "no_telegram_bot_send_check",
"display_name": "no Telegram / Bot API send check",
"status": "ready",
"required_fixture": "Telegram send and Bot API call counts remain 0",
"failure_if_missing": "發送或 Bot API call 非 0 時不得宣稱 no-send promotion。",
"live_verifier_enabled": false,
"evidence_hash": "sha256:1616161616161616161616161616161616161616161616161616161616161616"
},
{
"check_id": "no_reviewer_queue_write_check",
"display_name": "no reviewer queue write check",
"status": "approval_required",
"required_fixture": "reviewer queue preview only; write count remains 0",
"failure_if_missing": "缺 queue preview 或 write count 非 0 時不得建立 reviewer item。",
"live_verifier_enabled": false,
"evidence_hash": "sha256:1717171717171717171717171717171717171717171717171717171717171717"
},
{
"check_id": "no_result_capture_write_check",
"display_name": "no result capture write check",
"status": "blocked_by_policy",
"required_fixture": "result capture preview only; score/write count remains 0",
"failure_if_missing": "缺 no-write preview 時不得進入 result capture promotion。",
"live_verifier_enabled": false,
"evidence_hash": "sha256:1818181818181818181818181818181818181818181818181818181818181818"
}
],
"blocker_mappings": [
{
"blocker_id": "owner_acceptance_missing",
"display_name": "Owner acceptance record missing",
"severity": "critical",
"status": "blocked_by_policy",
"source_blocker": "缺 owner acceptance record不得 promotion 到 live readback。",
"blocked_action": "promote_to_live_readback",
"blocked_until": "owner_acceptance_record_accepted",
"evidence_hash": "sha256:1919191919191919191919191919191919191919191919191919191919191919"
},
{
"blocker_id": "canonical_readback_not_approved",
"display_name": "Canonical readback not approved",
"severity": "critical",
"status": "blocked_by_policy",
"source_blocker": "P2-113 不授權 canonical runtime target read。",
"blocked_action": "canonical_runtime_target_read",
"blocked_until": "p2_114_owner_approval",
"evidence_hash": "sha256:2020202020202020202020202020202020202020202020202020202020202020"
},
{
"blocker_id": "telegram_send_not_approved",
"display_name": "Telegram send not approved",
"severity": "high",
"status": "approval_required",
"source_blocker": "SRE 戰情室 route 可預覽,但不得 send。",
"blocked_action": "telegram_send_or_bot_api_call",
"blocked_until": "telegram_e2e_delivery_gate",
"evidence_hash": "sha256:2121212121212121212121212121212121212121212121212121212121212121"
},
{
"blocker_id": "reviewer_queue_write_not_approved",
"display_name": "Reviewer queue write not approved",
"severity": "high",
"status": "approval_required",
"source_blocker": "只能顯示 reviewer queue preview不得寫 queue / audit / timeline。",
"blocked_action": "reviewer_queue_write",
"blocked_until": "queue_write_gate_accepted",
"evidence_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222"
},
{
"blocker_id": "result_capture_write_not_approved",
"display_name": "Result capture write not approved",
"severity": "critical",
"status": "blocked_by_policy",
"source_blocker": "score、result capture、learning、PlayBook trust 全部不得寫入。",
"blocked_action": "result_capture_write",
"blocked_until": "result_capture_write_gate_accepted",
"evidence_hash": "sha256:2323232323232323232323232323232323232323232323232323232323232323"
}
],
"operator_actions": [
{
"action_id": "review_promotion_lanes",
"display_name": "審查 promotion lanes",
"owner_agent": "openclaw",
"action_type": "review_promotion_lane",
"operator_instruction": "逐 lane 確認 allowed artifact 與 blocked runtime action 是否成對,任何 live write 疑慮都退回。",
"runtime_promotion_allowed": false
},
{
"action_id": "verify_failure_receipt_fixture",
"display_name": "驗證 failure receipt fixture",
"owner_agent": "hermes",
"action_type": "verify_failure_receipt_fixture",
"operator_instruction": "只看 no-send receipt digest、route lock 與 redaction 結果,不送 Telegram、不呼叫 Bot API。",
"runtime_promotion_allowed": false
},
{
"action_id": "confirm_queue_no_write",
"display_name": "確認 reviewer queue no-write",
"owner_agent": "openclaw",
"action_type": "confirm_reviewer_queue_no_write",
"operator_instruction": "確認 reviewer queue preview 足夠人工判讀,但 queue write、audit write、timeline write 必須維持 0。",
"runtime_promotion_allowed": false
},
{
"action_id": "compare_result_capture_preview",
"display_name": "比對 result capture preview",
"owner_agent": "nemotron",
"action_type": "compare_result_capture_preview",
"operator_instruction": "比對 critic/reviewer score fixture 與 no-write digest不得寫 score、learning 或 PlayBook trust。",
"runtime_promotion_allowed": false
},
{
"action_id": "promote_to_p2_114",
"display_name": "推進 P2-114",
"owner_agent": "openclaw",
"action_type": "promote_to_p2_114",
"operator_instruction": "只有在 no-send、no-write、no-live-query 與 owner acceptance 缺口都明確後,才能進 P2-114不是 live approval。",
"runtime_promotion_allowed": false
}
],
"display_redaction_contract": {
"redaction_required": true,
"raw_prompt_display_allowed": false,
"private_reasoning_display_allowed": false,
"secret_value_display_allowed": false,
"raw_runtime_payload_display_allowed": false,
"internal_collaboration_content_display_allowed": false,
"frontend_display_policy": "只顯示 promotion lane、preview digest、blocked action 與 owner handoff不顯示內部協作逐字稿、提示詞、私密推理內容、secret 或原始 runtime payload。"
},
"rollups": {
"promotion_lane_count": 5,
"receipt_contract_count": 4,
"reviewer_queue_preview_count": 4,
"result_capture_preview_count": 4,
"no_write_verifier_check_count": 5,
"blocker_mapping_count": 5,
"operator_action_count": 5,
"approval_required_lane_count": 2,
"blocked_lane_count": 1,
"blocked_receipt_contract_count": 1,
"approval_required_reviewer_preview_count": 1,
"blocked_result_preview_count": 1,
"owner_approval_received_count": 0,
"promotion_execution_count": 0,
"canonical_runtime_target_read_count": 0,
"live_query_count": 0,
"failure_receipt_send_count": 0,
"reviewer_queue_write_count": 0,
"gateway_queue_write_count": 0,
"telegram_send_count": 0,
"bot_api_call_count": 0,
"report_receipt_write_count": 0,
"result_capture_write_count": 0,
"learning_write_count": 0,
"playbook_trust_write_count": 0,
"production_write_count": 0,
"secret_read_count": 0,
"destructive_operation_count": 0
}
}