diff --git a/docs/LOGBOOK.md b/docs/LOGBOOK.md index 775234d5..47cffdf4 100644 --- a/docs/LOGBOOK.md +++ b/docs/LOGBOOK.md @@ -1,3 +1,37 @@ +## 2026-06-26|D1E AwoooP Approvals:批准後 executor handoff readiness 前台可見 + +**背景**:使用者指出 Telegram 告警批准後仍沒有真正自動化,AwoooP Approvals 也看不到可操作選項或清楚人工接手方式。程式碼讀回確認 `adr100_runtime_replay_gate5` 投影型 approval 會被 API 以 `409` 阻擋,原因是尚未接上 `auto_repair_executor` 執行 handoff;但 Approvals 頁只顯示「等待 executor handoff」與一般 Work Items 連結,沒有把缺少的 owner review / 安全路由 / verifier 條件前移。 + +**完成內容**: +- `/zh-TW/awooop/approvals` 的焦點 Incident 區塊新增 `Executor handoff readiness` 卡。 +- 直接顯示可交接度、ready / total、blocked count、status、`runtime gate closed`、下一步、阻擋原因與缺少的 owner review / 安全路由欄位。 +- `開啟 owner review` 連到同一 Incident / Work Item;`追蹤 Runs` 連到同一 Incident 的 Runs。 +- 平台 approval API 查詢補上 `project_id` filter,避免跨產品納管後把不同專案的待審資料混在一起。 +- 不把批准卡誤導成執行卡;不觸發 executor、不套用 PlayBook、不執行 Ansible、不發 Telegram、不重啟服務、不開 runtime gate。 + +**Commit / deploy**: +- Code commit:`2239507e0 fix(web): expose approval executor handoff readiness`。 +- Deploy marker:`335d5f4a7 chore(cd): deploy 2239507 [skip ci]`。 +- 中間平行 commit:`18a35c5e6 fix(ops): avoid unknown stock blockers when fresh` 已包含本段 code commit,且本地已 fast-forward 到 deploy marker。 + +**正式站驗證**: +- Desktop:`https://awoooi.wooo.work/zh-TW/awooop/approvals?project_id=awoooi&incident_id=INC-PROD-D4&_v=335d5f4a-approval-handoff-readiness-desktop`,`Executor handoff readiness`、`可交接度`、`runtime gate closed`、`開啟 owner review`、`追蹤 Runs` 可見;Work Items / Runs href 可用;`horizontalOverflow=false`、`appError=false`。 +- Mobile:`https://awoooi.wooo.work/zh-TW/awooop/approvals?project_id=awoooi&incident_id=INC-PROD-D4&_v=335d5f4a-approval-handoff-readiness-mobile`,同組內容可見;`clientWidth=384`、`scrollWidth=384`、`horizontalOverflow=false`、`appError=false`、操作入口 2 個且皆為導覽入口。 +- 截圖:`/tmp/awoooi-approvals-handoff-readiness-desktop-335d5f4a.png`、`/tmp/awoooi-approvals-handoff-readiness-mobile-335d5f4a.png`。 + +**完成度**: +- Approvals executor handoff readiness 可視化:正式站 `100%`。 +- Telegram / AwoooP 告警自動化可追蹤性:`98% -> 99%`。 +- 真正 AI 自動化 runtime 閉環:仍 `15-25%`。 +- active runtime gate:仍 `0`。 + +**後續缺口**: +- 下一步必須讓新告警或重診真的產生 `repair_candidate_promotion_contract_v1`,再走 owner release、maintenance window、rollback owner、controlled execution、post-apply verifier 與 KM / PlayBook trust 回寫。 +- 舊 Incident 不會 retroactive 生成完整 promotion contract;需以新 incident / 重診驗證 approval -> controlled execution -> verifier -> KM / PlayBook trust 全鏈。 + +**邊界**: +- 本段沒有 runtime execution、沒有 service restart、沒有 Ansible apply、沒有 Telegram send、沒有 provider switch、沒有 active scan、沒有 SSH、沒有 secret read。 + ## 2026-06-26|D1D Knowledge Base 首屏補強:KM / PlayBook / RAG 缺口可見化 **背景**:使用者指出 KM、PlayBook、腳本、排程、自動化機制與 Verifier 沉澱結果在頁面看不到,會讓 AI 自動化成果等於沒有做。正式 API 讀回確認知識庫並非無資料:`/api/v1/knowledge?project_id=awoooi&limit=50` 回 `total=667`;真正問題是首屏沒有把「哪些資產有沉澱、哪些仍缺」說清楚,且 `/api/v1/knowledge/rag/stats` 顯示 RAG chunks / sources 仍為 `0 / 0`。 diff --git a/docs/workplans/2026-06-04-iwooos-security-governance-p0.md b/docs/workplans/2026-06-04-iwooos-security-governance-p0.md index eaff4598..eb56df4e 100644 --- a/docs/workplans/2026-06-04-iwooos-security-governance-p0.md +++ b/docs/workplans/2026-06-04-iwooos-security-governance-p0.md @@ -9,7 +9,7 @@ | 工作視窗 | IwoooS / AWOOOI 資安治理 P0 | | 本次乾淨 worktree | `/private/tmp/awoooi-owner-release-closure-20260626` | | 本次分支 | `codex/owner-release-closure-20260626`;推送時使用一般 push,不 force push | -| 最新觀察到的 `gitea/main` | `6be83053 chore(cd): deploy 06dd4d0 [skip ci]`;本輪 AwoooP 修復候選升級合約由 `06dd4d0f` 完成,並隨 deploy marker `6be83053` 完成 production health / status-chain readback;active runtime gate 仍為 `0` | +| 最新觀察到的 `gitea/main` | `335d5f4a chore(cd): deploy 2239507 [skip ci]`;本輪 AwoooP Approvals executor handoff readiness 由 `2239507e` 完成,正式站 desktop / mobile 已確認 `Executor handoff readiness`、`可交接度`、`runtime gate closed`、owner review / Runs 導覽可見且無水平溢出;active runtime gate 仍為 `0` | | 最新 P0 Telegram 告警 / 批准執行真相鏈基準 | code `32e4beca`、deploy marker `717b5870`、code-review `2658`、CD `2657`;no-action approval 不再觸發 executor,可執行修復 approval 會寫入 `auto_repair_executions`、KM 與 verifier | | 最新 P0 Telegram no-action 人工處置包基準 | code `cd928852`、deploy marker `9181cc0e`、code-review `2666`;正式部署 tree 已包含 no-action 人工處置包、`處置包 / 重診 / 歷史 / 靜默 / 真相鏈 / Runs` 鍵盤、production pod render / keyboard smoke | | 最新 P0 MCP evidence / PlayBook 修復候選基準 | code `cc614023`、D1 blocker clarity `47d677ac`、D2 manual draft package `febe9ecf`、D3 draft work item `e8d5eafb`、D4 work item detail panel `e8a5bac5`、D5 coverage gap contract、D6 PostgreSQL 慢查詢分類 / database owner-review candidate、blocker normalization `4c85db18`、apply candidate 語意 `5ce6fc49` / `ef3ee4c4`、apply gate 閉環準備度 `d798d09e` / deploy marker `e0fbedfd`、Owner 放行閉環任務板 `c67dc92f` / deploy marker `7f204ca7`、受控執行前檢 `7c220fd0` / deploy marker `f068826f`、執行放行合約 `5055d6a4` / final deploy marker `5d41fe26`、告警自動化卡點總盤 `94800473` / final deploy marker `b1a15114`、修復候選升級合約 `06dd4d0f` / deploy marker `6be83053`。正式站已確認可由 MCP evidence + approved PlayBook trust 產生 medium approval candidate;若只跑 Ansible check-mode,Work Items / Runs 會顯示 `3/8 ready` 閉環矩陣、5 個閉環任務、`2/7 ready` 受控執行前檢、`4/11 ready` 執行放行合約,以及 7 條告警自動化卡點 lane;draft-ready path 會在下一次候選生成時帶出 `repair_candidate_promotion_contract_v1`、ready / total / blocked 計數、route、repair template、rollback 與 verifier;runtime gate 仍為 `0` | @@ -65,7 +65,7 @@ | Observability AI 自動化資產與訊號總帳 | 本地 `100%`;正式站 desktop / mobile `100%` | 是,僅限主機 / 專案 / 網站 / 服務 / 監控訊號 / KM / PlayBook / Verifier / SRE 路由 readback | `/zh-TW/observability` 已把 `AI 自動化資產與訊號總帳` 前移到首屏,6 張卡顯示全域資產、監控訊號、服務健康、KM / PlayBook / Verifier、SRE 戰情室、Runtime Gate;總帳區操作入口 `0`,不 live probe、不 reload、不改規則、不發 Telegram、不套用修復 | | Tenants 全域產品 / 網站 / 來源資產地圖 | 本地 `100%`;正式站 desktop / mobile `100%` | 是,僅限產品 / 專案、網站 / 服務入口、來源範圍、租戶資料與 gate readback | `/zh-TW/awooop/tenants` 已把 `全域資產地圖` 前移到首屏,直接顯示 `57` 個可視資產、`16 個產品 / 專案`、`31 個網站 / 服務入口`、`10 個來源範圍`、分類堆疊、route chips、主要來源就緒、已接受回覆、執行閘門與操作入口;不改租戶政策、不改路由、不部署、不掃描、不建立 repo、不開 runtime gate | | 日報 / 週報 / 月報與 AI Agent 報表資料鏈路 | Weekly report 資料缺口止血本地 `100%`、正式部署 `100%`;Reports 總控正式站 `100%`;P2-109 source health read model 正式站 `100%`;P2-110 weekly no-send preview 正式站 `100%`;P2-110B daily / monthly no-send preview 正式站 `100%`;P2-110C SRE digest no-send preview 正式站 `100%`;P2-110D source gap PlayBook / Verifier readback 正式站 `100%`;P2-110E AwoooP Work Items owner review 正式站 `100%`;P2-410 action audit ledger production API `100%`;報表產品化總控 `94%` | 是,僅限資料源 truthfulness、全 0 判讀、Reports 首屏總控、no-send preview、資產沉澱、PlayBook / Verifier 缺口處置板、AwoooP Work Items owner review、audit event template 與下一步工作項 | `ac325852` / deploy marker `a4b30964` 已修正週報 Git 活動讀取失敗時假性輸出 `0`;`6d4fa7bf` / `5e849225` / `63a75f77` 已把 `/zh-TW/reports` 改成 `報表 / 告警 AI 接管總控`;`27d9f394` / deploy marker `d8862123` 新增 `agent-report-source-health`;`a46e31ba` / `48e06c6a` / deploy marker `3057342a` 已讓 weekly preview 回傳 source `2/5`、confidence `40`、三個 `report-source-gap:*` 與 KM / PlayBook / Verifier 沉澱;`77fe2a85` / deploy marker `29fe6ec8` 已讓 daily / monthly preview 也回傳同一 source health、formatted preview 與 KM / PlayBook / 腳本 / 排程 / Verifier 沉澱;`7e03b923` / deploy marker `c7c0d874` 已新增 SRE 戰情室 digest preview,回傳 live send allowed `0`、runtime gate `0` 與同一批沉澱;`6ab640e4` / deploy marker `049dc0a8` 已讓 `agent-report-source-health` 與 `/zh-TW/reports` 顯示三張 source gap PlayBook / Verifier 處置卡;`ca04b49d` / deploy marker `c33dd9a6` 已讓 `/zh-TW/awooop/work-items` 顯示 source `2/5`、資料缺口 `3`、PlayBook 草案 `3`、Verifier 計畫 `3`、owner review `3`、腳本 readback、排程 no-send 與 runtime gate `0`;P2-410 feature commit `e13f716c` / deploy marker `38e60192` 已讓 `/api/v1/agents/agent-action-audit-ledger` 正式回讀 report source gap 與 SRE digest no-send preview audit event template;仍需接 governance projection 與 receipt gate,不發 live Telegram、不改排程、不開 runtime gate | -| Telegram 監控告警 / 批准執行真相鏈 | outbound 主鏈路 `100%`;批准後執行止血 `100%`;no-action 人工處置包 D0 `100%`;MCP / PlayBook 修復候選 D10 `97%`;Approvals / Runs / Alerts / Knowledge Base / Observability / Tenants / Telegram 告警卡資產沉澱矩陣 `100% / incident focus desktop+mobile 100% / 100% / 100% / 100% / 100% / formatter+deploy 100%`;blocker 語意正確性 `88%`;apply candidate 語意 `100%`;apply gate 閉環準備度正式站 `100%`;Owner 放行閉環任務板正式站 `100%`;受控執行前檢正式站 `100%`;執行放行合約正式站 `100%`;告警自動化卡點總盤正式站 `100%`;治理長期項 `98%` | 是,僅限候選產生、阻擋原因、人工草案包、AwoooP 工作項可追蹤性、Work Items 詳細接手板、Approvals / Runs / Alerts / Knowledge Base / Observability / Tenants / Telegram 告警卡資產沉澱欄、coverage gap metadata、apply gate 閉環矩陣、Owner 放行閉環任務板、受控執行前檢、執行放行合約與告警自動化卡點總盤 | 已修復 Alertmanager tenant context、既有 approval 收斂告警 recurrence、AI 分析中重複告警 recurrence、no-action approval 誤導執行、可執行修復 execution / KM / verifier 紀錄、no-action 人工處置包、MCP evidence / PlayBook trust 候選產生、通用兜底 / 診斷型 PlayBook 阻擋理由、缺候選時的 PlayBook 草案欄位 / 下一步 / AwoooP work item 入口與詳細處置板、blocked result 的服務 coverage gap / blocking stage / required MCP evidence refs、PostgreSQL 慢查詢告警分類防混線與 database owner-review candidate,以及 Approvals / Runs / Alerts / Knowledge Base / Observability / Tenants / Telegram 告警卡的 `KM / PlayBook / 腳本 / 排程 / Verifier` 資產沉澱矩陣;Runs / Work Items 已顯示 Work Item、dry-run、apply candidate、verifier、下一步資產 ID、`3/8 ready` apply gate 閉環矩陣、Owner 放行包 / Verifier 放行前檢 / 5 個閉環任務、`2/7 ready` 受控執行前檢、`4/11 ready` 執行放行合約,以及告警自動化卡點總盤 7 條 lane:證據、候選、PlayBook / Ansible、安全路由、執行放行、Verifier、KM / Trust 回寫;status-chain blocker 已把缺失顯示為 `auto_repair_missing` / `verification_missing` / `learning_missing`,不再把未完成 gate 顯示成 `*_recorded`;Ansible check-mode-only 已改顯示為 `apply_candidate_owner_review_ready` 與 `dry_run_passed_apply_candidate_ready`,下一步固定指向 owner 放行、維護窗口、rollback owner、blast radius、受控執行、post-apply verifier、KM 與 PlayBook trust 回寫;完整自動修復飛輪仍需用真實告警驗證 approval -> controlled execution -> verifier -> KM / PlayBook trust 全鏈,不調高 runtime gate | +| Telegram 監控告警 / 批准執行真相鏈 | outbound 主鏈路 `100%`;批准後執行止血 `100%`;no-action 人工處置包 D0 `100%`;MCP / PlayBook 修復候選 D10 `97%`;Approvals / Runs / Alerts / Knowledge Base / Observability / Tenants / Telegram 告警卡資產沉澱矩陣 `100% / incident focus desktop+mobile 100% / 100% / 100% / 100% / 100% / formatter+deploy 100%`;Approvals executor handoff readiness 正式站 `100%`;blocker 語意正確性 `88%`;apply candidate 語意 `100%`;apply gate 閉環準備度正式站 `100%`;Owner 放行閉環任務板正式站 `100%`;受控執行前檢正式站 `100%`;執行放行合約正式站 `100%`;告警自動化卡點總盤正式站 `100%`;治理長期項 `99%` | 是,僅限候選產生、阻擋原因、人工草案包、AwoooP 工作項可追蹤性、Work Items 詳細接手板、Approvals executor handoff readiness、Approvals / Runs / Alerts / Knowledge Base / Observability / Tenants / Telegram 告警卡資產沉澱欄、coverage gap metadata、apply gate 閉環矩陣、Owner 放行閉環任務板、受控執行前檢、執行放行合約與告警自動化卡點總盤 | 已修復 Alertmanager tenant context、既有 approval 收斂告警 recurrence、AI 分析中重複告警 recurrence、no-action approval 誤導執行、可執行修復 execution / KM / verifier 紀錄、no-action 人工處置包、MCP evidence / PlayBook trust 候選產生、通用兜底 / 診斷型 PlayBook 阻擋理由、缺候選時的 PlayBook 草案欄位 / 下一步 / AwoooP work item 入口與詳細處置板、blocked result 的服務 coverage gap / blocking stage / required MCP evidence refs、PostgreSQL 慢查詢告警分類防混線與 database owner-review candidate,以及 Approvals / Runs / Alerts / Knowledge Base / Observability / Tenants / Telegram 告警卡的 `KM / PlayBook / 腳本 / 排程 / Verifier` 資產沉澱矩陣;Approvals 焦點 Incident 已新增 `Executor handoff readiness`,顯示可交接度、runtime gate、下一步、阻擋原因、缺 owner review / 安全路由欄位與 Work Item / Runs 導覽;Runs / Work Items 已顯示 Work Item、dry-run、apply candidate、verifier、下一步資產 ID、`3/8 ready` apply gate 閉環矩陣、Owner 放行包 / Verifier 放行前檢 / 5 個閉環任務、`2/7 ready` 受控執行前檢、`4/11 ready` 執行放行合約,以及告警自動化卡點總盤 7 條 lane:證據、候選、PlayBook / Ansible、安全路由、執行放行、Verifier、KM / Trust 回寫;status-chain blocker 已把缺失顯示為 `auto_repair_missing` / `verification_missing` / `learning_missing`,不再把未完成 gate 顯示成 `*_recorded`;Ansible check-mode-only 已改顯示為 `apply_candidate_owner_review_ready` 與 `dry_run_passed_apply_candidate_ready`,下一步固定指向 owner 放行、維護窗口、rollback owner、blast radius、受控執行、post-apply verifier、KM 與 PlayBook trust 回寫;完整自動修復飛輪仍需用真實告警驗證 approval -> controlled execution -> verifier -> KM / PlayBook trust 全鏈,不調高 runtime gate | ## 2. P0 工作拆解與優先順序