{
  "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"
      }
    ]
  }
}
