feat(governance): 新增 owner approved result capture readback
Some checks failed
Code Review / ai-code-review (push) Successful in 12s
CD Pipeline / tests (push) Successful in 1m27s
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled

This commit is contained in:
Your Name
2026-06-13 13:53:42 +08:00
parent b65c1920e3
commit a5b1f355c4
13 changed files with 1805 additions and 9 deletions

View File

@@ -0,0 +1,480 @@
{
"schema_version": "ai_agent_owner_approved_result_capture_readback_v1",
"generated_at": "2026-06-13T14:18:00+08:00",
"program_status": {
"overall_completion_percent": 100,
"current_priority": "P2",
"current_task_id": "P2-107",
"next_task_id": "P2-108",
"read_only_mode": true,
"runtime_authority": "owner_approved_result_capture_readback_only_no_live_write",
"status_note": "P2-107 承接 P2-106 no-write dry-run固定 result capture readback digest、promotion readiness review、failure lane 與 reviewer queue preview本快照只讀不寫 runtime 結果。"
},
"source_refs": [
"docs/evaluations/ai_agent_owner_approved_result_capture_dry_run_2026-06-13.json",
"docs/schemas/ai_agent_owner_approved_result_capture_dry_run_v1.schema.json",
"apps/api/src/services/ai_agent_owner_approved_result_capture_dry_run.py",
"apps/api/src/services/ai_agent_critic_reviewer_result_capture.py",
"apps/api/src/services/post_execution_verifier.py",
"apps/api/src/services/approval_execution.py",
"docs/superpowers/specs/2026-04-15-MASTER-ai-autonomous-flywheel-v2.md"
],
"prior_dry_run_readback": {
"source_schema_version": "ai_agent_owner_approved_result_capture_dry_run_v1",
"readback_at": "2026-06-13T12:49:00+08:00",
"result_capture_template_count": 5,
"score_fixture_count": 5,
"dry_run_gate_count": 7,
"operator_action_count": 5,
"approval_required_gate_count": 2,
"blocked_gate_count": 1,
"approved_without_execution_meta_24h": 63,
"execution_failed_with_matched_24h": 1,
"owner_approval_received_count": 0,
"dry_run_preview_generated_count": 0,
"result_capture_write_count": 0,
"score_write_count": 0,
"learning_write_count": 0,
"playbook_trust_write_count": 0,
"gateway_queue_write_count": 0,
"telegram_send_count": 0,
"production_write_count": 0,
"readback_note": "P2-106 已建立 owner-approved dry-run template 與 score fixtureP2-107 只做 fixture readback 與 promotion readiness不讀 canonical runtime target。"
},
"readback_truth": {
"p2_106_dry_run_loaded": true,
"fixture_readback_allowed": true,
"readback_digest_ready": true,
"promotion_readiness_review_ready": true,
"owner_review_required_before_promotion": true,
"canonical_runtime_readback_enabled": false,
"runtime_result_capture_write_enabled": false,
"runtime_score_write_enabled": false,
"runtime_learning_write_enabled": false,
"playbook_trust_write_enabled": false,
"reviewer_queue_write_enabled": false,
"gateway_queue_write_enabled": false,
"telegram_send_enabled": false,
"production_write_enabled": false,
"secret_read_enabled": false,
"destructive_operation_enabled": false,
"owner_approval_received_count": 0,
"readback_digest_generated_count": 0,
"promotion_approved_count": 0,
"reviewer_queue_write_count": 0,
"result_capture_write_count_24h": 0,
"score_write_count_24h": 0,
"learning_write_count_24h": 0,
"playbook_trust_write_count_24h": 0,
"gateway_queue_write_count_24h": 0,
"telegram_send_count_24h": 0,
"production_write_count_24h": 0,
"secret_read_count_24h": 0,
"destructive_operation_count_24h": 0,
"truth_note": "目前只允許 committed fixture readback 與 promotion readiness 檢查owner approval、readback runtime generation、reviewer queue write、score/result/learning/trust/Gateway/Telegram/production write 仍全部為 0。"
},
"result_capture_readback_digests": [
{
"digest_id": "readback_digest_approved_execution_result",
"display_name": "APPROVED result capture readback digest",
"source_template_id": "dry_run_capture_approved_execution_result",
"owner_agent": "openclaw",
"status": "approval_required",
"candidate_count_24h": 63,
"readback_fields": [
"owner_approval_id",
"approval_id",
"incident_id",
"matched_playbook_id",
"operator_outcome",
"verifier_plan_ref"
],
"verifier_checks": [
"owner_scope_match",
"result_state_match",
"rollback_plan_present",
"public_redaction_pass"
],
"promotion_blocker": "owner approval 與 canonical readback 尚未啟用,禁止 promotion 到 live writer。",
"fixture_only": true,
"runtime_read_enabled": false,
"write_enabled": false,
"evidence_hash": "sha256:1313131313131313131313131313131313131313131313131313131313131313"
},
{
"digest_id": "readback_digest_execution_failed_candidate",
"display_name": "EXECUTION_FAILED candidate readback digest",
"source_template_id": "dry_run_capture_execution_failed_candidate",
"owner_agent": "nemotron",
"status": "approval_required",
"candidate_count_24h": 1,
"readback_fields": [
"owner_approval_id",
"approval_id",
"matched_playbook_id",
"failure_reason_ref",
"negative_learning_weight_preview",
"verifier_plan_ref"
],
"verifier_checks": [
"failure_reason_redacted",
"negative_learning_preview_only",
"trust_update_hold",
"replay_hash_present"
],
"promotion_blocker": "NemoTron 只能驗證 failure candidate不得寫負向 learning 或 trust。",
"fixture_only": true,
"runtime_read_enabled": false,
"write_enabled": false,
"evidence_hash": "sha256:2424242424242424242424242424242424242424242424242424242424242424"
},
{
"digest_id": "readback_digest_pending_human_gate",
"display_name": "PENDING human gate readback digest",
"source_template_id": "dry_run_capture_pending_human_gate",
"owner_agent": "hermes",
"status": "blocked_by_policy",
"candidate_count_24h": 2,
"readback_fields": [
"approval_id",
"matched_playbook_id",
"pending_reason",
"human_decision_required",
"expires_at"
],
"verifier_checks": [
"pending_reason_present",
"human_gate_required",
"learning_write_absent",
"operator_followup_ready"
],
"promotion_blocker": "pending human gate 不可被自動轉成 learning 或 result capture write。",
"fixture_only": true,
"runtime_read_enabled": false,
"write_enabled": false,
"evidence_hash": "sha256:3535353535353535353535353535353535353535353535353535353535353535"
},
{
"digest_id": "readback_digest_manual_or_noop",
"display_name": "manual / no-op readback digest",
"source_template_id": "dry_run_capture_manual_or_noop",
"owner_agent": "hermes",
"status": "ready_for_owner_review",
"candidate_count_24h": 0,
"readback_fields": [
"incident_id",
"approval_id",
"manual_resolution_note",
"noop_reason",
"operator_verified"
],
"verifier_checks": [
"manual_note_redacted",
"noop_reason_present",
"learning_exclusion_present",
"operator_verified_present"
],
"promotion_blocker": "沒有候選資料與人工核對前,只能保留為 readback digest。",
"fixture_only": true,
"runtime_read_enabled": false,
"write_enabled": false,
"evidence_hash": "sha256:4646464646464646464646464646464646464646464646464646464646464646"
},
{
"digest_id": "readback_digest_post_write_verifier_receipt",
"display_name": "post-write verifier receipt readback digest",
"source_template_id": "dry_run_capture_post_write_verifier_receipt",
"owner_agent": "nemotron",
"status": "blocked_by_policy",
"candidate_count_24h": 0,
"readback_fields": [
"verifier_plan_ref",
"expected_result_hash",
"rollback_plan_ref",
"operator_ack_required"
],
"verifier_checks": [
"expected_hash_present",
"rollback_lane_present",
"operator_ack_required",
"canonical_read_disabled"
],
"promotion_blocker": "post-write verifier receipt 尚未有 live write所以不得讀 canonical target 或回寫 receipt。",
"fixture_only": true,
"runtime_read_enabled": false,
"write_enabled": false,
"evidence_hash": "sha256:5757575757575757575757575757575757575757575757575757575757575757"
}
],
"promotion_readiness_reviews": [
{
"review_id": "promotion_review_owner_scope",
"display_name": "Owner scope readiness",
"owner_agent": "openclaw",
"source_digest_id": "readback_digest_approved_execution_result",
"readiness_state": "needs_owner_review",
"risk_tier": "high",
"required_before_promotion": [
"owner approval id",
"approved contract ids",
"rollback owner",
"public evidence refs"
],
"failure_if_missing": "缺 owner scope 時,禁止推進到 P2-108。",
"promotion_allowed": false,
"creates_runtime_write": false
},
{
"review_id": "promotion_review_score_fixture_parity",
"display_name": "Score fixture parity readiness",
"owner_agent": "openclaw",
"source_digest_id": "readback_digest_approved_execution_result",
"readiness_state": "ready_for_owner_review",
"risk_tier": "medium",
"required_before_promotion": [
"critic score fixture",
"reviewer score fixture",
"disagreement gate",
"minimum score policy"
],
"failure_if_missing": "缺 critic / reviewer fixture 時,不得建立 reviewer queue item。",
"promotion_allowed": false,
"creates_runtime_write": false
},
{
"review_id": "promotion_review_redaction_digest",
"display_name": "Public redaction digest readiness",
"owner_agent": "hermes",
"source_digest_id": "readback_digest_manual_or_noop",
"readiness_state": "ready_for_owner_review",
"risk_tier": "medium",
"required_before_promotion": [
"public summary",
"blocked fields list",
"allowed fields list",
"evidence hash"
],
"failure_if_missing": "缺公開遮罩摘要時,治理頁與 Telegram digest 都不得顯示。",
"promotion_allowed": false,
"creates_runtime_write": false
},
{
"review_id": "promotion_review_failure_candidate",
"display_name": "Failure candidate verifier readiness",
"owner_agent": "nemotron",
"source_digest_id": "readback_digest_execution_failed_candidate",
"readiness_state": "needs_owner_review",
"risk_tier": "high",
"required_before_promotion": [
"failure reason ref",
"no-write replay hash",
"negative learning hold",
"post-write verifier plan"
],
"failure_if_missing": "缺 no-write replay hash 時NemoTron 不得提交 failure candidate。",
"promotion_allowed": false,
"creates_runtime_write": false
},
{
"review_id": "promotion_review_live_writer_gate",
"display_name": "Live writer gate readiness",
"owner_agent": "openclaw",
"source_digest_id": "readback_digest_post_write_verifier_receipt",
"readiness_state": "blocked_by_policy",
"risk_tier": "critical",
"required_before_promotion": [
"P2-108 approval package",
"canonical readback plan",
"rollback drill",
"Telegram failure receipt gate"
],
"failure_if_missing": "沒有下一關批准包前,任何 live writer、Telegram send 或 queue write 都維持 0。",
"promotion_allowed": false,
"creates_runtime_write": false
}
],
"failure_lanes": [
{
"lane_id": "failure_lane_missing_owner_scope",
"display_name": "missing owner scope",
"owner_agent": "openclaw",
"status": "blocked_by_policy",
"trigger_condition": "owner approval id、scope 或 contract ids 不完整",
"required_response": "退回 owner packet 補件,不產生 reviewer queue write。",
"aborts_promotion": true,
"creates_runtime_write": false
},
{
"lane_id": "failure_lane_redaction_mismatch",
"display_name": "redaction mismatch",
"owner_agent": "hermes",
"status": "blocked_by_policy",
"trigger_condition": "public summary、blocked field list 或 evidence hash 不一致",
"required_response": "重建公開遮罩 digest前端與 Telegram digest 均不顯示原始內容。",
"aborts_promotion": true,
"creates_runtime_write": false
},
{
"lane_id": "failure_lane_verifier_fixture_missing",
"display_name": "verifier fixture missing",
"owner_agent": "nemotron",
"status": "blocked_by_policy",
"trigger_condition": "post-write verifier plan、rollback lane 或 no-write replay hash 缺漏",
"required_response": "保留在 fixture-only readback不讀 canonical target。",
"aborts_promotion": true,
"creates_runtime_write": false
},
{
"lane_id": "failure_lane_agent_disagreement",
"display_name": "agent disagreement",
"owner_agent": "openclaw",
"status": "ready_for_review",
"trigger_condition": "Critic、Reviewer 或 verifier verdict 不一致",
"required_response": "提升到統帥審核Hermes 只整理摘要NemoTron 只補 replay hash。",
"aborts_promotion": true,
"creates_runtime_write": false
}
],
"reviewer_queue_preview": [
{
"queue_id": "review_queue_owner_scope",
"display_name": "owner scope review queue preview",
"owner_agent": "openclaw",
"reviewer_role": "arbiter",
"status": "queued_for_owner_review",
"required_inputs": [
"owner approval id",
"approved contract ids",
"rollback owner"
],
"queue_write_enabled": false,
"telegram_send_enabled": false,
"evidence_hash": "sha256:6868686868686868686868686868686868686868686868686868686868686868"
},
{
"queue_id": "review_queue_public_redaction",
"display_name": "public redaction review queue preview",
"owner_agent": "hermes",
"reviewer_role": "reporter",
"status": "queued_for_owner_review",
"required_inputs": [
"public summary",
"blocked display fields",
"allowed display fields"
],
"queue_write_enabled": false,
"telegram_send_enabled": false,
"evidence_hash": "sha256:7979797979797979797979797979797979797979797979797979797979797979"
},
{
"queue_id": "review_queue_failure_candidate",
"display_name": "failure candidate review queue preview",
"owner_agent": "nemotron",
"reviewer_role": "verifier",
"status": "queued_for_owner_review",
"required_inputs": [
"failure reason ref",
"no-write replay hash",
"verifier plan ref"
],
"queue_write_enabled": false,
"telegram_send_enabled": false,
"evidence_hash": "sha256:8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a"
},
{
"queue_id": "review_queue_live_writer_blocker",
"display_name": "live writer blocker review queue preview",
"owner_agent": "openclaw",
"reviewer_role": "safety_reviewer",
"status": "blocked_by_policy",
"required_inputs": [
"P2-108 approval package",
"canonical readback plan",
"rollback drill evidence"
],
"queue_write_enabled": false,
"telegram_send_enabled": false,
"evidence_hash": "sha256:9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b"
}
],
"operator_actions": [
{
"action_id": "op_review_readback_digest",
"action_type": "review_readback",
"display_name": "審查 readback digest",
"owner_agent": "openclaw",
"operator_instruction": "確認 digest 只引用公開遮罩欄位與 hash沒有 runtime result capture write。",
"runtime_write_allowed": false
},
{
"action_id": "op_compare_dry_run_hash",
"action_type": "compare_digest",
"display_name": "比對 dry-run hash",
"owner_agent": "hermes",
"operator_instruction": "比對 P2-106 template hash、P2-107 digest hash 與 blocked field list。",
"runtime_write_allowed": false
},
{
"action_id": "op_review_failure_candidate",
"action_type": "review_failure_lane",
"display_name": "審查 failure candidate",
"owner_agent": "nemotron",
"operator_instruction": "只檢查 failure reason ref 與 no-write replay hash不寫負向 learning。",
"runtime_write_allowed": false
},
{
"action_id": "op_reject_or_rework_readback",
"action_type": "reject_or_rework",
"display_name": "退回 readback 補件",
"owner_agent": "openclaw",
"operator_instruction": "缺 owner scope、redaction、verifier fixture 或 rollback plan 時退回補件。",
"runtime_write_allowed": false
},
{
"action_id": "op_promote_to_p2_108_package",
"action_type": "promote_to_next_gate",
"display_name": "推進 P2-108 批准包",
"owner_agent": "openclaw",
"operator_instruction": "只在全部 readback 與 promotion readiness 通過後,建立下一關批准包;仍不啟動 live writer。",
"runtime_write_allowed": false
}
],
"display_redaction_contract": {
"redaction_required": true,
"frontend_display_policy": "治理頁只顯示公開遮罩 summary、hash、readback digest、promotion readiness、failure lane 與 queue preview不得顯示內部協作逐字稿、未脫敏提示內容、私有推理內容、未脫敏工具輸出或機密明文。",
"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
},
"rollups": {
"readback_digest_count": 5,
"promotion_review_count": 5,
"failure_lane_count": 4,
"reviewer_queue_preview_count": 4,
"operator_action_count": 5,
"approval_required_digest_count": 2,
"blocked_digest_count": 2,
"ready_review_count": 2,
"blocked_review_count": 1,
"blocked_failure_lane_count": 3,
"queued_reviewer_preview_count": 3,
"blocked_reviewer_preview_count": 1,
"approved_without_execution_meta_24h": 63,
"execution_failed_with_matched_24h": 1,
"owner_approval_received_count": 0,
"readback_digest_generated_count": 0,
"promotion_approved_count": 0,
"reviewer_queue_write_count": 0,
"result_capture_write_count": 0,
"score_write_count": 0,
"learning_write_count": 0,
"playbook_trust_write_count": 0,
"gateway_queue_write_count": 0,
"telegram_send_count": 0,
"production_write_count": 0,
"secret_read_count": 0,
"destructive_operation_count": 0
}
}