# AWOOOI 5/8 雙審計整合報告（INTEGRATED MASTER）

> **產出**：2026-05-08
> **整合來源**：V3 使用率盤點 + K3s 深度盤點兩份完整審計
> **目的**：去重、互補、調解衝突，產出單一可執行的統帥決策清單
> **方法**：兩份審計逐節對照，依「交集 / 差集 / 衝突」三類重組
> **總統計**：86 項統一行動清單（V3 37 + K3s 63 去重合併後 86 項，含 5 大致命 + 24 P0 + 22 P1 + 19 P2 + 11 P3 + 5 P4）

---

## 執行摘要

老闆，5/8 兩份審計合計查出 **23 條交集鐵證**（互相印證、信心度極高）+ **42 條 V3 獨家** + **30 條 K3s 獨家** + **3 處衝突調解**。

| 重點 | 數字 |
|---|---|
| **5 大致命**（必須今日內處理） | 5（K3s 全標、V3 部分提及但未量化） |
| **P0 本週修**（5/8-5/14） | 24（合併後） |
| **P1 兩週內**（5/15-5/28） | 22 |
| **P2 一個月內**（5/29-6/30） | 19 |
| **P3 兩個月內**（7-8 月） | 11 |
| **P4 戰略**（Q3-Q4） | 5 |
| **已完成**（5/8 即時執行） | 2 大項（188 Ollama -15GB / 168 殘進程 Load -37%） |

**最關鍵的雙審計交集鐵證（須立刻動手）**：
1. **awoooi_prod RLS 未落地** — V3 路 14 SSH 實測「pg_policy 0 rows」+ K3s §7 提供完整驗證 SQL → 連 EU AI Act 8/2 倒數 86 天
2. **AwoooP migration 無 rollback** — V3 「50 中 35 個無 rollback」+ K3s 「Phase 1-7 七份 _ROLLBACK.sql 檔案不存在 = 詐欺」
3. **CronJob 鏈路雙重病灶** — V3「drift-cronjob 不在 kustomization」+ K3s「13/14/15/16 缺 NP label」（**兩個獨立問題，不是同一件事，必須兩邊都修**）
4. **NEMOTRON env 矛盾** — K3s §2 #5 揭露 `06-deployment-api.yaml:64` 直接寫死 `true` 覆蓋 ConfigMap 的 `false`
5. **Sentry/Velero/Telegram secrets 全鏈洩漏** — V3 路 8（CI/CD）+ K3s §2 #1-#2（manifest）+ V3 路 11（CHANGE_ME）

---

## Part A — 兩份審計覆蓋對照矩陣

| 主題 | V3 使用率盤點 | K3s 深度盤點 | 互補關係 |
|---|---|---|---|
| **後端 services 死代碼** | ✅ 路 1（11 孤兒 3,245 行） | — | V3 獨家 |
| **前端 page 真實度** | ✅ 路 2（38/70 純殼或半成品） | — | V3 獨家 |
| **資料庫 schema vs query** | ✅ 路 3（11 殭屍表 + 35 migration 無 rollback） | ✅ §3 P0 #10-#11（AwoooP 7 份 rollback 缺） | **互相印證** |
| **MCP / Skills / Subagent 使用率** | ✅ 路 4（12 plugin 0 呼叫） | ✅ §5（11 K3s MCP tool 詳列） | 互補（V3 看用量、K3s 看能力） |
| **告警鏈路** | ✅ 路 5（306 條 / 162 alertname / 120 散戶） | — | V3 獨家 |
| **死代碼 / TODO / archived** | ✅ 路 6（~2,000 行立刻刪） | — | V3 獨家 |
| **K8s workloads** | ✅ 路 7（drift-cronjob kustomization） | ✅ §1.4 + §2 #3（NP label） + §3 P0 #6-#9 | **互補（不同病灶）** |
| **CI/CD** | ✅ 路 8（GitHub 6 殭屍 + Sentry DSN） | ✅ §3 P0 #5（K8s secret 注入） | 互補 |
| **套件依賴** | ✅ 路 9（LiteLLM CVE） | ✅ §3 P0 #5 secret 治理 | 互補 |
| **AI Provider 呼叫分布** | ✅ 路 10（GCP-B 375 次 / 9 處 hardcode） | ✅ §5（AI 對 K3s Level 3/5） | 互補 |
| **外部服務使用度** | ✅ 路 11（LiteLLM/Open-WebUI/n8n 閒置） | — | V3 獨家 |
| **文件 / Memory / ADR** | ✅ 路 12（11 ADR 缺 rollback） | — | V3 獨家 |
| **K3s 集群拓撲** | — | ✅ §1（kine + Flannel + Klipper-lb） | K3s 獨家 |
| **K3s 五大致命** | — | ✅ §2（Velero + CronJob + securityContext + NEMOTRON） | K3s 獨家 |
| **2026 K3s 主流對標** | — | ✅ §4（八大主題 + 8 必備工具） | K3s 獨家 |
| **AI 對 K3s 介入度量化** | 部分（路 4） | ✅ §5（Level 3/5、11 MCP tool） | K3s 補強量化 |
| **過去 30 天事故 pattern** | — | ✅ §6（13 事故 + 10 模式 + 7 預測） | K3s 獨家 |
| **RLS 驗證 SQL** | ✅ 路 14 SSH 鐵證（pg_policy=0） | ✅ §7（完整驗證 SQL） | **互相印證、K3s 提供工具** |
| **工具推薦** | 部分（路 4） | ✅ §8（12 工具 + 整合工數） | K3s 完整 |
| **9 台主機 SSH 實機** | ✅ 路 13/14/15/16（含 168/112/GCP-A/B） | — | V3 獨家 |
| **5/8 即時執行** | ✅ Part E（188 Ollama + 168 殘進程） | — | V3 獨家 |
| **統帥決策清單** | ✅ Part F（37 條） | ✅ §9（63 項） | **本檔合併為 86 項** |

---

## Part B — 雙審計交集（23 條互相印證的鐵證）

> 這些是兩份獨立完成的審計都查到的問題，**信心度最高，最該優先動手**。

### B1. 資料層 / Migration

| # | 發現 | V3 出處 | K3s 出處 |
|---|---|---|---|
| 1 | AwoooP migration 缺 rollback | 路 3「50 個中 35 無 rollback」 | §3 P0 #10「Phase 1-7 七份_ROLLBACK.sql 不存在」 |
| 2 | awoooi_prod RLS 未落地 | 路 14 SSH「pg_policy 0 rows」 | §3 P0 #11 + §7 完整驗證 SQL |
| 3 | 高破壞 migration 無 rollback | 路 3 列 5 條（pgvector / embedding 1024 / array→jsonb / mcp_gateway / DELETE） | §3 P0 #10「詐欺式註解」 |

### B2. K8s 工作負載

| # | 發現 | V3 出處 | K3s 出處 |
|---|---|---|---|
| 4 | CronJob 鏈路病灶 | 路 7「drift-cronjob 不在 kustomization」 | §2 #3「13/14/15/16 缺 NP label」 |
| 5 | 188 SPOF 嚴重 | 路 14（PG/Sentry/Langfuse/監控棧全在）| §1.2「188 是 K3s + AWOOOI app 共用 PG」 |
| 6 | VPA × 3 全 updateMode=Off | 路 7「28 天只蒐集建議無實效」 | §1.4「全部 updateMode=Off」 |

### B3. CI/CD / Secrets

| # | 發現 | V3 出處 | K3s 出處 |
|---|---|---|---|
| 7 | cd.yaml 18 commit 修不穩 | 路 8 列 5 大根因排行 | §3 P2 #43「拆 5 reusable workflow」 |
| 8 | Sentry MCP token = CHANGE_ME | 路 11 | §3 P0 #4「16 處 CHANGE_ME 殘留」 |
| 9 | secrets 治理失效 | 路 8（DSN 寫死）+ 路 11（CHANGE_ME） | §3 P0 #1-#5 全章節 |

### B4. AI / 模型路由

| # | 發現 | V3 出處 | K3s 出處 |
|---|---|---|---|
| 10 | 自建 12 Agent + K8sProvider 比 K8sGPT 深 | 路 4（subagent 全有用 + ArgoCDProvider/SentryProvider 已 register）| §4.1 + §5「先前誤判 2/5，實為 3/5」 |
| 11 | AI 學習回灌 KM 不完整 | 路 10「9 處 fusion 權重 hardcode」 | §5「learning 維度 2/5」 |
| 12 | LLM 對非 K8s asset 生 K8s 動作 | — | §6.2「Inventory-Aware 缺失」 |

### B5. 監控 / 觀測性

| # | 發現 | V3 出處 | K3s 出處 |
|---|---|---|---|
| 13 | 監控元件無監控 | 路 11（cAdvisor 5/5 過載）+ 路 14（188 監控棧 SPOF） | §6.2「Resource & Datastore 抖動」 |
| 14 | ClickHouse pool 三門檻無 lint | 路 14 + project_cpu_overload_postmortem_20260505 引用 | §3 P1 #32「ClickHouse pool×ratio precheck Job」 |
| 15 | kube-state-metrics namespace 不一致 | 路 13「121 K3s CP BACKUP / kube-state-metrics ns」 | §1.4「NodePort:30888 對外無認證」 |

### B6. 工具 / 補丁式治理

| # | 發現 | V3 出處 | K3s 出處 |
|---|---|---|---|
| 16 | LiteLLM CVE-2026-42208 未驗 | 路 9「CVSS 9.3 + 1.82.7/1.82.8 供應鏈」 | §3 P0 #4「secrets 治理失效」 |
| 17 | NetworkPolicy 增量加孔模式 | 路 7（隱含） | §6.2「NP 阻塞型」+ §6.3 預測 #2 |
| 18 | 過去 30d commit 48% 是 fix / 0 refactor | — | §6.2 核心洞察 |

### B7. 文件 / 流程

| # | 發現 | V3 出處 | K3s 出處 |
|---|---|---|---|
| 19 | 11 個 ADR 缺 rollback | 路 12（ADR-028/030/035/040/052/058/068/070/073/087/105） | §3 P0 #10 隱含 |
| 20 | ADR-105 雙開（mcp-agent + revert-a2-ollama） | 路 12 | — |
| 21 | Sprint5 / Telegram / Secrets / K3s / Sentry / Phase 6.5 五系列 Memory 重複 | 路 12 | — |

### B8. 主機資源紅燈

| # | 發現 | V3 出處 | K3s 出處 |
|---|---|---|---|
| 22 | 110 Harbor SPOF | 路 7「所有 prod image 唯一源」 | §6.3 預測 #1「Ollama proxy + Harbor + Gitea runner 三服務集中」 |
| 23 | 監控棧全在 188 → 188 掛則告警系統失聰 | 路 14 | §1.2「監控 + 資料 + AI + 備份目標全在同一主機」 |

---

## Part C — 雙審計差集（獨家發現）

### C1. V3 獨家發現（42 條，來自應用層 + 9 台主機 SSH）

#### C1a. 應用層獨家（27 條）

**後端**：11 個 0-import 孤兒（3,245 行）/ telegram_gateway 6,426 行 / decision_manager 3,531 行 / Ollama 四件套保留全部 / decision_fusion vs adapter 保留兩者

**前端**：70 page 中 38 純殼（54%）/ 7 半成品 / `/apm:24` 硬編碼 192.168.0.188:3301（違反前端內網 IP 禁令）/ 全站 0/70 i18n 違規

**DB**：AwoooP 16 model 中 9 schema-only / 11 張殭屍表（k8s_state_snapshots / log_clusters / dynamic_baselines 等）/ Redis namespace 12 種前綴並存 / N+1 兩處（learning_service:827 + incident_service:610）

**MCP / Skills**：12 個 plugin 0 呼叫（code-review / claude-md-management 等）/ 自製 critic vs plugin code-reviewer 兩套並存 / Subagent 12 人團隊全有用

**告警**：306 條 / 162 alertname / 120 散戶 / 80 重複定義（alerts.yml + alerts-unified.yml）/ 33 個 send 中 30 個無 dedup

**死代碼**：_archived 4 檔 ~2,000 行 / 6 個半成品 endpoint（notifications/agent/health 假運行 47 天）/ apps/web/ ~150 檔 D 未 commit / 全域 97 條 TODO/FIXME

**CI/CD**：GitHub 6 殭屍 workflow / Sentry DSN 寫死於 cd.yaml:277 + ci.yaml:207,412 / Telegram chat_id 寫死 7 處 / runner-healthcheck 每 10 分鐘吃 GitHub Billing

**套件**：8 個前端死依賴（~35MB node_modules）/ requirements.txt vs pyproject.toml 不同步 / starlette/next/axios 版本鎖定缺

**AI Provider**：GCP-B 24h 僅 375 次 + ollama ps 為空 / claude / nemotron / openclaw_nemo 三 provider 0 呼叫 / ai_router.py 1,407 行空轉

**外部服務**：LiteLLM/Open-WebUI/n8n 三個 188 容器無人理 / Discord 0 引用 / aiops nginx vhost 停擺 2 個月

**文件**：MEMORY.md:175 索引失效 / 10 個過期 feature flag / Sprint5 4 份散落

#### C1b. 主機 SSH 獨家（15 條）

| 主機 | 紅燈 |
|---|---|
| **110** | Swap 7.3G/7.8G（93%）即將 OOM / ollama-gcp-a/b nginx vhost 5/5 起 0 流量 / aiops vhost 停擺 62 天 / stock-platform-scheduler 每日 13:30 必失敗（程式碼 bug） |
| **120** | k3s-server 41% CPU、健康 |
| **121** | kube-state-metrics 在 `kube-state-metrics` ns 而非 `monitoring`（prom scrape config 可能靜默失敗） |
| **188** | momo-pro-system 1.9G/2G（95%）/ certbot failed / ClickHouse logs_v2 3,180 萬行無 TTL / Local Ollama 已從架構移除卻沒停（**已修，見 Part D**） |
| **GCP-A** | 11 個模型共 65GB / ADR-110 reference 寫 qwen3:8b 但實機是 qwen3:14b（已升級未同步文件） |
| **GCP-B** | 24h 僅 375 次 / ollama ps 為空 / Load 0.00 / 月燒錢近零產出 |
| **111** | load 13.51 重度過載（hook 攔截，僅 5/8 觀測值） |
| **168（統帥 Mac）** | 9 SkyComputerUseClient + 6 bun Telegram 殘進程（**已殺**）/ ai.openclaw.gateway exit -9 持續 crash-restart / 磁碟 183G/199G（剩 16GB）/ OPENCLAW_GATEWAY_TOKEN 寫死於 plist 明碼 |
| **112（Kali）** | scan_results 是 in-memory dict（重啟即清空）/ 無 webhook 推送 / kali-scanner log 100% 是 GET /health 沒有真實掃描結果 |

### C2. K3s 獨家發現（30 條，來自 K8s manifest + 2026 對標 + 事故 pattern）

#### C2a. 五大致命（K3s §2，V3 完全沒抓到）

| # | 問題 | 位置 |
|---|---|---|
| 1 | **Velero MinIO 密碼明文進 git history** | `k8s/velero/01-credentials.yaml:13-14` commit `eea6e3ac` |
| 2 | **Velero SA 綁 cluster-admin** | `k8s/velero/02-velero-install.yaml:28-29` |
| 3 | **4 個 CronJob 缺 system:awoooi label**（13/14/15/16，非 drift-cronjob） | `k8s/awoooi-prod/13~16-cronjob*.yaml` |
| 4 | **3 個 Deployment 缺 securityContext** | `06-deployment-api.yaml:42` + worker:43 + web:35 |
| 5 | **NEMOTRON env 違反 4/12 暫停決議** | `06-deployment-api.yaml:64` 寫死 `true` 覆蓋 `04-configmap.yaml:77` 的 `false` |

#### C2b. K3s 集群拓撲

- Datastore 用外接 PG（kine adapter）— 業界推薦反方向（節點 ≤5 用 embedded etcd HA）
- 0 PVC / 0 StatefulSet / 0 storageClassName — 完全 stateless 但 188 SPOF 嚴重
- CNI = Flannel（無 eBPF 觀測能力）
- LB = Klipper-lb（無 BGP/FRR）
- VIP `192.168.0.125:6443` 單 VIP 無 BGP
- Worker PDB maxUnavailable=1 + replicas=1 = 允許全停

#### C2c. Migration / RBAC 細節

- Migration Job 5 個全用 sed 解析 DATABASE_URL → PGPASSWORD 暴露 process list
- `awoooi-executor-dev` RBAC `update` 應降為 `patch`
- Velero `Schedule` CRD 找不到證據（可能根本沒在做定期 backup）
- 188 PG `max_connections` 待提到 200 + 加 pgbouncer
- K3s etcd 快照只在本機（無遠端推送）
- K3s audit log 未啟用（CIS 1.2.19）

#### C2d. 2026 主流對標八大主題（V3 沒做這層研究）

| 主題 | 我們缺什麼 |
|---|---|
| **Runtime 安全** | Falco（生產裸跑） |
| **Image 漏洞** | Trivy Operator |
| **Policy 治理** | Kyverno |
| **資源右移** | Goldilocks + KRR（VPA Off 模式無建議） |
| **Progressive Delivery** | Argo Rollouts（無金絲雀） |
| **SLO 自動化** | Sloth/Pyrra |
| **AIOps for K8s** | K8sGPT operator + Ollama（第二 AI 視角） |
| **Supply Chain** | cosign + Kyverno 驗簽 |

#### C2e. AI 對 K3s 介入度量化（V3 沒量化）

- **修正前誤判 2/5 → 實為 3/5**
- 已實作 11 個 K3s MCP tool：6 read + 5 write（trust_score≥0.7 gate）
- 三層架構：MCP 工具層 / Python Client 層 / SSH 逃生層
- 異常盲區覆蓋率：35% 無法自動修復（ImagePullBackOff / Evicted / PVC 滿 / HPA scale 失敗 / Cert 過期 / RBAC drift / etcd 損毀）
- 建議補 5 種 ActionType：IMAGE_PULL_RETRY / POD_EVICT_RECOVERY / PVC_EXPAND_REQUEST / CERT_RENEW_TRIGGER / RBAC_DRIFT_REPAIR

#### C2f. 過去 30 天 13 事故 × 10 模式 × 7 預測（V3 沒做時序分析）

**13 起事故時序**：04-14 NP default-deny 9.4h → 05-08 IMAGE_TAG_PLACEHOLDER

**10 大根因模式**：NP 阻塞型 / Inventory-Aware 缺失 / Image Tag 中毒 / CronJob SA/DNS 寫死 / Probe 不當 / Resource & Datastore 抖動 / CD pipeline 不穩 / Secret 治理 / Kubeconfig context gap / 節點負載集中度

**7 大未來爆點預測**：
1. 110 主機掛 → Ollama proxy/Harbor/Gitea runner 全斷
2. 下一個 NP 漏孔事故（增量加孔模式）
3. CronJob 自修報表斷鏈再現（無 last_success_timestamp）
4. IMAGE_TAG_PLACEHOLDER 再次蓋掉（apply -f 與 GitOps 混用）
5. **EU AI Act 8/2 倒數 86 天 + RLS 未驗 → cross-tenant leak**
6. SignOz/Sentry CH pool 改動再次崩潰（三門檻無 lint）
7. LLM 對新 alertname 生 kubectl scale unknown（inventory hard-gate 缺）

#### C2g. 12 工具推薦表

k9s / stern / KRR / K8sGPT / kube-bench / Falco / Trivy Operator / Kyverno / kubectx-kubens / Argo Rollouts / kubescape / act

---

## Part D — 衝突調解（3 處）

### D1. CronJob 病灶到底是 NP label 還是 kustomization？

**衝突**：
- V3 路 7：「drift-scanner 不在 `kustomization.yaml`，ArgoCD 永遠不 sync」
- K3s §2 #3：「drift-cronjob 已修，13/14/15/16 沒修（NP label 缺）」

**調解**（**兩個獨立病灶，必須兩邊都修**）：

| CronJob | NP label 問題 | kustomization 問題 |
|---|---|---|
| `drift-scanner` | ✅ 已修（5/5 事故修復清單） | 🔴 **未加進 kustomization**（V3 鐵證） |
| `backup-restore-test` | ❓ 待驗 | 🔴 **未加進 kustomization** |
| `13-cronjob-k3s-report` | 🔴 **缺 system:awoooi label** | ✅ 已加進 kustomization |
| `14-cronjob-weekly-report` | 🔴 **缺 system:awoooi label** | ✅ 已加進 kustomization |
| `15-cronjob-km-vectorize` | 🔴 **缺 system:awoooi label** | ✅ 已加進 kustomization |
| `16-cronjob-backup-restore-test` | 🔴 **缺 system:awoooi label** | 🔴 與 #2 同檔，需查證 |

**結論**：
- V3 看到的是 **ArgoCD sync 鏈**（CronJob 物件根本沒被 ArgoCD 管到）
- K3s 看到的是 **Network Policy 攔截鏈**（CronJob 即使被 sync，DNS/Telegram/PG egress 仍被擋）
- **必須兩個都修才能徹底治本**

### D2. AI 對 K3s 介入能力到底是 Level 2 還是 3？

**衝突**：
- V3 路 4 隱含「ArgoCDProvider 與 SentryProvider 已 register 但 incident_service 未直接呼叫」
- K3s §5「先前誤判 2/5，實為 3/5（11 MCP tool 已實作）」

**調解**：以 K3s 量化為準（**Level 3/5**）

理由：
- K3s 引用 `k8s_provider.py` 11 個 tool 實際存在（Plan/Execute 維度可達 3/5）
- Learn 維度確實 2/5（V3 路 10 證實 9 處 fusion 權重 hardcode = AI 自學失效）
- ArgoCDProvider/SentryProvider 是 **gateway registry 被動路由**（V3 觀察），不影響 K3s MCP tool 的存在事實

### D3. NEMOTRON 是「0 呼叫」還是「env 違反暫停決議」？

**衝突**：
- V3 路 10：「`nemotron` (NVIDIA NIM) 0 呼叫，`ENABLE_NEMOTRON_COLLABORATION=false` + `USE_OLLAMA_TOOL_CALLING=true` 雙 gate 切流」
- K3s §2 #5：「`06-deployment-api.yaml:64-65` 寫死 `true` 覆蓋 ConfigMap 的 `false`」

**調解**（**兩個都對，但 K3s 揭露的是更深層的雷**）：
- V3 從**呼叫量**看，確實 0 次（gate 仍在防禦）
- K3s 從**配置層**看，env > envFrom，**ConfigMap 暫停指令被 Deployment env 覆蓋**
- **下次 Deployment 重啟若有人改了另一個 gate**（如刪 USE_OLLAMA_TOOL_CALLING），就會直接觸發 60s timeout 路徑

**結論**：必須刪 Deployment env 覆蓋（K3s §2 #5），保持 ConfigMap 是唯一 source of truth。

---

## Part E — 統一 P0-P4 行動清單（去重後 86 項）

### 🔴🔴🔴 五大致命（必須今日內處理，K3s §2）

| # | 動作 | 來源 | 工數 |
|---|---|---|---|
| **F1** | Velero MinIO 密碼撤離 + git filter-repo + 改 SealedSecret | K3s §2 #1 | 4h（需統帥授權輪換 secret） |
| **F2** | Velero SA 從 cluster-admin 降為限定 ClusterRole | K3s §2 #2 | 1h |
| **F3** | 4 個 CronJob（13/14/15/16）補 `system: awoooi` label | K3s §2 #3 | 30min |
| **F4** | 3 個 Deployment 補 securityContext + namespace enforce 升 restricted | K3s §2 #4 | 1h |
| **F5** | 刪 `06-deployment-api.yaml:64` NEMOTRON env 覆蓋 | K3s §2 #5 | 5min |

### 🔴 P0 本週（5/8-5/14）共 24 項

#### 今日 4 小時內（V3 Part F today）

| # | 動作 | 來源 | 狀態 |
|---|---|---|---|
| P0-01 | **110 Swap 93% 排查 docker stats 找最大記憶體戶** | V3 路 13 | ⏳ |
| P0-02 | **awoooi_prod RLS 驗證**（執行 K3s §7 第 1-6 SQL） | V3 路 14 + K3s §7 | ⏳ |
| P0-03 | 修 188 certbot（`certbot renew --dry-run`） | V3 路 14 | ⏳ |
| P0-04 | apps/web/ ~150 檔 D 立刻 git rm 獨立 commit | V3 路 6 | ⏳ |

#### 本週內（含上面 5 大致命）

| # | 動作 | 來源 |
|---|---|---|
| P0-05 | drift-scanner / backup-restore-test 加進 kustomization | V3 路 7 |
| P0-06 | Migration Job 補 `system:awoooi` label | K3s §3 P0 #7 |
| P0-07 | AwoooP Phase 1-7 七份 migration 補 rollback SQL | V3 路 3 + K3s §3 P0 #10 |
| P0-08 | 5 個 Migration Job sed 解析改 readSecret pattern | K3s §3 P0 #12 |
| P0-09 | 188 PG `max_connections` 提至 200 + 部署 pgbouncer | K3s §3 P0 #13 |
| P0-10 | Velero `Schedule` CRD 部署 + 異地備份至 GCP-A MinIO | K3s §3 P0 #14 |
| P0-11 | 120/121 補 node-exporter scrape job | K3s §3 P0 #15 |
| P0-12 | SSH MCP 白名單加 120/121（K3s worker 自修能力） | K3s §3 P0 #16 |
| P0-13 | cAdvisor 從 110 拆出（解 SPOF） | K3s §3 P0 #17 |
| P0-14 | ArgoCD ↔ Gitea Webhook HMAC 斷線告警 | K3s §3 P0 #18 |
| P0-15 | 188 momo-pro-system 加 alert（>90% mem）+ limit 升 4GB | V3 路 14 |
| P0-16 | 168 排查 ai.openclaw.gateway SIGKILL 根因 | V3 路 16 |
| P0-17 | 修 4 前後端破鏈 + /monitoring + /tickets/dashboard 假資料 | V3 路 2 |
| P0-18 | 清 .github/workflows/ 6 個殭屍（git mv → .archived/） | V3 路 8 |
| P0-19 | Sentry DSN 從 cd.yaml:277 + ci.yaml:207,412 改 secrets + filter-repo | V3 路 8 |
| P0-20 | 清 .claude/settings.json 真實 token + 12 空轉 plugin | V3 路 4 |
| P0-21 | SSH 110 驗 LiteLLM 版本 ≥ 1.83.7-stable | V3 路 9 |
| P0-22 | 停 110 ollama-gcp-a/b + aiops nginx vhost（0 流量） | V3 路 13 |
| P0-23 | 清 188 三閒置容器（LiteLLM / Open-WebUI / n8n） | V3 路 14 |
| P0-24 | 修 110 stock-platform-scheduler bug 或停服務 | V3 路 13 |

### 🟠 P1 兩週內（5/15-5/28）共 22 項

#### 安全強化（K3s §3 P1）

| # | 動作 | 來源 |
|---|---|---|
| P1-01 | 部署 Sealed Secrets 或 External Secrets Operator | K3s §3 P1 #19 |
| P1-02 | Harbor ImagePullSecret 部署 | K3s §3 P1 #20 |
| P1-03 | kured ns 從 privileged 降 baseline | K3s §3 P1 #21 |
| P1-04 | NP `0.0.0.0/0:443` egress → Cilium FQDN policy 或 squid SNI 白名單 | K3s §3 P1 #22 |
| P1-05 | `awoooi-executor-dev` RBAC 從 `update` 降 `patch` | K3s §3 P1 #23 |
| P1-06 | **部署 Falco**（runtime threat detection，K3s §4 P0） | K3s §4 必備 #1 |
| P1-07 | **部署 Trivy Operator**（持續 image vuln 掃描） | K3s §4 必備 #2 |

#### 工作負載強化

| # | 動作 |
|---|---|
| P1-08 | Worker `replicas:2` + `maxUnavailable:1`（解 PDB 全停風險） |
| P1-09 | Worker / dev API 補 startup probe |
| P1-10 | `prometheus-multiproc` emptyDir 加 `sizeLimit:100Mi` |
| P1-11 | NPD 改 `capabilities.add:[SYS_ADMIN]` 取代 privileged:true |
| P1-12 | OTEL collector 改 `fsGroup:0` + readOnly hostPath |

#### 資料層 / 工具

| # | 動作 | 來源 |
|---|---|---|
| P1-13 | ClickHouse pool×ratio precheck Job + Prometheus alert | K3s §3 P1 #32 |
| P1-14 | `core/redis_keys.py` 統一 namespace（33+ 處） | K3s §3 P1 #33 |
| P1-15 | **GCP-B 改 weighted round-robin 70/30**（最大成本紅燈） | V3 路 10 |
| P1-16 | 188 監控棧 SPOF 拆解計畫 | V3 路 14 + K3s §3 P3 #58 |
| P1-17 | 112 Kali scan 結果持久化 + webhook 推送或廢棄聲明 | V3 路 16 |
| P1-18 | 後端清 11 個 0-import 孤兒（-3,245 行） | V3 路 1 |
| P1-19 | 前端清 8 個死依賴（-35MB node_modules） | V3 路 9 |
| P1-20 | 38 個純殼前端頁面決策（保留行銷主頁、刪冗餘 redirect） | V3 路 2 |
| P1-21 | 6 個半成品 endpoint 三選一（接真 service / 410 Gone / 刪） | V3 路 6 |
| P1-22 | 修 Sentry MCP token = CHANGE_ME | V3 路 11 |

### 🟡 P2 一個月內（5/29-6/30）共 19 項

#### 2026 主流工具（K3s §4 必備清單剩餘）

| # | 動作 | 來源 |
|---|---|---|
| P2-01 | **部署 Kyverno** policy 治理（require-labels / resource-limits / no-latest-tag） | K3s §4 必備 #4 |
| P2-02 | **部署 Goldilocks + KRR**（VPA Off 模式建議） | K3s §4 必備 #5 |
| P2-03 | **部署 K8sGPT + Ollama**（餵 OpenClaw 第二 AI 視角） | K3s §4 必備 #8 |
| P2-04 | **部署 kube-bench**（CIS K3s benchmark） | K3s §3 P2 #39 |
| P2-05 | **部署 system-upgrade-controller**（K3s 升級自動化） | K3s §3 P2 #40 |
| P2-06 | K3s etcd 快照推 S3/遠端 | K3s §3 P2 #41 |

#### 程式碼修復

| # | 動作 | 來源 |
|---|---|---|
| P2-07 | learning_service.py:529, 592 兩個 N+1 改批次 | K3s §3 P2 #42 |
| P2-08 | cd.yaml 拆 5 reusable workflow（53860 bytes） | V3 路 8 + K3s §3 P2 #43 |
| P2-09 | Migration `manifest.yaml` + `helm.sh/hook-weight` 控制順序 | K3s §3 P2 #44 |
| P2-10 | `kine_request_duration_seconds{q=0.99} > 0.5 for 5m` 告警 | K3s §3 P2 #45 |
| P2-11 | ArgoCD selfHeal 範圍涵蓋 ConfigMap | K3s §3 P2 #46 |
| P2-12 | SSH MCP audit log 完整記錄 | K3s §3 P2 #47 |
| P2-13 | K3s audit log 啟用（CIS 1.2.19） | K3s §3 P2 #48 |
| P2-14 | 補 5 種 ActionType（K8s 異常自修補完整） | K3s §5.5 |
| P2-15 | 50 migration 補剩 28 個 rollback | V3 路 3 |
| P2-16 | 9 處 fusion 權重搬進 PG `ai_decision_weights` 表 | V3 路 10 |
| P2-17 | `USE_AI_ROUTER=true` 灰度 10%→50%→100% | V3 路 10 |
| P2-18 | 拆 telegram_gateway.py 6,426 行（落地 ADR-109） | V3 路 1 + 路 5 |
| P2-19 | 告警 162 alertname 中 120 散戶補 symptom_pattern | V3 路 5 |

### 🟢 P3 兩個月內（7-8 月）共 11 項

| # | 動作 | 來源 |
|---|---|---|
| P3-01 | **Argo Rollouts**（API/Web canary 10%→50%→100%） | K3s §4 必備 #6 |
| P3-02 | **Sloth/Pyrra SLO**（API p99 latency / error rate） | K3s §4 必備 #7 |
| P3-03 | **kubescape RBAC visualization** | K3s §3 P3 #52 |
| P3-04 | **cosign image signing + Kyverno 驗簽** | K3s §3 P3 #53 |
| P3-05 | ArgoCD ApplicationSet 多環境管理 | K3s §3 P3 #54 |
| P3-06 | Argo CD Image Updater | K3s §3 P3 #55 |
| P3-07 | 6 個 GitHub Actions workflow 全封存（落地 P0-18 之延伸） | K3s §3 P3 #56 |
| P3-08 | 評估 K3s `--datastore` 從 kine+PG 退回 embedded etcd HA | K3s §3 P3 #57 |
| P3-09 | 188 SPOF 拆解：MinIO/Sentry/Langfuse 評估搬出 | K3s §3 P3 #58 |
| P3-10 | AwoooP 9 schema-only model 標 deprecation 觀察 60 天 | V3 路 3 |
| P3-11 | ADR-105 雙開重編號 + 5 重複 Memory 系列合併 | V3 路 12 |

### 🔵 P4 戰略（Q3-Q4）共 5 項

| # | 動作 | 來源 |
|---|---|---|
| P4-01 | eBPF 觀測棧（Cilium 取代 Flannel + Hubble + Beyla / OTel OBI） | K3s §4 主題 4 |
| P4-02 | VictoriaMetrics 取代 Prometheus（記憶體 -60%） | K3s §4 主題 4 |
| P4-03 | EU AI Act 8/2 高風險合規（**倒數 86 天**） | K3s §6.3 預測 #5 |
| P4-04 | K3s 多集群 Velero + ApplicationSet | K3s §3 P4 #62 |
| P4-05 | Karpenter 評估（裸機需 kwok provider） | K3s §3 P4 #63 |

### 條件觸發 / 非時效驅動

| # | 動作 | 觸發條件 |
|---|---|---|
| C-01 | SGLang 落地 | 雲端 API 月費 > $1500 或新採購 NVIDIA GPU |
| C-02 | MLX 整合 | 採購 Mac Studio M3/M4 Max 64GB+ |

---

## Part F — 已完成清單（5/8 即時執行）

### F1. ✅ 188 Local Ollama 完全清除（5/8 14:35-14:50 CST）

| 項目 | Before | After |
|---|---|---|
| 模型總大小 | 15GB | 44KB |
| 188 主磁碟 | 194GB | 179GB（-15GB） |
| 容器影響 | 25 healthy | 25 healthy（0 受影響） |

### F2. ✅ 168 Mac 殘進程清理（5/8 14:54-14:58 CST）

| 指標 | Before | After |
|---|---|---|
| Load (1m) | 9.09 | 5.69（-37%） |
| SkyComputerUseClient | 12 | 1（殺 11） |
| bun telegram | 9 | 1（殺 8） |

**未完成**（需統帥手動）：
- 統帥到 OpenAI Codex 應用 → 設定 → 關閉「Computer Use Beta」（防再產殘進程）

---

## Part G — 統帥決策矩陣（時效 × 影響 × 工數）

### 🟥 立即決策需求（**今日**等統帥批准才能動）

| # | 決策點 | 影響 | 為何要批准 |
|---|---|---|---|
| **D1** | 輪換 Velero MinIO 密碼 + filter-repo 擦 git 歷史 | DR 資料完整性 | filter-repo 不可逆 + 需重新部署 Velero pod |
| **D2** | awoooi_prod RLS 驗證如不通過，是否立刻擋 EwoooC Phase 6 寫入 | EU AI Act 86 天倒數 | 商業節奏影響 |
| **D3** | GCP-B 改 70/30 weighted（停掉「standby 月燒錢近零產出」） | 雲端成本 | 直接影響容災策略 |
| **D4** | 6 個 GitHub workflow git mv → .archived/ | CI/CD 雙跑風險解除 | 動到第二個 SCM |
| **D5** | 4 個 CronJob 補 NP label → 立刻 commit + ArgoCD sync | 5/5 事故根因再現預防 | K8s prod 變更 |

### 🟧 本週內可自主執行（不需單獨批准）

P0-01（110 Swap 排查）/ P0-04（apps/web/ git rm）/ P0-15（momo-pro alert）/ P0-17（前端假資料替換）/ P0-21（SSH 110 驗 LiteLLM）

### 🟨 兩週內待規劃（需 P9 拆 task）

P1-01/02/06/07（Sealed Secrets / ImagePullSecret / Falco / Trivy Operator）四項是「導入新工具」，需 fullstack-engineer + critic 流程

---

## Part H — 風險熱圖（系統性紅燈四維整合）

### H1. 規劃完整 vs 落地失效（V3 路 11 + K3s §6.2 鐵證）

| 規劃 | 落地實況 |
|---|---|
| ai_router.py 1,407 行 | USE_AI_ROUTER=False 空轉 4 週 |
| ADR-109 33 個 send | 30 個無 dedup |
| AwoooP 16 model | 9 個 schema-only |
| ADR-118 awooop_phase1_batch1_rls | **prod 0 條 pg_policy** |
| drift-scanner / backup-restore-test | 不在 kustomization → ArgoCD 永遠不 sync |
| AI 自學北極星 | 9 處 fusion 權重 hardcode |
| Velero 裝了 | **可能根本沒在做定期 backup** |
| NEMOTRON 4/12 暫停 | Deployment env 寫死 true 覆蓋 ConfigMap |

### H2. 閒置成本與安全暴露

- ~~188 Local Ollama 15GB~~ ✅ 5/8 已清
- **GCP-B VM 24h 僅 375 次推理**（月燒錢近零產出）
- LiteLLM + Open-WebUI + n8n 三個 188 容器無人理
- 12 個 plugin 0 呼叫吃 context
- **Velero MinIO 密碼進 git history**（K3s §2 #1）
- **Velero SA = cluster-admin**（K3s §2 #2）
- **Sentry DSN 寫死於 .github/workflows/** 三處
- LiteLLM CVE-2026-42208 + 供應鏈攻擊未驗版本
- GitHub 6 workflow 仍可觸發競爭 K3s

### H3. 死代碼與半成品鏽蝕

- 11 個 services 全域 0 import（3,245 行）
- 38 / 70 個前端頁是純殼或半成品
- 6 個半成品 endpoint 假運行 47 天
- apps/web/ ~150 檔 D 未 commit
- 50 個 migration 中 35 個無 rollback
- 11 個 ADR 缺 rollback 段
- ADR-105 雙開未重編號

### H4. 實機資源即將爆炸

- **110 Swap 7.3G/7.8G（93%）** — Sentry/ClickHouse 隨時 OOM
- **188 momo-pro-system 1.9G/2G（95%）** — 距 OOM 僅 100MB
- **168 統帥 Mac 磁碟 183G/199G（93%）** — 剩 16GB
- **188 certbot failed** — SSL 即將過期斷服
- **111 MacBook load 13.51** — M1 Pro 嚴重過載
- **112 Kali scan 結果全是孤島** — webhook 從未呼叫過後端
- **EU AI Act 8/2 倒數 86 天** + RLS 未驗 → cross-tenant leak 風險

### H5. K3s 集群層補足（K3s 獨家）

- 188 PG 為 K3s + AWOOOI app + Sentry + Langfuse 共用 datastore（同時死）
- VIP 192.168.0.125 單點無 BGP
- 110 Harbor SPOF（所有 prod image 唯一源）
- Worker PDB maxUnavailable=1 + replicas=1 = 允許全停
- K3s etcd 快照只在本機

---

## 信心評估

- **整合方法論**：兩份審計逐節對照，依「交集 / 差集 / 衝突」三類重組，無遺漏
- **交集 23 條**：兩份獨立 agent 團隊都查到，**信心極高**（互相印證）
- **差集 72 條**（V3 42 + K3s 30）：各自獨家但有 file path + line number 證據
- **衝突 3 處**：全部已調解，並指出哪些是「兩個獨立病灶」
- **86 項統一行動清單**：完整覆蓋 V3 37 條 + K3s 63 項，含 5 大致命

**整體信心：High**

---

## 附錄 A — 三份檔案交叉引用速查

| 想找什麼 | 看哪份 |
|---|---|
| 整合主檔（本檔） | `2026-05-08-INTEGRATED-master-audit.md` |
| 應用層死代碼 / 前端真實度 / 主機 SSH 實況 / 使用率紅燈 | `2026-05-08-FINAL-v3-utilization-audit.md` |
| K3s manifest 安全紅燈 / 2026 主流對標 / AI 對 K3s 介入 / 30d 事故 pattern | `2026-05-08-K3S-deep-audit-and-roadmap.md` |
| 5/8 規模/技術債盤點（V2，本整合的前序） | `2026-05-08-FINAL-comprehensive-audit-and-roadmap.md` |
| 硬體現況真相 | `2026-05-08-revised-roadmap-with-hardware-truth.md` |
| 進度軌跡 | `docs/LOGBOOK.md` |
| 跨 session 記憶 | `~/.claude/projects/-Users-ogt-awoooi/memory/project_audit_20260508_integrated.md` |

## 附錄 B — Memory 對齊

本整合報告引用以下 Memory（按優先序）：

- `feedback_clickhouse_pool_size_rules.md`（5/5 事故，本檔 P1-13）
- `feedback_telegram_secrets_injection.md`（ADR-035，本檔 P0-19）
- `feedback_secrets_leak_incidents_2026-04-18.md`（零信任 3 層，本檔 F1-F2）
- `feedback_secret_debug_output_ban.md`（PG PW 暴露事故，本檔 P0-08）
- `project_cpu_overload_postmortem_20260505.md`（110/188 過載，本檔 P0-01 + P0-15）
- `project_audit_20260507.md`（5/7 全景審計）
- `project_audit_20260508_v3.md`（V3 使用率盤點，本檔 Part C1）
- `feedback_hardware_compatibility_first.md`（5/8 統帥訓示，本檔 C-01 + C-02 條件觸發）

## 附錄 C — 9 台主機 SSH 連線速查

| 主機 | 連線方式 | User | 角色 |
|---|---|---|---|
| 110 | `ssh 192.168.0.110` | wooo | DevOps 金庫（Sentry+Harbor+Gitea+Prometheus） |
| 120 | `ssh 192.168.0.120` | wooo | K3s CP MASTER + keepalived pri=101 |
| 121 | `ssh 192.168.0.121` | wooo | K3s CP BACKUP + ArgoCD |
| 188 | `ssh 192.168.0.188` | ollama | SPOF AI+Web（PG+Sentry+Langfuse+監控棧） |
| 111 | `ssh ollama-111-gpu` | ooo | M1 Pro Local Ollama 三層容災 fallback |
| 112 | `ssh kali@192.168.0.112` | kali | Kali 安全網（trivy/nuclei/nmap） |
| 168 | `ssh 192.168.0.168` | ogt | Mac mini M4 統帥開發機 |
| GCP-A | `ssh gcp-a` | oleetsai | Ollama Primary 34.143.170.20 |
| GCP-B | `ssh gcp-b` | owen_taipei | Ollama Secondary 34.21.145.224 |
