feat(governance): 新增 result capture write gate review
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 4m36s
CD Pipeline / post-deploy-checks (push) Successful in 1m39s

This commit is contained in:
Your Name
2026-06-13 22:41:48 +08:00
parent af2b45abed
commit a8f255d071
10 changed files with 1577 additions and 1 deletions

View File

@@ -0,0 +1,398 @@
{
"schema_version": "ai_agent_result_capture_write_gate_review_v1",
"generated_at": "2026-06-13T23:45:00+08:00",
"program_status": {
"overall_completion_percent": 100,
"current_priority": "P2",
"current_task_id": "P2-121",
"next_task_id": "P2-122",
"read_only_mode": true,
"runtime_authority": "result_capture_write_gate_review_only_no_live_write",
"status_note": "P2-121 只建立 result capture write gate review不得寫 result capture、learning、PlayBook trust、Gateway queue、Telegram 或 production。"
},
"source_refs": [
"docs/evaluations/ai_agent_owner_approved_result_capture_promotion_dry_run_2026-06-13.json",
"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/superpowers/specs/2026-04-15-MASTER-ai-autonomous-flywheel-v2.md#41-建立-owner-approved-result-capture-promotion-dry-run"
],
"prior_owner_approved_promotion_dry_run": {
"schema_version": "ai_agent_owner_approved_result_capture_promotion_dry_run_v1",
"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,
"owner_approval_received_count": 0,
"capture_promotion_approved_count": 0,
"dry_run_preview_generated_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-120 已正式驗證 owner-approved promotion dry-runP2-121 只整理真正寫入前的 gate review仍不開任何 writer。"
},
"write_gate_truth": {
"p2_120_dry_run_loaded": true,
"result_capture_writer_gate_review_ready": true,
"learning_writer_gate_review_ready": true,
"playbook_trust_writer_gate_review_ready": true,
"reviewer_queue_gate_review_ready": true,
"gateway_queue_gate_review_ready": true,
"dual_approval_required": true,
"dry_run_hash_required": true,
"post_write_verifier_required": true,
"rollback_required": true,
"redaction_required": true,
"result_capture_write_approved": false,
"learning_write_approved": false,
"playbook_trust_write_approved": false,
"reviewer_queue_write_approved": false,
"gateway_queue_write_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,
"dual_approval_received_count": 0,
"dry_run_hash_verified_count": 0,
"post_write_verifier_pass_count": 0,
"rollback_plan_verified_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": "真正寫入前需要雙重批准、dry-run hash、post-write verifier、rollback 與 redaction目前所有 live writer 與 send 仍為 0。"
},
"write_gate_reviews": [
{
"gate_id": "gate_result_capture_writer",
"display_name": "Result capture writer gate",
"owner_agent": "openclaw",
"target_writer": "result_capture_writer",
"target_write_gate": "result_capture_write_gate_review",
"status": "ready_for_owner_review",
"required_before_write": "owner decision、decision reason、incident scope、dry-run hash、post-write verifier 與 rollback owner 必須齊備。",
"blocked_write_action": "result_capture_write",
"dual_approval_required": true,
"dry_run_hash_required": true,
"post_write_verifier_required": true,
"runtime_write_enabled": false,
"evidence_hash": "sha256:a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1"
},
{
"gate_id": "gate_learning_writer",
"display_name": "Learning writer gate",
"owner_agent": "hermes",
"target_writer": "learning_writer",
"target_write_gate": "result_capture_write_gate_review",
"status": "approval_required",
"required_before_write": "KM owner 必須確認 learning 範圍、來源引用、stale 風險與撤回條件。",
"blocked_write_action": "learning_write",
"dual_approval_required": true,
"dry_run_hash_required": true,
"post_write_verifier_required": true,
"runtime_write_enabled": false,
"evidence_hash": "sha256:a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2"
},
{
"gate_id": "gate_playbook_trust_writer",
"display_name": "PlayBook trust writer gate",
"owner_agent": "nemotron",
"target_writer": "playbook_trust_writer",
"target_write_gate": "result_capture_write_gate_review",
"status": "blocked_by_policy",
"required_before_write": "PlayBook 成功條件、失敗回寫、版本 owner 與 verifier 成功證據必須存在。",
"blocked_write_action": "playbook_trust_write",
"dual_approval_required": true,
"dry_run_hash_required": true,
"post_write_verifier_required": true,
"runtime_write_enabled": false,
"evidence_hash": "sha256:a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3"
},
{
"gate_id": "gate_reviewer_queue_writer",
"display_name": "Reviewer queue writer gate",
"owner_agent": "openclaw",
"target_writer": "reviewer_queue_writer",
"target_write_gate": "result_capture_write_gate_review",
"status": "approval_required",
"required_before_write": "reviewer queue target、dedupe key、owner route 與 SRE 戰情室通知邊界必須先審查。",
"blocked_write_action": "reviewer_queue_write",
"dual_approval_required": true,
"dry_run_hash_required": true,
"post_write_verifier_required": true,
"runtime_write_enabled": false,
"evidence_hash": "sha256:a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4"
},
{
"gate_id": "gate_gateway_queue_writer",
"display_name": "Gateway queue writer gate",
"owner_agent": "nemotron",
"target_writer": "gateway_queue_writer",
"target_write_gate": "result_capture_write_gate_review",
"status": "ready_for_owner_review",
"required_before_write": "Gateway queue envelope、idempotency key、retry / dead-letter 與 no-secret policy 必須完成。",
"blocked_write_action": "gateway_queue_write",
"dual_approval_required": true,
"dry_run_hash_required": true,
"post_write_verifier_required": true,
"runtime_write_enabled": false,
"evidence_hash": "sha256:a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5"
}
],
"approval_gates": [
{
"gate_id": "gate_owner_dual_approval",
"display_name": "Owner dual approval",
"owner_agent": "openclaw",
"status": "approval_required",
"required_evidence": "result owner 與 runtime owner 兩方批准紀錄。",
"blocked_runtime_action": "all_writer_enablement",
"runtime_write_allowed": false
},
{
"gate_id": "gate_dry_run_hash",
"display_name": "Dry-run hash verification",
"owner_agent": "nemotron",
"status": "ready",
"required_evidence": "dry-run preview hash 與 committed snapshot hash 對齊。",
"blocked_runtime_action": "result_capture_write",
"runtime_write_allowed": false
},
{
"gate_id": "gate_post_write_verifier",
"display_name": "Post-write verifier plan",
"owner_agent": "nemotron",
"status": "approval_required",
"required_evidence": "寫入後 verifier、失敗升級、rollback 準則。",
"blocked_runtime_action": "learning_and_trust_write",
"runtime_write_allowed": false
},
{
"gate_id": "gate_rollback_reverify",
"display_name": "Rollback reverify owner",
"owner_agent": "hermes",
"status": "blocked_by_policy",
"required_evidence": "rollback owner、reverify window 與手動接手 SOP。",
"blocked_runtime_action": "playbook_trust_write",
"runtime_write_allowed": false
},
{
"gate_id": "gate_redaction_policy",
"display_name": "Redaction policy",
"owner_agent": "hermes",
"status": "ready",
"required_evidence": "前端只顯示紅線後欄位,不顯示 raw payload 或內部協作內容。",
"blocked_runtime_action": "telegram_send",
"runtime_write_allowed": false
}
],
"post_write_verifier_plan": [
{
"verifier_id": "verifier_result_capture_receipt",
"display_name": "Result capture receipt verifier",
"owner_agent": "openclaw",
"status": "ready",
"verifies": "result capture receipt、incident link、owner decision 與 no-duplicate key。",
"failure_if_missing": "缺 receipt 時不得將 result capture 視為成功。",
"live_execution_enabled": false,
"evidence_hash": "sha256:b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1"
},
{
"verifier_id": "verifier_learning_write_boundary",
"display_name": "Learning write boundary verifier",
"owner_agent": "hermes",
"status": "approval_required",
"verifies": "learning write 只接收 owner-reviewed 條目,不寫高影響 KM。",
"failure_if_missing": "缺 owner review 時必須退回 KM task。",
"live_execution_enabled": false,
"evidence_hash": "sha256:b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2"
},
{
"verifier_id": "verifier_playbook_trust_delta",
"display_name": "PlayBook trust delta verifier",
"owner_agent": "nemotron",
"status": "blocked_by_policy",
"verifies": "PlayBook trust delta 有成功/失敗依據與 rollback 條件。",
"failure_if_missing": "缺 trust delta 證據時不得更新 trust score。",
"live_execution_enabled": false,
"evidence_hash": "sha256:b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3"
},
{
"verifier_id": "verifier_gateway_queue_noop",
"display_name": "Gateway queue no-op verifier",
"owner_agent": "openclaw",
"status": "approval_required",
"verifies": "Gateway queue write 維持 0只顯示 no-op queue envelope。",
"failure_if_missing": "若 queue write 不為 0必須立即標記 unauthorized write。",
"live_execution_enabled": false,
"evidence_hash": "sha256:b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4"
},
{
"verifier_id": "verifier_rollback_reverify",
"display_name": "Rollback reverify verifier",
"owner_agent": "nemotron",
"status": "ready",
"verifies": "rollback / reverify plan 存在且可由人工接手。",
"failure_if_missing": "缺 rollback 計畫時不得 promote writer。",
"live_execution_enabled": false,
"evidence_hash": "sha256:b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5"
}
],
"blocked_live_writes": [
{
"blocker_id": "blocked_result_capture_write",
"display_name": "Result capture write blocked",
"severity": "high",
"status": "approval_required",
"blocked_action": "result_capture_write",
"blocked_until": "dual approval and post-write verifier pass exist",
"evidence_hash": "sha256:c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1"
},
{
"blocker_id": "blocked_learning_write",
"display_name": "Learning write blocked",
"severity": "critical",
"status": "blocked_by_policy",
"blocked_action": "learning_write",
"blocked_until": "KM owner accepts scoped learning draft",
"evidence_hash": "sha256:c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2"
},
{
"blocker_id": "blocked_playbook_trust_write",
"display_name": "PlayBook trust write blocked",
"severity": "critical",
"status": "blocked_by_policy",
"blocked_action": "playbook_trust_write",
"blocked_until": "verifier success and rollback criteria exist",
"evidence_hash": "sha256:c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3"
},
{
"blocker_id": "blocked_reviewer_queue_write",
"display_name": "Reviewer queue write blocked",
"severity": "high",
"status": "approval_required",
"blocked_action": "reviewer_queue_write",
"blocked_until": "dedupe and owner route are approved",
"evidence_hash": "sha256:c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4"
},
{
"blocker_id": "blocked_gateway_queue_write",
"display_name": "Gateway queue write blocked",
"severity": "high",
"status": "approval_required",
"blocked_action": "gateway_queue_write",
"blocked_until": "idempotency and dead-letter policy are approved",
"evidence_hash": "sha256:c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5"
},
{
"blocker_id": "blocked_telegram_send",
"display_name": "Telegram send blocked",
"severity": "critical",
"status": "blocked_by_policy",
"blocked_action": "telegram_send",
"blocked_until": "AwoooI SRE 戰情室 delivery receipt gate is approved",
"evidence_hash": "sha256:c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6"
}
],
"operator_actions": [
{
"action_id": "review_write_gate_packet",
"display_name": "Review write gate packet",
"owner_agent": "openclaw",
"operator_instruction": "審查 5 個 writer gate 是否具備 owner、scope、dry-run hash、verifier 與 rollback 條件。",
"runtime_write_allowed": false
},
{
"action_id": "collect_dual_approval",
"display_name": "Collect dual approval",
"owner_agent": "hermes",
"operator_instruction": "收齊 result owner 與 runtime owner 的批准紀錄;未收齊不得啟用 writer。",
"runtime_write_allowed": false
},
{
"action_id": "verify_dry_run_hashes",
"display_name": "Verify dry-run hashes",
"owner_agent": "nemotron",
"operator_instruction": "比對 committed snapshot hash 與 dry-run preview hash不一致即退回 P2-120。",
"runtime_write_allowed": false
},
{
"action_id": "confirm_post_write_verifier_plan",
"display_name": "Confirm post-write verifier plan",
"owner_agent": "nemotron",
"operator_instruction": "確認寫入後 verifier 與 rollback owner 存在,並列出失敗時人工接手路徑。",
"runtime_write_allowed": false
},
{
"action_id": "promote_to_p2_122",
"display_name": "Promote to P2-122",
"owner_agent": "openclaw",
"operator_instruction": "只在 P2-121 gate review 全部通過後,推進到 P2-122本步不執行 live write。",
"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": "前端只顯示 gate、owner、狀態、阻擋動作與紅線後 evidence hash不得顯示內部協作內容、secret、原始 payload 或私有推理。"
},
"rollups": {
"write_gate_review_count": 5,
"approval_gate_count": 5,
"post_write_verifier_plan_count": 5,
"blocked_live_write_count": 6,
"operator_action_count": 5,
"approval_required_review_count": 2,
"blocked_review_count": 1,
"approval_required_gate_count": 2,
"blocked_gate_count": 1,
"approval_required_verifier_count": 2,
"critical_blocker_count": 3,
"owner_approval_received_count": 0,
"dual_approval_received_count": 0,
"dry_run_hash_verified_count": 0,
"post_write_verifier_pass_count": 0,
"rollback_plan_verified_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,188 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://awoooi.local/schemas/ai_agent_result_capture_write_gate_review_v1.schema.json",
"title": "AI Agent Result Capture Write Gate Review",
"type": "object",
"additionalProperties": true,
"required": [
"schema_version",
"generated_at",
"program_status",
"prior_owner_approved_promotion_dry_run",
"write_gate_truth",
"write_gate_reviews",
"approval_gates",
"post_write_verifier_plan",
"blocked_live_writes",
"operator_actions",
"display_redaction_contract",
"rollups"
],
"properties": {
"schema_version": {
"const": "ai_agent_result_capture_write_gate_review_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-121"
},
"next_task_id": {
"const": "P2-122"
},
"read_only_mode": {
"const": true
},
"runtime_authority": {
"const": "result_capture_write_gate_review_only_no_live_write"
}
}
},
"write_gate_truth": {
"type": "object",
"required": [
"dual_approval_required",
"dry_run_hash_required",
"post_write_verifier_required",
"result_capture_write_enabled",
"learning_write_enabled",
"playbook_trust_write_enabled",
"gateway_queue_write_enabled"
],
"properties": {
"dual_approval_required": {
"const": true
},
"dry_run_hash_required": {
"const": true
},
"post_write_verifier_required": {
"const": true
},
"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
}
}
},
"write_gate_reviews": {
"type": "array",
"minItems": 5,
"maxItems": 5
},
"approval_gates": {
"type": "array",
"minItems": 5,
"maxItems": 5
},
"post_write_verifier_plan": {
"type": "array",
"minItems": 5,
"maxItems": 5
},
"blocked_live_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": [
"write_gate_review_count",
"approval_gate_count",
"post_write_verifier_plan_count",
"blocked_live_write_count",
"operator_action_count",
"result_capture_write_count",
"learning_write_count",
"playbook_trust_write_count",
"gateway_queue_write_count",
"telegram_send_count"
],
"properties": {
"write_gate_review_count": {
"const": 5
},
"approval_gate_count": {
"const": 5
},
"post_write_verifier_plan_count": {
"const": 5
},
"blocked_live_write_count": {
"const": 6
},
"operator_action_count": {
"const": 5
},
"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
},
"production_write_count": {
"const": 0
}
}
}
}
}