docs(governance): record t22 verifier breakdown rollout
This commit is contained in:
@@ -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` success;CD run `2171` tests / build-and-deploy / post-deploy-checks 全 success。
|
||||
- 最新 deploy marker:`2582ad94 chore(cd): deploy bad48de [skip ci]`。
|
||||
- Production image:API / 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 自動化流程卡在哪個節點。
|
||||
|
||||
@@ -2160,6 +2160,16 @@ Phase 6 完成後
|
||||
- Production evidence:API / 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 passed;ruff F/E9 pass;web typecheck / target lint / production build pass;i18n JSON parse / diff check pass;production SQL dry-run pass。
|
||||
- Production deploy:`bad48dee feat(governance): explain verifier failures` 已推 Gitea main;Code Review run `2172` success;CD run `2171` tests / build-and-deploy / post-deploy-checks success;deploy marker `2582ad94 chore(cd): deploy bad48de [skip ci]`。
|
||||
- Production evidence:API / 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` 200;Playwright 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)
|
||||
|
||||
Reference in New Issue
Block a user