feat(governance): 新增 fixture dry-run 證據包
All checks were successful
CD Pipeline / tests (push) Successful in 1m34s
Code Review / ai-code-review (push) Successful in 14s
CD Pipeline / build-and-deploy (push) Successful in 4m22s
CD Pipeline / post-deploy-checks (push) Successful in 1m42s

This commit is contained in:
Your Name
2026-06-11 23:08:42 +08:00
parent f94e394a28
commit 53fdbd252f
15 changed files with 1186 additions and 13 deletions

View File

@@ -0,0 +1,270 @@
{
"schema_version": "ai_agent_owner_approved_fixture_dry_run_v1",
"generated_at": "2026-06-11T23:59:59+08:00",
"program_status": {
"overall_completion_percent": 88,
"current_priority": "P2",
"current_task_id": "P2-403F",
"next_task_id": "P2-403G",
"read_only_mode": true,
"runtime_authority": "owner_approved_fixture_dry_run_only_no_live_write",
"status_note": "P2-403F 固定 owner-approved fixture dry-run 批准包;只允許用已提交 fixture 計算學習回寫、Telegram receipt、handoff replay 與 operator feedback 的乾跑證據,仍不寫 KM、不更新 PlayBook trust、不寫 timeline / replay score、不寫 Gateway queue、不送 Telegram。"
},
"source_refs": [
"docs/evaluations/ai_agent_learning_writeback_approval_package_2026-06-11.json",
"docs/evaluations/ai_agent_telegram_receipt_approval_package_2026-06-11.json",
"docs/evaluations/ai_agent_interaction_learning_proof_2026-06-11.json",
"docs/superpowers/specs/2026-04-15-MASTER-ai-autonomous-flywheel-v2.md"
],
"dry_run_truth": {
"owner_fixture_scope_approved": true,
"production_write_approved": false,
"fixture_dry_run_allowed": true,
"km_write_allowed": false,
"playbook_trust_write_allowed": false,
"timeline_learning_write_allowed": false,
"agent_replay_score_write_allowed": false,
"gateway_queue_write_allowed": false,
"telegram_send_allowed": false,
"redis_consumer_group_allowed": false,
"db_migration_allowed": false,
"workflow_trigger_allowed": false,
"runtime_worker_allowed": false,
"host_or_cluster_command_allowed": false,
"secret_or_paid_api_allowed": false,
"live_learning_write_count": 0,
"live_playbook_trust_update_count": 0,
"live_km_update_count": 0,
"live_timeline_write_count": 0,
"live_replay_score_write_count": 0,
"live_gateway_queue_write_count": 0,
"live_telegram_send_count": 0,
"truth_note": "本階段只代表 owner 已批准把 committed fixture 轉成 dry-run 證據與前台只讀卡片;任何 production write、Telegram send、queue write、worker、Redis consumer、DB migration、host / cluster command、secret 或付費 API 仍全部是 false / 0。"
},
"fixture_package": {
"required_fields": [
"fixture_event_id",
"source_contract_ref",
"scenario_type",
"owner_scope_ref",
"agent_owner",
"target_surface",
"proposed_delta_summary",
"redacted_evidence_ref",
"dry_run_expected_output",
"no_write_proof_ref",
"rollback_plan_ref",
"created_at"
],
"forbidden_fields": [
"secret_value",
"credential_value",
"telegram_bot_token",
"telegram_chat_id_raw",
"authorization_header",
"production_database_dsn",
"kubeconfig_value",
"raw_prompt",
"conversation_transcript",
"private_reasoning",
"raw_tool_output"
],
"owner_review_required": true,
"rollback_required": true,
"no_write_proof_required": true,
"operator_meaning": "每個 fixture dry-run 候選都必須說清楚來源契約、場景、負責 Agent、目標 surface、預期輸出、脫敏證據、無寫入證明與 rollback批准前只能產生乾跑證據不得進 production write 或 send path。"
},
"fixture_sets": [
{
"fixture_id": "learning_writeback_fixture",
"display_name": "Learning writeback fixture",
"scenario_type": "learning_writeback",
"owner_agent": "hermes",
"status": "approved_for_fixture_only",
"target_surface": "knowledge_entries + playbook_trust_history + agent_replay_results",
"operator_visible_result": "顯示候選知識條目、trust delta、replay score delta 與 rollback 摘要live write count 必須維持 0。",
"blocked_runtime_action": "km_playbook_timeline_replay_live_write"
},
{
"fixture_id": "telegram_receipt_fixture",
"display_name": "Telegram receipt fixture",
"scenario_type": "telegram_receipt",
"owner_agent": "openclaw",
"status": "approved_for_fixture_only",
"target_surface": "telegram_gateway_queue + governance receipts",
"operator_visible_result": "顯示 queued / delivered / acknowledged / failed / retry 的脫敏收據結構Gateway queue write 與 Telegram send 必須維持 0。",
"blocked_runtime_action": "telegram_gateway_queue_or_send"
},
{
"fixture_id": "handoff_replay_fixture",
"display_name": "Handoff replay fixture",
"scenario_type": "handoff_replay",
"owner_agent": "nemotron",
"status": "approved_for_fixture_only",
"target_surface": "agent_session_replay + evaluation scorecard",
"operator_visible_result": "顯示 OpenClaw / Hermes / NemoTron 接手、拒收、補證與 replay scoring 摘要Redis consumer group 與 runtime worker 必須維持關閉。",
"blocked_runtime_action": "redis_consumer_or_runtime_worker"
},
{
"fixture_id": "operator_feedback_fixture",
"display_name": "Operator feedback fixture",
"scenario_type": "operator_feedback",
"owner_agent": "openclaw",
"status": "approved_for_fixture_only",
"target_surface": "approval_records + learning_service feedback",
"operator_visible_result": "顯示人工接受、拒絕、要求補證後會如何形成策略修正草案;不寫 canonical memory、不送 Telegram、不啟動 workflow。",
"blocked_runtime_action": "feedback_to_live_memory_write"
}
],
"dry_run_gates": [
{
"gate_id": "owner_fixture_scope_gate",
"display_name": "Owner fixture scope gate",
"owner_agent": "openclaw",
"status": "approved_for_fixture_only",
"required_evidence": "明確限制在 committed fixture、只讀 API、前端脫敏卡片、無寫入證明與 rollback plan。",
"blocked_runtime_action": "production_write_or_send"
},
{
"gate_id": "learning_writeback_no_write_gate",
"display_name": "Learning writeback no-write gate",
"owner_agent": "hermes",
"status": "approval_required",
"required_evidence": "KM / PlayBook trust / timeline / replay score 寫入需獨立 owner approval、pre-write snapshot、idempotency key、rollback record。",
"blocked_runtime_action": "learning_writeback_live_write"
},
{
"gate_id": "telegram_gateway_no_send_gate",
"display_name": "Telegram gateway no-send gate",
"owner_agent": "openclaw",
"status": "approval_required",
"required_evidence": "Gateway queue dry-run、channel alias、message template、delivery correlation、failure fallback 與 E2E receipt proof。",
"blocked_runtime_action": "telegram_queue_write_or_bot_send"
},
{
"gate_id": "redis_consumer_no_connect_gate",
"display_name": "Redis consumer no-connect gate",
"owner_agent": "nemotron",
"status": "approval_required",
"required_evidence": "consumer group 建立、ack / dead-letter / replay、idempotency 與 production Redis read/write approval。",
"blocked_runtime_action": "redis_consumer_group_connect"
},
{
"gate_id": "secret_paid_service_gate",
"display_name": "Secret and paid service gate",
"owner_agent": "openclaw",
"status": "approval_required",
"required_evidence": "任何 secret、token、paid API、host / cluster command、workflow trigger 都需獨立授權與稽核記錄。",
"blocked_runtime_action": "secret_paid_api_or_host_command"
}
],
"simulation_steps": [
{
"step_id": "load_committed_fixtures",
"display_name": "載入 committed fixtures",
"status": "ready",
"expected_artifact": "fixture manifest + source_refs"
},
{
"step_id": "validate_redaction_contract",
"display_name": "驗證前端脫敏契約",
"status": "ready",
"expected_artifact": "allowed / forbidden frontend fields"
},
{
"step_id": "calculate_learning_delta",
"display_name": "計算學習回寫 delta",
"status": "fixture_only",
"expected_artifact": "candidate KM / trust / replay delta without write"
},
{
"step_id": "calculate_telegram_receipt",
"display_name": "計算 Telegram receipt envelope",
"status": "fixture_only",
"expected_artifact": "queued / delivered / ack / failed / retry receipt envelope without send"
},
{
"step_id": "score_handoff_replay",
"display_name": "評分 Agent handoff replay",
"status": "fixture_only",
"expected_artifact": "handoff accepted / rejected / challenge scorecard without worker"
},
{
"step_id": "emit_governance_readonly_snapshot",
"display_name": "產出治理頁只讀快照",
"status": "ready",
"expected_artifact": "API response + UI cards with live counters at 0"
}
],
"rollback_contract": {
"rollback_required": true,
"rollback_steps": [
"P2-403F 只新增 committed fixture 與只讀 APIrollback 可直接移除端點與前端卡片。",
"若 fixture 被判定誤導,先把 fixture_set status 改回 blocked_by_scope再更新治理頁。",
"任何後續 live write / send gate 必須保留 pre-write snapshot 與 owner approval record。",
"發現前端誤顯未核准內容時,先移除欄位、保留 schema version再重新部署。",
"rollback 後 LOGBOOK 必須記錄 live counters 仍為 0。"
]
},
"approval_boundaries": {
"km_write_allowed": false,
"playbook_trust_write_allowed": false,
"timeline_learning_write_allowed": false,
"agent_replay_score_write_allowed": false,
"gateway_queue_write_allowed": false,
"telegram_send_allowed": false,
"redis_consumer_group_allowed": false,
"db_migration_allowed": false,
"workflow_trigger_allowed": false,
"runtime_worker_allowed": false,
"host_or_cluster_command_allowed": false,
"secret_or_paid_api_allowed": false,
"paid_external_service_allowed": false,
"production_route_change_allowed": false
},
"display_redaction_contract": {
"redaction_required": true,
"raw_payload_display_allowed": false,
"private_reasoning_display_allowed": false,
"secret_value_display_allowed": false,
"action_button_allowed": false,
"allowed_frontend_content": [
"fixture scenario",
"owner agent",
"target surface",
"operator visible result",
"blocked runtime action",
"dry-run gate status",
"live counters"
],
"forbidden_frontend_content": [
"Telegram token",
"raw chat id",
"authorization header",
"production DSN",
"kubeconfig",
"提示內容",
"未核准細節",
"raw tool output"
],
"frontend_display_policy": "治理頁只顯示 fixture 場景、owner agent、target surface、阻擋動作、乾跑 gate 與 live counterstoken、raw chat id、authorization header、production DSN、kubeconfig、提示內容、未核准細節與 raw tool output 不進前端,也不提供批准或執行按鈕。"
},
"rollups": {
"fixture_set_count": 4,
"dry_run_gate_count": 5,
"simulation_step_count": 6,
"approved_fixture_only_count": 4,
"approval_required_gate_ids": [
"learning_writeback_no_write_gate",
"redis_consumer_no_connect_gate",
"secret_paid_service_gate",
"telegram_gateway_no_send_gate"
],
"blocked_runtime_action_count": 5,
"required_field_count": 12,
"forbidden_field_count": 11,
"live_write_count_total": 0,
"live_send_count_total": 0,
"live_receipt_count_total": 0
}
}