diff --git a/docs/LOGBOOK.md b/docs/LOGBOOK.md index 471c1100..5a8411a4 100644 --- a/docs/LOGBOOK.md +++ b/docs/LOGBOOK.md @@ -81,6 +81,40 @@ - 不切 GitHub primary、不執行 rollback、不同步 / 刪除 refs、不 force push、不建立 repo、不改 visibility、不改 workflow / secret / runner、不停用 Gitea。 - 未來即使 owner response 通過,也只能先更新 read-only rollback ADR、primary readiness wording、approval board 與 status rollup;真正 cutover / rollback 仍需獨立人工批准、dry-run、runtime gate、rollback plan 與 post-check。 +## 2026-06-04|AwoooP Runs Operator Status Chain Fallback + +**背景**:Phase 1 盤點發現 Runs 列表雖能連到 incident / MCP summary,但當 status-chain batch 尚未回補或 operator 需要快速掃描時,表格仍只顯示 `等待來源` / provider count,無法一眼判斷 stage、next action、blocked reason、Ansible 與 KM 狀態。本段補 Runs 列表的 operator truth surface,不改自動修復權限、不開 runtime gate。 + +**本輪完成**: +- `apps/web/src/app/[locale]/awooop/runs/page.tsx`: + - Source Flow 新增 operator status chip:`需人工` / `執行失敗` / `已驗證` / `已執行` / `待判讀`。 + - status-chain 存在時顯示 stage summary、next action 或 blocked reason、MCP success / failed / blocked、Ansible candidates / applied / reason、KM entries。 + - status-chain 尚未回補但 run 有 incident / remediation summary 時,以 run evidence fallback 顯示 MCP、Ansible、KM 與 `status_chain_pending`,避免回到不可判讀的空狀態。 +- `apps/web/messages/zh-TW.json` / `apps/web/messages/en.json`:新增 Source Flow operator 文案;依本輪「所有內容繁體中文」要求,operator fallback / status 文字在兩個 locale 皆鏡像為繁中。 +- 同步納入 P1-5 Primary rollback owner handoff:`185173f0` 只代表 handoff `100%`、P1 GitHub primary readiness 只讀重盤 `70%`,不代表 rollback、primary 切換、refs sync 或 runtime gate。 + +**完成度更新**: +- Phase 1 AI 自動化飛輪真相盤點:`48% → 56%`。 +- Runs visibility:`88% → 92%`。 +- 完整 AI 自動化飛輪:`72% → 73%`;僅代表 Runs 可視化與 truth surface 提升,Telegram、risk gate、executor / verifier / KM 回寫仍未閉環。 + +**驗證**: +- `python3 -m json.tool apps/web/messages/zh-TW.json` / `apps/web/messages/en.json`:通過。 +- `git diff --check`:通過。 +- `NEXT_PUBLIC_API_URL=https://awoooi.wooo.work NEXT_PRIVATE_BUILD_WORKER_COUNT=1 SENTRY_SUPPRESS_GLOBAL_ERROR_HANDLER_FILE_WARNING=1 pnpm --filter @awoooi/web build`:通過;`/[locale]/awooop/runs` route 成功產出。 +- `pnpm --filter @awoooi/web exec tsc --noEmit --tsBuildInfoFile /tmp/awoooi-web-runs-status-chain-8a326338-after-build.tsbuildinfo`:通過。先前一次與 `next build` 並行時因 `.next/types` 重建出現暫態缺檔,build 完成後重跑通過。 +- Gitea code-review run `2548`:success。 +- Gitea CD run `2547`:`build-and-deploy` success,deploy marker `c046b9c8 chore(cd): deploy 8a32633 [skip ci]` 已推上 `gitea/main`;`post-deploy-checks` failure,失敗點是 `Source Link Canary`,訊息為 `sentry source-link canary failed: Expecting value: line 1 column 1 (char 0)`。 +- 同一 post-deploy smoke 中 API Health、Alertmanager Webhook、SigNoz Webhook、Sentry Webhook、SigNoz、OTEL Collector、Event Exporter 皆通過;Source Link Canary 需進 Phase 2 告警資料鏈路修復。 +- Production desktop Browser smoke:`https://awoooi.wooo.work/zh-TW/awooop/runs?project_id=awoooi&_v=c046b9c8-runs-status-fallback` 無 fetch failure,`horizontalOverflow=0`,`INC-20260603-9B2535` 同列顯示 `需人工`、`等待人工審批,尚未執行`、`blocked=all_evidence_sensors_failed`、`MCP 4/4; failed=0; blocked=0`、`Ansible candidates=2; apply=0`、`KM entries=0`。 +- Production mobile smoke 390x844:`horizontalOverflow=0`,可上下滾動,無 fetch failure,同列可見 MCP / Ansible / KM 狀態。 +- 截圖:`/tmp/awoooi-runs-status-chain-desktop-c046b9c8.png`、`/tmp/awoooi-runs-status-chain-table-desktop-c046b9c8.png`、`/tmp/awoooi-runs-status-chain-mobile-c046b9c8.png`。 + +**目前邊界**: +- 本段沒有開啟 auto repair、沒有執行 Ansible、沒有批准任何 pending approval、沒有修改 Telegram 發送流程、沒有改 KM 寫入權限。 +- S4.9 / S4.10 / S4.12 / P1-5 owner response received / accepted / rejected 仍為 `0`;GitHub primary readiness gate 仍 `0`;`active_runtime_gate_count=0`。 +- `runtime_execution_authorized=false`、`github_primary_switch_authorized=false`、`refs_sync_authorized=false`、`repo_creation_authorized=false`、`workflow_modification_authorized=false`、`action_buttons_allowed=false`。 + ## 2026-06-04|IwoooS P1-4 Workflow / Secret Owner Response Handoff **背景**:P1-3 已補 GitHub target owner response handoff;本段接著補 P1-4 / S4.12 workflow、webhook、runner、deploy key、branch protection / CODEOWNERS、repository secret name parity 的 owner response handoff。目標是只收名稱與脫敏 metadata,不收 secret value、hash、masked token、partial token 或任何可還原 credential material。 diff --git a/docs/workplans/2026-06-04-navigation-and-ai-flywheel-workplan.md b/docs/workplans/2026-06-04-navigation-and-ai-flywheel-workplan.md index a675ec49..a15494f5 100644 --- a/docs/workplans/2026-06-04-navigation-and-ai-flywheel-workplan.md +++ b/docs/workplans/2026-06-04-navigation-and-ai-flywheel-workplan.md @@ -8,15 +8,16 @@ | --- | --- | | Repo/worktree | `/private/tmp/awoooi-iwooos-next-gate-20260604` | | 推版規則 | 只推 Gitea:`git push gitea HEAD:main`;GitHub 只讀備份 | -| 最新完成 commit | `b61ee9b0 feat(web): align AwoooP controls with WOOO radius tokens` | -| 最新 deployment marker | `8c9582f3 chore(cd): deploy b61ee9b [skip ci]` | -| 正式站驗證 | `https://awoooi.wooo.work/zh-TW/awooop/runs?project_id=awoooi&_v=8c9582f3-d1-prod-smoke` | +| 最新 Gitea main | `291ff925 docs(security): add Kali maintenance window draft [skip ci]` | +| 最新完成 code commit | `8a326338 fix(web): mirror AwoooP operator statuses in Chinese` | +| 最新 deployment marker | `c046b9c8 chore(cd): deploy 8a32633 [skip ci]` | +| 正式站驗證 | `https://awoooi.wooo.work/zh-TW/awooop/runs?project_id=awoooi&_v=c046b9c8-runs-status-fallback` | | 首頁產品化入口 | 88% | | AI provider readability | 88% | -| Runs visibility | 88% | +| Runs visibility | 92% | | Work Items readability | 84% | | Design system | 64% | -| 完整 AI 自動化飛輪 | 72% | +| 完整 AI 自動化飛輪 | 73% | ## Session 啟動固定檢查 @@ -94,19 +95,20 @@ | 欄位 | 內容 | | --- | --- | | 優先級 | P0 | -| 狀態 | 已推 Gitea main:新建 approval gate 已寫入 raw timeline event 並通過本地測試;production 健康與 Runs 頁未破,待新 approval / backfill 驗 raw event | -| 本階段完成度 | 48% | +| 狀態 | 已推 Gitea main:Runs 列表已顯示 status-chain / run evidence fallback、MCP、Ansible、KM 與人工 gate 狀態;正式站 desktop/mobile smoke 通過。CD post-deploy checks 因 Source Link Canary 失敗而紅燈,需納入 Phase 2 告警鏈路修復。 | +| 本階段完成度 | 56% | | 目標完成度 | 完整 AI 自動化飛輪 69% → 75% | 細項: - [x] 查 `auto_execute_success_rate` SLO 違反原因,對照最近自動修復任務。 - [x] 盤點流程是否真跑完:alert ingest → classify → rule match → MCP evidence → PlayBook → approval gate → Ansible/repair → verifier → KM → postmortem。 - [x] 補新建 approval gate raw timeline event:同一 transaction 寫入 `stage`、`next_action`、`blocked_reason`、`auto_or_manual`、`needs_human`、risk 與 signature 狀態。 +- [x] Runs 列表 Source Flow 補 operator status chain / fallback:同一 incident 可見 `需人工`、`等待人工審批`、blocked reason、MCP 成功/失敗、Ansible candidates / apply / reason、KM entries。 - [ ] 補既有 pending approval 歷史 backfill / production smoke,確認正式站同一 incident 不再出現 `timeline_missing_for_approval`。 - [ ] 補 executor / verifier / KM 狀態變更事件:每個 incident 必須看到 stage、handler、AI action、manual need。 - [ ] Telegram 告警補 stage、next action、blocked reason、auto/manual。 - [ ] 建立風險分級與 approval gate 對照表,釐清中低風險是否允許 AI 自動修復。 -- [ ] 確認 MCP / 自建 MCP 實際 tool call、evidence、result 有被前端顯示;目前 Runs 表格可見 MCP summary,但 result / blocker 還不夠一眼可讀。 +- [ ] 確認 MCP / 自建 MCP 實際 tool call、evidence、result 有被前端顯示;目前 Runs 表格可見 MCP summary、blocked reason、Ansible / KM 摘要,但 tool call result drilldown 還未完整產品化。 Live evidence: - Production `/api/v1/ai/slo?force_refresh=true`:`auto_execute_success_rate=90.2%`、`human_override_rate=0.5%`、`verifier_false_neg_rate=0.0%`,目前 `any_violated=false`。 @@ -123,6 +125,11 @@ Live evidence: - Gitea main:`1ae8f809 fix(api): record approval gate timeline events` 已推送。 - Post-push production health:`/api/v1/health` 回 `status=healthy`、`environment=prod`、PostgreSQL / Redis / Ollama / OpenClaw / SigNoz 均 `up`。 - Post-push production Runs smoke:`/zh-TW/awooop/runs?project_id=awoooi` 表格 50 列,`INC-20260603-9B2535`、MCP、approval / 審批文案可見,`horizontalOverflow=0`。 +- Production deploy marker:`c046b9c8 chore(cd): deploy 8a32633 [skip ci]` 已出現在 Gitea main;code commit `8a326338` 含 `8ad8bf48 fix(web): keep run status readable without chain batch`。 +- Gitea code-review run `2548`:success;Gitea CD run `2547`:`build-and-deploy` success,但 `post-deploy-checks` failure,失敗檢查為 `Source Link Canary`;API Health、Alertmanager / SigNoz / Sentry webhook、SigNoz、OTEL Collector、Event Exporter 皆通過。 +- Production Runs desktop smoke:`/zh-TW/awooop/runs?project_id=awoooi&_v=c046b9c8-runs-status-fallback` 載入 `INC-20260603-9B2535`,無 fetch failure,`horizontalOverflow=0`;同列顯示 `需人工`、`等待人工審批,尚未執行`、`blocked=all_evidence_sensors_failed`、`MCP 4/4; failed=0; blocked=0`、`Ansible candidates=2; apply=0`、`KM entries=0`。 +- Production Runs mobile smoke 390x844:`horizontalOverflow=0`、可上下滾動、無 fetch failure,同列可見 MCP / Ansible / KM 狀態;截圖:`/tmp/awoooi-runs-status-chain-mobile-c046b9c8.png`。 +- Production screenshot:`/tmp/awoooi-runs-status-chain-desktop-c046b9c8.png`、`/tmp/awoooi-runs-status-chain-table-desktop-c046b9c8.png`。 驗收: - [ ] DB / API / browser 都能查到同一 incident 的 stage timeline;本地程式與單元測試已過,production health / Runs smoke 未破,raw `timeline_events` 需等新 approval 或 backfill 後驗證。 @@ -134,7 +141,7 @@ Live evidence: | 欄位 | 內容 | | --- | --- | | 優先級 | P0 | -| 狀態 | 未開始 | +| 狀態 | 待啟動;`c046b9c8` post-deploy checks 已暴露 Source Link Canary 紅燈,需列為 Phase 2 第一個 live issue | | 目標完成度 | 告警資料鏈路可判讀性 → 90% | 細項: @@ -142,6 +149,7 @@ Live evidence: - [ ] 告警關聯 Sentry、SigNoz、Alertmanager、K8s、host logs、run timeline。 - [ ] 建立告警 dedupe / fingerprint / recurrence 統計,降低重複轟炸。 - [ ] 修「詳情 / 歷史」HTTP 400 或查不到事件。 +- [ ] 修 `Source Link Canary`:Gitea CD post-deploy run `2547` 顯示 `sentry source-link canary failed: Expecting value: line 1 column 1 (char 0)`;需確認 Sentry source-link API 回應、JSON parse、DB event 對應與錯誤訊息。 - [ ] 修 postmortem 瞬間大量重複通知。 - [ ] 修 Config Drift 重複告警,確認 PR 已建立後的採納 / 關閉 / baseline / TTL 狀態。