Files
awoooi/docs/LOGBOOK.md
OG T aa4e5757a2
All checks were successful
CD Pipeline / build-and-deploy (push) Successful in 15m46s
fix: 技術債清理 — report_generation 重試機制 + GAP-A4 文件化
技術債 #1: postmortem 發送失敗靜默吞掉
- 3 次指數退避重試 (2s → 4s → 6s)
- 全失敗後送簡化降級通知到 SRE 群組
- 防止事後檢討默默消失

技術債 #2 (QueryBuilder 抽象): DEFER
- 全專案僅 1 處用 outcome JSON path query
- 違反「Don't design for hypothetical future requirements」
- 待第二 caller 出現再抽

技術債 #3 (E2E 測試): 已涵蓋
- test_gap_a4_placeholder_resolution.py TestMatchRuleRejection
- Mission C prod 鏈路實測(KubePodCrashLooping)
- Playwright K8s/Telegram staging 留待 staging 環境就緒

新增文件:
- ADR-078-gap-a4-placeholder-resolution.md
- LOGBOOK 2026-04-14 深夜收官條目

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-14 18:46:25 +08:00

297 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# LOGBOOK - AWOOOI 進度軌跡
> **用途**: AI 代理進度追蹤,防止 Session 斷層
> **規則**: 完成重要節點後追加一行
> **歷史**: 舊條目已壓縮,詳細記錄見 git log
---
## 📍 2026-04-14 深夜收官 — GAP-A4 解開 8.3h 飛輪沉默 + 技術債處理
**真兇逮到**GAP-A4 規則模板 placeholder 解析缺漏
- Log 顯示大量 `auto_execute_blocked_unresolved_placeholder`
- target 退回 alertname / unknown / IP:port → 垃圾 kubectl 指令
- GAP-A1 防注入閘盡責攔下 → 自動修復路徑卡死 → 飛輪沉默
**修復 `10b74af`**(三層防護):
1. `_strip_pod_suffix()` — Deployment/StatefulSet/Legacy pod 三種格式
2. `_is_bad_target()` — 垃圾識別(空/unknown/alertname/IP:port/含空白)
3. `_extract_vars()` 多層 label 查找deployment > app > statefulset > pod > container
4. `match_rule()` 後置雙驗證bad target + 殘留 placeholder
**測試**33 個新 GAP-A4 測試 + 214/214 回歸全綠
**技術債處理**:
- ✅ report_generation 重試機制3 次指數退避 + 失敗降級通知)`下一 commit`
- 🟡 DEFER: QueryBuilder 抽象YAGNI僅 1 處用 JSON path query
- ✅ E2E 測試GAP-A4 TestMatchRuleRejection 全流程覆蓋 + Mission C prod 實測)
---
## 📍 2026-04-14 深夜 — MASTER 藍圖 11/11 Task 全部完成 🏆
**結案文件**
- [docs/reports/2026-04-14-MASTER-BLUEPRINT-CLOSURE.md](reports/2026-04-14-MASTER-BLUEPRINT-CLOSURE.md)
- [docs/adr/ADR-077-master-blueprint-completion.md](adr/ADR-077-master-blueprint-completion.md)
**本日 9 commits 完整清單**
`cc42aa0 → aae7c12 → 43c9689 → dedd7c2 → dd0a778 → 0f48a50 → b8b124c → 8de807c → f54dea4`
**Phase 4自動報告系統完成**
- Task 4.1 日度巡檢報告:`run_daily_report_loop` 已啟動(`daily_report_next_in: 48993s`,明早 08:00 台北)
- Task 4.2 Postmortem 自動組裝:`incident_service.resolve_incident` hook `8de807c`
- f54dea4 修復 DB 欄位 bugApprovalRequestRecord/PlaybookRecord → 實際 IncidentRecord.outcome + Redis playbook_service
**架構審查**CONDITIONAL PASSdecision_manager Tier 3 審查紀錄入 ADR-077
**通訊渠道**:全走 TelegramSMTP 不需要
---
## 📍 2026-04-14 傍晚 — MASTER 藍圖 P0+P1 全綠 + E2E 實彈驗證
**本日新增 6 commitscc42aa0 → dd0a778 → 0f48a50 CD**
- `cc42aa0` — GAP-A23 告警規則 gitea/ssl/external_site+ GAP-A1validate_kubectl_command + 34 測試)
- `aae7c12` — GAP-C3SSH 修復 KM 萃取 + 18 測試)
- `43c9689` — 4 份治理文件Alert Taxonomy / AI Model Cards / Postmortem Template / On-Call Handbook
- `dedd7c2` — BP-1 B.1 KM 萃取品質精修(`_write_execution_result_to_km` 區分自動/人工 + 富化元資料)
- `dd0a778` — GAP-B4 LLM 超時降級扶梯(內層 25s + NemoClaw 3s🔴 Tier 3 紅區
- `0f48a50` — CD deploy dd0a778
**MASTER 藍圖 P0+P1 全部完成**含驗證已實作GAP-C2 retry, GAP-D1 trust feedback, GAP-A3 alert grouping
**E2E 實彈射擊Mission C**
- `KubePodCrashLooping` via `/webhooks/alertmanager` → LLM(ollama, 1582t) → Playbook `high-cpu-restart` 相似度 39% → `incident_resolved_after_auto_repair` → Telegram msg 20723 → KM 1 筆(`km_conversion_service` 路徑寫入)
- **發現 KM 雙路徑設計** → 建立 [feedback_km_dual_path_design.md](memory/feedback_km_dual_path_design.md)
**測試全綠**152/152 tests passed
**剩餘 Backlog**(明日推進):
- GAP-D5 自動報告生成(需 APScheduler
- project_current_status.md 小型 BacklogWebSocket 重連、Blackbox E2E、flywheel-alerts.yaml Docker 方式)
---
## 📍 當前狀態 (2026-04-14 早上 — aae7c12 ✅)
**本次 session 完成Task 3.3**
- `approval_execution.py``_trigger_playbook_extraction`: 寫入 `approval.action → outcome.learning_notes`
- `playbook_service.py``_parse_ssh_command()` + `_extract_repair_steps()` SSH 路徑 + `[SSH]` name prefix + ssh/host_layer tags
- `test_playbook_ssh_extraction.py` — 18 新測試794 通過0 失敗)
**飛輪雙手對齊**
- kubectl 路徑:`decision_chain.reasoning_steps → KM` ✅(既有)
- SSH 路徑:`approval.action → learning_notes → SSH RepairStep → KM`Task 3.3 新增)
**剩餘(純文件)**
| 文件 | 路徑 | 狀態 |
|------|------|------|
| 告警分類目錄16 類) | docs/reference/ALERT-TAXONOMY-CATALOG.md | 待辦 |
| AI Model Card5 模型)| docs/ai/AI-MODEL-CARDS.md | 待辦 |
| Postmortem 模板 | docs/templates/POSTMORTEM-TEMPLATE.md | 待辦 |
| On-call Handbook | docs/operations/ON-CALL-HANDBOOK.md | 待辦 |
---
## 📍 前次狀態 (2026-04-14 — Task 2.2+2.3 完成cc42aa0 ✅)
**本次 session 新增Task 2.2 + Task 2.3**
- `alert_rules.yaml` — 新增 3 類規則gitea_down/ssl_cert_expiring/external_site_down共 24 條
- `alert_rule_engine.py``validate_kubectl_command()` 阻擋 delete pvc/namespace/drain/replicas=0/rm-rf/DROP TABLE/$() 注入,整合進 `match_rule()`
- `test_alert_rule_engine_validation.py` — 34 新測試776 通過0 失敗)
**待完成(剩餘工作清單)**
| 項目 | 類型 | 狀態 |
|------|------|------|
| Task 3.3: SSH 修復 KM 萃取playbook_service.py| 代碼 | 待辦 |
| `docs/reference/ALERT-TAXONOMY-CATALOG.md` | 文件 | 待辦 |
| `docs/ai/AI-MODEL-CARDS.md` | 文件 | 待辦 |
| `docs/templates/POSTMORTEM-TEMPLATE.md` | 文件 | 待辦 |
| `docs/operations/ON-CALL-HANDBOOK.md` | 文件 | 待辦 |
| CD 部署 cc42aa0 驗證 | E2E | 觀察中 |
| 首次日度報告08:00 台北)| E2E | 等待中 |
---
## 📍 前次狀態 (2026-04-14 — P0 文件補建完成,護城河已部署 e778e4d ✅)
**本次 session 新增2 份 P0 業界標準文件)**
- `docs/slo/SLO-SLI-DEFINITION.md` — 5 個 SLI + SLO 目標值表 + Error Budget 規則 + 里程碑
- `docs/operations/HUMAN-IN-THE-LOOP.md` — 9 種觸發條件 + Kill Switch + Fail-safe 逾時行為 + SOP
**護城河狀態**量尺SLO+ 煞車HITL均已就位配合 684d6cf 的聚合/重試/報告代碼
**觀察中**:等明日 08:00 台北時間日度報告推送,驗證 684d6cf E2E
**下一步**(優先級順序):
1. 等 CD 部署並觀察 E2E
2. Task 2.2alert_rules.yaml 補 3 類規則storage/devops_tool/external_site
3. Task 2.3alert_rule_engine.py kubectl 注入防護
4. Task 3.3SSH 修復 KM 萃取
---
## 📍 前次狀態 (2026-04-14 — 戰術 B 四大 Task 全部完成675 tests ✅)
**本次 session 新增4 Task6 檔案75 新測試)**
- `feat(adr-076): Task 2``alert_grouping_service.py` — 5分鐘滑動視窗告警聚合引擎 + 16 tests
- `feat(adr-076): Task 3``approval_execution.py` — 執行失敗重試MAX_RETRY=2, 30s, 瞬態/永久分類)+ 29 tests
- `feat(adr-076): Task 4``report_generation_service.py` — 日度巡檢報告(08:00台北) + Postmortem + 30 tests
- `webhooks.py` — ADR-076 聚合邏輯整合(指紋後/LLM前
- `main.py` — 日度報告迴圈掛進 lifespan
**測試**: 600 → 675 通過(+7510 skipped0 failed
**下一步**git push gitea main → Pod 部署驗證 → 觀察 E2E
---
## 📍 前次狀態 (2026-04-14 — MASTER AIOps Blueprint 完成,等待統帥批准)
**本次 session 新增(無 commit純文件工作**
- `docs/superpowers/plans/2026-04-14-MASTER-aiops-full-automation-blueprint.md` — 整合4份計畫文件的主計畫書 v1.0
- Memory: `aiops_current_architecture_diagnosis.md` — 完整架構診斷報告
**飛輪現況**: Pod 38ff2bb飛輪 83% 完整4 Phase 等待批准後實作
**業界標準文件缺口**已識別尚未建立SLO/SLI、AI Model Card、Human-in-Loop Spec、Alert Taxonomy Catalog、Configuration Reference
**下一步**:等統帥批准 MASTER 計畫書後,開始 Phase 1 實作
---
## 📍 前次狀態 (2026-04-14 — 飛輪 Bug 修補完成,全面部署 38ff2bb ✅)
**本次 session 修補6 commits全已部署Pod 跑 38ff2bb**
- `38ff2bb` heartbeat → ADR-075 TYPE-1 格式INFO 樹狀結構)
- `f1face4` HostHighCpuLoad 獨立規則 → NO_ACTION停止 kubectl scale unknown
- `1a4b52e` fingerprint 加 alertname 防跨告警指紋衝突 + 心跳分類補入
- `b17a677` gitea webhook analysis.model_dump() dict bug
- `0c88f67` DIAGNOSE 強制 deepseek-r1:14b不用 gemma3:4b
- `09134f5` incident.title bug + DIAGNOSE→NEMOTRON confidence=0.0 修復
**飛輪狀態**規格書層次一二三四全完成ADR-075 全完成,本次額外修補已補齊
**下一步**:觀察自動修復 E2E或繼續 ADR-075 Phase 3Prometheus 規則)
---
## 📍 前次狀態 (2026-04-12 深夜 — ADR-075 Phase 1+2+CR 全完成git push gitea main ✅)
**ADR-075 全部完成**3 commits: 2cef209 → 561c1d8 → 1cb654c
Phase 14 斷點修復):
- ✅ 斷點 A: decision_manager 提取 alert_category → send_approval_card
- ✅ 斷點 B: send_approval_card 新增參數 → _build_inline_keyboard
- ✅ 斷點 C: 互動型通知(TYPE-3/4/4D/8M)禁止發 SRE 群組
- ✅ 斷點 D: k8s_workload → kubernetes + 6 新類按鈕組
- ✅ classify_alert_early: 13 條規則7 新分類52 tests
Phase 2TYPE-8M
- ✅ send_meta_alert() ⚙️ META SYSTEM 卡片
- ✅ decision_manager TYPE-8M elif 分支
CR 修補:
- ✅ P0-2: NotificationType.TYPE_8M 加入 enum + classify_notification 早期回傳
- ✅ P1-1: 移除 _CATEGORY_BUTTONS 死碼
- ✅ P1-4: 測試 docstring 更新 13 條規則
- 664 tests all pass
**下一步**ADR-075 Phase 3Prometheus 規則),或評估下一個 ADR
---
## 📍 前次狀態 (2026-04-12 — 層次三+四全部完成CD 推送中)
**系統狀態**: ADR-073 Phase 1-4 ✅ | ADR-074 M1-M5 ✅ | ADR-073-C C1-C4 ✅ | git push gitea main ✅
**Phase 1 完成清單**:
- ✅ 1-1~1-3: Harbor 確認 + kustomization→105998d + ArgoCD sync
- ✅ 1-4: Pod image 105998d 已驗證
- ✅ 1-5: `_collect_mcp_context` 存在 Pod
- ✅ 1-6: debounce 5→30 min
- ✅ 1-7: alertname NULL 根因修復signals JSONB alias
- ✅ 1-8: cold_start_playbooks.py — Playbooks 0→15
- ✅ 1-9: batch_vectorize_km.py — 711/713 KM 向量化
**架構修復**:
- ArgoCD ignoreDifferences 移除image 更新路徑修通)
- B5 CI break-glassTODO 2026-04-13 恢復)
**Phase 2 完成清單**:
- ✅ 2-1: DB Migration — alertname column 新增 (已在 Pod 執行)
- ✅ 2-2: classify_alert_early() — 6 條規則 config_drift/info/backup/infra/k8s/db/general
- ✅ 2-3: _try_auto_repair_background() outcome 寫入點
- ✅ 2-4: create_incident_for_approval() notification_type/alert_category 寫入
- ✅ 2-5: 134 筆 alertname NULL → 0 回填完成
**下一步**: Phase 3Tier 3 — 首席架構師授權後執行)
---
## 里程碑摘要(壓縮版)
| 日期 | 里程碑 | commit |
|------|--------|--------|
| 2026-04-08 | Sprint 5.1 資料安全護欄完成Guardrail BLOCK/HITL/MultiSig| 88696db/0f5fecf |
| 2026-04-10 | ADR-068 飛輪閉環 E2E 驗收HostHighCpuLoad→PB-20260406| — |
| 2026-04-10 | ADR-067 五大 Ollama 應用全完成Phase 30-34| — |
| 2026-04-10 | B5 CI 整合測試 640 通過 | — |
| 2026-04-11 | ADR-070 全自動 AIOps 閉環MCP 10 providers| a2cc985 |
| 2026-04-11 | ADR-071 A-J Telegram 通知卡片 10 種 | 1ec1965 |
| 2026-04-11 | ADR-072 Bug 修復 P0-P2 全完成 | f34fe19 |
| 2026-04-11 | MCP Security Code Review P0/P1/P2 全修補 | f323633 |
| 2026-04-11 | ADR-069 基礎設施重建 Sprint A/B/C 全完成 | — |
| 2026-04-11 | D1 models.json v1.3.09 purpose keys| f2c18c4 |
| 2026-04-11 | M3 alertname_to_type 抽至 constants | 1ede9f9 |
| 2026-04-11 | I1 ADR-064 Rule Engine get_incident_type() 整合 | 615822d |
| 2026-04-11 | ArgoCD MCP 連線修復IP 120:30443| f23176c |
| 2026-04-11 | 首席架構師 CR Round 1 — get_incident_type rule.id bug + 11 tests | d77b2ad |
| 2026-04-11 | ADR-070 全自動化三大修復auto_approve/MCP context/target| c439277 |
| 2026-04-11 | 首席架構師 CR Round 2 — Tier 3 ternary/timeout/DESTRUCTIVE_PATTERNS + 25 tests | 8be87b0 |
| 2026-04-12 | SSH MCP 188/110 連通驗證authorized_keys 確認 | 796517f |
| 2026-04-12 | fix(test): integration 測試排除pytest addopts618 單元測試全通過 | 6e0ee8b |
| 2026-04-12 | refactor: I2 DI 化 MCP Providers + config list bug + model_regression integration | 184b37a/a67a27f |
| 2026-04-12 | docs(spec): AIOps 飛輪全面修復整合規格書 v1.0(四層方案+監控缺口+ADR-074| 77771c1 |
| 2026-04-12 | docs(adr): ADR-073 補充 ADR-071 整合工作序 + ADR-074 Sprint | f2b427d |
| 2026-04-12 | docs(spec): v2.2 §15 Subsystem 1 四階段路線圖(截圖定案)| d3ddaaf |
| 2026-04-12 | docs(spec): 規格書 v2.0 — 四階段細化實施步驟 + 防偏差守則(等待批准)| — |
| 2026-04-12 | fix(flywheel): Phase 1 — kustomization→8be87b0 + debounce 30min + alertname NULL | 7c4b36c |
| 2026-04-12 | fix(ci): Break-Glass — B5 flaky PG test bypass解封 P0 飛輪部署 | 105998d |
| 2026-04-12 | fix(argocd): 移除 ignoreDifferences image修復 GitOps image 更新斷路 | — |
| 2026-04-12 | feat(flywheel): Phase 1 完成 — 15 Playbooks 冷啟動 ✅ | 711/713 KM 向量化 ✅ |
| 2026-04-12 | feat(flywheel): Phase 2 完成 — classify_alert_early + outcome寫入 + 134筆回填 | 54efa30/97fc49a |
| 2026-04-12 | feat(flywheel): Phase 3 完成 — Tier 3 七大修復 (首席架構師授權) | dbc77c5 |
| 2026-04-12 | feat(flywheel): Phase 4 完成 — KM conversion hook + daily vectorize cron | f2fc471 |
| 2026-04-12 | feat(adr-074): M1 飛輪 Prometheus Exporter + M2 主機網路監控 | 16d6823 |
| 2026-04-12 | fix(cr): ADR-073 CR P0/P1/P2 全修補 + B5 CI 0收集修復 | e770813/c09521a |
| 2026-04-12 | feat(m3-m5): ADR-074 M3 CI Webhook + M4 備份驗證 + M5 詳細告警 | 3489e05~ec6a341 |
| 2026-04-12 | feat(c2-c4): ADR-073-C 前端飛輪 KPI+WebSocket+介入路徑視覺化 | 4b51f9b~9b1812c |
---
## ADR-073 飛輪完整盤點2026-04-12
| 項目 | 發現 |
|------|------|
| Playbooks | **0** — 飛輪從未冷啟動 |
| EXECUTION_SUCCESS | **2/3800.5%** — 自動修復幾乎從未成功 |
| KM vectorized | **全部 False699 筆)** — RAG 無法查詢歷史案例 |
| alertname in DB | **全部 NULL** — signals JSONB 結構問題 |
| debounce window | **5 分鐘**(應 30 分鐘)— 同一問題反覆重建 Incident |
| 8be87b0 部署 | ❌ CD 失敗未上線 — 三大修復未生效 |
| ADR-073 | 已寫入 `docs/adr/ADR-073-flywheel-full-audit.md`,等待統帥批准後實作 |
---
## 已知技術債(下 Sprint 評估)
| 項目 | 說明 |
|------|------|
| NetworkPolicy ClusterIP 10.43.16.201/32 | ArgoCD 重裝需更新 |
| `_collect_mcp_context` Provider 直接實例化 | ✅ 已 DI 化I2184b37a |
| B3 Phase 15.5 Trace Context UI | 統帥裁示暫緩 |
| A-3 bitan Docker 化 | P3 低優先 |