Some checks failed
Code Review / ai-code-review (push) Successful in 13s
CD Pipeline / tests (push) Successful in 1m39s
Ansible / Reboot Recovery Contract / validate (push) Has been cancelled
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled
435 lines
21 KiB
JSON
435 lines
21 KiB
JSON
{
|
||
"schema_version": "ai_agent_task_result_audit_trail_v1",
|
||
"generated_at": "2026-06-13T10:20:00+08:00",
|
||
"program_status": {
|
||
"overall_completion_percent": 99,
|
||
"current_priority": "P2",
|
||
"current_task_id": "P2-103",
|
||
"next_task_id": "P2-104",
|
||
"read_only_mode": true,
|
||
"runtime_authority": "task_result_audit_trail_contract_only_no_live_writeback",
|
||
"status_note": "P2-103 承接 P2-102 候選操作 dry-run 證據,把任務結果固定成 KM 草稿、LOGBOOK 證據、稽核軌跡、timeline 與人工交接的結果路由契約;目前仍不寫 KM、不 runtime append LOGBOOK、不寫 audit DB、不寫 timeline、不更新 PlayBook trust、不寫 Gateway queue、不送 Telegram。"
|
||
},
|
||
"source_refs": [
|
||
"docs/evaluations/ai_agent_candidate_operation_dry_run_evidence_2026-06-12.json",
|
||
"docs/evaluations/ai_agent_operation_permission_model_2026-06-12.json",
|
||
"docs/evaluations/ai_agent_report_runtime_fixture_readback_2026-06-12.json",
|
||
"docs/ai/AI_AGENT_AUTOMATION_WORKLIST_2026-06-04.md",
|
||
"docs/superpowers/specs/2026-04-15-MASTER-ai-autonomous-flywheel-v2.md"
|
||
],
|
||
"result_audit_truth": {
|
||
"p2_102_candidate_dry_run_loaded": true,
|
||
"task_result_route_matrix_ready": true,
|
||
"km_draft_contract_ready": true,
|
||
"logbook_append_contract_ready": true,
|
||
"audit_trail_contract_ready": true,
|
||
"timeline_handoff_contract_ready": true,
|
||
"operator_next_action_ready": true,
|
||
"all_results_have_owner_and_next_step": true,
|
||
"runtime_execution_enabled": false,
|
||
"km_write_enabled": false,
|
||
"logbook_runtime_write_enabled": false,
|
||
"audit_db_write_enabled": false,
|
||
"timeline_write_enabled": false,
|
||
"playbook_trust_write_enabled": false,
|
||
"gateway_queue_write_enabled": false,
|
||
"telegram_send_enabled": false,
|
||
"delivery_receipt_write_enabled": false,
|
||
"production_write_enabled": false,
|
||
"secret_value_read_enabled": false,
|
||
"host_or_cluster_command_enabled": false,
|
||
"destructive_operation_enabled": false,
|
||
"work_window_transcript_display_allowed": false,
|
||
"runtime_execution_count_24h": 0,
|
||
"km_write_count_24h": 0,
|
||
"logbook_runtime_write_count_24h": 0,
|
||
"audit_db_write_count_24h": 0,
|
||
"timeline_write_count_24h": 0,
|
||
"playbook_trust_write_count_24h": 0,
|
||
"gateway_queue_write_count_24h": 0,
|
||
"telegram_send_count_24h": 0,
|
||
"delivery_receipt_write_count_24h": 0,
|
||
"production_write_count_24h": 0,
|
||
"secret_value_read_count_24h": 0,
|
||
"host_or_cluster_command_count_24h": 0,
|
||
"destructive_operation_count_24h": 0,
|
||
"truth_note": "本段只把任務結果的去向與卡點固定成 committed evidence contract;所有 KM / LOGBOOK / audit / timeline / PlayBook trust / Gateway / Telegram / production write 仍是 0 / false。"
|
||
},
|
||
"result_routes": [
|
||
{
|
||
"route_id": "result_diagnostic_no_action",
|
||
"display_name": "診斷完成但無修復動作",
|
||
"source_signal": "diagnostic_only_manual_review",
|
||
"result_state": "diagnostic_only",
|
||
"owner_agent": "openclaw",
|
||
"primary_owner": "SRE operator",
|
||
"km_target": "KM 草稿:記錄診斷條件、無修復原因與下次補證欄位",
|
||
"logbook_target": "LOGBOOK 證據:只記錄 committed snapshot 與 decision reason",
|
||
"audit_target": "audit trail:result=diagnostic_only_no_action",
|
||
"timeline_target": "timeline handoff:manual_review_no_action",
|
||
"operator_next_action": "人工確認是否接受無修復結論;若不接受,改走補證或修復候選 review。",
|
||
"blocked_reason": "未產生 verified repair result,不能標記自動修復成功。",
|
||
"writes_live_state": false,
|
||
"requires_owner_review": true,
|
||
"ready_for_km_draft": true,
|
||
"evidence_hash": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||
},
|
||
{
|
||
"route_id": "result_repair_candidate_needs_owner",
|
||
"display_name": "修復候選等待 owner 審查",
|
||
"source_signal": "repair_candidate_draft",
|
||
"result_state": "owner_review_required",
|
||
"owner_agent": "openclaw",
|
||
"primary_owner": "service owner",
|
||
"km_target": "KM 草稿:保留 MCP evidence、PlayBook trust 與 rollback/no-op plan",
|
||
"logbook_target": "LOGBOOK 證據:記錄候選、風險、owner gate 與 verifier plan",
|
||
"audit_target": "audit trail:result=repair_candidate_waiting_owner",
|
||
"timeline_target": "timeline handoff:owner_review_playbook_trust_gate",
|
||
"operator_next_action": "owner 檢查 evidence hash、PlayBook trust、rollback owner 與 maintenance window;缺一項就退回補證。",
|
||
"blocked_reason": "owner response、rollback owner 或 verifier plan 尚未接受。",
|
||
"writes_live_state": false,
|
||
"requires_owner_review": true,
|
||
"ready_for_km_draft": true,
|
||
"evidence_hash": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||
},
|
||
{
|
||
"route_id": "result_execution_failed_manual",
|
||
"display_name": "執行失敗需人工修復或回滾",
|
||
"source_signal": "execution_failed_manual_required",
|
||
"result_state": "execution_failed",
|
||
"owner_agent": "openclaw",
|
||
"primary_owner": "SRE incident commander",
|
||
"km_target": "KM 草稿:保留失敗類型、失敗命令遮蔽摘要、人工修復缺口與 verifier mismatch",
|
||
"logbook_target": "LOGBOOK 證據:只記錄結果分類、失敗 lane、下一步與 production smoke 狀態",
|
||
"audit_target": "audit trail:result=execution_failed_manual_fix_or_rollback",
|
||
"timeline_target": "timeline handoff:manual_fix_or_rollback",
|
||
"operator_next_action": "SRE 決定人工修復、回滾或補證;AI 只能提供 無寫入 SOP,不自動再執行。",
|
||
"blocked_reason": "verifier degraded 或 execution failed,不能自動宣告 resolved。",
|
||
"writes_live_state": false,
|
||
"requires_owner_review": true,
|
||
"ready_for_km_draft": true,
|
||
"evidence_hash": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
||
},
|
||
{
|
||
"route_id": "result_verified_no_change",
|
||
"display_name": "只讀驗證通過但未變更",
|
||
"source_signal": "verified_no_write",
|
||
"result_state": "verified_no_change",
|
||
"owner_agent": "hermes",
|
||
"primary_owner": "governance reviewer",
|
||
"km_target": "KM 草稿:標記只讀驗證方法與適用限制",
|
||
"logbook_target": "LOGBOOK 證據:記錄 API / UI / smoke readback 與 無寫入 邊界",
|
||
"audit_target": "audit trail:result=verified_no_change",
|
||
"timeline_target": "timeline handoff:read_only_verified",
|
||
"operator_next_action": "治理 reviewer 決定是否把 read-only 方法納入 Runbook;不需 runtime 修復。",
|
||
"blocked_reason": "沒有 live write,不能當成修復已執行。",
|
||
"writes_live_state": false,
|
||
"requires_owner_review": false,
|
||
"ready_for_km_draft": true,
|
||
"evidence_hash": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
||
},
|
||
{
|
||
"route_id": "result_evidence_missing",
|
||
"display_name": "證據缺口等待補齊",
|
||
"source_signal": "repair_candidate_missing_evidence",
|
||
"result_state": "blocked_until_evidence",
|
||
"owner_agent": "hermes",
|
||
"primary_owner": "evidence owner",
|
||
"km_target": "KM 草稿:只列缺口欄位,不固化未驗證結論",
|
||
"logbook_target": "LOGBOOK 證據:記錄缺口清單與補證 deadline",
|
||
"audit_target": "audit trail:result=blocked_until_evidence",
|
||
"timeline_target": "timeline handoff:collect_repair_evidence",
|
||
"operator_next_action": "補 MCP / Sentry / SigNoz / host log / PlayBook trust evidence;補完後重新跑 dry-run review。",
|
||
"blocked_reason": "MCP / provider / verifier evidence 不足。",
|
||
"writes_live_state": false,
|
||
"requires_owner_review": true,
|
||
"ready_for_km_draft": false,
|
||
"evidence_hash": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||
},
|
||
{
|
||
"route_id": "result_policy_blocked",
|
||
"display_name": "政策阻擋或明確禁止",
|
||
"source_signal": "blocked_by_policy",
|
||
"result_state": "blocked_by_policy",
|
||
"owner_agent": "nemotron",
|
||
"primary_owner": "security reviewer",
|
||
"km_target": "KM 草稿:只記錄 policy reason 與替代 no-op 方案",
|
||
"logbook_target": "LOGBOOK 證據:記錄阻擋規則、紅線與禁止操作",
|
||
"audit_target": "audit trail:result=blocked_by_policy",
|
||
"timeline_target": "timeline handoff:security_policy_block",
|
||
"operator_next_action": "安全 reviewer 決定是否建立新批准包;未批准前保持 blocked。",
|
||
"blocked_reason": "觸及 secret / paid provider / destructive / production write 紅線。",
|
||
"writes_live_state": false,
|
||
"requires_owner_review": true,
|
||
"ready_for_km_draft": false,
|
||
"evidence_hash": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
|
||
},
|
||
{
|
||
"route_id": "result_provider_unmatched",
|
||
"display_name": "供應者新鮮但未匹配 Incident",
|
||
"source_signal": "provider_fresh_but_unmatched",
|
||
"result_state": "correlation_gap",
|
||
"owner_agent": "openclaw",
|
||
"primary_owner": "observability owner",
|
||
"km_target": "KM 草稿:記錄 source correlation 規則缺口,避免寫成服務已修復",
|
||
"logbook_target": "LOGBOOK 證據:記錄 provider refs、candidate count 與未匹配原因",
|
||
"audit_target": "audit trail:result=provider_correlation_gap",
|
||
"timeline_target": "timeline handoff:review_provider_source_match",
|
||
"operator_next_action": "檢查 Sentry / SigNoz / Alertmanager / K8s source id 對應;需要時建立 source correlation review。",
|
||
"blocked_reason": "provider 有心跳但事件尚未關聯到 Incident。",
|
||
"writes_live_state": false,
|
||
"requires_owner_review": true,
|
||
"ready_for_km_draft": false,
|
||
"evidence_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111"
|
||
},
|
||
{
|
||
"route_id": "result_report_zero_signal",
|
||
"display_name": "日週月報全 0 或低可信",
|
||
"source_signal": "report_zero_signal_low_confidence",
|
||
"result_state": "report_quality_gap",
|
||
"owner_agent": "hermes",
|
||
"primary_owner": "report owner",
|
||
"km_target": "KM 草稿:記錄報表資料鏈路缺口與可信度判定",
|
||
"logbook_target": "LOGBOOK 證據:記錄日報 / 週報 / 月報資料來源、缺口與 actionability",
|
||
"audit_target": "audit trail:result=report_quality_gap",
|
||
"timeline_target": "timeline handoff:report_source_quality_review",
|
||
"operator_next_action": "檢查告警、AI 提案、部署、成本、token、K3s 指標資料源;全 0 不可當健康。",
|
||
"blocked_reason": "報表缺少有效資料來源或 ingestion readback。",
|
||
"writes_live_state": false,
|
||
"requires_owner_review": true,
|
||
"ready_for_km_draft": true,
|
||
"evidence_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222"
|
||
}
|
||
],
|
||
"writeback_contracts": [
|
||
{
|
||
"contract_id": "contract_km_review_draft",
|
||
"display_name": "KM owner-review 草稿",
|
||
"owner_agent": "hermes",
|
||
"target_system": "knowledge_base",
|
||
"purpose": "把已驗證或需補證的結果轉成 owner review 草稿,避免 AI 直接固化錯知識。",
|
||
"allowed_mode": "gated_owner_review",
|
||
"write_enabled": false,
|
||
"runtime_writer_enabled": false,
|
||
"required_fields": ["result_route_id", "evidence_hash", "owner", "source_refs", "next_action"],
|
||
"blocker_summary": "owner review gate 尚未啟用;不可自動寫入高影響 KM。",
|
||
"evidence_hash": "sha256:3333333333333333333333333333333333333333333333333333333333333333"
|
||
},
|
||
{
|
||
"contract_id": "contract_logbook_evidence_append",
|
||
"display_name": "LOGBOOK 證據補記契約",
|
||
"owner_agent": "hermes",
|
||
"target_system": "docs_logbook",
|
||
"purpose": "把已部署、已 smoke 或只讀驗證結果整理成可人工提交的 LOGBOOK entry。",
|
||
"allowed_mode": "manual_append_plan",
|
||
"write_enabled": false,
|
||
"runtime_writer_enabled": false,
|
||
"required_fields": ["commit", "deploy_marker", "api_readback", "browser_smoke", "runtime_boundary"],
|
||
"blocker_summary": "runtime 不得自動改 repo;LOGBOOK 只能經一般 git review / commit 流程。",
|
||
"evidence_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444"
|
||
},
|
||
{
|
||
"contract_id": "contract_audit_trail_entry",
|
||
"display_name": "稽核軌跡 entry contract",
|
||
"owner_agent": "openclaw",
|
||
"target_system": "governance_audit",
|
||
"purpose": "固定 result_state、decision reason、blocked reason、operator next action 與 redacted evidence refs。",
|
||
"allowed_mode": "committed_snapshot_only",
|
||
"write_enabled": false,
|
||
"runtime_writer_enabled": false,
|
||
"required_fields": ["result_state", "decision_reason", "blocked_reason", "operator_next_action", "redacted_evidence_refs"],
|
||
"blocker_summary": "audit DB writer 尚未批准;目前只回傳契約與 committed snapshot。",
|
||
"evidence_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555"
|
||
},
|
||
{
|
||
"contract_id": "contract_incident_timeline_handoff",
|
||
"display_name": "Incident timeline handoff",
|
||
"owner_agent": "openclaw",
|
||
"target_system": "incident_timeline",
|
||
"purpose": "讓 Operator 可看見目前階段、誰處理、AI 做了什麼、是否需要人工。",
|
||
"allowed_mode": "gated_owner_review",
|
||
"write_enabled": false,
|
||
"runtime_writer_enabled": false,
|
||
"required_fields": ["stage", "owner_agent", "operator_next_action", "manual_required", "blocked_reason"],
|
||
"blocker_summary": "timeline writer 尚未批准;不可把 UI 顯示當成 timeline 已寫入。",
|
||
"evidence_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||
},
|
||
{
|
||
"contract_id": "contract_playbook_trust_candidate",
|
||
"display_name": "PlayBook trust 候選更新",
|
||
"owner_agent": "nemotron",
|
||
"target_system": "playbook_trust",
|
||
"purpose": "把修復成功 / 失敗 / no-op / policy block 結果轉成 trust score 候選,不直接套用。",
|
||
"allowed_mode": "gated_owner_review",
|
||
"write_enabled": false,
|
||
"runtime_writer_enabled": false,
|
||
"required_fields": ["playbook_id", "result_state", "verifier_result", "owner_review", "rollback_context"],
|
||
"blocker_summary": "P2-104 才修復 matched_playbook_id 學習缺口;目前只保留候選 contract。",
|
||
"evidence_hash": "sha256:7777777777777777777777777777777777777777777777777777777777777777"
|
||
},
|
||
{
|
||
"contract_id": "contract_operator_handoff_packet",
|
||
"display_name": "人工交接封包",
|
||
"owner_agent": "hermes",
|
||
"target_system": "awooop_operator_console",
|
||
"purpose": "把 TG / AwoooP approval 後卡住的項目轉成可理解的人工下一步與補證清單。",
|
||
"allowed_mode": "committed_snapshot_only",
|
||
"write_enabled": false,
|
||
"runtime_writer_enabled": false,
|
||
"required_fields": ["incident_id", "route_id", "current_stage", "next_action", "missing_evidence", "owner"],
|
||
"blocker_summary": "operator console writeback 尚未批准;目前只展示下一步 contract。",
|
||
"evidence_hash": "sha256:8888888888888888888888888888888888888888888888888888888888888888"
|
||
}
|
||
],
|
||
"audit_checkpoints": [
|
||
{
|
||
"checkpoint_id": "checkpoint_result_classification",
|
||
"display_name": "結果分類一致性",
|
||
"required_for": "所有 result route",
|
||
"status": "ready",
|
||
"failure_if_missing": "TG / AwoooP 只會顯示已批准或執行中,無法知道最後是 no-action、失敗或補證。",
|
||
"creates_runtime_action": false
|
||
},
|
||
{
|
||
"checkpoint_id": "checkpoint_evidence_hash",
|
||
"display_name": "redacted evidence hash",
|
||
"required_for": "KM / LOGBOOK / audit",
|
||
"status": "ready",
|
||
"failure_if_missing": "結果無法被追溯,後續 KM 可能固化錯誤。",
|
||
"creates_runtime_action": false
|
||
},
|
||
{
|
||
"checkpoint_id": "checkpoint_owner_next_action",
|
||
"display_name": "owner 與下一步",
|
||
"required_for": "operator handoff",
|
||
"status": "ready",
|
||
"failure_if_missing": "人工看不懂該修、該補證、該 rollback 或該關閉。",
|
||
"creates_runtime_action": false
|
||
},
|
||
{
|
||
"checkpoint_id": "checkpoint_km_draft_review",
|
||
"display_name": "KM owner review",
|
||
"required_for": "knowledge base",
|
||
"status": "needs_owner_review",
|
||
"failure_if_missing": "AI 可能直接寫入未驗證或過時知識。",
|
||
"creates_runtime_action": false
|
||
},
|
||
{
|
||
"checkpoint_id": "checkpoint_logbook_evidence",
|
||
"display_name": "LOGBOOK evidence anchor",
|
||
"required_for": "release evidence",
|
||
"status": "ready",
|
||
"failure_if_missing": "無法連回 commit、deploy marker、API readback 與正式站 smoke。",
|
||
"creates_runtime_action": false
|
||
},
|
||
{
|
||
"checkpoint_id": "checkpoint_timeline_handoff",
|
||
"display_name": "timeline handoff",
|
||
"required_for": "incident timeline",
|
||
"status": "needs_owner_review",
|
||
"failure_if_missing": "Incident 頁看不到目前停在哪個階段。",
|
||
"creates_runtime_action": false
|
||
},
|
||
{
|
||
"checkpoint_id": "checkpoint_redaction_boundary",
|
||
"display_name": "redaction boundary",
|
||
"required_for": "所有前端顯示",
|
||
"status": "ready",
|
||
"failure_if_missing": "可能外露 secret、prompt、私有推理、raw TG payload 或內部協作內容。",
|
||
"creates_runtime_action": false
|
||
}
|
||
],
|
||
"operator_handoffs": [
|
||
{
|
||
"handoff_id": "handoff_manual_fix_or_rollback",
|
||
"display_name": "人工修復或回滾",
|
||
"owner_agent": "openclaw",
|
||
"human_instruction": "若 result_state=execution_failed,SRE 只可依 無寫入 SOP 決定人工修復 / rollback;AI 不會再次自動執行。",
|
||
"creates_runtime_action": false,
|
||
"requires_human_review": true
|
||
},
|
||
{
|
||
"handoff_id": "handoff_collect_missing_repair_evidence",
|
||
"display_name": "補齊修復證據",
|
||
"owner_agent": "hermes",
|
||
"human_instruction": "補 MCP、provider、host log、PlayBook trust 或 verifier evidence;補完後重新回到 dry-run review。",
|
||
"creates_runtime_action": false,
|
||
"requires_human_review": true
|
||
},
|
||
{
|
||
"handoff_id": "handoff_provider_correlation_review",
|
||
"display_name": "供應者關聯審查",
|
||
"owner_agent": "openclaw",
|
||
"human_instruction": "檢查 provider refs 與 Incident 的 source id / fingerprint / recurrence 對應,不可把 provider heartbeat 當已關聯。",
|
||
"creates_runtime_action": false,
|
||
"requires_human_review": true
|
||
},
|
||
{
|
||
"handoff_id": "handoff_km_owner_review",
|
||
"display_name": "KM owner 審查",
|
||
"owner_agent": "hermes",
|
||
"human_instruction": "owner 確認草稿引用、來源與 stale 風險後才可寫入高影響 KM。",
|
||
"creates_runtime_action": false,
|
||
"requires_human_review": true
|
||
},
|
||
{
|
||
"handoff_id": "handoff_report_quality_review",
|
||
"display_name": "報表品質審查",
|
||
"owner_agent": "hermes",
|
||
"human_instruction": "日報 / 週報 / 月報全 0 時先視為資料鏈路異常,需查 ingestion 與 actionability,不得當成健康。",
|
||
"creates_runtime_action": false,
|
||
"requires_human_review": true
|
||
}
|
||
],
|
||
"display_redaction_contract": {
|
||
"redaction_required": true,
|
||
"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,
|
||
"allowed_display_fields": [
|
||
"route_id",
|
||
"display_name",
|
||
"result_state",
|
||
"owner_agent",
|
||
"primary_owner",
|
||
"operator_next_action",
|
||
"blocked_reason",
|
||
"evidence_hash",
|
||
"write_enabled",
|
||
"runtime_writer_enabled"
|
||
],
|
||
"blocked_display_fields": [
|
||
"secret_value",
|
||
"token",
|
||
"authorization_header",
|
||
"raw_prompt",
|
||
"private_reasoning",
|
||
"raw_telegram_payload",
|
||
"internal_collaboration_transcript"
|
||
]
|
||
},
|
||
"rollups": {
|
||
"result_route_count": 8,
|
||
"owner_next_action_ready_count": 8,
|
||
"requires_owner_review_count": 7,
|
||
"ready_for_km_draft_count": 5,
|
||
"blocked_result_count": 3,
|
||
"writeback_contract_count": 6,
|
||
"audit_checkpoint_count": 7,
|
||
"operator_handoff_count": 5,
|
||
"runtime_execution_count": 0,
|
||
"km_write_count": 0,
|
||
"logbook_runtime_write_count": 0,
|
||
"audit_db_write_count": 0,
|
||
"timeline_write_count": 0,
|
||
"playbook_trust_write_count": 0,
|
||
"gateway_queue_write_count": 0,
|
||
"telegram_send_count": 0,
|
||
"production_write_count": 0,
|
||
"secret_value_read_count": 0,
|
||
"destructive_operation_count": 0
|
||
}
|
||
}
|