From 640e92a7351e354ac04350cef361369c0c337c11 Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 1 Jun 2026 20:29:50 +0800 Subject: [PATCH] docs: record adr100 playbook ticket remediation [skip ci] --- docs/LOGBOOK.md | 60 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/docs/LOGBOOK.md b/docs/LOGBOOK.md index 9ef5640fe..0b5488fd8 100644 --- a/docs/LOGBOOK.md +++ b/docs/LOGBOOK.md @@ -1,3 +1,63 @@ +## 2026-06-01|ADR-100 observe-only PlayBook 補救工作項落地 + +**背景**: + +- Docker 診斷型 PlayBook 守門已阻止 read-only / diagnose-only PlayBook 再被算成自動修復,但 production SLO read-model 仍有 6 筆 `observe_only_playbook`。 +- 若這些項目只停在 `needs_playbook_ticket` 分類,operator 仍看不到「下一步由誰做、會不會真的改 Incident / auto-repair、是否只產生草稿」。 + +**本次調整**: + +- `apps/api/src/services/adr100_remediation_service.py`: + - 新增 `ticket` remediation mode。 + - `needs_playbook_ticket` / `promote_diagnostic_to_repair_playbook` 自動選擇 `ticket`,產生 PlayBook 改造草稿。 + - ticket mode 只允許 `record_only`:可寫 `alert_operation_log` / timeline history,不改 incident state、不改 auto-repair result、不建立外部 ticket。 + - ticket 草稿要求把 diagnostic-only PlayBook 補成 gated mutating repair step,例如 Docker restart、Ansible check-mode/apply 或已批准 executor action,且後驗證必須綁同一 target。 +- `apps/web/src/app/[locale]/awooop/work-items/page.tsx`: + - 新增 ADR-100 補救工作佇列面板,直接顯示 remediation queue 的 top items。 + - 顯示 `needs_playbook_ticket`、`observe_only_playbook`、`promote_diagnostic_to_repair_playbook`、owner、PlayBook 與 `預覽` / `預檢 / 草稿` 操作。 +- `apps/web/messages/zh-TW.json` / `en.json`: + - 新增 Work Items 面板文案;英文語系維持繁中文案鏡像。 +- `apps/api/tests/test_adr100_remediation_service.py`: + - 補 ticket preview / dry-run history 測試,鎖定不寫 incident、不寫 auto-repair、不建立外部 ticket。 + +**驗證**: + +- Local validation: + - `python3 -m py_compile apps/api/src/services/adr100_remediation_service.py apps/api/tests/test_adr100_remediation_service.py` + - `DATABASE_URL=postgresql://test:test@localhost:5432/test PYTHONPATH=apps/api /Users/ogt/.pyenv/shims/pytest apps/api/tests/test_adr100_remediation_service.py apps/api/tests/test_adr100_slo_status_service.py -q` → `16 passed` + - `python3 -m json.tool apps/web/messages/zh-TW.json` + - `python3 -m json.tool apps/web/messages/en.json` + - `pnpm --dir apps/web exec tsc --noEmit --tsBuildInfoFile /tmp/awoooi-work-items-adr100-remediation.tsbuildinfo` + - `NEXT_PUBLIC_API_URL=https://awoooi.wooo.work NEXT_PRIVATE_BUILD_WORKER_COUNT=1 pnpm --dir apps/web run build` + - `git diff --check` + - `python3 scripts/security/security-mirror-progress-guard.py --root .` → `SECURITY_MIRROR_PROGRESS_GUARD_OK` +- Gitea / deployment: + - `a7b807db feat(adr100): surface playbook ticket remediation` 已推 `gitea main`;GitHub 未推。 + - 首次 push CD:`3547` code-review success;`3546` build-and-deploy failure,原因為 Gitea 在 deploy marker push 期間重啟,production 未切換。 + - 補跑 `cd.yaml` workflow_dispatch:`3548` success,部署 `a7b807db`。 + - 後續另一段前端工作推進到 `fa29f856 fix(web): surface IwoooS S4.9 draft radar`,其包含本次 ADR-100 commit;最終 `3549` CD success、`3550` code-review success,deploy marker `e8f4d16b chore(cd): deploy fa29f85 [skip ci]`。 + - 最終 production image: + - `awoooi-api=192.168.0.110:5000/awoooi/api:fa29f856b073ff13c30d9e0ec659178e04fef15a`,Ready `2/2`。 + - `awoooi-worker=192.168.0.110:5000/awoooi/api:fa29f856b073ff13c30d9e0ec659178e04fef15a`,Ready `1/1`。 + - `awoooi-web=192.168.0.110:5000/awoooi/web:fa29f856b073ff13c30d9e0ec659178e04fef15a`,Ready `2/2`。 + - Production smoke:`ALERT_CHAIN_API_HEALTH_RETRY_DELAY=1 python3 scripts/alert_chain_smoke_test.py --api-url https://awoooi.wooo.work --json` → `PASSED — 8/8 checks passed in 0.8s`。 +- Production ADR-100 API: + - selected work item:`verification:INC-20260601-DDB0AC:9407ec90-1efb-4be8-82a0-aac7759a172d`。 + - `remediation_status=needs_playbook_ticket`、`remediation_action=promote_diagnostic_to_repair_playbook`。 + - preview:`mode=ticket`、`allowed=true`、`agent_id=openclaw_playbook_planner`、`required_scope=record_only`、writes=`alert_operation_log,timeline`。 + - dry-run history:`verification_result_preview=ticket_proposal`、`writes_incident_state=false`、`writes_auto_repair_result=false`。 +- Production browser readback: + - `/zh-TW/awooop/work-items?project_id=awoooi&_v=fa29f856-adr100-ticket#adr100-remediation` + - `ADR-100 補救工作佇列=true`、`補救 8 筆=true`、`needs_playbook_ticket=true`、`observe_only_playbook=true`、`promote_diagnostic_to_repair_playbook=true`、`預檢 / 草稿=true`。 + - i18n fallback key:`false`;horizontal overflow:`0`。 + +**目前整體進度(本階段完成後)**: + +- ADR-100 非成功驗證補救工作項:約 `90%`;已能把 observe-only 歷史項轉成 record-only PlayBook 改造草稿與 Work Items 操作面。 +- Docker 診斷型 PlayBook 守門:約 `95%`;仍需下一次真實 Docker 告警證明不再新增假陽性 execution。 +- 真正 verified auto-repair 成功樣本:仍約 `3-4%`;本階段補的是「可追蹤與改造入口」,不是把歷史項改寫為成功。 +- 完整 AI 自動化飛輪總進度:維持 `61%`;除非 production 出現可追溯 `verified_success` 與 24h 穩定資料,不能上調。 + ## 2026-06-01|IwoooS S4.9 補件題目雷達落地 **背景**: