docs(governance): record t22 verifier breakdown rollout

This commit is contained in:
Your Name
2026-05-14 20:59:53 +08:00
parent 2582ad9425
commit 0567135647
2 changed files with 60 additions and 0 deletions

View File

@@ -1,3 +1,53 @@
## 2026-05-14 | T22 Verifier non-success breakdown 前端化,從 warning 變成可行動根因
**背景**T21 已證實近 24h 自動修復都有 verifier evidence`coverage_rate=1.0`,但 `verified_non_success=9` 只呈現為單一 warning。Operator 仍不知道是 PlayBook 動作格式錯、verifier target 缺失、PromQL 模板缺失,還是真正修復失敗。
**production 盤點**
- 近 24h non-success verifier 先查到 9 筆,全部是 `degraded`
- 多數為 `DockerContainerMemoryLimitPressure` 使用 `PB-20260505-F4197B`auto repair 失敗訊息是 `Unsupported scheme: 'ssh {host} ...'`,代表 PlayBook repair step 沒有走支援的 executor / MCP envelope。
- 另有 canary / host 類 degraded 是 verifier 缺 PromQL query template 或 target mapping。
- 第一輪查 production 時也抓到 live schema 差異:`incidents` join key 是 `incident_id`,不是 `id`;已依 live schema 修正 SQL。
**修正**
- `adr100_slo_status_service.py``verification_coverage` 增加 `non_success_breakdown``recent_non_success`
- read model 會列出最近 non-success auto repair`incident_id / alertname / playbook / verification_result / failure_class / next_step / auto_error_excerpt`
- failure class 目前只做 read-side normalization不做自動修復決策`unsupported_action_scheme``verifier_missing_promql``verifier_target_missing_pod``auto_repair_execution_failed``verification_failed``verification_timeout``verification_degraded`
- `/governance` SLO tab 的「驗證覆蓋率」面板新增「非成功驗證分類」與「近期非成功驗證」清單Operator 可直接看到要修 PlayBook executor 還是 verifier template。
- `zh-TW` / `en` i18n 已補分類與下一步文案,無新增硬編碼 UI 文案。
**本地驗證**
- `python3 -m py_compile apps/api/src/services/adr100_slo_status_service.py apps/api/tests/test_adr100_slo_status_service.py`pass。
- `DATABASE_URL=postgresql+asyncpg://test:test@localhost:5432/test pytest tests/test_adr100_slo_status_service.py tests/test_adr100_slo_metrics_service.py tests/test_governance_agent.py tests/test_ai_governance_endpoints.py -q`53 passed。
- `ruff check --select F,E9 ...`pass。
- `pnpm --filter @awoooi/web typecheck`pass。
- `pnpm --dir apps/web exec next lint --file src/app/[locale]/governance/tabs/slo-tab.tsx`pass。
- `NEXT_PUBLIC_API_URL=https://awoooi.wooo.work pnpm --filter @awoooi/web build`pass。
- i18n JSON parse / `git diff --check`pass。
- Production schema dry-run新增 non-success SQL 回 8 筆 limited rows欄位與 live schema 相容。
**推版與 production 驗證**
- `bad48dee feat(governance): explain verifier failures` 已推 Gitea main。
- Gitea Code Review run `2172` successCD run `2171` tests / build-and-deploy / post-deploy-checks 全 success。
- 最新 deploy marker`2582ad94 chore(cd): deploy bad48de [skip ci]`
- Production imageAPI / Worker `192.168.0.110:5000/awoooi/api:bad48dee0424656e01e3ae232acba0423ae0c1e1`Web `192.168.0.110:5000/awoooi/web:bad48dee0424656e01e3ae232acba0423ae0c1e1`
- K8s rollout`awoooi-api` / `awoooi-worker` / `awoooi-web` in `awoooi-prod` 均 successfully rolled out。
- `https://awoooi.wooo.work/api/v1/health`200 healthy。
- `https://awoooi.wooo.work/api/v1/ai/slo` production payload
- `adr100.overall_status=warning`
- `verification_coverage.status=warning`
- `reason=non_success_verification_present`
- `non_success_breakdown.by_verification_result=[degraded:8]`
- `non_success_breakdown.by_failure_class=[unsupported_action_scheme:7, verifier_missing_promql:1]`
- `recent_non_success[0].incident_id=INC-20260514-F85F21`
- `recent_non_success[0].next_step=normalize_playbook_executor`
- `https://awoooi.wooo.work/zh-TW/governance`200。
- Playwright production render check`非成功驗證分類``近期非成功驗證``PlayBook 動作未走支援執行器``修正 PlayBook 執行器` 可見console error = 0。
**目前整體進度**
- Alertmanager 低風險自動修復主線:約 96%。
- 完整 AI 自動化管理產品化:約 87%。
- T22 已把 non-success verifier 從「單一 warning」拆成可行動分類下一段 T23 建議直接修 `PB-20260505-F4197B` 的 unsupported `ssh {host}` repair step讓 Docker memory pressure 類低風險告警真正走支援 executor / MCP envelope並補 verifier PromQL template。
## 2026-05-14 | T21 Post-execution verifier coverage 接入前端SLO 不再只看 Prometheus 分母
**背景**T20 已讓 ADR-100 四項 SLO 在 `/governance` 呈現 `ok / skipped_low_volume / no_data`,但 Operator 仍無法直接判斷「近 24h 自動修復是否都有 verifier 寫回」、「是否有未驗證 backlog」、「verification 結果是成功還是 degraded/failed」。這會讓 Telegram / SLO 只告訴人有告警,卻無法說明 AI 自動化流程卡在哪個節點。

View File

@@ -2160,6 +2160,16 @@ Phase 6 完成後
- Production evidenceAPI / Worker / Web image 均為 `485c58d0852dd308f15da9259ae453d3dbf0b28e``/api/v1/ai/slo``adr100.overall_status=warning``overall_compliance=1.0``verification_coverage.status=warning``reason=non_success_verification_present``total_auto=14``verified_auto=14``unverified_auto=0``verified_success=5``verified_non_success=9``coverage_rate=1.0``/zh-TW/governance` 200。
- 目前進度更新Alertmanager 低風險自動修復主線約 96%;完整 AI 自動化管理產品化約 86%。下一段 T22 應拆解 9 筆 non-success verification 的根因,讓 degraded/failed/timeout 進入工作鏈路、Ticket、PlayBook/KM 修復項,而不是只停在 warning。
**T22 Verifier non-success breakdown 前端化2026-05-14 台北)**
- 觸發T21 只顯示 `verified_non_success`,仍無法回答是 PlayBook 動作格式錯、verifier 查詢模板缺失、target mapping 缺失,還是真修復失敗。
- Production 盤點:近 24h non-success verifier 全部是 `degraded`;主要簽名為 Docker memory pressure PlayBook `PB-20260505-F4197B``Unsupported scheme: 'ssh {host} ...'`;另有 canary/host 類 verifier 缺 PromQL query template。live schema 查核確認 `incidents` join key 是 `incident_id`,不是 `id`
- 修正:`verification_coverage` 增加 `non_success_breakdown``recent_non_success`,包含 `incident_id / alertname / playbook / verification_result / failure_class / next_step / auto_error_excerpt`failure class 只做 read-side normalization不做自動修復決策。
- UI`/governance` SLO tab 的「驗證覆蓋率」面板新增「非成功驗證分類」與「近期非成功驗證」,讓 Operator 直接看到 `unsupported_action_scheme -> normalize_playbook_executor``verifier_missing_promql -> add_verifier_query_template`
- 驗證py_compile pass`pytest tests/test_adr100_slo_status_service.py tests/test_adr100_slo_metrics_service.py tests/test_governance_agent.py tests/test_ai_governance_endpoints.py -q` 53 passedruff F/E9 passweb typecheck / target lint / production build passi18n JSON parse / diff check passproduction SQL dry-run pass。
- Production deploy`bad48dee feat(governance): explain verifier failures` 已推 Gitea mainCode Review run `2172` successCD run `2171` tests / build-and-deploy / post-deploy-checks successdeploy marker `2582ad94 chore(cd): deploy bad48de [skip ci]`
- Production evidenceAPI / Worker / Web image 均為 `bad48dee0424656e01e3ae232acba0423ae0c1e1``/api/v1/ai/slo``non_success_breakdown.by_verification_result=[degraded:8]``by_failure_class=[unsupported_action_scheme:7, verifier_missing_promql:1]``/zh-TW/governance` 200Playwright render check console error = 0。
- 目前進度更新Alertmanager 低風險自動修復主線約 96%;完整 AI 自動化管理產品化約 87%。下一段 T23 應修 `PB-20260505-F4197B` 的 unsupported `ssh {host}` repair step讓 Docker memory pressure 低風險告警走支援 executor / MCP envelope並補 verifier PromQL template。
---
### 2026-04-20 晚 (台北) — C1-C4 全流程串接 — Playbook 鏈路保護commit de2d34d