Some checks failed
Code Review / ai-code-review (push) Successful in 13s
CD Pipeline / tests (push) Successful in 1m39s
Ansible / Reboot Recovery Contract / validate (push) Has been cancelled
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled
426 lines
18 KiB
JSON
426 lines
18 KiB
JSON
{
|
||
"schema_version": "ai_agent_runtime_readback_fixture_approval_v1",
|
||
"generated_at": "2026-06-13T17:45:00+08:00",
|
||
"program_status": {
|
||
"overall_completion_percent": 100,
|
||
"current_priority": "P2",
|
||
"current_task_id": "P2-112",
|
||
"next_task_id": "P2-113",
|
||
"read_only_mode": true,
|
||
"runtime_authority": "runtime_readback_fixture_approval_only_no_canonical_target_or_live_query",
|
||
"status_note": "P2-112 只建立 fixture-only runtime readback 批准包;未批准前不得讀 canonical runtime target、不得 live query、不得寫 Gateway / Telegram / Bot API / report receipt / result capture / production。"
|
||
},
|
||
"source_refs": [
|
||
"docs/evaluations/ai_agent_runtime_readback_implementation_review_2026-06-13.json",
|
||
"docs/evaluations/ai_agent_report_live_delivery_approval_package_2026-06-13.json",
|
||
"docs/ai/AI_AGENT_INTERACTION_LEARNING_PROOF_2026-06-11.md#5-後續優先順序",
|
||
"docs/superpowers/specs/2026-04-15-MASTER-ai-autonomous-flywheel-v2.md#32-建立-report-live-delivery-approval-package"
|
||
],
|
||
"prior_runtime_review": {
|
||
"implementation_review_schema_version": "ai_agent_runtime_readback_implementation_review_v1",
|
||
"implementation_review_card_count": 5,
|
||
"no_write_verifier_check_count": 5,
|
||
"implementation_blocker_count": 5,
|
||
"runtime_readback_execution_count": 0,
|
||
"live_query_count": 0,
|
||
"production_write_count": 0,
|
||
"readiness_note": "P2-110 已把 implementation review card、無寫入 verifier check 與 blocker 固定;P2-112 只把這些項目轉成 fixture-only approval,不讀 live target。"
|
||
},
|
||
"prior_delivery_approval": {
|
||
"delivery_approval_schema_version": "ai_agent_report_live_delivery_approval_package_v1",
|
||
"delivery_approval_packet_count": 5,
|
||
"route_lock_gate_count": 4,
|
||
"payload_redaction_check_count": 5,
|
||
"dry_run_delivery_receipt_count": 4,
|
||
"telegram_send_count": 0,
|
||
"gateway_queue_write_count": 0,
|
||
"bot_api_call_count": 0,
|
||
"readiness_note": "P2-111 已建立報表實發批准包與 route lock;P2-112 仍只使用 fixture/無發送 receipt 證據,不排程實發。"
|
||
},
|
||
"fixture_approval_truth": {
|
||
"p2_110_implementation_review_loaded": true,
|
||
"p2_111_delivery_approval_loaded": true,
|
||
"fixture_approval_package_ready": true,
|
||
"adapter_contract_ready": true,
|
||
"verifier_fixture_ready": true,
|
||
"blocker_mapping_ready": true,
|
||
"owner_review_required_before_readback": true,
|
||
"canonical_runtime_target_read_enabled": false,
|
||
"live_query_enabled": false,
|
||
"runtime_readback_execution_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,
|
||
"production_write_enabled": false,
|
||
"secret_read_enabled": false,
|
||
"destructive_operation_enabled": false,
|
||
"owner_approval_received_count": 0,
|
||
"fixture_readback_execution_count": 0,
|
||
"canonical_runtime_target_read_count": 0,
|
||
"live_query_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,
|
||
"production_write_count": 0,
|
||
"truth_note": "fixture approval 已可審查;真正 runtime readback、live query 與任何寫入仍為 0。"
|
||
},
|
||
"fixture_approval_cards": [
|
||
{
|
||
"card_id": "report_delivery_fixture_readback",
|
||
"display_name": "報表派送 fixture readback 批准",
|
||
"owner_agent": "openclaw",
|
||
"source_task_id": "P2-111",
|
||
"status": "approval_required",
|
||
"risk_tier": "high",
|
||
"required_fixture_fields": [
|
||
"report_type",
|
||
"route_target",
|
||
"redacted_payload_digest",
|
||
"no_send_receipt_id",
|
||
"dedupe_fingerprint"
|
||
],
|
||
"blocked_runtime_actions": [
|
||
"scheduler_run",
|
||
"gateway_queue_write",
|
||
"telegram_send"
|
||
],
|
||
"operator_guidance": "先核對 P2-111 的日報 / 週報 / 月報 / 失敗限定摘要批准包是否都有 fixture payload、無發送 receipt 與 SRE 戰情室 route lock。",
|
||
"owner_approval_required": true,
|
||
"fixture_only": true,
|
||
"evidence_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111"
|
||
},
|
||
{
|
||
"card_id": "runtime_implementation_fixture_readback",
|
||
"display_name": "runtime implementation fixture readback 批准",
|
||
"owner_agent": "nemotron",
|
||
"source_task_id": "P2-110",
|
||
"status": "approval_required",
|
||
"risk_tier": "critical",
|
||
"required_fixture_fields": [
|
||
"adapter_contract_id",
|
||
"expected_readback_shape",
|
||
"verifier_fixture_id",
|
||
"rollback_noop_plan",
|
||
"blocked_live_target"
|
||
],
|
||
"blocked_runtime_actions": [
|
||
"canonical_runtime_target_read",
|
||
"live_query",
|
||
"runtime_result_capture_write"
|
||
],
|
||
"operator_guidance": "只允許使用 committed fixture 驗證 adapter shape,不得讀 canonical runtime target 或把 fixture approval 解讀成 live query approval。",
|
||
"owner_approval_required": true,
|
||
"fixture_only": true,
|
||
"evidence_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222"
|
||
},
|
||
{
|
||
"card_id": "telegram_failure_receipt_fixture_readback",
|
||
"display_name": "Telegram failure receipt fixture 批准",
|
||
"owner_agent": "hermes",
|
||
"source_task_id": "P2-110",
|
||
"status": "ready_for_owner_review",
|
||
"risk_tier": "high",
|
||
"required_fixture_fields": [
|
||
"failure_reason",
|
||
"route_lock_id",
|
||
"redaction_contract_id",
|
||
"no_send_receipt_id"
|
||
],
|
||
"blocked_runtime_actions": [
|
||
"telegram_send",
|
||
"bot_api_call",
|
||
"report_receipt_write"
|
||
],
|
||
"operator_guidance": "只審 無發送 fixture receipt;真正 Telegram failure receipt 要等 P2-113 後另行批准。",
|
||
"owner_approval_required": true,
|
||
"fixture_only": true,
|
||
"evidence_hash": "sha256:3333333333333333333333333333333333333333333333333333333333333333"
|
||
},
|
||
{
|
||
"card_id": "reviewer_queue_fixture_preview",
|
||
"display_name": "reviewer queue fixture preview 批准",
|
||
"owner_agent": "openclaw",
|
||
"source_task_id": "P2-110",
|
||
"status": "ready_for_owner_review",
|
||
"risk_tier": "medium",
|
||
"required_fixture_fields": [
|
||
"reviewer_role",
|
||
"decision_template",
|
||
"blocked_write_summary",
|
||
"expected_owner_response"
|
||
],
|
||
"blocked_runtime_actions": [
|
||
"reviewer_queue_write",
|
||
"timeline_write",
|
||
"audit_db_write"
|
||
],
|
||
"operator_guidance": "先把 reviewer 要看到的 fixture preview 固定,未批准前不建立 queue item、不寫 audit DB、不寫 timeline。",
|
||
"owner_approval_required": true,
|
||
"fixture_only": true,
|
||
"evidence_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444"
|
||
},
|
||
{
|
||
"card_id": "result_capture_fixture_link",
|
||
"display_name": "result capture fixture link 批准",
|
||
"owner_agent": "nemotron",
|
||
"source_task_id": "P2-110",
|
||
"status": "blocked_by_policy",
|
||
"risk_tier": "critical",
|
||
"required_fixture_fields": [
|
||
"critic_score_fixture",
|
||
"reviewer_score_fixture",
|
||
"promotion_gate_fixture",
|
||
"no_write_result_digest"
|
||
],
|
||
"blocked_runtime_actions": [
|
||
"score_write",
|
||
"result_capture_write",
|
||
"playbook_trust_write"
|
||
],
|
||
"operator_guidance": "缺 owner acceptance record 前只能保留 fixture link;不得寫 score、result capture、PlayBook trust 或 KM。",
|
||
"owner_approval_required": true,
|
||
"fixture_only": true,
|
||
"evidence_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555"
|
||
}
|
||
],
|
||
"adapter_contracts": [
|
||
{
|
||
"contract_id": "report_delivery_payload_to_fixture_readback",
|
||
"display_name": "報表 payload → fixture readback adapter",
|
||
"status": "ready",
|
||
"input_schema": "ai_agent_report_live_delivery_approval_package_v1.delivery_approval_packets",
|
||
"output_schema": "runtime_readback_fixture.packet_digest",
|
||
"required_evidence": [
|
||
"redacted_payload_digest",
|
||
"route_lock_gate_id",
|
||
"no_send_receipt_id"
|
||
],
|
||
"canonical_target_read_enabled": false,
|
||
"live_query_enabled": false,
|
||
"evidence_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||
},
|
||
{
|
||
"contract_id": "implementation_review_to_adapter_check",
|
||
"display_name": "implementation review → adapter check",
|
||
"status": "ready",
|
||
"input_schema": "ai_agent_runtime_readback_implementation_review_v1.implementation_review_cards",
|
||
"output_schema": "runtime_readback_fixture.adapter_contract",
|
||
"required_evidence": [
|
||
"implementation_review_card_id",
|
||
"no_write_verifier_check_id",
|
||
"blocked_live_target"
|
||
],
|
||
"canonical_target_read_enabled": false,
|
||
"live_query_enabled": false,
|
||
"evidence_hash": "sha256:7777777777777777777777777777777777777777777777777777777777777777"
|
||
},
|
||
{
|
||
"contract_id": "failure_receipt_to_fixture_verifier",
|
||
"display_name": "failure receipt → fixture verifier",
|
||
"status": "approval_required",
|
||
"input_schema": "ai_agent_runtime_readback_implementation_review_v1.telegram_failure_receipt_gate",
|
||
"output_schema": "runtime_readback_fixture.failure_receipt_digest",
|
||
"required_evidence": [
|
||
"failure_reason",
|
||
"no_send_receipt_id",
|
||
"redaction_check_id"
|
||
],
|
||
"canonical_target_read_enabled": false,
|
||
"live_query_enabled": false,
|
||
"evidence_hash": "sha256:8888888888888888888888888888888888888888888888888888888888888888"
|
||
},
|
||
{
|
||
"contract_id": "result_capture_to_fixture_promotion",
|
||
"display_name": "result capture → fixture promotion gate",
|
||
"status": "blocked_by_policy",
|
||
"input_schema": "ai_agent_owner_approved_result_capture_readback_v1.promotion_readiness",
|
||
"output_schema": "runtime_readback_fixture.no_write_promotion",
|
||
"required_evidence": [
|
||
"owner_acceptance_record",
|
||
"critic_score_fixture",
|
||
"reviewer_score_fixture"
|
||
],
|
||
"canonical_target_read_enabled": false,
|
||
"live_query_enabled": false,
|
||
"evidence_hash": "sha256:9999999999999999999999999999999999999999999999999999999999999999"
|
||
}
|
||
],
|
||
"verifier_fixture_checks": [
|
||
{
|
||
"check_id": "fixture_payload_shape",
|
||
"display_name": "fixture payload shape",
|
||
"status": "ready",
|
||
"required_fixture": "redacted payload digest + schema_version + route_lock",
|
||
"failure_if_missing": "缺 payload shape 時不得推進 P2-113 fixture readback。",
|
||
"live_verifier_enabled": false,
|
||
"evidence_hash": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||
},
|
||
{
|
||
"check_id": "no_live_target_reference",
|
||
"display_name": "no live target reference",
|
||
"status": "ready",
|
||
"required_fixture": "blocked_live_target + canonical_target_read_enabled=false",
|
||
"failure_if_missing": "若 fixture 指向 live target,必須退回 P2-112。",
|
||
"live_verifier_enabled": false,
|
||
"evidence_hash": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||
},
|
||
{
|
||
"check_id": "route_lock_fixture",
|
||
"display_name": "SRE route lock fixture",
|
||
"status": "approval_required",
|
||
"required_fixture": "AwoooI SRE 戰情室 route lock + old bot suppression",
|
||
"failure_if_missing": "缺 route lock fixture 時不得產生任何發送或 queue 草案。",
|
||
"live_verifier_enabled": false,
|
||
"evidence_hash": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
||
},
|
||
{
|
||
"check_id": "redaction_fixture",
|
||
"display_name": "redaction fixture",
|
||
"status": "ready",
|
||
"required_fixture": "no prompt / no private inference content / no raw runtime payload",
|
||
"failure_if_missing": "缺遮蔽 fixture 時不得顯示 payload 或產生讀報回執。",
|
||
"live_verifier_enabled": false,
|
||
"evidence_hash": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
||
},
|
||
{
|
||
"check_id": "result_capture_no_write_fixture",
|
||
"display_name": "result capture 無寫入 fixture",
|
||
"status": "blocked_by_policy",
|
||
"required_fixture": "score fixture + 無寫入 digest + owner acceptance placeholder",
|
||
"failure_if_missing": "缺 owner acceptance record 前不得寫 result capture。",
|
||
"live_verifier_enabled": false,
|
||
"evidence_hash": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||
}
|
||
],
|
||
"blocker_mappings": [
|
||
{
|
||
"blocker_id": "canonical_runtime_target_blocked",
|
||
"display_name": "canonical runtime target blocked",
|
||
"source_blocker": "P2-110 live_query disabled",
|
||
"severity": "critical",
|
||
"blocked_action": "canonical_runtime_target_read",
|
||
"blocked_until": "owner acceptance record + P2-113 fixture readback approval",
|
||
"status": "blocked_by_policy",
|
||
"evidence_hash": "sha256:1212121212121212121212121212121212121212121212121212121212121212"
|
||
},
|
||
{
|
||
"blocker_id": "gateway_queue_write_blocked",
|
||
"display_name": "Gateway queue write blocked",
|
||
"source_blocker": "P2-111 route lock still approval-required",
|
||
"severity": "high",
|
||
"blocked_action": "gateway_queue_write",
|
||
"blocked_until": "SRE route lock owner approval",
|
||
"status": "approval_required",
|
||
"evidence_hash": "sha256:3434343434343434343434343434343434343434343434343434343434343434"
|
||
},
|
||
{
|
||
"blocker_id": "telegram_bot_send_blocked",
|
||
"display_name": "Telegram / Bot API send blocked",
|
||
"source_blocker": "P2-111 無發送 receipt",
|
||
"severity": "high",
|
||
"blocked_action": "telegram_send_or_bot_api_call",
|
||
"blocked_until": "delivery receipt E2E approval",
|
||
"status": "approval_required",
|
||
"evidence_hash": "sha256:5656565656565656565656565656565656565656565656565656565656565656"
|
||
},
|
||
{
|
||
"blocker_id": "report_receipt_write_blocked",
|
||
"display_name": "report receipt write blocked",
|
||
"source_blocker": "P2-111 dry-run receipt only",
|
||
"severity": "medium",
|
||
"blocked_action": "report_receipt_write",
|
||
"blocked_until": "P2-113 fixture readback pass + owner approval",
|
||
"status": "mapped",
|
||
"evidence_hash": "sha256:7878787878787878787878787878787878787878787878787878787878787878"
|
||
},
|
||
{
|
||
"blocker_id": "result_capture_write_blocked",
|
||
"display_name": "result capture write blocked",
|
||
"source_blocker": "P2-110 implementation blocker",
|
||
"severity": "critical",
|
||
"blocked_action": "result_capture_write",
|
||
"blocked_until": "critic / reviewer acceptance record",
|
||
"status": "blocked_by_policy",
|
||
"evidence_hash": "sha256:9090909090909090909090909090909090909090909090909090909090909090"
|
||
}
|
||
],
|
||
"operator_actions": [
|
||
{
|
||
"action_id": "review_fixture_approval_cards",
|
||
"display_name": "審查 fixture approval cards",
|
||
"owner_agent": "openclaw",
|
||
"action_type": "review_fixture_approval",
|
||
"operator_instruction": "逐張確認 fixture approval card 是否只有 fixture 欄位、沒有 live target、沒有 send/write 權限。",
|
||
"runtime_readback_allowed": false
|
||
},
|
||
{
|
||
"action_id": "compare_adapter_contracts",
|
||
"display_name": "比對 adapter contract",
|
||
"owner_agent": "nemotron",
|
||
"action_type": "compare_adapter_contract",
|
||
"operator_instruction": "核對 P2-110 / P2-111 輸入 schema 是否能轉成 P2-113 fixture readback,不能連線查 live target。",
|
||
"runtime_readback_allowed": false
|
||
},
|
||
{
|
||
"action_id": "confirm_no_live_query",
|
||
"display_name": "確認 live query 仍關閉",
|
||
"owner_agent": "hermes",
|
||
"action_type": "confirm_no_live_query",
|
||
"operator_instruction": "確認 canonical target read、live query、runtime execution、Gateway、Telegram、Bot API、receipt write 都是 0 / false。",
|
||
"runtime_readback_allowed": false
|
||
},
|
||
{
|
||
"action_id": "reject_canonical_target_scope",
|
||
"display_name": "退回 live target 混入",
|
||
"owner_agent": "nemotron",
|
||
"action_type": "reject_canonical_target",
|
||
"operator_instruction": "若任何 fixture 混入 live endpoint、secret、raw payload 或 production target,立即退回 P2-112,不進 P2-113。",
|
||
"runtime_readback_allowed": false
|
||
},
|
||
{
|
||
"action_id": "promote_to_p2_113_fixture_readback",
|
||
"display_name": "推進 P2-113 fixture readback",
|
||
"owner_agent": "openclaw",
|
||
"action_type": "promote_to_p2_113",
|
||
"operator_instruction": "只有在 owner 接受 fixture approval cards 後,才建立 P2-113 report delivery fixture readback;仍不得實發或 live write。",
|
||
"runtime_readback_allowed": false
|
||
}
|
||
],
|
||
"display_redaction_contract": {
|
||
"redaction_required": true,
|
||
"frontend_display_policy": "前端只顯示 fixture approval 摘要、adapter contract 名稱、verifier 狀態、blocked action 與 operator instruction;不得顯示原始提示詞、私密推理、secret、raw runtime payload 或內部協作內容。",
|
||
"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
|
||
},
|
||
"rollups": {
|
||
"fixture_approval_card_count": 5,
|
||
"adapter_contract_count": 4,
|
||
"verifier_fixture_check_count": 5,
|
||
"blocker_mapping_count": 5,
|
||
"operator_action_count": 5,
|
||
"approval_required_card_count": 2,
|
||
"blocked_card_count": 1,
|
||
"blocked_contract_count": 1,
|
||
"blocked_check_count": 1,
|
||
"owner_approval_received_count": 0,
|
||
"fixture_readback_execution_count": 0,
|
||
"canonical_runtime_target_read_count": 0,
|
||
"live_query_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,
|
||
"production_write_count": 0,
|
||
"secret_read_count": 0,
|
||
"destructive_operation_count": 0
|
||
}
|
||
}
|