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

This commit is contained in:
Your Name
2026-06-13 22:00:13 +08:00
parent 13e46143f5
commit f3c3dc8420
10 changed files with 1688 additions and 1 deletions

View File

@@ -0,0 +1,370 @@
{
"schema_version": "ai_agent_owner_approved_result_capture_promotion_dry_run_v1",
"generated_at": "2026-06-13T23:05:00+08:00",
"program_status": {
"overall_completion_percent": 100,
"current_priority": "P2",
"current_task_id": "P2-120",
"next_task_id": "P2-121",
"read_only_mode": true,
"runtime_authority": "owner_approved_result_capture_promotion_dry_run_only_no_live_write",
"status_note": "P2-120 只建立 owner-approved result capture promotion dry-run preview不得寫 result capture、learning、PlayBook trust、Gateway queue、Telegram 或 production。"
},
"source_refs": [
"docs/evaluations/ai_agent_result_capture_promotion_approval_gate_2026-06-13.json",
"docs/evaluations/ai_agent_result_capture_no_write_readback_2026-06-13.json",
"docs/evaluations/ai_agent_owner_approved_result_capture_readback_2026-06-13.json",
"docs/superpowers/specs/2026-04-15-MASTER-ai-autonomous-flywheel-v2.md#38-建立-reviewer-queue-no-write-readback"
],
"prior_result_capture_promotion_gate": {
"schema_version": "ai_agent_result_capture_promotion_approval_gate_v1",
"promotion_approval_packet_count": 5,
"acceptance_gate_template_count": 5,
"promotion_verifier_check_count": 5,
"blocked_promotion_write_count": 5,
"operator_action_count": 5,
"owner_approval_received_count": 0,
"capture_promotion_approved_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-119 已正式驗證 result capture promotion approval gateP2-120 只建立 owner-approved promotion dry-run preview、verifier 與 operator handoff。"
},
"dry_run_truth": {
"p2_119_promotion_gate_loaded": true,
"owner_approval_required": true,
"dry_run_preview_allowed": true,
"promotion_packet_ready": true,
"acceptance_template_ready": true,
"verifier_dry_run_ready": true,
"operator_handoff_ready": true,
"owner_approval_received": false,
"capture_promotion_approved": 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,
"capture_promotion_approved_count": 0,
"dry_run_preview_generated_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,
"truth_note": "promotion dry-run preview 已可審查;真正 result capture write、learning write、PlayBook trust write、Gateway queue write 與 Telegram send 仍全部為 0。"
},
"promotion_dry_run_templates": [
{
"template_id": "dry_run_promote_action_required_capture",
"display_name": "Promote action-required capture dry-run",
"owner_agent": "openclaw",
"source_packet_id": "promotion_packet_action_required",
"status": "ready_for_dry_run",
"target_dry_run": "result_capture_promotion_dry_run_preview",
"dry_run_mode": "preview_only",
"runtime_write_enabled": false,
"preview_summary": "產出 action-required capture promotion 的 owner decision、verifier、rollback 與 next manual action 預覽。",
"evidence_hash": "sha256:9191919191919191919191919191919191919191919191919191919191919191"
},
{
"template_id": "dry_run_promote_no_action_capture",
"display_name": "Promote no-action capture dry-run",
"owner_agent": "hermes",
"source_packet_id": "promotion_packet_no_action_review",
"status": "approval_required",
"target_dry_run": "result_capture_promotion_dry_run_preview",
"dry_run_mode": "preview_only",
"runtime_write_enabled": false,
"preview_summary": "產出 no-action capture promotion 的風險剩餘量、觀察條件與 owner 判讀預覽。",
"evidence_hash": "sha256:9292929292929292929292929292929292929292929292929292929292929292"
},
{
"template_id": "dry_run_promote_verifier_degraded_capture",
"display_name": "Promote verifier degraded capture dry-run",
"owner_agent": "nemotron",
"source_packet_id": "promotion_packet_verifier_degraded",
"status": "blocked_by_policy",
"target_dry_run": "result_capture_promotion_dry_run_preview",
"dry_run_mode": "preview_only",
"runtime_write_enabled": false,
"preview_summary": "產出 degraded verifier 的 rollback / reverify / evidence 補件預覽;未補齊不得 promotion。",
"evidence_hash": "sha256:9393939393939393939393939393939393939393939393939393939393939393"
},
{
"template_id": "dry_run_promote_sre_route_capture",
"display_name": "Promote SRE route capture dry-run",
"owner_agent": "openclaw",
"source_packet_id": "promotion_packet_route_lock",
"status": "approval_required",
"target_dry_run": "result_capture_promotion_dry_run_preview",
"dry_run_mode": "preview_only",
"runtime_write_enabled": false,
"preview_summary": "產出 AwoooI SRE 戰情室路由與舊 bot 停用邊界的 promotion 預覽。",
"evidence_hash": "sha256:9494949494949494949494949494949494949494949494949494949494949494"
},
{
"template_id": "dry_run_promote_owner_acceptance_capture",
"display_name": "Promote owner acceptance capture dry-run",
"owner_agent": "nemotron",
"source_packet_id": "promotion_packet_owner_acceptance",
"status": "blocked_by_policy",
"target_dry_run": "result_capture_promotion_dry_run_preview",
"dry_run_mode": "preview_only",
"runtime_write_enabled": false,
"preview_summary": "產出 owner acceptance、rollback owner、redaction 與 learning boundary 的 promotion 預覽。",
"evidence_hash": "sha256:9595959595959595959595959595959595959595959595959595959595959595"
}
],
"owner_acceptance_dry_run_fixtures": [
{
"fixture_id": "fixture_owner_acceptance_record_complete",
"display_name": "Owner acceptance record complete",
"owner_agent": "hermes",
"status": "ready",
"required_owner": "result_capture_owner",
"fixture_only": true,
"runtime_write_enabled": false,
"verifies": "owner, decision, decision reason, rollback owner and redacted evidence refs exist",
"evidence_hash": "sha256:9696969696969696969696969696969696969696969696969696969696969696"
},
{
"fixture_id": "fixture_capture_scope_review",
"display_name": "Capture scope review",
"owner_agent": "openclaw",
"status": "approval_required",
"required_owner": "operator_owner",
"fixture_only": true,
"runtime_write_enabled": false,
"verifies": "capture scope is limited to one incident and one promotion target",
"evidence_hash": "sha256:9797979797979797979797979797979797979797979797979797979797979797"
},
{
"fixture_id": "fixture_learning_boundary_review",
"display_name": "Learning boundary review",
"owner_agent": "hermes",
"status": "blocked_by_policy",
"required_owner": "learning_owner",
"fixture_only": true,
"runtime_write_enabled": false,
"verifies": "learning write scope is blocked until KM owner review",
"evidence_hash": "sha256:9898989898989898989898989898989898989898989898989898989898989898"
},
{
"fixture_id": "fixture_playbook_trust_boundary_review",
"display_name": "PlayBook trust boundary review",
"owner_agent": "nemotron",
"status": "blocked_by_policy",
"required_owner": "playbook_owner",
"fixture_only": true,
"runtime_write_enabled": false,
"verifies": "PlayBook trust update remains blocked until verifier success criteria exist",
"evidence_hash": "sha256:9999999999999999999999999999999999999999999999999999999999999999"
},
{
"fixture_id": "fixture_rollback_reverify_plan_review",
"display_name": "Rollback reverify plan review",
"owner_agent": "nemotron",
"status": "approval_required",
"required_owner": "rollback_owner",
"fixture_only": true,
"runtime_write_enabled": false,
"verifies": "rollback and reverify plan exists before owner-approved dry-run promotion",
"evidence_hash": "sha256:9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a"
}
],
"dry_run_verifier_checks": [
{
"verifier_id": "no_result_capture_write_during_dry_run",
"display_name": "No result capture write during dry-run",
"owner_agent": "openclaw",
"status": "ready",
"verifies": "result_capture_write_count remains zero during promotion dry-run",
"failure_if_missing": "若 result capture write 不是 0必須停止 dry-run 並標記 unauthorized promotion write。",
"live_execution_enabled": false,
"evidence_hash": "sha256:9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b"
},
{
"verifier_id": "no_learning_write_during_dry_run",
"display_name": "No learning write during dry-run",
"owner_agent": "hermes",
"status": "ready",
"verifies": "learning_write_count remains zero during promotion dry-run",
"failure_if_missing": "若 learning write 不是 0必須退回 KM owner review gate。",
"live_execution_enabled": false,
"evidence_hash": "sha256:9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c"
},
{
"verifier_id": "no_playbook_trust_during_dry_run",
"display_name": "No PlayBook trust during dry-run",
"owner_agent": "nemotron",
"status": "approval_required",
"verifies": "playbook_trust_write_count remains zero during promotion dry-run",
"failure_if_missing": "若 PlayBook trust write 不是 0必須退回 trust owner review。",
"live_execution_enabled": false,
"evidence_hash": "sha256:9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d"
},
{
"verifier_id": "no_gateway_queue_during_dry_run",
"display_name": "No Gateway queue during dry-run",
"owner_agent": "openclaw",
"status": "approval_required",
"verifies": "gateway_queue_write_count remains zero during promotion dry-run",
"failure_if_missing": "若 Gateway queue write 不是 0必須退回 reviewer queue gate。",
"live_execution_enabled": false,
"evidence_hash": "sha256:9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e"
},
{
"verifier_id": "promotion_dry_run_redaction_complete",
"display_name": "Promotion dry-run redaction complete",
"owner_agent": "hermes",
"status": "ready",
"verifies": "each promotion dry-run preview has redacted evidence and owner fields",
"failure_if_missing": "若缺少 redaction 或 owner 欄位,不能進入 P2-121。",
"live_execution_enabled": false,
"evidence_hash": "sha256:9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f"
}
],
"blocked_runtime_promotions": [
{
"blocker_id": "result_capture_dry_run_write_not_authorized",
"display_name": "Result capture dry-run write not authorized",
"severity": "critical",
"status": "blocked_by_policy",
"blocked_action": "result_capture_write",
"blocked_until": "owner_approved_promotion_write_gate",
"evidence_hash": "sha256:a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0"
},
{
"blocker_id": "learning_dry_run_write_not_authorized",
"display_name": "Learning dry-run write not authorized",
"severity": "critical",
"status": "blocked_by_policy",
"blocked_action": "learning_write",
"blocked_until": "km_owner_review_approved",
"evidence_hash": "sha256:a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1"
},
{
"blocker_id": "playbook_trust_dry_run_write_not_authorized",
"display_name": "PlayBook trust dry-run write not authorized",
"severity": "high",
"status": "approval_required",
"blocked_action": "playbook_trust_write",
"blocked_until": "playbook_owner_review_approved",
"evidence_hash": "sha256:a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2"
},
{
"blocker_id": "gateway_queue_dry_run_write_not_authorized",
"display_name": "Gateway queue dry-run write not authorized",
"severity": "high",
"status": "approval_required",
"blocked_action": "gateway_queue_write",
"blocked_until": "reviewer_queue_owner_review_approved",
"evidence_hash": "sha256:a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3"
},
{
"blocker_id": "production_dry_run_write_not_authorized",
"display_name": "Production dry-run write not authorized",
"severity": "critical",
"status": "blocked_by_policy",
"blocked_action": "production_write",
"blocked_until": "runtime_write_gate_approved",
"evidence_hash": "sha256:a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4"
}
],
"operator_actions": [
{
"action_id": "review_owner_approved_promotion_dry_run",
"display_name": "Review owner-approved promotion dry-run",
"owner_agent": "openclaw",
"operator_instruction": "審查 owner-approved promotion dry-run preview 是否限定單一 incident、單一 capture target 與 rollback 條件。",
"runtime_write_allowed": false
},
{
"action_id": "verify_promotion_dry_run_no_write_counts",
"display_name": "Verify promotion dry-run no-write counts",
"owner_agent": "nemotron",
"operator_instruction": "確認 result capture、learning、PlayBook trust、Gateway、Telegram、Bot API 與 production write count 全部仍為 0。",
"runtime_write_allowed": false
},
{
"action_id": "confirm_owner_acceptance_fields",
"display_name": "Confirm owner acceptance fields",
"owner_agent": "hermes",
"operator_instruction": "確認 owner、decision、decision reason、rollback owner 與 redacted evidence refs 已齊全。",
"runtime_write_allowed": false
},
{
"action_id": "check_dry_run_redaction_contract",
"display_name": "Check dry-run redaction contract",
"owner_agent": "hermes",
"operator_instruction": "確認 dry-run preview 只顯示遮蔽後證據、摘要與 owner 欄位,不外露敏感 payload。",
"runtime_write_allowed": false
},
{
"action_id": "promote_to_p2_121",
"display_name": "Promote to P2-121",
"owner_agent": "nemotron",
"operator_instruction": "若 P2-120 的 owner-approved promotion dry-run 全部通過,下一步才能建立 P2-121 result capture write gate review。",
"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": "治理頁只顯示 dry-run preview、owner、decision、blocked reason、verifier 與遮蔽後 evidence hash不得顯示內部協作內容、敏感 payload 或 secret。"
},
"rollups": {
"promotion_dry_run_template_count": 5,
"owner_acceptance_fixture_count": 5,
"dry_run_verifier_check_count": 5,
"blocked_runtime_promotion_count": 5,
"operator_action_count": 5,
"approval_required_template_count": 2,
"blocked_template_count": 2,
"approval_required_fixture_count": 2,
"blocked_fixture_count": 2,
"approval_required_verifier_count": 2,
"critical_blocker_count": 3,
"owner_approval_received_count": 0,
"capture_promotion_approved_count": 0,
"dry_run_preview_generated_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
}
}