feat(governance): 新增 owner-approved fixture promotion gate
All checks were successful
Code Review / ai-code-review (push) Successful in 13s
CD Pipeline / tests (push) Successful in 1m23s
CD Pipeline / build-and-deploy (push) Successful in 4m48s
CD Pipeline / post-deploy-checks (push) Successful in 1m29s

This commit is contained in:
Your Name
2026-06-13 18:36:21 +08:00
parent 79a3e1bd18
commit 8fcf767aad
10 changed files with 2060 additions and 1 deletions

View File

@@ -0,0 +1,458 @@
{
"schema_version": "ai_agent_owner_approved_fixture_promotion_gate_v1",
"generated_at": "2026-06-13T18:45:00+08:00",
"program_status": {
"overall_completion_percent": 100,
"current_priority": "P2",
"current_task_id": "P2-114",
"next_task_id": "P2-115",
"read_only_mode": true,
"runtime_authority": "owner_approved_fixture_promotion_gate_only_no_live_read_or_write",
"status_note": "P2-114 只把 P2-113 promotion gate 整理成 owner-approved fixture promotion package不得 live read、不得寫 reviewer queue / result capture / Gateway / Telegram / production。"
},
"source_refs": [
"docs/evaluations/ai_agent_runtime_readback_promotion_gate_2026-06-13.json",
"docs/evaluations/ai_agent_runtime_readback_fixture_approval_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#34-建立-runtime-readback-promotion-gate"
],
"prior_promotion_gate": {
"schema_version": "ai_agent_runtime_readback_promotion_gate_v1",
"promotion_lane_count": 5,
"receipt_contract_count": 4,
"reviewer_queue_preview_count": 4,
"result_capture_preview_count": 4,
"no_write_verifier_check_count": 5,
"blocker_mapping_count": 5,
"operator_action_count": 5,
"owner_approval_received_count": 0,
"promotion_execution_count": 0,
"canonical_runtime_target_read_count": 0,
"live_query_count": 0,
"production_write_count": 0,
"readiness_note": "P2-113 已正式驗證 no-write promotion gateP2-114 只整理 owner approval packet、acceptance record template、rollback owner 與 verifier plan。"
},
"owner_gate_truth": {
"p2_113_promotion_gate_loaded": true,
"owner_promotion_package_ready": true,
"acceptance_record_template_ready": true,
"reviewer_queue_fixture_ready": true,
"result_capture_fixture_ready": true,
"rollback_owner_required": true,
"verifier_plan_required": true,
"owner_approval_received": false,
"canonical_runtime_target_read_enabled": false,
"live_query_enabled": false,
"failure_receipt_send_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,
"owner_acceptance_record_write_count": 0,
"promotion_execution_count": 0,
"canonical_runtime_target_read_count": 0,
"live_query_count": 0,
"failure_receipt_send_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": "owner-approved fixture promotion package 已可審查;真正 owner acceptance、live read、queue write、Telegram send、result capture 與 production write 仍全部為 0。"
},
"owner_approval_packets": [
{
"packet_id": "failure_receipt_owner_packet",
"display_name": "Failure receipt owner approval packet",
"owner_agent": "hermes",
"source_lane_id": "telegram_failure_receipt_promotion",
"status": "ready_for_owner_review",
"risk_tier": "high",
"required_owner_fields": [
"owner_role",
"decision",
"decision_reason",
"sre_route_lock"
],
"allowed_fixture": "no_send_failure_receipt_fixture",
"blocked_runtime_actions": [
"telegram_send",
"bot_api_call",
"report_receipt_write"
],
"owner_acceptance_required": true,
"evidence_hash": "sha256:2424242424242424242424242424242424242424242424242424242424242424"
},
{
"packet_id": "reviewer_queue_owner_packet",
"display_name": "Reviewer queue owner approval packet",
"owner_agent": "openclaw",
"source_lane_id": "reviewer_queue_preview_promotion",
"status": "approval_required",
"risk_tier": "high",
"required_owner_fields": [
"reviewer_owner",
"queue_scope",
"decision_template",
"audit_boundary"
],
"allowed_fixture": "reviewer_queue_preview_digest",
"blocked_runtime_actions": [
"reviewer_queue_write",
"timeline_write",
"audit_db_write"
],
"owner_acceptance_required": true,
"evidence_hash": "sha256:2525252525252525252525252525252525252525252525252525252525252525"
},
{
"packet_id": "result_capture_owner_packet",
"display_name": "Result capture owner approval packet",
"owner_agent": "nemotron",
"source_lane_id": "result_capture_no_write_promotion",
"status": "blocked_by_policy",
"risk_tier": "critical",
"required_owner_fields": [
"score_owner",
"capture_scope",
"playbook_trust_owner",
"rollback_owner"
],
"allowed_fixture": "result_capture_preview_digest",
"blocked_runtime_actions": [
"score_write",
"result_capture_write",
"playbook_trust_write"
],
"owner_acceptance_required": true,
"evidence_hash": "sha256:2626262626262626262626262626262626262626262626262626262626262626"
},
{
"packet_id": "report_receipt_owner_packet",
"display_name": "Report receipt owner approval packet",
"owner_agent": "hermes",
"source_lane_id": "report_delivery_receipt_link",
"status": "approval_required",
"risk_tier": "high",
"required_owner_fields": [
"report_owner",
"receipt_scope",
"ai_analysis_boundary",
"maintenance_window"
],
"allowed_fixture": "report_delivery_receipt_preview",
"blocked_runtime_actions": [
"gateway_queue_write",
"report_receipt_write",
"ai_analysis_run"
],
"owner_acceptance_required": true,
"evidence_hash": "sha256:2727272727272727272727272727272727272727272727272727272727272727"
},
{
"packet_id": "p2_115_scope_owner_packet",
"display_name": "P2-115 canonical readback scope packet",
"owner_agent": "openclaw",
"source_lane_id": "p2_114_handoff_scope",
"status": "blocked_by_policy",
"risk_tier": "critical",
"required_owner_fields": [
"canonical_target_scope",
"readback_owner",
"rollback_owner",
"verifier_owner"
],
"allowed_fixture": "canonical_readback_scope_preview",
"blocked_runtime_actions": [
"canonical_runtime_target_read",
"live_query",
"production_write"
],
"owner_acceptance_required": true,
"evidence_hash": "sha256:2828282828282828282828282828282828282828282828282828282828282828"
}
],
"acceptance_record_templates": [
{
"template_id": "owner_role_decision_record",
"display_name": "Owner role and decision record",
"status": "ready",
"required_fields": [
"owner_role",
"decision",
"decision_reason"
],
"accepted": false,
"record_write_enabled": false,
"evidence_hash": "sha256:2929292929292929292929292929292929292929292929292929292929292929"
},
{
"template_id": "affected_scope_record",
"display_name": "Affected scope record",
"status": "ready",
"required_fields": [
"affected_scope",
"redacted_evidence_refs",
"followup_owner"
],
"accepted": false,
"record_write_enabled": false,
"evidence_hash": "sha256:3030303030303030303030303030303030303030303030303030303030303030"
},
{
"template_id": "rollback_owner_record",
"display_name": "Rollback owner record",
"status": "approval_required",
"required_fields": [
"rollback_owner",
"rollback_plan",
"stop_condition"
],
"accepted": false,
"record_write_enabled": false,
"evidence_hash": "sha256:3131313131313131313131313131313131313131313131313131313131313131"
},
{
"template_id": "maintenance_window_record",
"display_name": "Maintenance window record",
"status": "blocked_by_policy",
"required_fields": [
"maintenance_window",
"validation_plan",
"post_action_verifier"
],
"accepted": false,
"record_write_enabled": false,
"evidence_hash": "sha256:3232323232323232323232323232323232323232323232323232323232323232"
}
],
"fixture_promotion_reviews": [
{
"review_id": "no_send_receipt_review",
"display_name": "No-send receipt fixture review",
"status": "ready",
"source_packet_id": "failure_receipt_owner_packet",
"review_outcome": "fixture_ready_no_send",
"runtime_write_enabled": false,
"evidence_hash": "sha256:3333333333333333333333333333333333333333333333333333333333333333"
},
{
"review_id": "no_write_queue_review",
"display_name": "No-write queue fixture review",
"status": "approval_required",
"source_packet_id": "reviewer_queue_owner_packet",
"review_outcome": "queue_preview_ready_no_write",
"runtime_write_enabled": false,
"evidence_hash": "sha256:3434343434343434343434343434343434343434343434343434343434343434"
},
{
"review_id": "no_write_result_review",
"display_name": "No-write result fixture review",
"status": "blocked_by_policy",
"source_packet_id": "result_capture_owner_packet",
"review_outcome": "result_preview_blocked_until_owner_acceptance",
"runtime_write_enabled": false,
"evidence_hash": "sha256:3535353535353535353535353535353535353535353535353535353535353535"
},
{
"review_id": "no_live_readback_review",
"display_name": "No-live readback fixture review",
"status": "blocked_by_policy",
"source_packet_id": "p2_115_scope_owner_packet",
"review_outcome": "canonical_readback_blocked",
"runtime_write_enabled": false,
"evidence_hash": "sha256:3636363636363636363636363636363636363636363636363636363636363636"
}
],
"no_write_verifier_plans": [
{
"plan_id": "no_telegram_send_verifier",
"display_name": "No Telegram send verifier",
"status": "ready",
"required_fixture": "telegram_send_count remains 0",
"failure_if_missing": "任何 Telegram send 或 Bot API call 非 0 都不得 promotion。",
"live_verifier_enabled": false,
"evidence_hash": "sha256:3737373737373737373737373737373737373737373737373737373737373737"
},
{
"plan_id": "no_reviewer_queue_write_verifier",
"display_name": "No reviewer queue write verifier",
"status": "approval_required",
"required_fixture": "reviewer queue write count remains 0",
"failure_if_missing": "缺 no-write queue fixture 時不得建立 reviewer queue item。",
"live_verifier_enabled": false,
"evidence_hash": "sha256:3838383838383838383838383838383838383838383838383838383838383838"
},
{
"plan_id": "no_result_capture_write_verifier",
"display_name": "No result capture write verifier",
"status": "blocked_by_policy",
"required_fixture": "result capture write count remains 0",
"failure_if_missing": "result capture / learning / trust 任何寫入非 0 都必須退回。",
"live_verifier_enabled": false,
"evidence_hash": "sha256:3939393939393939393939393939393939393939393939393939393939393939"
},
{
"plan_id": "no_live_readback_verifier",
"display_name": "No live readback verifier",
"status": "blocked_by_policy",
"required_fixture": "canonical runtime target read count remains 0",
"failure_if_missing": "未完成 P2-115 前不得讀 canonical runtime target。",
"live_verifier_enabled": false,
"evidence_hash": "sha256:4040404040404040404040404040404040404040404040404040404040404040"
},
{
"plan_id": "no_secret_payload_verifier",
"display_name": "No secret payload verifier",
"status": "ready",
"required_fixture": "secret read count remains 0",
"failure_if_missing": "任何 secret payload 讀取都違反 P2-114。",
"live_verifier_enabled": false,
"evidence_hash": "sha256:4141414141414141414141414141414141414141414141414141414141414141"
}
],
"blocked_promotions": [
{
"blocker_id": "owner_acceptance_not_received",
"display_name": "Owner acceptance not received",
"severity": "critical",
"status": "blocked_by_policy",
"blocked_action": "execute_owner_promotion",
"blocked_until": "owner_acceptance_record_accepted",
"evidence_hash": "sha256:4242424242424242424242424242424242424242424242424242424242424242"
},
{
"blocker_id": "rollback_owner_missing",
"display_name": "Rollback owner missing",
"severity": "high",
"status": "approval_required",
"blocked_action": "result_capture_write",
"blocked_until": "rollback_owner_record_accepted",
"evidence_hash": "sha256:4343434343434343434343434343434343434343434343434343434343434343"
},
{
"blocker_id": "maintenance_window_missing",
"display_name": "Maintenance window missing",
"severity": "high",
"status": "approval_required",
"blocked_action": "telegram_send_or_live_query",
"blocked_until": "maintenance_window_accepted",
"evidence_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444"
},
{
"blocker_id": "canonical_readback_scope_missing",
"display_name": "Canonical readback scope missing",
"severity": "critical",
"status": "blocked_by_policy",
"blocked_action": "canonical_runtime_target_read",
"blocked_until": "p2_115_owner_scope_accepted",
"evidence_hash": "sha256:4545454545454545454545454545454545454545454545454545454545454545"
},
{
"blocker_id": "secret_boundary_not_verified",
"display_name": "Secret boundary not verified",
"severity": "critical",
"status": "blocked_by_policy",
"blocked_action": "read_secret_or_raw_payload",
"blocked_until": "redaction_and_secret_boundary_verified",
"evidence_hash": "sha256:4646464646464646464646464646464646464646464646464646464646464646"
}
],
"operator_actions": [
{
"action_id": "review_owner_packets",
"display_name": "審查 owner approval packets",
"owner_agent": "openclaw",
"action_type": "review_owner_packet",
"operator_instruction": "確認每個 packet 都有 owner、decision、reason、scope 與 blocked runtime action缺一項即退回。",
"runtime_promotion_allowed": false
},
{
"action_id": "verify_acceptance_templates",
"display_name": "驗證 acceptance templates",
"owner_agent": "hermes",
"action_type": "verify_acceptance_template",
"operator_instruction": "只驗證 acceptance record 欄位,不寫入 record、不建立 queue、不送 Telegram。",
"runtime_promotion_allowed": false
},
{
"action_id": "confirm_verifier_plans",
"display_name": "確認 no-write verifier plans",
"owner_agent": "nemotron",
"action_type": "confirm_verifier_plan",
"operator_instruction": "確認 no-send、no-write、no-live-read、no-secret 五項 verifier 都有 fixture不得執行 live verifier。",
"runtime_promotion_allowed": false
},
{
"action_id": "lock_blocked_promotions",
"display_name": "鎖定 blocked promotions",
"owner_agent": "openclaw",
"action_type": "lock_blocked_promotion",
"operator_instruction": "把 owner、rollback、maintenance、canonical scope、secret boundary 缺口全部列為 blocked避免誤按批准。",
"runtime_promotion_allowed": false
},
{
"action_id": "promote_to_p2_115",
"display_name": "推進 P2-115",
"owner_agent": "openclaw",
"action_type": "promote_to_p2_115",
"operator_instruction": "只有在 owner acceptance package 完整後,才能進 P2-115 評估 canonical runtime readback不是 live approval。",
"runtime_promotion_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": "只顯示 owner packet、acceptance template、fixture review、blocked promotion 與 no-write verifier不顯示內部協作逐字稿、提示詞、私密推理內容、secret 或原始 runtime payload。"
},
"rollups": {
"owner_approval_packet_count": 5,
"acceptance_record_template_count": 4,
"fixture_promotion_review_count": 4,
"no_write_verifier_plan_count": 5,
"blocked_promotion_count": 5,
"operator_action_count": 5,
"approval_required_packet_count": 2,
"blocked_packet_count": 2,
"approval_required_template_count": 1,
"blocked_template_count": 1,
"approval_required_review_count": 1,
"blocked_review_count": 2,
"approval_required_verifier_count": 1,
"blocked_verifier_count": 2,
"critical_blocker_count": 3,
"owner_approval_received_count": 0,
"owner_acceptance_record_write_count": 0,
"promotion_execution_count": 0,
"canonical_runtime_target_read_count": 0,
"live_query_count": 0,
"failure_receipt_send_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,392 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://awoooi.wooo.work/schemas/ai_agent_owner_approved_fixture_promotion_gate_v1.schema.json",
"title": "AI Agent Owner Approved Fixture Promotion Gate v1",
"type": "object",
"additionalProperties": false,
"required": [
"schema_version",
"generated_at",
"program_status",
"source_refs",
"prior_promotion_gate",
"owner_gate_truth",
"owner_approval_packets",
"acceptance_record_templates",
"fixture_promotion_reviews",
"no_write_verifier_plans",
"blocked_promotions",
"operator_actions",
"display_redaction_contract",
"rollups"
],
"properties": {
"schema_version": {
"const": "ai_agent_owner_approved_fixture_promotion_gate_v1"
},
"generated_at": {
"type": "string",
"minLength": 1
},
"program_status": {
"type": "object",
"additionalProperties": false,
"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-114"
},
"next_task_id": {
"const": "P2-115"
},
"read_only_mode": {
"const": true
},
"runtime_authority": {
"const": "owner_approved_fixture_promotion_gate_only_no_live_read_or_write"
},
"status_note": {
"type": "string",
"minLength": 1
}
}
},
"source_refs": {
"$ref": "#/$defs/string_array"
},
"prior_promotion_gate": {
"type": "object"
},
"owner_gate_truth": {
"type": "object"
},
"owner_approval_packets": {
"type": "array",
"minItems": 5,
"items": {
"$ref": "#/$defs/owner_packet"
}
},
"acceptance_record_templates": {
"type": "array",
"minItems": 4,
"items": {
"$ref": "#/$defs/acceptance_template"
}
},
"fixture_promotion_reviews": {
"type": "array",
"minItems": 4,
"items": {
"$ref": "#/$defs/fixture_review"
}
},
"no_write_verifier_plans": {
"type": "array",
"minItems": 5,
"items": {
"$ref": "#/$defs/verifier_plan"
}
},
"blocked_promotions": {
"type": "array",
"minItems": 5,
"items": {
"$ref": "#/$defs/blocked_promotion"
}
},
"operator_actions": {
"type": "array",
"minItems": 5,
"items": {
"$ref": "#/$defs/operator_action"
}
},
"display_redaction_contract": {
"type": "object"
},
"rollups": {
"type": "object"
}
},
"$defs": {
"string_array": {
"type": "array",
"minItems": 1,
"items": {
"type": "string",
"minLength": 1
}
},
"hash": {
"type": "string",
"pattern": "^sha256:[0-9a-f]{64}$"
},
"owner_agent": {
"enum": [
"openclaw",
"hermes",
"nemotron"
]
},
"status": {
"enum": [
"ready",
"ready_for_owner_review",
"approval_required",
"blocked_by_policy"
]
},
"risk_tier": {
"enum": [
"high",
"critical"
]
},
"owner_packet": {
"type": "object",
"additionalProperties": false,
"required": [
"packet_id",
"display_name",
"owner_agent",
"source_lane_id",
"status",
"risk_tier",
"required_owner_fields",
"allowed_fixture",
"blocked_runtime_actions",
"owner_acceptance_required",
"evidence_hash"
],
"properties": {
"packet_id": {
"type": "string"
},
"display_name": {
"type": "string"
},
"owner_agent": {
"$ref": "#/$defs/owner_agent"
},
"source_lane_id": {
"type": "string"
},
"status": {
"$ref": "#/$defs/status"
},
"risk_tier": {
"$ref": "#/$defs/risk_tier"
},
"required_owner_fields": {
"$ref": "#/$defs/string_array"
},
"allowed_fixture": {
"type": "string"
},
"blocked_runtime_actions": {
"$ref": "#/$defs/string_array"
},
"owner_acceptance_required": {
"const": true
},
"evidence_hash": {
"$ref": "#/$defs/hash"
}
}
},
"acceptance_template": {
"type": "object",
"additionalProperties": false,
"required": [
"template_id",
"display_name",
"status",
"required_fields",
"accepted",
"record_write_enabled",
"evidence_hash"
],
"properties": {
"template_id": {
"type": "string"
},
"display_name": {
"type": "string"
},
"status": {
"$ref": "#/$defs/status"
},
"required_fields": {
"$ref": "#/$defs/string_array"
},
"accepted": {
"const": false
},
"record_write_enabled": {
"const": false
},
"evidence_hash": {
"$ref": "#/$defs/hash"
}
}
},
"fixture_review": {
"type": "object",
"additionalProperties": false,
"required": [
"review_id",
"display_name",
"status",
"source_packet_id",
"review_outcome",
"runtime_write_enabled",
"evidence_hash"
],
"properties": {
"review_id": {
"type": "string"
},
"display_name": {
"type": "string"
},
"status": {
"$ref": "#/$defs/status"
},
"source_packet_id": {
"type": "string"
},
"review_outcome": {
"type": "string"
},
"runtime_write_enabled": {
"const": false
},
"evidence_hash": {
"$ref": "#/$defs/hash"
}
}
},
"verifier_plan": {
"type": "object",
"additionalProperties": false,
"required": [
"plan_id",
"display_name",
"status",
"required_fixture",
"failure_if_missing",
"live_verifier_enabled",
"evidence_hash"
],
"properties": {
"plan_id": {
"type": "string"
},
"display_name": {
"type": "string"
},
"status": {
"$ref": "#/$defs/status"
},
"required_fixture": {
"type": "string"
},
"failure_if_missing": {
"type": "string"
},
"live_verifier_enabled": {
"const": false
},
"evidence_hash": {
"$ref": "#/$defs/hash"
}
}
},
"blocked_promotion": {
"type": "object",
"additionalProperties": false,
"required": [
"blocker_id",
"display_name",
"severity",
"status",
"blocked_action",
"blocked_until",
"evidence_hash"
],
"properties": {
"blocker_id": {
"type": "string"
},
"display_name": {
"type": "string"
},
"severity": {
"enum": [
"high",
"critical"
]
},
"status": {
"$ref": "#/$defs/status"
},
"blocked_action": {
"type": "string"
},
"blocked_until": {
"type": "string"
},
"evidence_hash": {
"$ref": "#/$defs/hash"
}
}
},
"operator_action": {
"type": "object",
"additionalProperties": false,
"required": [
"action_id",
"display_name",
"owner_agent",
"action_type",
"operator_instruction",
"runtime_promotion_allowed"
],
"properties": {
"action_id": {
"type": "string"
},
"display_name": {
"type": "string"
},
"owner_agent": {
"$ref": "#/$defs/owner_agent"
},
"action_type": {
"type": "string"
},
"operator_instruction": {
"type": "string"
},
"runtime_promotion_allowed": {
"const": false
}
}
}
}
}