1429 lines
54 KiB
JSON
1429 lines
54 KiB
JSON
{
|
||
"schema_version": "ai_agent_automation_backlog_v1",
|
||
"generated_at": "2026-06-05T16:20:00+08:00",
|
||
"source_inventory_snapshot_ref": "docs/evaluations/ai_agent_automation_inventory_snapshot_2026-06-04_static_seed.json",
|
||
"program_status": {
|
||
"overall_completion_percent": 92,
|
||
"current_priority": "P1",
|
||
"current_task_id": "P1-007",
|
||
"next_task_id": "P2-004",
|
||
"read_only_mode": true
|
||
},
|
||
"rollups": {
|
||
"total_items": 25,
|
||
"by_priority": {
|
||
"P1": 23,
|
||
"P2": 1,
|
||
"P3": 1
|
||
},
|
||
"by_status": {
|
||
"done": 23,
|
||
"planned": 2
|
||
},
|
||
"by_gate_status": {
|
||
"read_only_allowed": 22,
|
||
"production_change_blocked": 1,
|
||
"cost_approval_required": 1,
|
||
"blocked_by_evidence": 1
|
||
},
|
||
"by_owner_agent": {
|
||
"hermes": 13,
|
||
"openclaw": 11,
|
||
"nemotron": 1
|
||
}
|
||
},
|
||
"backlog_items": [
|
||
{
|
||
"item_id": "AUTO-P1-303",
|
||
"priority": "P1",
|
||
"status": "done",
|
||
"workstream_id": "WS2",
|
||
"source_asset_id": "awoooi_api",
|
||
"source_signal_kind": "inventory_gap",
|
||
"title": "建立自動化待辦只讀 API",
|
||
"owner_agent": "hermes",
|
||
"recommended_action": "新增 GET /api/v1/agents/automation-backlog-snapshot,只讀取 committed backlog snapshot。",
|
||
"action_class": "execute_read_only",
|
||
"gate_status": "read_only_allowed",
|
||
"risk_level": "medium",
|
||
"evidence_refs": [
|
||
"docs/schemas/ai_agent_automation_backlog_v1.schema.json",
|
||
"docs/evaluations/ai_agent_automation_backlog_2026-06-04.json"
|
||
],
|
||
"acceptance_criteria": [
|
||
"API 回傳 schema_version=ai_agent_automation_backlog_v1",
|
||
"API 不呼叫外部來源、不碰 DB/Redis",
|
||
"approval_boundaries 全部維持 false",
|
||
"pytest 覆蓋 service loader 與 API endpoint"
|
||
],
|
||
"next_review": "P1-303",
|
||
"approval_boundary": {
|
||
"mode": "read_only_allowed",
|
||
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
|
||
"allowed_actions": [
|
||
"讀取 committed snapshot",
|
||
"整理只讀證據",
|
||
"顯示治理 UI"
|
||
],
|
||
"blocked_actions": [
|
||
"production_write",
|
||
"runtime_execution",
|
||
"destructive_operation",
|
||
"secret_plaintext_collection",
|
||
"unapproved_deploy",
|
||
"unapproved_external_call"
|
||
],
|
||
"requires_operator_approval_for": [
|
||
"任何非只讀操作",
|
||
"任何部署、排程、通知或外部呼叫變更"
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"item_id": "AUTO-P1-304",
|
||
"priority": "P1",
|
||
"status": "done",
|
||
"workstream_id": "WS8",
|
||
"source_asset_id": "awoooi_web",
|
||
"source_signal_kind": "ui_visibility_gap",
|
||
"title": "建立 P0/P1/P2/P3 分組自動化待辦 UI",
|
||
"owner_agent": "hermes",
|
||
"recommended_action": "在治理頁新增只讀 backlog board,顯示 priority、gate、owner、evidence 與 acceptance criteria。",
|
||
"action_class": "execute_read_only",
|
||
"gate_status": "read_only_allowed",
|
||
"risk_level": "medium",
|
||
"evidence_refs": [
|
||
"apps/web/src/app/[locale]/governance/page.tsx",
|
||
"apps/web/src/app/[locale]/governance/tabs/automation-inventory-tab.tsx"
|
||
],
|
||
"acceptance_criteria": [
|
||
"繁中 i18n 完整",
|
||
"不新增批准或執行按鈕",
|
||
"desktop 與 390px mobile 無橫向溢出",
|
||
"顯示 rollup 與分組 item"
|
||
],
|
||
"next_review": "P1-304",
|
||
"approval_boundary": {
|
||
"mode": "read_only_allowed",
|
||
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
|
||
"allowed_actions": [
|
||
"讀取 committed snapshot",
|
||
"整理只讀證據",
|
||
"顯示治理 UI"
|
||
],
|
||
"blocked_actions": [
|
||
"production_write",
|
||
"runtime_execution",
|
||
"destructive_operation",
|
||
"secret_plaintext_collection",
|
||
"unapproved_deploy",
|
||
"unapproved_external_call"
|
||
],
|
||
"requires_operator_approval_for": [
|
||
"任何非只讀操作",
|
||
"任何部署、排程、通知或外部呼叫變更"
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"item_id": "AUTO-P1-305",
|
||
"priority": "P1",
|
||
"status": "done",
|
||
"workstream_id": "WS8",
|
||
"source_asset_id": "awoooi_web",
|
||
"source_signal_kind": "approval_boundary",
|
||
"title": "顯示每個任務的批准邊界",
|
||
"owner_agent": "openclaw",
|
||
"recommended_action": "在 backlog snapshot 與治理頁顯示每個任務的 mode、允許只讀動作、阻擋操作與需要人工批准的範圍。",
|
||
"action_class": "execute_read_only",
|
||
"gate_status": "read_only_allowed",
|
||
"risk_level": "high",
|
||
"evidence_refs": [
|
||
"docs/schemas/ai_agent_automation_backlog_v1.schema.json",
|
||
"docs/evaluations/ai_agent_automation_backlog_2026-06-04.json",
|
||
"apps/web/src/app/[locale]/governance/tabs/automation-inventory-tab.tsx"
|
||
],
|
||
"acceptance_criteria": [
|
||
"每個 backlog item 都有 approval_boundary.mode 與 gate_status 一致",
|
||
"UI 顯示允許只讀動作、阻擋操作與需人工批准範圍",
|
||
"不新增批准、執行、部署或通知按鈕",
|
||
"service loader 會驗證 item_approval_boundary_rollup 一致性"
|
||
],
|
||
"next_review": "P1-305",
|
||
"approval_boundary": {
|
||
"mode": "read_only_allowed",
|
||
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
|
||
"allowed_actions": [
|
||
"讀取 committed snapshot",
|
||
"整理只讀證據",
|
||
"顯示治理 UI"
|
||
],
|
||
"blocked_actions": [
|
||
"production_write",
|
||
"runtime_execution",
|
||
"destructive_operation",
|
||
"secret_plaintext_collection",
|
||
"unapproved_deploy",
|
||
"unapproved_external_call"
|
||
],
|
||
"requires_operator_approval_for": [
|
||
"任何非只讀操作",
|
||
"任何部署、排程、通知或外部呼叫變更"
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"item_id": "AUTO-P1-306",
|
||
"priority": "P1",
|
||
"status": "done",
|
||
"workstream_id": "WS2",
|
||
"source_asset_id": "automation_backlog_progress_summary",
|
||
"source_signal_kind": "ui_visibility_gap",
|
||
"title": "顯示進度百分比彙總",
|
||
"owner_agent": "hermes",
|
||
"recommended_action": "在 backlog snapshot 與治理頁顯示整體、優先級與工作流進度,百分比全部由 status=done / total_items 重算。",
|
||
"action_class": "execute_read_only",
|
||
"gate_status": "read_only_allowed",
|
||
"risk_level": "medium",
|
||
"evidence_refs": [
|
||
"docs/schemas/ai_agent_automation_backlog_v1.schema.json",
|
||
"docs/evaluations/ai_agent_automation_backlog_2026-06-04.json",
|
||
"GET /api/v1/agents/automation-backlog-snapshot",
|
||
"apps/web/src/app/[locale]/governance/tabs/automation-inventory-tab.tsx"
|
||
],
|
||
"acceptance_criteria": [
|
||
"progress_summary.overall_percent 使用 deterministic formula",
|
||
"by_priority 與 by_workstream 的 done_items / total_items 可由 backlog_items 重算",
|
||
"planned、blocked、deferred、rejected 不得計入完成",
|
||
"UI 顯示百分比時同步顯示公式邊界,不代表 runtime gate 提升"
|
||
],
|
||
"next_review": "P1-306",
|
||
"approval_boundary": {
|
||
"mode": "read_only_allowed",
|
||
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
|
||
"allowed_actions": [
|
||
"讀取 committed snapshot",
|
||
"整理只讀證據",
|
||
"顯示治理 UI"
|
||
],
|
||
"blocked_actions": [
|
||
"production_write",
|
||
"runtime_execution",
|
||
"destructive_operation",
|
||
"secret_plaintext_collection",
|
||
"unapproved_deploy",
|
||
"unapproved_external_call"
|
||
],
|
||
"requires_operator_approval_for": [
|
||
"任何非只讀操作",
|
||
"任何部署、排程、通知或外部呼叫變更"
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"item_id": "AUTO-P1-001",
|
||
"priority": "P1",
|
||
"status": "done",
|
||
"workstream_id": "WS3",
|
||
"source_asset_id": "awoooi_k8s_prod",
|
||
"source_signal_kind": "runtime_evidence_gap",
|
||
"title": "盤點 API / Web / Worker / K8s runtime surface",
|
||
"owner_agent": "openclaw",
|
||
"recommended_action": "已建立只讀 runtime surface matrix,列出 Deployment、Service、Ingress、CronJob、ConfigMap、Secret 與對應 source / manifest 證據。",
|
||
"action_class": "observe",
|
||
"gate_status": "read_only_allowed",
|
||
"risk_level": "high",
|
||
"evidence_refs": [
|
||
"docs/evaluations/runtime_surface_inventory_2026-06-05.json",
|
||
"GET /api/v1/agents/runtime-surface-inventory",
|
||
"k8s/awoooi-prod/"
|
||
],
|
||
"acceptance_criteria": [
|
||
"不執行 rollout、restart、scale、delete",
|
||
"每個 runtime surface 都有來源檔或只讀檢查證據",
|
||
"缺口列為 action-required,不直接修復"
|
||
],
|
||
"next_review": "P1-002",
|
||
"approval_boundary": {
|
||
"mode": "read_only_allowed",
|
||
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
|
||
"allowed_actions": [
|
||
"讀取 committed snapshot",
|
||
"整理只讀證據",
|
||
"顯示治理 UI"
|
||
],
|
||
"blocked_actions": [
|
||
"production_write",
|
||
"runtime_execution",
|
||
"destructive_operation",
|
||
"secret_plaintext_collection",
|
||
"unapproved_deploy",
|
||
"unapproved_external_call"
|
||
],
|
||
"requires_operator_approval_for": [
|
||
"任何非只讀操作",
|
||
"任何部署、排程、通知或外部呼叫變更"
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"item_id": "AUTO-P1-002",
|
||
"priority": "P1",
|
||
"status": "done",
|
||
"workstream_id": "WS3",
|
||
"source_asset_id": "gitea_actions",
|
||
"source_signal_kind": "health_gap",
|
||
"title": "盤點 Gitea 工作流程與 runner 健康合約",
|
||
"owner_agent": "hermes",
|
||
"recommended_action": "已建立 Gitea workflow / runner health contract 只讀 snapshot、API 與治理頁;保留 failure-only / actionable-only 通知政策,不修改 workflow 或 runner。",
|
||
"action_class": "observe",
|
||
"gate_status": "read_only_allowed",
|
||
"risk_level": "medium",
|
||
"evidence_refs": [
|
||
"docs/evaluations/gitea_workflow_runner_health_2026-06-05.json",
|
||
"GET /api/v1/agents/gitea-workflow-runner-health",
|
||
".gitea/workflows/",
|
||
"scripts/ci/notify-awoooi-cicd.sh",
|
||
"scripts/ops/stop-stale-gitea-actions-jobs.sh"
|
||
],
|
||
"acceptance_criteria": [
|
||
"不修改 workflow、不觸發 deploy/migration、不重啟或停止 runner",
|
||
"列出 9 個 Gitea workflow、runner label evidence status 與 notification policy",
|
||
"成功不洗版、失敗 / actionable 才升級的政策被保留,CD/review/manual status 例外另列",
|
||
"API / UI 僅顯示 committed snapshot 與不可誤讀合約"
|
||
],
|
||
"next_review": "P1-003",
|
||
"approval_boundary": {
|
||
"mode": "read_only_allowed",
|
||
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
|
||
"allowed_actions": [
|
||
"讀取 committed snapshot",
|
||
"整理只讀證據",
|
||
"顯示治理 UI"
|
||
],
|
||
"blocked_actions": [
|
||
"production_write",
|
||
"runtime_execution",
|
||
"destructive_operation",
|
||
"secret_plaintext_collection",
|
||
"unapproved_deploy",
|
||
"unapproved_external_call"
|
||
],
|
||
"requires_operator_approval_for": [
|
||
"任何非只讀操作",
|
||
"任何部署、排程、通知或外部呼叫變更"
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"item_id": "AUTO-P1-003",
|
||
"priority": "P1",
|
||
"status": "done",
|
||
"workstream_id": "WS3",
|
||
"source_asset_id": "prometheus_alertmanager",
|
||
"source_signal_kind": "health_gap",
|
||
"title": "盤點監控合約與降噪機會",
|
||
"owner_agent": "hermes",
|
||
"recommended_action": "已建立 Prometheus / Alertmanager / Grafana / SigNoz / ClickHouse / Sentry 的只讀 observability matrix;降噪與分類缺口只產生 proposal,不修改 alert rules。",
|
||
"action_class": "observe",
|
||
"gate_status": "read_only_allowed",
|
||
"risk_level": "high",
|
||
"evidence_refs": [
|
||
"docs/evaluations/observability_contract_matrix_2026-06-05.json",
|
||
"GET /api/v1/agents/observability-contract-matrix",
|
||
"k8s/monitoring/",
|
||
"ops/alertmanager/alertmanager.yml",
|
||
"ops/monitoring/",
|
||
"apps/api/src/constants/alert_types.py"
|
||
],
|
||
"acceptance_criteria": [
|
||
"不修改 alert rules、不呼叫 silence API、不送測試通知",
|
||
"列出 Prometheus / Alertmanager / Grafana / SigNoz / ClickHouse / Sentry 的只讀合約",
|
||
"降噪只產生 proposal,標出 stale、缺 evidence、過度通知與 classification gap",
|
||
"API / UI 僅顯示 committed snapshot 與不可誤讀合約"
|
||
],
|
||
"next_review": "P1-004",
|
||
"approval_boundary": {
|
||
"mode": "read_only_allowed",
|
||
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
|
||
"allowed_actions": [
|
||
"讀取 committed snapshot",
|
||
"整理只讀證據",
|
||
"顯示治理 UI"
|
||
],
|
||
"blocked_actions": [
|
||
"production_write",
|
||
"runtime_execution",
|
||
"destructive_operation",
|
||
"secret_plaintext_collection",
|
||
"unapproved_deploy",
|
||
"unapproved_external_call"
|
||
],
|
||
"requires_operator_approval_for": [
|
||
"任何非只讀操作",
|
||
"任何部署、排程、通知或外部呼叫變更"
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"item_id": "AUTO-P1-004",
|
||
"priority": "P1",
|
||
"status": "done",
|
||
"workstream_id": "WS3",
|
||
"source_asset_id": "ai_router",
|
||
"source_signal_kind": "runtime_evidence_gap",
|
||
"title": "盤點 AI Router / provider route",
|
||
"owner_agent": "openclaw",
|
||
"recommended_action": "已建立 AI Router / Ollama / OpenClaw / Nemotron / Gemini provider route 只讀矩陣;不切換 provider、不呼叫付費 API、不進 shadow / canary。",
|
||
"action_class": "observe",
|
||
"gate_status": "production_change_blocked",
|
||
"risk_level": "critical",
|
||
"evidence_refs": [
|
||
"docs/evaluations/ai_provider_route_matrix_2026-06-05.json",
|
||
"GET /api/v1/agents/ai-provider-route-matrix",
|
||
"apps/api/src/services/ai_router.py",
|
||
"apps/api/src/services/ollama_endpoint_resolver.py",
|
||
"apps/api/src/services/ollama_failover_manager.py",
|
||
"apps/api/src/services/openclaw.py",
|
||
"k8s/awoooi-prod/04-configmap.yaml",
|
||
"k8s/awoooi-prod/06-deployment-api.yaml"
|
||
],
|
||
"acceptance_criteria": [
|
||
"不修改 provider routing、不改 USE_AI_ROUTER、不改 fallback order",
|
||
"不呼叫 Gemini / Claude / NVIDIA 付費 API、不提高呼叫頻率",
|
||
"Nemotron / candidate provider 維持 replay / shadow / canary gate",
|
||
"OpenClaw 保持目前生產決策核心,UI/API 只呈現不可誤讀合約"
|
||
],
|
||
"next_review": "P1-005",
|
||
"approval_boundary": {
|
||
"mode": "production_change_blocked",
|
||
"display_summary": "生產路由或 provider 變更被阻擋;需 replay、shadow/canary 證據與獨立人工批准。",
|
||
"allowed_actions": [
|
||
"盤點 provider route",
|
||
"整理 replay 前置證據",
|
||
"準備變更批准包"
|
||
],
|
||
"blocked_actions": [
|
||
"production_write",
|
||
"runtime_execution",
|
||
"destructive_operation",
|
||
"secret_plaintext_collection",
|
||
"provider_switch",
|
||
"production_routing_change",
|
||
"shadow_or_canary_entry",
|
||
"paid_api_call"
|
||
],
|
||
"requires_operator_approval_for": [
|
||
"provider 切換",
|
||
"生產路由變更",
|
||
"shadow / canary 進入",
|
||
"付費 API 呼叫"
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"item_id": "AUTO-P1-005",
|
||
"priority": "P1",
|
||
"status": "done",
|
||
"workstream_id": "WS3",
|
||
"source_asset_id": "service_health_gap_matrix",
|
||
"source_signal_kind": "runtime_evidence_gap",
|
||
"title": "偵測服務健康缺口與過期端點",
|
||
"owner_agent": "openclaw",
|
||
"recommended_action": "已建立 service health gap matrix,只整理 committed health / endpoint / stale evidence;不做 live probe、不重啟、不改 endpoint。",
|
||
"action_class": "observe",
|
||
"gate_status": "read_only_allowed",
|
||
"risk_level": "critical",
|
||
"evidence_refs": [
|
||
"docs/evaluations/service_health_gap_matrix_2026-06-05.json",
|
||
"GET /api/v1/agents/service-health-gap-matrix",
|
||
"docs/reference/SERVICE-ENDPOINTS.md",
|
||
"scripts/health_check_session.sh",
|
||
"docs/evaluations/ai_provider_route_matrix_2026-06-05.json",
|
||
"docs/evaluations/observability_contract_matrix_2026-06-05.json",
|
||
"docs/evaluations/gitea_workflow_runner_health_2026-06-05.json"
|
||
],
|
||
"acceptance_criteria": [
|
||
"不做 live probe 或 external health probe",
|
||
"不重啟 service / pod / host,不 rollout restart",
|
||
"不修改 endpoint / ConfigMap / public URL",
|
||
"不讀 Secret payload、不發通知、不觸發 workflow / deploy / runtime execution"
|
||
],
|
||
"next_review": "P1-006",
|
||
"approval_boundary": {
|
||
"mode": "read_only_allowed",
|
||
"display_summary": "只允許整理 committed service health gap evidence 與需處置清單;不得 live probe、重啟、改 endpoint 或發通知。",
|
||
"allowed_actions": [
|
||
"讀取 committed snapshot",
|
||
"整理健康缺口",
|
||
"顯示治理 UI",
|
||
"準備 operator review 清單"
|
||
],
|
||
"blocked_actions": [
|
||
"production_write",
|
||
"runtime_execution",
|
||
"destructive_operation",
|
||
"secret_plaintext_collection",
|
||
"live_probe",
|
||
"service_restart",
|
||
"endpoint_change",
|
||
"notification_send"
|
||
],
|
||
"requires_operator_approval_for": [
|
||
"live probe",
|
||
"服務重啟",
|
||
"endpoint / ConfigMap 修改",
|
||
"Telegram / AwoooP 通知發送",
|
||
"runtime execution"
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"item_id": "AUTO-P1-006",
|
||
"priority": "P1",
|
||
"status": "done",
|
||
"workstream_id": "WS3",
|
||
"source_asset_id": "service_health_gap_matrix",
|
||
"source_signal_kind": "runtime_evidence_gap",
|
||
"title": "在 UI 顯示 service health 證據卡",
|
||
"owner_agent": "hermes",
|
||
"recommended_action": "已在治理頁顯示每個 service health target 的 committed evidence ref、狀態、新鮮度、風險與下一步;不做 live probe。",
|
||
"action_class": "visualize",
|
||
"gate_status": "read_only_allowed",
|
||
"risk_level": "high",
|
||
"evidence_refs": [
|
||
"docs/evaluations/service_health_gap_matrix_2026-06-05.json",
|
||
"GET /api/v1/agents/service-health-gap-matrix",
|
||
"/zh-TW/governance?tab=automation-inventory",
|
||
"apps/web/src/app/[locale]/governance/tabs/automation-inventory-tab.tsx"
|
||
],
|
||
"acceptance_criteria": [
|
||
"每個 service health target 可看到主要 evidence ref、狀態、新鮮度、風險與下一步",
|
||
"不新增 live probe / restart / endpoint change / notification send 操作入口",
|
||
"desktop / mobile horizontal overflow 必須為 0",
|
||
"P1-006 UI 可見不得解讀成 runtime execution 授權"
|
||
],
|
||
"next_review": "P1-007",
|
||
"approval_boundary": {
|
||
"mode": "read_only_allowed",
|
||
"display_summary": "只允許顯示 committed service health evidence cards;不得 live probe、重啟、改 endpoint、發通知或觸發 runtime execution。",
|
||
"allowed_actions": [
|
||
"讀取 committed snapshot",
|
||
"顯示證據卡",
|
||
"整理 operator review 視圖"
|
||
],
|
||
"blocked_actions": [
|
||
"production_write",
|
||
"runtime_execution",
|
||
"destructive_operation",
|
||
"secret_plaintext_collection",
|
||
"live_probe",
|
||
"service_restart",
|
||
"endpoint_change",
|
||
"notification_send"
|
||
],
|
||
"requires_operator_approval_for": [
|
||
"live probe",
|
||
"服務重啟",
|
||
"endpoint / ConfigMap 修改",
|
||
"Telegram / AwoooP 通知發送",
|
||
"runtime execution"
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"item_id": "AUTO-P1-007",
|
||
"priority": "P1",
|
||
"status": "done",
|
||
"workstream_id": "WS7",
|
||
"source_asset_id": "service_health_failure_notification_policy",
|
||
"source_signal_kind": "approval_boundary",
|
||
"title": "建立 service health failure-only Telegram / AwoooP 對應",
|
||
"owner_agent": "openclaw",
|
||
"recommended_action": "已定義 service health failure-only Telegram / AwoooP 通知合約;成功不即時通知,failed / blocked / high action-required 才升級,但本段不發送通知。",
|
||
"action_class": "notification_policy",
|
||
"gate_status": "read_only_allowed",
|
||
"risk_level": "critical",
|
||
"evidence_refs": [
|
||
"docs/schemas/service_health_failure_notification_policy_v1.schema.json",
|
||
"docs/evaluations/service_health_failure_notification_policy_2026-06-05.json",
|
||
"GET /api/v1/agents/service-health-failure-notification-policy",
|
||
"/zh-TW/governance?tab=automation-inventory",
|
||
"apps/api/src/services/service_health_failure_notification_policy.py",
|
||
"apps/api/tests/test_service_health_failure_notification_policy.py",
|
||
"apps/api/tests/test_service_health_failure_notification_policy_api.py",
|
||
"apps/web/src/app/[locale]/governance/tabs/automation-inventory-tab.tsx"
|
||
],
|
||
"acceptance_criteria": [
|
||
"不得發送測試通知到正式群組",
|
||
"成功不通知的預設政策被保留",
|
||
"action-required 必須可追蹤 incident / approval / evidence",
|
||
"message template 必須包含 stage、next action、blocked reason、auto/manual、target、severity、evidence ref",
|
||
"不得新增 live probe / restart / endpoint change / notification send 操作入口",
|
||
"前端只允許顯示 committed policy、rule summary、evidence ref、下一步與禁止事項",
|
||
"前端不得顯示工作視窗對話內容、Codex/user 訊息逐字稿、提示詞、session id 或 瀏覽器上下文",
|
||
"API snapshot 必須維持 conversation_transcript_display_allowed=false 與 redaction_required=true"
|
||
],
|
||
"next_review": "P2-004",
|
||
"approval_boundary": {
|
||
"mode": "read_only_allowed",
|
||
"display_summary": "只允許定義 service health failure-only 通知合約與 UI 顯示;不得直接發送 Telegram / AwoooP、live probe、重啟、改 endpoint 或 runtime execution。",
|
||
"allowed_actions": [
|
||
"讀取 committed snapshot",
|
||
"整理 failure-only 通知政策",
|
||
"顯示治理 UI"
|
||
],
|
||
"blocked_actions": [
|
||
"production_write",
|
||
"runtime_execution",
|
||
"destructive_operation",
|
||
"secret_plaintext_collection",
|
||
"notification_send",
|
||
"telegram_test_message",
|
||
"awooop_event_write",
|
||
"live_probe",
|
||
"service_restart",
|
||
"endpoint_change",
|
||
"work_window_transcript_display",
|
||
"prompt_display",
|
||
"session_context_display"
|
||
],
|
||
"requires_operator_approval_for": [
|
||
"Telegram / AwoooP 通知發送",
|
||
"測試通知",
|
||
"AwoooP event 寫入",
|
||
"live probe",
|
||
"服務重啟",
|
||
"endpoint / ConfigMap 修改",
|
||
"runtime execution",
|
||
"任何工作視窗逐字稿、提示詞、session 或 瀏覽器上下文 顯示需求"
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"item_id": "AUTO-P1-101",
|
||
"priority": "P1",
|
||
"status": "done",
|
||
"workstream_id": "WS4",
|
||
"source_asset_id": "backup_gitea",
|
||
"source_signal_kind": "backup_gap",
|
||
"title": "把備份 runbook / 腳本轉成機器可讀目標盤點",
|
||
"owner_agent": "hermes",
|
||
"recommended_action": "彙整 Gitea、Harbor、PostgreSQL、公開路由、異地同步與 escrow 的備份目標 snapshot。",
|
||
"action_class": "backup_verify",
|
||
"gate_status": "read_only_allowed",
|
||
"risk_level": "high",
|
||
"evidence_refs": [
|
||
"scripts/backup/backup-gitea.sh",
|
||
"scripts/backup/backup-harbor.sh",
|
||
"scripts/backup/backup-public-routes.sh"
|
||
],
|
||
"acceptance_criteria": [
|
||
"不執行 restore",
|
||
"不暴露 credential",
|
||
"每個備份目標至少有 freshness / integrity / owner 欄位",
|
||
"成功不通知、失敗才進 action-required"
|
||
],
|
||
"next_review": "P1-101",
|
||
"approval_boundary": {
|
||
"mode": "read_only_allowed",
|
||
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
|
||
"allowed_actions": [
|
||
"讀取 committed snapshot",
|
||
"整理只讀證據",
|
||
"顯示治理 UI"
|
||
],
|
||
"blocked_actions": [
|
||
"production_write",
|
||
"runtime_execution",
|
||
"destructive_operation",
|
||
"secret_plaintext_collection",
|
||
"unapproved_deploy",
|
||
"unapproved_external_call"
|
||
],
|
||
"requires_operator_approval_for": [
|
||
"任何非只讀操作",
|
||
"任何部署、排程、通知或外部呼叫變更"
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"item_id": "AUTO-P1-102",
|
||
"priority": "P1",
|
||
"status": "done",
|
||
"workstream_id": "WS4",
|
||
"source_asset_id": "backup_offsite",
|
||
"source_signal_kind": "backup_gap",
|
||
"title": "顯示備份 freshness、integrity、restore-drill status",
|
||
"owner_agent": "openclaw",
|
||
"recommended_action": "建立 backup readiness matrix,只呈現 readiness,不執行 restore drill。",
|
||
"action_class": "backup_verify",
|
||
"gate_status": "read_only_allowed",
|
||
"risk_level": "critical",
|
||
"evidence_refs": [
|
||
"scripts/backup/backup-offsite-readiness-gate.sh",
|
||
"docs/runbooks/OFFSITE-BACKUP-ESCROW-RUNBOOK.md"
|
||
],
|
||
"acceptance_criteria": [
|
||
"restore-drill 仍需人工批准",
|
||
"不輸出 secret 或 credential",
|
||
"readiness 需區分 freshness、integrity、offsite、escrow"
|
||
],
|
||
"next_review": "P1-102",
|
||
"approval_boundary": {
|
||
"mode": "read_only_allowed",
|
||
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
|
||
"allowed_actions": [
|
||
"讀取 committed snapshot",
|
||
"整理只讀證據",
|
||
"顯示治理 UI"
|
||
],
|
||
"blocked_actions": [
|
||
"production_write",
|
||
"runtime_execution",
|
||
"destructive_operation",
|
||
"secret_plaintext_collection",
|
||
"unapproved_deploy",
|
||
"unapproved_external_call"
|
||
],
|
||
"requires_operator_approval_for": [
|
||
"任何非只讀操作",
|
||
"任何部署、排程、通知或外部呼叫變更"
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"item_id": "AUTO-P1-103",
|
||
"priority": "P1",
|
||
"status": "done",
|
||
"workstream_id": "WS4",
|
||
"source_asset_id": "backup_notification_policy",
|
||
"source_signal_kind": "backup_gap",
|
||
"title": "對齊備份通知政策",
|
||
"owner_agent": "hermes",
|
||
"recommended_action": "建立 success-noise suppression、failure/action-required escalation 與每日摘要合約,只回傳 committed policy,不送通知。",
|
||
"action_class": "notification_policy",
|
||
"gate_status": "read_only_allowed",
|
||
"risk_level": "high",
|
||
"evidence_refs": [
|
||
"docs/schemas/backup_notification_policy_v1.schema.json",
|
||
"docs/evaluations/backup_notification_policy_2026-06-04.json",
|
||
"GET /api/v1/agents/backup-notification-policy"
|
||
],
|
||
"acceptance_criteria": [
|
||
"成功備份不得即時送 Telegram / AwoooP 洗版",
|
||
"warning / failed / action-required 必須可追蹤 evidence、incident 或 approval",
|
||
"API 不送通知、不執行 backup / restore / offsite sync、不寫 marker、不改排程或 workflow",
|
||
"daily summary 保留每日 06:05 台北時間成功狀態承載"
|
||
],
|
||
"next_review": "P1-103",
|
||
"approval_boundary": {
|
||
"mode": "read_only_allowed",
|
||
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
|
||
"allowed_actions": [
|
||
"讀取 committed snapshot",
|
||
"整理只讀證據",
|
||
"顯示治理 UI"
|
||
],
|
||
"blocked_actions": [
|
||
"production_write",
|
||
"runtime_execution",
|
||
"destructive_operation",
|
||
"secret_plaintext_collection",
|
||
"unapproved_deploy",
|
||
"unapproved_external_call"
|
||
],
|
||
"requires_operator_approval_for": [
|
||
"任何非只讀操作",
|
||
"任何部署、排程、通知或外部呼叫變更"
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"item_id": "AUTO-P1-104",
|
||
"priority": "P1",
|
||
"status": "done",
|
||
"workstream_id": "WS4",
|
||
"source_asset_id": "backup_dr_readiness_matrix",
|
||
"source_signal_kind": "ui_visibility_gap",
|
||
"title": "在 AwoooP / governance UI 加備份證據",
|
||
"owner_agent": "openclaw",
|
||
"recommended_action": "在 automation inventory tab 顯示 Backup / DR 目標、readiness matrix、通知政策、blocked / action-required 與 success-noise suppression 證據。",
|
||
"action_class": "execute_read_only",
|
||
"gate_status": "read_only_allowed",
|
||
"risk_level": "high",
|
||
"evidence_refs": [
|
||
"apps/web/src/app/[locale]/governance/tabs/automation-inventory-tab.tsx",
|
||
"GET /api/v1/agents/backup-dr-target-inventory",
|
||
"GET /api/v1/agents/backup-dr-readiness-matrix",
|
||
"GET /api/v1/agents/backup-notification-policy"
|
||
],
|
||
"acceptance_criteria": [
|
||
"顯示 Backup / DR 證據但不提供 backup、restore、offsite sync、credential marker、schedule 或 workflow 操作",
|
||
"顯示 ready、action-required、blocked、success suppressed 與 immediate escalation rollup",
|
||
"desktop 與 390px mobile 無橫向溢出",
|
||
"成功備份仍不得即時送 Telegram / AwoooP 洗版"
|
||
],
|
||
"next_review": "P1-104",
|
||
"approval_boundary": {
|
||
"mode": "read_only_allowed",
|
||
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
|
||
"allowed_actions": [
|
||
"讀取 committed snapshot",
|
||
"整理只讀證據",
|
||
"顯示治理 UI"
|
||
],
|
||
"blocked_actions": [
|
||
"production_write",
|
||
"runtime_execution",
|
||
"destructive_operation",
|
||
"secret_plaintext_collection",
|
||
"unapproved_deploy",
|
||
"unapproved_external_call"
|
||
],
|
||
"requires_operator_approval_for": [
|
||
"任何非只讀操作",
|
||
"任何部署、排程、通知或外部呼叫變更"
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"item_id": "AUTO-P1-105",
|
||
"priority": "P1",
|
||
"status": "done",
|
||
"workstream_id": "WS4",
|
||
"source_asset_id": "backup_restore_drill_approval_package_template",
|
||
"source_signal_kind": "approval_boundary",
|
||
"title": "定義復原演練批准包",
|
||
"owner_agent": "openclaw",
|
||
"recommended_action": "建立 read-only restore drill / escrow review approval package template,要求 evidence、precheck、blast radius、abort、rollback、OpenClaw 仲裁與 HITL;模板本身不執行 restore。",
|
||
"action_class": "backup_restore_approval_template",
|
||
"gate_status": "read_only_allowed",
|
||
"risk_level": "critical",
|
||
"evidence_refs": [
|
||
"docs/schemas/backup_restore_drill_approval_package_template_v1.schema.json",
|
||
"docs/evaluations/backup_restore_drill_approval_package_template_2026-06-05.json",
|
||
"GET /api/v1/agents/backup-restore-drill-approval-package-template"
|
||
],
|
||
"acceptance_criteria": [
|
||
"不執行 backup / restore / offsite sync",
|
||
"不寫 credential marker、不輸出 secret 明文",
|
||
"不改排程、不寫 workflow、不發 Telegram 測試通知",
|
||
"6 類批准包模板全部要求 OpenClaw 仲裁與 HITL",
|
||
"blocked / action-required 目標必須維持 blocked 或 action-required,不得被 UI 解讀為 ready"
|
||
],
|
||
"next_review": "P1-105",
|
||
"approval_boundary": {
|
||
"mode": "read_only_allowed",
|
||
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
|
||
"allowed_actions": [
|
||
"讀取 committed snapshot",
|
||
"整理只讀證據",
|
||
"顯示治理 UI"
|
||
],
|
||
"blocked_actions": [
|
||
"production_write",
|
||
"runtime_execution",
|
||
"destructive_operation",
|
||
"secret_plaintext_collection",
|
||
"unapproved_deploy",
|
||
"unapproved_external_call"
|
||
],
|
||
"requires_operator_approval_for": [
|
||
"任何非只讀操作",
|
||
"任何部署、排程、通知或外部呼叫變更"
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"item_id": "AUTO-P1-106",
|
||
"priority": "P1",
|
||
"status": "done",
|
||
"workstream_id": "WS4",
|
||
"source_asset_id": "offsite_escrow_readiness_status",
|
||
"source_signal_kind": "ui_visibility_gap",
|
||
"title": "顯示異地 / escrow 準備度狀態",
|
||
"owner_agent": "hermes",
|
||
"recommended_action": "建立 read-only offsite / escrow readiness status 與治理頁狀態區塊,顯示 offsite verified、credential escrow blocked、Velero action-required 與 credential redaction policy。",
|
||
"action_class": "execute_read_only",
|
||
"gate_status": "read_only_allowed",
|
||
"risk_level": "critical",
|
||
"evidence_refs": [
|
||
"docs/schemas/offsite_escrow_readiness_status_v1.schema.json",
|
||
"docs/evaluations/offsite_escrow_readiness_status_2026-06-05.json",
|
||
"GET /api/v1/agents/offsite-escrow-readiness-status",
|
||
"apps/web/src/app/[locale]/governance/tabs/automation-inventory-tab.tsx"
|
||
],
|
||
"acceptance_criteria": [
|
||
"不執行 offsite sync、backup、restore 或 Velero restore",
|
||
"不寫 credential marker、不讀 credential、不輸出 secret 明文",
|
||
"UI 必須把 credential_escrow_markers 維持 blocked,不能解讀成 full DR green",
|
||
"成功 offsite evidence 不即時送 Telegram / AwoooP 洗版",
|
||
"desktop 與 390px mobile 無橫向溢出"
|
||
],
|
||
"next_review": "P1-106",
|
||
"approval_boundary": {
|
||
"mode": "read_only_allowed",
|
||
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
|
||
"allowed_actions": [
|
||
"讀取 committed snapshot",
|
||
"整理只讀證據",
|
||
"顯示治理 UI"
|
||
],
|
||
"blocked_actions": [
|
||
"production_write",
|
||
"runtime_execution",
|
||
"destructive_operation",
|
||
"secret_plaintext_collection",
|
||
"unapproved_deploy",
|
||
"unapproved_external_call"
|
||
],
|
||
"requires_operator_approval_for": [
|
||
"任何非只讀操作",
|
||
"任何部署、排程、通知或外部呼叫變更"
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"item_id": "AUTO-P1-201",
|
||
"priority": "P1",
|
||
"status": "done",
|
||
"workstream_id": "WS5",
|
||
"source_asset_id": "api_python_packages",
|
||
"source_signal_kind": "dependency_gap",
|
||
"title": "盤點 API Python 依賴",
|
||
"owner_agent": "hermes",
|
||
"recommended_action": "產生 Python package snapshot,列出版本、風險、CVE 後續掃描入口與升級批准邊界。",
|
||
"action_class": "dependency_scan",
|
||
"gate_status": "read_only_allowed",
|
||
"risk_level": "medium",
|
||
"evidence_refs": [
|
||
"apps/api/requirements.txt",
|
||
"apps/api/pyproject.toml",
|
||
"docs/evaluations/package_supply_chain_inventory_2026-06-04.json",
|
||
"GET /api/v1/agents/package-supply-chain-inventory"
|
||
],
|
||
"acceptance_criteria": [
|
||
"不自動安裝或升級套件",
|
||
"升級只產生批准包",
|
||
"CVE / license / drift 以 read-only report 呈現",
|
||
"API pyproject / requirements manifest drift 已標為 action_required"
|
||
],
|
||
"next_review": "P1-201",
|
||
"approval_boundary": {
|
||
"mode": "read_only_allowed",
|
||
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
|
||
"allowed_actions": [
|
||
"讀取 committed snapshot",
|
||
"整理只讀證據",
|
||
"顯示治理 UI"
|
||
],
|
||
"blocked_actions": [
|
||
"production_write",
|
||
"runtime_execution",
|
||
"destructive_operation",
|
||
"secret_plaintext_collection",
|
||
"unapproved_deploy",
|
||
"unapproved_external_call"
|
||
],
|
||
"requires_operator_approval_for": [
|
||
"任何非只讀操作",
|
||
"任何部署、排程、通知或外部呼叫變更"
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"item_id": "AUTO-P1-202",
|
||
"priority": "P1",
|
||
"status": "done",
|
||
"workstream_id": "WS5",
|
||
"source_asset_id": "web_pnpm_packages",
|
||
"source_signal_kind": "dependency_gap",
|
||
"title": "盤點 Web pnpm/npm 依賴",
|
||
"owner_agent": "hermes",
|
||
"recommended_action": "產生 JS package snapshot,列出 workspace package、lockfile、風險與升級批准邊界。",
|
||
"action_class": "dependency_scan",
|
||
"gate_status": "read_only_allowed",
|
||
"risk_level": "medium",
|
||
"evidence_refs": [
|
||
"apps/web/package.json",
|
||
"pnpm-lock.yaml",
|
||
"docs/evaluations/javascript_package_inventory_2026-06-04.json",
|
||
"GET /api/v1/agents/javascript-package-inventory"
|
||
],
|
||
"acceptance_criteria": [
|
||
"不自動安裝或升級套件",
|
||
"不改 lockfile",
|
||
"只輸出 drift report 與批准包需求",
|
||
"manifest 與 pnpm-lock.yaml importer specifier 已確認同步"
|
||
],
|
||
"next_review": "P1-202",
|
||
"approval_boundary": {
|
||
"mode": "read_only_allowed",
|
||
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
|
||
"allowed_actions": [
|
||
"讀取 committed snapshot",
|
||
"整理只讀證據",
|
||
"顯示治理 UI"
|
||
],
|
||
"blocked_actions": [
|
||
"production_write",
|
||
"runtime_execution",
|
||
"destructive_operation",
|
||
"secret_plaintext_collection",
|
||
"unapproved_deploy",
|
||
"unapproved_external_call"
|
||
],
|
||
"requires_operator_approval_for": [
|
||
"任何非只讀操作",
|
||
"任何部署、排程、通知或外部呼叫變更"
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"item_id": "AUTO-P1-203",
|
||
"priority": "P1",
|
||
"status": "done",
|
||
"workstream_id": "WS5",
|
||
"source_asset_id": "docker_base_images",
|
||
"source_signal_kind": "dependency_gap",
|
||
"title": "盤點 Docker base image 與 build surface",
|
||
"owner_agent": "hermes",
|
||
"recommended_action": "建立 Docker base image risk snapshot,列出 API/Web Dockerfile、image tag 與建置風險。",
|
||
"action_class": "dependency_scan",
|
||
"gate_status": "read_only_allowed",
|
||
"risk_level": "medium",
|
||
"evidence_refs": [
|
||
"apps/api/Dockerfile",
|
||
"apps/web/Dockerfile",
|
||
"docs/evaluations/docker_build_surface_inventory_2026-06-04.json",
|
||
"GET /api/v1/agents/docker-build-surface-inventory"
|
||
],
|
||
"acceptance_criteria": [
|
||
"不 build image",
|
||
"不推 registry",
|
||
"只產生 image risk snapshot 與後續批准包",
|
||
"base image digest pin、binary source、network fetch 風險已標成 action_required"
|
||
],
|
||
"next_review": "P1-203",
|
||
"approval_boundary": {
|
||
"mode": "read_only_allowed",
|
||
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
|
||
"allowed_actions": [
|
||
"讀取 committed snapshot",
|
||
"整理只讀證據",
|
||
"顯示治理 UI"
|
||
],
|
||
"blocked_actions": [
|
||
"production_write",
|
||
"runtime_execution",
|
||
"destructive_operation",
|
||
"secret_plaintext_collection",
|
||
"unapproved_deploy",
|
||
"unapproved_external_call"
|
||
],
|
||
"requires_operator_approval_for": [
|
||
"任何非只讀操作",
|
||
"任何部署、排程、通知或外部呼叫變更"
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"item_id": "AUTO-P1-204",
|
||
"priority": "P1",
|
||
"status": "done",
|
||
"workstream_id": "WS5",
|
||
"source_asset_id": "dependency_risk_policy",
|
||
"source_signal_kind": "dependency_gap",
|
||
"title": "定義 CVE / license / drift 嚴重度政策",
|
||
"owner_agent": "openclaw",
|
||
"recommended_action": "建立 dependency risk policy,只依 repo 內既有盤點定義 critical/high/medium/low、gate、角色分工與禁止操作。",
|
||
"action_class": "dependency_policy",
|
||
"gate_status": "read_only_allowed",
|
||
"risk_level": "high",
|
||
"evidence_refs": [
|
||
"docs/schemas/dependency_risk_policy_v1.schema.json",
|
||
"docs/evaluations/dependency_risk_policy_2026-06-04.json",
|
||
"GET /api/v1/agents/dependency-risk-policy"
|
||
],
|
||
"acceptance_criteria": [
|
||
"不查外部 CVE / license 來源",
|
||
"不安裝或升級套件",
|
||
"不寫 lockfile",
|
||
"不執行 docker build / image pull / registry push",
|
||
"12 條嚴重度規則與 rollup 一致,並明確標示 OpenClaw / Hermes / NemoTron 角色"
|
||
],
|
||
"next_review": "P1-204",
|
||
"approval_boundary": {
|
||
"mode": "read_only_allowed",
|
||
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
|
||
"allowed_actions": [
|
||
"讀取 committed snapshot",
|
||
"整理只讀證據",
|
||
"顯示治理 UI"
|
||
],
|
||
"blocked_actions": [
|
||
"production_write",
|
||
"runtime_execution",
|
||
"destructive_operation",
|
||
"secret_plaintext_collection",
|
||
"unapproved_deploy",
|
||
"unapproved_external_call"
|
||
],
|
||
"requires_operator_approval_for": [
|
||
"任何非只讀操作",
|
||
"任何部署、排程、通知或外部呼叫變更"
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"item_id": "AUTO-P1-205",
|
||
"priority": "P1",
|
||
"status": "done",
|
||
"workstream_id": "WS5",
|
||
"source_asset_id": "dependency_drift_check_plan",
|
||
"source_signal_kind": "dependency_gap",
|
||
"title": "建立定期依賴漂移與外部資料來源檢查設計",
|
||
"owner_agent": "hermes",
|
||
"recommended_action": "建立 read-only drift/source watch plan,列出 repo-only local checks、外部 CVE/license/registry/Agent market 來源候選、cache、rate limit、failure-only notification 與批准邊界。",
|
||
"action_class": "dependency_scan_design",
|
||
"gate_status": "read_only_allowed",
|
||
"risk_level": "high",
|
||
"evidence_refs": [
|
||
"docs/schemas/dependency_drift_check_plan_v1.schema.json",
|
||
"docs/evaluations/dependency_drift_check_plan_2026-06-04.json",
|
||
"GET /api/v1/agents/dependency-drift-check-plan"
|
||
],
|
||
"acceptance_criteria": [
|
||
"不啟用排程",
|
||
"不寫 Gitea workflow",
|
||
"不查外部 CVE / license / registry / Agent market 來源",
|
||
"不安裝 SDK、不呼叫付費 API",
|
||
"列出 5 個 local checks、10 個外部來源候選與 failure-only notification policy"
|
||
],
|
||
"next_review": "P1-205",
|
||
"approval_boundary": {
|
||
"mode": "read_only_allowed",
|
||
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
|
||
"allowed_actions": [
|
||
"讀取 committed snapshot",
|
||
"整理只讀證據",
|
||
"顯示治理 UI"
|
||
],
|
||
"blocked_actions": [
|
||
"production_write",
|
||
"runtime_execution",
|
||
"destructive_operation",
|
||
"secret_plaintext_collection",
|
||
"unapproved_deploy",
|
||
"unapproved_external_call"
|
||
],
|
||
"requires_operator_approval_for": [
|
||
"任何非只讀操作",
|
||
"任何部署、排程、通知或外部呼叫變更"
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"item_id": "AUTO-P1-206",
|
||
"priority": "P1",
|
||
"status": "done",
|
||
"workstream_id": "WS5",
|
||
"source_asset_id": "dependency_upgrade_approval_package_template",
|
||
"source_signal_kind": "dependency_gap",
|
||
"title": "產生依賴升級、digest pin、publish boundary 批准包模板",
|
||
"owner_agent": "openclaw",
|
||
"recommended_action": "建立 read-only approval package template,要求證據、風險分級、blast radius、rollback、測試、OpenClaw 仲裁與 HITL;模板本身不執行升級或修改。",
|
||
"action_class": "dependency_approval_template",
|
||
"gate_status": "read_only_allowed",
|
||
"risk_level": "high",
|
||
"evidence_refs": [
|
||
"docs/schemas/dependency_upgrade_approval_package_template_v1.schema.json",
|
||
"docs/evaluations/dependency_upgrade_approval_package_template_2026-06-04.json",
|
||
"GET /api/v1/agents/dependency-upgrade-approval-package-template"
|
||
],
|
||
"acceptance_criteria": [
|
||
"不安裝或升級套件",
|
||
"不寫 manifest / lockfile / Dockerfile",
|
||
"不執行 docker build / image pull / registry push",
|
||
"不 publish package",
|
||
"8 類批准包模板全部要求 HITL"
|
||
],
|
||
"next_review": "P1-206",
|
||
"approval_boundary": {
|
||
"mode": "read_only_allowed",
|
||
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
|
||
"allowed_actions": [
|
||
"讀取 committed snapshot",
|
||
"整理只讀證據",
|
||
"顯示治理 UI"
|
||
],
|
||
"blocked_actions": [
|
||
"production_write",
|
||
"runtime_execution",
|
||
"destructive_operation",
|
||
"secret_plaintext_collection",
|
||
"unapproved_deploy",
|
||
"unapproved_external_call"
|
||
],
|
||
"requires_operator_approval_for": [
|
||
"任何非只讀操作",
|
||
"任何部署、排程、通知或外部呼叫變更"
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"item_id": "AUTO-P2-004",
|
||
"priority": "P2",
|
||
"status": "planned",
|
||
"workstream_id": "WS6",
|
||
"source_asset_id": "ai_router",
|
||
"source_signal_kind": "approval_boundary",
|
||
"title": "AI Router / provider 成本與 fallback 優化提案",
|
||
"owner_agent": "openclaw",
|
||
"recommended_action": "只產生模型路由建議與費用估算,不切 provider、不增加呼叫頻率。",
|
||
"action_class": "recommend",
|
||
"gate_status": "cost_approval_required",
|
||
"risk_level": "critical",
|
||
"evidence_refs": [
|
||
"docs/HARD_RULES.md",
|
||
"docs/ai/AI_AGENT_AUTOMATION_WORKLIST_2026-06-04.md"
|
||
],
|
||
"acceptance_criteria": [
|
||
"任何付費 API 或呼叫頻率增加都需費用批准",
|
||
"不得在本項目內切換 provider",
|
||
"輸出需包含成本、fallback、latency、資料邊界"
|
||
],
|
||
"next_review": "P2-004",
|
||
"approval_boundary": {
|
||
"mode": "cost_approval_required",
|
||
"display_summary": "涉及付費 API 或成本變更;費用批准前只能產生只讀估算與替代方案。",
|
||
"allowed_actions": [
|
||
"估算成本",
|
||
"整理替代方案",
|
||
"準備費用批准包"
|
||
],
|
||
"blocked_actions": [
|
||
"production_write",
|
||
"runtime_execution",
|
||
"destructive_operation",
|
||
"secret_plaintext_collection",
|
||
"paid_api_call",
|
||
"call_frequency_increase",
|
||
"provider_switch"
|
||
],
|
||
"requires_operator_approval_for": [
|
||
"付費 API 呼叫",
|
||
"呼叫頻率增加",
|
||
"新 provider 或 SDK 導入"
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"item_id": "AUTO-P3-001",
|
||
"priority": "P3",
|
||
"status": "planned",
|
||
"workstream_id": "WS2",
|
||
"source_asset_id": "nemotron_candidate",
|
||
"source_signal_kind": "market_signal",
|
||
"title": "刷新 Nemotron 來源證據",
|
||
"owner_agent": "nemotron",
|
||
"recommended_action": "只用 primary sources 刷新 Nemotron source evidence,準備 5 筆 smoke 前置資料。",
|
||
"action_class": "observe",
|
||
"gate_status": "blocked_by_evidence",
|
||
"risk_level": "high",
|
||
"evidence_refs": [
|
||
"docs/evaluations/agent_market_governance_snapshot_2026-06-04.json",
|
||
"docs/evaluations/agent_nemotron_contract_tuned_smoke_matrix_2026-06-02.json"
|
||
],
|
||
"acceptance_criteria": [
|
||
"不得呼叫付費 API",
|
||
"不得自行進入 shadow / canary",
|
||
"只更新 primary source evidence",
|
||
"5 筆 smoke 仍需通過現有 approval gate"
|
||
],
|
||
"next_review": "P3-001",
|
||
"approval_boundary": {
|
||
"mode": "blocked_by_evidence",
|
||
"display_summary": "來源證據不足;補齊 primary source 與 smoke 前不得進入執行、shadow 或 canary。",
|
||
"allowed_actions": [
|
||
"刷新 primary source evidence",
|
||
"整理離線 smoke 前置資料",
|
||
"列出證據缺口"
|
||
],
|
||
"blocked_actions": [
|
||
"production_write",
|
||
"runtime_execution",
|
||
"destructive_operation",
|
||
"secret_plaintext_collection",
|
||
"shadow_or_canary_entry",
|
||
"provider_replacement",
|
||
"paid_api_call"
|
||
],
|
||
"requires_operator_approval_for": [
|
||
"證據採納",
|
||
"smoke 啟動",
|
||
"shadow / canary 進入"
|
||
]
|
||
}
|
||
}
|
||
],
|
||
"approval_boundaries": {
|
||
"sdk_installation_allowed": false,
|
||
"paid_api_call_allowed": false,
|
||
"shadow_or_canary_allowed": false,
|
||
"production_routing_allowed": false,
|
||
"destructive_operation_allowed": false
|
||
},
|
||
"item_approval_boundary_rollup": {
|
||
"total_items": 25,
|
||
"by_mode": {
|
||
"read_only_allowed": 22,
|
||
"production_change_blocked": 1,
|
||
"cost_approval_required": 1,
|
||
"blocked_by_evidence": 1
|
||
},
|
||
"items_requiring_explicit_approval": [
|
||
"AUTO-P1-004",
|
||
"AUTO-P2-004",
|
||
"AUTO-P3-001"
|
||
],
|
||
"items_with_blocked_operations": [
|
||
"AUTO-P1-001",
|
||
"AUTO-P1-002",
|
||
"AUTO-P1-003",
|
||
"AUTO-P1-004",
|
||
"AUTO-P1-005",
|
||
"AUTO-P1-006",
|
||
"AUTO-P1-007",
|
||
"AUTO-P1-101",
|
||
"AUTO-P1-102",
|
||
"AUTO-P1-103",
|
||
"AUTO-P1-104",
|
||
"AUTO-P1-105",
|
||
"AUTO-P1-106",
|
||
"AUTO-P1-201",
|
||
"AUTO-P1-202",
|
||
"AUTO-P1-203",
|
||
"AUTO-P1-204",
|
||
"AUTO-P1-205",
|
||
"AUTO-P1-206",
|
||
"AUTO-P1-303",
|
||
"AUTO-P1-304",
|
||
"AUTO-P1-305",
|
||
"AUTO-P1-306",
|
||
"AUTO-P2-004",
|
||
"AUTO-P3-001"
|
||
],
|
||
"read_only_item_ids": [
|
||
"AUTO-P1-303",
|
||
"AUTO-P1-304",
|
||
"AUTO-P1-305",
|
||
"AUTO-P1-306",
|
||
"AUTO-P1-001",
|
||
"AUTO-P1-002",
|
||
"AUTO-P1-003",
|
||
"AUTO-P1-005",
|
||
"AUTO-P1-006",
|
||
"AUTO-P1-007",
|
||
"AUTO-P1-101",
|
||
"AUTO-P1-102",
|
||
"AUTO-P1-103",
|
||
"AUTO-P1-104",
|
||
"AUTO-P1-105",
|
||
"AUTO-P1-106",
|
||
"AUTO-P1-201",
|
||
"AUTO-P1-202",
|
||
"AUTO-P1-203",
|
||
"AUTO-P1-204",
|
||
"AUTO-P1-205",
|
||
"AUTO-P1-206"
|
||
]
|
||
},
|
||
"progress_summary": {
|
||
"overall_percent": 92,
|
||
"done_items": 23,
|
||
"planned_items": 2,
|
||
"total_items": 25,
|
||
"formula": "round(done_items / total_items * 100),只有 status=done 計入完成;planned/in_progress/blocked/deferred/rejected 不計入。",
|
||
"by_priority": [
|
||
{
|
||
"priority": "P1",
|
||
"completion_percent": 100,
|
||
"done_items": 23,
|
||
"total_items": 23
|
||
},
|
||
{
|
||
"priority": "P2",
|
||
"completion_percent": 0,
|
||
"done_items": 0,
|
||
"total_items": 1
|
||
},
|
||
{
|
||
"priority": "P3",
|
||
"completion_percent": 0,
|
||
"done_items": 0,
|
||
"total_items": 1
|
||
}
|
||
],
|
||
"by_workstream": [
|
||
{
|
||
"workstream_id": "WS2",
|
||
"display_name": "自動化待辦",
|
||
"completion_percent": 67,
|
||
"done_items": 2,
|
||
"total_items": 3,
|
||
"next_task_id": "P3-001"
|
||
},
|
||
{
|
||
"workstream_id": "WS8",
|
||
"display_name": "產品 UI",
|
||
"completion_percent": 100,
|
||
"done_items": 2,
|
||
"total_items": 2,
|
||
"next_task_id": "complete"
|
||
},
|
||
{
|
||
"workstream_id": "WS3",
|
||
"display_name": "監控自動化",
|
||
"completion_percent": 100,
|
||
"done_items": 6,
|
||
"total_items": 6,
|
||
"next_task_id": "complete"
|
||
},
|
||
{
|
||
"workstream_id": "WS7",
|
||
"display_name": "安全執行關卡",
|
||
"completion_percent": 100,
|
||
"done_items": 1,
|
||
"total_items": 1,
|
||
"next_task_id": "complete"
|
||
},
|
||
{
|
||
"workstream_id": "WS4",
|
||
"display_name": "備份與 DR 自動化",
|
||
"completion_percent": 100,
|
||
"done_items": 6,
|
||
"total_items": 6,
|
||
"next_task_id": "complete"
|
||
},
|
||
{
|
||
"workstream_id": "WS5",
|
||
"display_name": "套件與供應鏈自動化",
|
||
"completion_percent": 100,
|
||
"done_items": 6,
|
||
"total_items": 6,
|
||
"next_task_id": "complete"
|
||
},
|
||
{
|
||
"workstream_id": "WS6",
|
||
"display_name": "配置優化",
|
||
"completion_percent": 0,
|
||
"done_items": 0,
|
||
"total_items": 1,
|
||
"next_task_id": "P2-004"
|
||
}
|
||
]
|
||
}
|
||
}
|