feat(governance): 新增 result capture writer dry-run readback
All checks were successful
Code Review / ai-code-review (push) Successful in 13s
CD Pipeline / tests (push) Successful in 1m29s
CD Pipeline / build-and-deploy (push) Successful in 4m57s
CD Pipeline / post-deploy-checks (push) Successful in 1m45s

This commit is contained in:
Your Name
2026-06-14 00:39:39 +08:00
parent c5cf6d3cc0
commit cdc6fe8737
10 changed files with 1605 additions and 1 deletions

View File

@@ -0,0 +1,394 @@
{
"schema_version": "ai_agent_result_capture_writer_dry_run_readback_v1",
"generated_at": "2026-06-14T00:50:00+08:00",
"program_status": {
"overall_completion_percent": 100,
"current_priority": "P2",
"current_task_id": "P2-124",
"next_task_id": "P2-125",
"read_only_mode": true,
"runtime_authority": "result_capture_writer_dry_run_readback_only_no_live_write",
"status_note": "P2-124 只建立 result capture writer dry-run readback、receipt verifier 與 promotion readiness不得套用 writer、執行 dry-run、寫 receipt 或寫入 production。"
},
"source_refs": [
"docs/evaluations/ai_agent_result_capture_writer_dry_run_fixture_2026-06-14.json",
"docs/evaluations/ai_agent_result_capture_writer_implementation_review_2026-06-13.json",
"docs/superpowers/specs/2026-04-15-MASTER-ai-autonomous-flywheel-v2.md#44-建立-result-capture-writer-dry-run-fixture"
],
"prior_result_capture_writer_dry_run_fixture": {
"schema_version": "ai_agent_result_capture_writer_dry_run_fixture_v1",
"writer_dry_run_fixture_count": 5,
"receipt_preview_count": 5,
"idempotency_replay_check_count": 5,
"rollback_rehearsal_count": 5,
"blocked_runtime_write_count": 6,
"operator_action_count": 5,
"writer_apply_count": 0,
"dry_run_execution_count": 0,
"receipt_write_count": 0,
"result_capture_write_count": 0,
"learning_write_count": 0,
"playbook_trust_write_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,
"readiness_note": "P2-123 已提供 fixture-only dry-run、receipt preview、idempotency replay 與 rollback rehearsalP2-124 只讀回這些輸出並建立 promotion readiness。"
},
"readback_truth": {
"p2_123_fixture_loaded": true,
"dry_run_readback_ready": true,
"receipt_verifier_ready": true,
"promotion_readiness_ready": true,
"fixture_only_mode": true,
"owner_approval_required": true,
"dual_approval_required": true,
"dry_run_hash_required": true,
"receipt_verifier_required": true,
"promotion_owner_required": true,
"rollback_owner_required": true,
"writer_apply_enabled": false,
"dry_run_execution_enabled": false,
"receipt_write_enabled": false,
"promotion_apply_enabled": false,
"canonical_runtime_target_read_enabled": false,
"live_query_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,
"dual_approval_received_count": 0,
"dry_run_hash_verified_count": 0,
"receipt_verifier_pass_count": 0,
"writer_apply_count": 0,
"dry_run_execution_count": 0,
"receipt_write_count": 0,
"promotion_apply_count": 0,
"canonical_runtime_target_read_count": 0,
"live_query_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,
"truth_note": "P2-124 把 P2-123 fixture-only dry-run 讀回成 promotion readiness。所有 live writer、queue、Telegram、Bot API、receipt 與 production write 仍為 0。"
},
"dry_run_readback_cards": [
{
"readback_id": "readback_result_capture_writer",
"display_name": "Result capture writer dry-run readback",
"owner_agent": "openclaw",
"source_fixture": "fixture_result_capture_writer",
"receipt_preview": "receipt_result_capture_preview",
"status": "ready_for_owner_review",
"readback_only": true,
"runtime_write_enabled": false,
"dry_run_execution_enabled": false,
"promotion_candidate": "result_capture_writer_apply",
"operator_note": "先確認 result capture receipt preview 與 idempotency key再進 P2-125 owner promotion review。",
"evidence_hash": "sha256:c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1"
},
{
"readback_id": "readback_learning_writer",
"display_name": "Learning writer dry-run readback",
"owner_agent": "hermes",
"source_fixture": "fixture_learning_writer",
"receipt_preview": "receipt_learning_preview",
"status": "approval_required",
"readback_only": true,
"runtime_write_enabled": false,
"dry_run_execution_enabled": false,
"promotion_candidate": "learning_writer_apply",
"operator_note": "高影響 KM 必須 owner review 後才能進 promotion readiness。",
"evidence_hash": "sha256:c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2"
},
{
"readback_id": "readback_playbook_trust_writer",
"display_name": "PlayBook trust writer dry-run readback",
"owner_agent": "nemotron",
"source_fixture": "fixture_playbook_trust_writer",
"receipt_preview": "receipt_playbook_trust_preview",
"status": "blocked_by_policy",
"readback_only": true,
"runtime_write_enabled": false,
"dry_run_execution_enabled": false,
"promotion_candidate": "playbook_trust_writer_apply",
"operator_note": "信任分數更新需 verifier success、negative reinforcement 與 rollback owner 同時成立。",
"evidence_hash": "sha256:c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3"
},
{
"readback_id": "readback_reviewer_queue_writer",
"display_name": "Reviewer queue dry-run readback",
"owner_agent": "openclaw",
"source_fixture": "fixture_reviewer_queue_writer",
"receipt_preview": "receipt_reviewer_queue_preview",
"status": "approval_required",
"readback_only": true,
"runtime_write_enabled": false,
"dry_run_execution_enabled": false,
"promotion_candidate": "reviewer_queue_apply",
"operator_note": "reviewer queue 寫入前需確認 owner route、dedupe key 與 SLA。",
"evidence_hash": "sha256:c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4"
},
{
"readback_id": "readback_gateway_queue_writer",
"display_name": "Gateway queue dry-run readback",
"owner_agent": "nemotron",
"source_fixture": "fixture_gateway_queue_writer",
"receipt_preview": "receipt_gateway_queue_preview",
"status": "ready_for_owner_review",
"readback_only": true,
"runtime_write_enabled": false,
"dry_run_execution_enabled": false,
"promotion_candidate": "gateway_queue_apply",
"operator_note": "只能顯示 AwoooI SRE 戰情室邏輯路由,不顯示 chat id、token 或 Bot API payload。",
"evidence_hash": "sha256:c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5"
}
],
"receipt_verifier_checks": [
{
"verifier_id": "verify_result_capture_receipt",
"display_name": "Result capture receipt verifier",
"owner_agent": "openclaw",
"status": "ready",
"verifier_mode": "no_write_receipt_verifier",
"required_before_promotion": true,
"live_receipt_enabled": false,
"failure_if_missing": "缺 result capture receipt verifier 時不得進 writer promotion。"
},
{
"verifier_id": "verify_learning_receipt",
"display_name": "Learning receipt verifier",
"owner_agent": "hermes",
"status": "approval_required",
"verifier_mode": "no_write_receipt_verifier",
"required_before_promotion": true,
"live_receipt_enabled": false,
"failure_if_missing": "缺 owner-reviewed learning receipt verifier 時不得學習寫入。"
},
{
"verifier_id": "verify_playbook_trust_receipt",
"display_name": "PlayBook trust receipt verifier",
"owner_agent": "nemotron",
"status": "blocked_by_policy",
"verifier_mode": "no_write_receipt_verifier",
"required_before_promotion": true,
"live_receipt_enabled": false,
"failure_if_missing": "缺 trust delta verifier 時不得更新 PlayBook trust。"
},
{
"verifier_id": "verify_reviewer_queue_receipt",
"display_name": "Reviewer queue receipt verifier",
"owner_agent": "openclaw",
"status": "approval_required",
"verifier_mode": "no_write_receipt_verifier",
"required_before_promotion": true,
"live_receipt_enabled": false,
"failure_if_missing": "缺 reviewer queue verifier 時不得寫 reviewer queue。"
},
{
"verifier_id": "verify_gateway_queue_receipt",
"display_name": "Gateway queue receipt verifier",
"owner_agent": "nemotron",
"status": "ready",
"verifier_mode": "no_write_receipt_verifier",
"required_before_promotion": true,
"live_receipt_enabled": false,
"failure_if_missing": "缺 Gateway queue verifier 時不得送 Telegram。"
}
],
"promotion_readiness_gates": [
{
"gate_id": "gate_writer_apply_owner_approval",
"display_name": "Writer apply owner approval",
"owner_agent": "openclaw",
"status": "approval_required",
"required_evidence": "owner approval、dual approval、dry-run hash",
"promotion_allowed": false
},
{
"gate_id": "gate_dry_run_hash",
"display_name": "Dry-run hash verifier",
"owner_agent": "nemotron",
"status": "ready_for_owner_review",
"required_evidence": "fixture hash、receipt preview hash、idempotency key",
"promotion_allowed": false
},
{
"gate_id": "gate_receipt_verifier",
"display_name": "Receipt verifier gate",
"owner_agent": "hermes",
"status": "approval_required",
"required_evidence": "no-write receipt verifier result",
"promotion_allowed": false
},
{
"gate_id": "gate_rollback_owner",
"display_name": "Rollback owner gate",
"owner_agent": "openclaw",
"status": "ready_for_owner_review",
"required_evidence": "rollback owner、rollback rehearsal、manual escalation route",
"promotion_allowed": false
},
{
"gate_id": "gate_production_write_block",
"display_name": "Production write block",
"owner_agent": "nemotron",
"status": "blocked_by_policy",
"required_evidence": "explicit production write approval and maintenance window",
"promotion_allowed": false
}
],
"blocked_promotion_writes": [
{
"blocker_id": "blocked_writer_apply",
"display_name": "Writer apply blocked",
"severity": "critical",
"status": "blocked_by_policy",
"blocked_action": "writer_apply",
"blocked_until": "P2-125 owner promotion review and explicit write approval",
"evidence_hash": "sha256:d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1"
},
{
"blocker_id": "blocked_dry_run_execution",
"display_name": "Dry-run execution blocked",
"severity": "high",
"status": "approval_required",
"blocked_action": "dry_run_execution",
"blocked_until": "receipt verifier and rollback owner are accepted",
"evidence_hash": "sha256:d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2"
},
{
"blocker_id": "blocked_receipt_write",
"display_name": "Receipt write blocked",
"severity": "high",
"status": "approval_required",
"blocked_action": "receipt_write",
"blocked_until": "no-write receipt verifier passes and owner approves",
"evidence_hash": "sha256:d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3"
},
{
"blocker_id": "blocked_result_capture_write",
"display_name": "Result capture write blocked",
"severity": "critical",
"status": "blocked_by_policy",
"blocked_action": "result_capture_write",
"blocked_until": "result capture writer promotion is accepted",
"evidence_hash": "sha256:d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4"
},
{
"blocker_id": "blocked_gateway_queue_write",
"display_name": "Gateway queue write blocked",
"severity": "critical",
"status": "blocked_by_policy",
"blocked_action": "gateway_queue_write",
"blocked_until": "SRE war room route and receipt verifier are accepted",
"evidence_hash": "sha256:d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5"
},
{
"blocker_id": "blocked_telegram_send",
"display_name": "Telegram send blocked",
"severity": "critical",
"status": "blocked_by_policy",
"blocked_action": "telegram_send",
"blocked_until": "Gateway queue write is approved and no-send verifier passes",
"evidence_hash": "sha256:d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6"
}
],
"operator_actions": [
{
"action_id": "review_dry_run_readback",
"display_name": "Review dry-run readback",
"owner_agent": "openclaw",
"operator_instruction": "比對 readback card、receipt preview 與 idempotency key確認沒有 live write 欄位。",
"runtime_write_allowed": false
},
{
"action_id": "verify_receipt_verifier",
"display_name": "Verify receipt verifier",
"owner_agent": "hermes",
"operator_instruction": "逐一確認 no-write receipt verifier 的 failure_if_missing 與 redaction policy。",
"runtime_write_allowed": false
},
{
"action_id": "score_promotion_readiness",
"display_name": "Score promotion readiness",
"owner_agent": "nemotron",
"operator_instruction": "檢查 promotion readiness gate不把 ready_for_owner_review 當正式批准。",
"runtime_write_allowed": false
},
{
"action_id": "prepare_p2_125_owner_packet",
"display_name": "Prepare P2-125 owner packet",
"owner_agent": "openclaw",
"operator_instruction": "只產生下一步 owner promotion review 所需欄位,不寫 reviewer queue 或 Gateway queue。",
"runtime_write_allowed": false
},
{
"action_id": "hold_runtime_write_gate",
"display_name": "Hold runtime write gate",
"owner_agent": "nemotron",
"operator_instruction": "持續確認 writer apply、receipt write、Telegram send、production write 全部維持 0。",
"runtime_write_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": "只顯示 readback、receipt verifier、promotion gate 與 blocked action 摘要不顯示提示詞原文、推理原文、機敏值、chat id、token、原始 payload 或內部協作內容。"
},
"rollups": {
"dry_run_readback_card_count": 5,
"receipt_verifier_check_count": 5,
"promotion_readiness_gate_count": 5,
"blocked_promotion_write_count": 6,
"operator_action_count": 5,
"approval_required_readback_count": 2,
"blocked_readback_count": 1,
"approval_required_verifier_count": 2,
"blocked_verifier_count": 1,
"approval_required_gate_count": 2,
"blocked_gate_count": 1,
"critical_blocker_count": 4,
"owner_approval_received_count": 0,
"dual_approval_received_count": 0,
"dry_run_hash_verified_count": 0,
"receipt_verifier_pass_count": 0,
"writer_apply_count": 0,
"dry_run_execution_count": 0,
"receipt_write_count": 0,
"promotion_apply_count": 0,
"canonical_runtime_target_read_count": 0,
"live_query_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
}
}

View File

@@ -0,0 +1,222 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://awoooi.local/schemas/ai_agent_result_capture_writer_dry_run_readback_v1.schema.json",
"title": "AI Agent Result Capture Writer Dry Run Readback",
"type": "object",
"additionalProperties": true,
"required": [
"schema_version",
"generated_at",
"program_status",
"prior_result_capture_writer_dry_run_fixture",
"readback_truth",
"dry_run_readback_cards",
"receipt_verifier_checks",
"promotion_readiness_gates",
"blocked_promotion_writes",
"operator_actions",
"display_redaction_contract",
"rollups"
],
"properties": {
"schema_version": {
"const": "ai_agent_result_capture_writer_dry_run_readback_v1"
},
"program_status": {
"type": "object",
"required": [
"overall_completion_percent",
"current_priority",
"current_task_id",
"next_task_id",
"read_only_mode",
"runtime_authority",
"status_note"
],
"properties": {
"overall_completion_percent": {
"const": 100
},
"current_priority": {
"const": "P2"
},
"current_task_id": {
"const": "P2-124"
},
"next_task_id": {
"const": "P2-125"
},
"read_only_mode": {
"const": true
},
"runtime_authority": {
"const": "result_capture_writer_dry_run_readback_only_no_live_write"
}
}
},
"readback_truth": {
"type": "object",
"required": [
"p2_123_fixture_loaded",
"dry_run_readback_ready",
"receipt_verifier_ready",
"promotion_readiness_ready",
"writer_apply_enabled",
"dry_run_execution_enabled",
"receipt_write_enabled",
"promotion_apply_enabled",
"result_capture_write_enabled",
"learning_write_enabled",
"playbook_trust_write_enabled",
"gateway_queue_write_enabled",
"telegram_send_enabled"
],
"properties": {
"p2_123_fixture_loaded": {
"const": true
},
"dry_run_readback_ready": {
"const": true
},
"receipt_verifier_ready": {
"const": true
},
"promotion_readiness_ready": {
"const": true
},
"writer_apply_enabled": {
"const": false
},
"dry_run_execution_enabled": {
"const": false
},
"receipt_write_enabled": {
"const": false
},
"promotion_apply_enabled": {
"const": false
},
"result_capture_write_enabled": {
"const": false
},
"learning_write_enabled": {
"const": false
},
"playbook_trust_write_enabled": {
"const": false
},
"gateway_queue_write_enabled": {
"const": false
},
"telegram_send_enabled": {
"const": false
},
"production_write_enabled": {
"const": false
}
}
},
"dry_run_readback_cards": {
"type": "array",
"minItems": 5,
"maxItems": 5
},
"receipt_verifier_checks": {
"type": "array",
"minItems": 5,
"maxItems": 5
},
"promotion_readiness_gates": {
"type": "array",
"minItems": 5,
"maxItems": 5
},
"blocked_promotion_writes": {
"type": "array",
"minItems": 6,
"maxItems": 6
},
"operator_actions": {
"type": "array",
"minItems": 5,
"maxItems": 5
},
"display_redaction_contract": {
"type": "object",
"properties": {
"redaction_required": {
"const": true
},
"secret_value_display_allowed": {
"const": false
},
"internal_collaboration_content_display_allowed": {
"const": false
}
}
},
"rollups": {
"type": "object",
"required": [
"dry_run_readback_card_count",
"receipt_verifier_check_count",
"promotion_readiness_gate_count",
"blocked_promotion_write_count",
"operator_action_count",
"writer_apply_count",
"dry_run_execution_count",
"receipt_write_count",
"promotion_apply_count",
"result_capture_write_count",
"learning_write_count",
"playbook_trust_write_count",
"gateway_queue_write_count",
"telegram_send_count"
],
"properties": {
"dry_run_readback_card_count": {
"const": 5
},
"receipt_verifier_check_count": {
"const": 5
},
"promotion_readiness_gate_count": {
"const": 5
},
"blocked_promotion_write_count": {
"const": 6
},
"operator_action_count": {
"const": 5
},
"writer_apply_count": {
"const": 0
},
"dry_run_execution_count": {
"const": 0
},
"receipt_write_count": {
"const": 0
},
"promotion_apply_count": {
"const": 0
},
"result_capture_write_count": {
"const": 0
},
"learning_write_count": {
"const": 0
},
"playbook_trust_write_count": {
"const": 0
},
"gateway_queue_write_count": {
"const": 0
},
"telegram_send_count": {
"const": 0
}
}
}
}
}