# Claude Code 盤點驗證記憶(2026-05-13) > 用途:接續 V1/V2 全棧盤點整改時,先看這份,避免把已修或已過期的項目重複當成阻擋。 ## 已驗證並修補 - `rag_query_log.saved_call`:已改為只有高信心 RAG 命中且跳過 LLM 時寫 `true`,並補測試。 - `ai_calls.rag_hit`:logger API 原本可寫但缺回歸測試;已補 `set_rag_hit(True)` 寫入測試。 - 舊 `SSH_JUMP_* / SSH_TARGET_*`:Python caller 已不存在;已從 `config.py` 與 `.env.example` 範例移除,執行路徑以 `ELEPHANT_ALPHA_JUMP_*` 為準。 - `filesystem-mcp`:`MCP_BASE_HOSTS` 與 health check 已存在;已補 `ops_diagnostics` 唯讀工具白名單,並測試 `read_file` 可通、`write_file` 被拒。 - `mcp_calls.status`:已補 `ok/cache_only/timeout/rate_limited/error` 細分,早退結果也會帶 `status='error'`。 - Telegram `cat_` callback:主 OpenClaw route 不是問題;polling bot helper 的預設 `cat` 才是潛在漏 handler。已改預設為既有 handler `trend` 並補測試。 - Scheduler 觀測任務:BGE-M3 embedding consistency 不一致、host health probe、AI error spike、觀測台日報與 cleanup 例外都已接 `_notify_scheduler_failure()`。 - AutoHeal Telegram inline:`obs_heal` 已用 `_CURRENT_USER_ID_CTX` 記錄實際 Telegram user,webhook request 開頭會清空 stale user context。 - 匯入檔名日期 helper:`routes/import_routes.py` 已改用 `utils.text_helpers.extract_snapshot_date_from_filename()` 單一來源,並用真實日期解析拒絕 `20261399` 這類不可能日期。 - `monthly_summary_analysis` 匯入已守住「刪同年月後 append」路徑,`tests/test_import_service_sql_params.py` 會防止該月結匯入區塊退回整表 `if_exists='replace'`。 - ROI 月報 feedback 區塊:反饋趨勢查詢失敗仍不阻擋月報,但已改為 warning + stack,避免完全靜默。 - Elephant Alpha short-circuit:`log_ai_call` 遙測失敗仍不阻擋省成本 return,但已改為 warning + stack。 - Claude cost throttle:成本節流檢查失敗仍維持 Claude 可用,但已改為 warning + stack,避免成本保護失效無跡可查。 - `ai_call_logger` caller registry:registry 匯入失敗仍不阻擋 LLM 遙測,但已改為 warning + stack。 - Observability route:promotion review RAG 相似查詢、PPT audit history 缺表、host health probe 寫入、MCP 24h summary 缺表等 fail-safe 區塊已改成 debug/warning log,不再完全靜默。 - Google Drive import:`services/import_service.py` 的日期 `IN (...)` 刪除/驗證查詢已改為 SQLAlchemy bind params,不再把 DataFrame 日期值拼進 SQL 字串。 - OpenClaw Bot:中文字型下載、趨勢同期 DB 查詢、匯入格式業績預覽解析等 best-effort 區塊已補 debug/exception/warnings,避免真正錯誤完全無跡可查。 - Telegram polling bot:舊 callback 正規化失敗、空 `momo:eig:` event_id 回覆失敗仍保持 fail-safe,但已補 debug log。 - `ai_call_logger._write_to_db` 不是死函數:它是 `_async_write()` 的 daemon thread target;`infer_caller_from_stack()` 確認無 caller 後已移除。 - `cache_manager.FingerprintCache` 與 dashboard shared cache 清理維持 fail-open / best-effort,但已補 debug log,避免 cache fingerprint 或檔案清理失敗完全沉默。 ## 已驗證為已修或過期 - migration / ORM:`032` 已入庫,`033` host label、`034` embedding_signature、`035` business baseline、`036` incidents 雙欄、`037` action_plans guardrails 均已存在。 - `migrations/031` 權限已是 `644`。 - `app.py` 的 `SYSTEM_VERSION` 已從 `config.py` import,app 內只留版本註解。 - V2 提到的 `app.py` 死 import 與 `scheduler.py import schedule` 已不成立;`app.py` 仍使用 `schedule.run_pending()` 等呼叫。 - `tests/test_phase3f_cleanup_contracts.py` 已補 guard:V2 點名的舊 app imports 不得回來,且 `app.py` 的 active `schedule` 用法不可被誤刪。 - V2 點名的 3 個 silent failure 點位已不是 `except: pass`:OpenClaw 趨勢圖暫存檔清理與 Notification public_url 讀取失敗都會記 log,並由 `tests/test_phase3f_cleanup_contracts.py` 守住。 - Cron 盲區清單多數已補 `_notify_scheduler_failure()`;ROI 月報已避開 09:00 改 09:05,AI smoke 已是 09:10。 - V2 指出的 9 個 cron 盲區已補回歸守門:8 個 `run_scheduler.py` wrapper 必須呼叫 `_notify_scheduler_failure()`,`scheduler.py::run_promo_event_task` 必須呼叫 `notify_failure()`。 - 09:00 排程衝突已有回歸守門:`daily_report=09:00`、`roi_monthly_report=09:05`、`ai_smoke_daily_summary=09:10` 必須保持錯開。 - AutoHeal inline host transition 告警已有 DB transition dedup 守門:`run_host_health_probe()` 只在健康狀態翻轉且 1h 內沒有同方向 transition 時推送。 - CD migration 全範圍冪等已有回歸守門:`.gitea/workflows/cd.yaml` 必須維持 024-099 pattern、`sort | uniq` 與 `for m in $V5_MIGRATIONS` apply loop。 - CD Observability production smoke 已補 timeout 守門:`quick_review.sh --observability-smoke` 必須帶 `--timeout 12`。 - 0-byte `database/momo*.db` 迷惑檔已不存在;真實 SQLite 僅在 `data/momo_database.db`。 - `.gitignore` 已涵蓋 `.claude/worktrees/`、`.tmp_*`、`tmp_*.png`、`MOMO Pro/`、root/uploads/screenshots 與 `MOMO Pro` uploads/screenshots,並由 `tests/test_gitignore_contracts.py` 守住。 - `cache_service.py` 已成為 `cache_manager.py` 的相容 shim,`_SALES_CACHE_TTL` 單一來源有測試鎖住。 - `aiops-core/requirements.txt` 已不存在,`aiops-core/README.md` 已標記此目錄只保留歷史 stub,不應安裝或部署。 - V2 提到的「死依賴」不可整批刪:`beautifulsoup4` 用於多個 crawler、`google-api-python-client` 用於 Google Drive、`google-generativeai` 用於 Gemini paths、`python-pptx` 用於 PPT generator、`matplotlib` 用於 Telegram/圖表/PPT。 - `tests/test_requirements_pinning.py` 已鎖住上述被 V2 誤列的 runtime dependencies:套件需留在 `requirements.txt`,且至少一個 runtime import 證據仍存在。 - `paramiko` 已確認沒有 runtime import;ADR-013 現行實作改以 `utils/ssh_helper.py` 組 CLI `ssh`,因此已從 `requirements.txt` 移除並補測試防止依賴殘影回來。 - `pgvector` Python package 與 `matplotlib-inline` 已確認不是 runtime 依賴:pgvector 走 PostgreSQL extension + 本地 SQLAlchemy `Vector` type,Jupyter inline backend 不屬 production path;兩者已從 `requirements.txt` 移除並補測試。 - `tests/test_pg_sync.py` 已改為 opt-in integration test:預設不再連 localhost PostgreSQL 或建立/刪除測試表,需 `RUN_PG_SYNC_INTEGRATION=1` 且提供 `POSTGRES_PASSWORD` 才執行。 - `services/pg_sync_service.py` 是顯式 opt-in legacy CLI,不是生產自動同步路徑;`tests/test_pg_sync_contract.py` 已守住預設 OFF 與 runtime paths 不自動 import。 - `qwen3:14b` 不是未使用 Ollama 模型:OpenClaw QA、NemoTron dispatch 與 LLM model router 仍有現役路徑;`tests/test_qwen3_runtime_usage.py` 已守住,不能只因體積大就三主機移除。 - Ollama host env 已加白名單護欄:`OLLAMA_HOST*` / `EMBEDDING_HOST` 只接受 GCP-A、GCP-B、111 或 110 proxy,誤設 188/localhost 會回到核准主機。 - Hermes intent 與批量 analyst 已從單次 `resolve_ollama_host()` + raw `requests.post('/api/generate')` 改為 `OllamaService.generate()`,同一請求會依序 retry GCP-A → GCP-B → 111,並保留 `HERMES_KEEP_ALIVE` 與實際 provider 回寫測試。 - NemoTron qwen3 dispatch 的 `/api/chat` tool-calling 路徑已補同一請求三主機 retry:host 失敗會 `mark_unhealthy()` 後再 resolve 下一台,GCP-A 失敗可在同次 dispatch 接 GCP-B/111,三台都失敗才 fallback NIM。 - PPT vision、PPT 文案 final fallback 與 MCP 離線 final fallback 已改走 `OllamaService.generate()`;`OllamaService.generate()` 支援 `options`、`keep_alive` 與 vision `images`,特殊 `/api/generate` 路徑同樣取得三主機 retry。 - OpenClaw QA / daily Hermes template / NemoTron qwen3 的 flag 文件與測試已對齊 Ollama-first 預設 ON;顯式 `false` 才是 Gemini/NIM legacy 緊急退路。OpenClaw QA 已移除單一 `OPENCLAW_QA_OLLAMA_HOST` 主機覆寫,`_call_qwen3_qa()` 改走 `OllamaService` 的 GCP-A → GCP-B → 111 retry 並回寫實際 provider。 - Code Review pipeline 已對齊 Ollama-first:`_hermes_scan()` 與 `_openclaw_assess()` 都先走 `OllamaService` 的 GCP-A → GCP-B → 111 retry;Gemini 僅在 Ollama(與可選 Claude)失敗後以 `code_review_openclaw_gemini` caller 記錄備援,不再以 `code_review_openclaw` 直接 Gemini-first。 - Telegram 圖片商品辨識已對齊 Ollama-first:`routes/openclaw_bot_routes.py` 會先用 `OPENCLAW_IMAGE_VISION_MODEL` 透過 `OllamaService` retry GCP-A → GCP-B → 111;Gemini 只以 `openclaw_bot_image_gemini` caller 作為圖片辨識備援。 - `.env.example` 已補齊 Python runtime 實際讀取的環境變數,`tests/test_phase3f_cleanup_contracts.py::test_env_example_documents_runtime_os_env_keys` 會掃 `app.py/config.py/scheduler.py/run_scheduler.py/routes/services/utils` 的 `os.getenv()` / `os.environ.get()`;只允許 `PYTEST_CURRENT_TEST` 與 `MOMO_ALLOW_INSECURE_CONFIG_FOR_TESTS` 兩個測試內部 key 不進範例。 - `docker-compose*.yml` 使用的 `${VAR}` 也已納入 `.env.example` 契約,包含 MCP compose 的 `TAVILY_API_KEY`、`EXA_API_KEY`、`MCP_POSTGRES_PASSWORD`、`FIRECRAWL_AUTH_KEY`,以及 image tag / Grafana / pgAdmin / Metabase / Grist 變數;`test_env_example_documents_docker_compose_variables` 會守住。 - Market Intel `seed_writer_cli_status` route 已補 API 層回歸:即使 `execute=true` 且環境有 `MARKET_INTEL_SEED_WRITE_APPROVAL`,API 仍不得回吐 token / `approval_token_hint` / 固定 token 文案,且不得 ready 或寫入;`tests/test_market_intel_skeleton.py::test_seed_writer_cli_status_route_never_leaks_approval_token` 會守住。 - Docker 主 compose 的 `momo-app` / `scheduler` / `telegram-bot` 已有 `mem_limit` 與 `healthcheck`,並由 `tests/test_docker_compose_runtime_mounts.py` 守住;V2 提到的 nginx / nginx-monitor / metabase / grist healthcheck 缺口需先看 profiles,這些服務分別被鎖在 `local-dev`、`deprecated`、`bi`,不是 default production path。 - MCP compose 安全邊界已有 `tests/test_mcp_compose_contracts.py`:postgres/omnisearch/firecrawl healthcheck、Firecrawl/Playwright/Redis/filesystem memory guardrails、filesystem-mcp read-only mount 與不接 docker socket 都會被測試守住。 - `_navbar.html` 已移除 V1 點名的 `--momo-legacy-accent` 與舊 hex `#d96f52/#a95846/#9f4f3e`,改用 `--momo-nav-accent*` 接 `--momo-page-accent*` warm tokens;`tests/test_frontend_v2_assets.py::test_legacy_navbar_uses_warm_token_accent_aliases` 會守住。 - `routes/price_comparison_routes.py` 的 MOMO crawler TODO 已接到既有 `services.momo_crawler.search_momo_products()`;未手動上傳 MOMO 商品時會自動抓 MOMO,再交給比價服務。 - 未引用的根層 `templates/list.html` Phase 4 placeholder 已刪除,真實缺貨清單 route 使用 `vendor_stockout_list_v2.html`(或 `ui=legacy` 時的 `vendor_stockout/list.html`);`tests/test_phase3f_cleanup_contracts.py` 會防止根層 placeholder 回來。 - AI 觀測台 V3 排版規範已補強:`scripts/check_responsive_overflow.js` 會把視覺 overflow offenders 視為失敗,並允許表格/圖表在 `.obs-table-shell`、`.obs-chart-frame` 等局部容器內滾動;`observability-system.css` / `web/static/css/observability-system.css` 已同步新增 bounded table/chart/mobile containment,CSS mirror 與 `quick_review.sh --observability-qa --skip-production` 均通過。 - app.py/BP 路由雙寫已完成收斂:active `@app.route` 為 0,`USE_MODULAR_ROUTES` 與舊 routes registry shim 已不存在;`tests/test_phase3f_cleanup_contracts.py::test_app_py_stays_blueprint_only_for_routes` 會防止 route decorator 回到 `app.py`。 - `app.py` 開頭的歷史「重開機後請依序執行」TODO banner 已移除;入口治理以 `AGENTS.md` / `CONSTITUTION.md` / ADR / memory 索引為準,`tests/test_phase3f_cleanup_contracts.py::test_app_py_does_not_start_with_stale_restart_todo_banner` 會防止 stale 操作清單回流。 - `docs/guides/devops_handbook.md` 已移除活躍手冊中的舊 K8s command 區塊,並把 app 操作改為 Gunicorn HUP 熱重載、Docker Compose 精準 force-recreate、`momo-app` service build;`tests/test_phase3f_cleanup_contracts.py::test_devops_handbook_uses_current_docker_runtime_commands` 會防止 `kubectl`、`docker restart momo-pro-system` 與錯誤 compose service name 回流。 - `/cicd` legacy dashboard 已停用舊叢集副作用:rollback 會回 410,`restart_pods` action 會被拒絕,diagnosis 不再 SSH 執行叢集探測;`tests/test_cicd_legacy_cluster_disabled.py` 會防止 `kubectl` / rollout command 回到 `routes/cicd_routes.py`。 - AI 觀測台 badge/chip 對比規範已補強:`.momo-observability-mode` 內的 badge、pill 與 nested surface 會改走亮底、8px radius、無負字距、可換行且不再殘留低對比 legacy dark-hero 樣式;CSS mirror、`quick_review.sh --observability-ui`、`quick_review.sh --observability-qa --skip-production` 均通過。 - AI 觀測台 rendered visual contract 已入庫:`scripts/check_observability_visual_contract.sh` 會用 Playwright 檢查 10 頁 × desktop/tablet/mobile 的 title typography、surface radius/background、chip contrast、hero height 與水平 overflow;V10.116 main 版 local server 驗證 30 項 PASS。測未部署變更時必須帶 localhost `--base-url`,打 production fail 可能只是正式站尚未部署該版。 - V10.117 已把 AI 觀測台背景語彙收斂為 tokenized dot-matrix:合約會要求 hero/signal/panel surface 的 computed `background-image` 是 `radial-gradient`,並拒絕 legacy `linear-gradient` / `background-image: none` 回流;終端 dot-matrix layer 必須留在 CSS 檔尾以贏過舊 neutralizer。 - `/observability/host_health` 在 SQLite local QA 下已略過 `host_health_probes` persistence,避免 BIGINT autoincrement drift 造成 warning;正式 Postgres session 仍維持 probe history 寫入,`tests/test_admin_observability_routes.py::test_host_health_skips_probe_persistence_on_sqlite` 會守住。 - Telegram `momo:eig:` callback 已在 `routes/openclaw_bot_routes.py` 與 `services/telegram_bot_service.py` 實作並有 webhook 測試覆蓋,不是未實作缺口。 - Telegram `date_*` / `goal_*` 不是死 callback handler:按鈕先送 `await:*` 進入輸入等待狀態,使用者下一則文字才由 pending action 消費;`tests/test_openclaw_bot_menu_keyboards.py` 與 `tests/test_openclaw_bot_routes_webhook.py` 已覆蓋。 - `services/ai_automation_smoke_service.py` 不是死 service:`run_scheduler.py` 每日 09:10 掛 `run_ai_smoke_daily_summary_task()`,該 task 會呼叫 `send_smoke_daily_summary()`;`tests/test_ai_automation_smoke_service.py` 與 `tests/test_ai_automation_metrics.py` 已覆蓋。 - `mcp_calls.status` CHECK 已接受 `ok/error/timeout/rate_limited/cache_only`,與 `services/mcp_router.py` 的細分狀態一致。 - DB migration / ORM 覆蓋已有 `tests/test_migration_metadata_coverage.py` 守門,`Base.metadata.tables - migrations CREATE TABLE` 必須為空;`tests/test_ai_observability_models.py` 也鎖住 v5 observability ORM stub。 - V2 BLOCKED migration 守門已補:`031-037` 必須存在且 group/world-readable,`database/momo.db` / `momo_data.db` / `momo_database.db` 迷惑檔不得回來。 - `host_health_probes.chk_host_label_029` 不一致已有 migration 033 修補並補測試:必須重建 CHECK,且接受 `GCP-SSD`、`GCP-SSD-2`、`111 備援` 與兩個 110 Nginx proxy runtime labels。 - `rag_query_log` / `learning_episodes` 缺 `embedding_signature` 已由 migration 034、ORM 欄位、RAG/learning 寫入路徑與 migration metadata 測試覆蓋。 - `incidents` 雙欄相容與 `action_plans` source/status guardrails 已在 migration 036/037、migration metadata 測試與 `tests/test_auto_heal_safety.py` 覆蓋。 - `services/agent_actions.py` 不是死碼:`services/event_router.py` 透過 `SAFE_ACTIONS` registry 動態執行 ADR-012 L2 actions;`tests/test_agent_actions.py` 已鎖住 L2 `SAFE_ACTIONS` 與 L3 `OPS_ACTIONS` 邊界,防止 HITL ops 動作誤進自動白名單。 ## 不可盲動 - `services/agent_actions.py` 不能只看靜態 caller 清理;已確認它是 `SAFE_ACTIONS` 動態 dispatch 入口,未來改動必須同步更新 registry 與 EventRouter 測試。 - `logo_circle.svg` / `logo_navbar.svg` / `logo_transparent.png` 不能只因 runtime `rg` 無引用就刪;設計文件仍規劃品牌頁、登入頁、錯誤頁使用。 - 多個永遠 OFF feature flag 屬產品/上線策略決策,不應在清債時直接全部改 ON 或刪除。 - `ai_calls.rag_hit` 不等同 `rag_query_log.saved_call`:跳過 LLM 的 RAG 命中應記在 `rag_query_log.saved_call`;有實際 LLM 呼叫且 caller 明確用了 RAG context 時才適合標 `ai_calls.rag_hit`。 ## 本輪已推 commits - `36d0e5d` 標記 RAG 命中節省 LLM 呼叫 - `20cab6e` 補上 RAG hit logger 回歸測試 - `6817f64` 移除舊 SSH jump 設定殘影 - `44eb369` 補上 MCP filesystem 唯讀白名單 - `2068a37` 修正 Telegram 分類按鈕預設 callback - `bdb74b1` 告警 BGE embedding 一致性異常 - `d15b221` 細分 MCP 呼叫遙測狀態 - `34db2db` 修正 scheduler 合成告警 trace - `5785a58` 補齊 scheduler 觀測任務失敗告警 - `a335ab5` 修正 AutoHeal Telegram 觸發者審計 - `d7ae243` 清空 Telegram webhook 使用者上下文 - `ba8510e` 補齊 MCP 早退狀態 - `317ff1b` 共用匯入檔名日期解析 - `c300e49` 記錄 ROI 月報反饋區塊失敗 - `f49413e` 記錄 EA short-circuit 遙測失敗 - `0a75d11` 記錄 Claude 成本節流檢查失敗 - `5625032` 記錄 AI caller registry 匯入失敗 - `0bc6f18` 更新 Claude 盤點修補記憶 - `3cb091f` 記錄 Observability fail-safe 區塊失敗 - `e29529f` 校正 Observability 修補記憶 hash - `4e6e9bf` 綁定自動匯入日期查詢參數 - `47c59fd` 更新自動匯入修補記憶 - `ae79cdd` 記錄依賴盤點驗證結果 - `2b1174a` 移出誤入的本地變更 - `adfcccf` 補齊盤點修補 commit 清單 - `4256a04` 記錄 Telegram 與 MCP 缺口驗證 - `5285abe` 記錄 DB migration 覆蓋守門 - `f9d3da5` 記錄 AutoHeal DB guardrail 驗證 - `7e92850` 記錄 Agent Actions 動態入口驗證 - `89c400d` 補上 OpenClaw best-effort 區塊紀錄 - `ec5a22d` 記錄 Telegram pending action 驗證 - `f44c429` 補強 AI logger best-effort 診斷 - `8a36856` 補強 Telegram callback 診斷 - `5b52af9` 補強 cache best-effort 診斷 - `497c376` 記錄 AI smoke service 入口驗證 - `b22cbb2` 守住 scheduler 失敗告警覆蓋 - `8026b93` 守住 scheduler 早晨排程錯開 - `eb6886e` 同步 scheduler 排程摘要 - `b24241f` 守住 migration blocker 修補 - `6c86839` 守住盤點誤判依賴 - `2e2b775` 守住 V2 import 清理狀態 - `58ba95b` 守住月結匯入 append 路徑 - `4079f1c` 守住 CD migration 全範圍執行 - `81aa424` 守住 Observability smoke timeout - `dc99bab` 移出誤入的本地變更 - `546c63f` 守住 V2 silent failure 修補 - `c165081` 守住 host label migration 對齊 - `4921275` 守住 RAG embedding signature migration - `035b88c` 守住 AutoHeal migration guardrails - `5b6b35f` 守住 AutoHeal inline 告警去重 - `749eace` 移除未使用 Paramiko 依賴 - `3c65034` 移除未使用 runtime 依賴 ## 後續補推 commits(3c65034 之後) - `2ac751f` 補齊盤點修補 commit 清單 - `6c236eb` 快取當日業績頁面內容 - `0d68f3e` 快取商品看板比價總覽 - `c306fb6` 隔離 PG sync 整合測試 - `8099bb6` 守住 qwen3 現役模型路徑 - `49c576b` 標定 PG sync 為 opt-in 工具 - `1aeb4a4` 移除 AI logger 未用 stack 推斷 - `d02b712` 標明 cache service 相容角色 - `72daa53` 快取業績分析頁面資料 - `8b5a4a3` 接上 MOMO 自動比價爬蟲 - `5942e39` 守住本機產物忽略規則 - `ce20892` 限制 Ollama host 只能走核准節點 - `6313fdd` 對齊 Ollama-first flag 語義 - `d6e8a4f` 忽略本地截圖暫存檔 - `0c9f927` 啟用 Market Intel seed writer CLI gate - `2130c4f` 守住 AI provider Ollama-first - `b65a319` 固化 Ollama 三主機路由紅線 - `0380d4c` 接上 responsive overflow quick review - `86fc9c9` 避免商品看板冷快取阻塞 - `ec93d09` 收緊模組化治理掃描範圍 - `b2ab03f` 入庫 responsive overflow guard 腳本 - `5ee7fd9` 忽略未確認設計審計 dump - `f8b9b1a` 共用業績分析頁面快取 - `d384c35` 快取業績分析頁面 context - `d8c7f6f` 快取當日業績頁面 context - `2f67e16` 共用當日業績頁面快取 - `ab612cb` 補 OpenClaw 選單複核報告 - `c78bb1d` 記錄 Market Intel 正式端只讀複核 - `9ec7713` 補 AiderHeal 靜默失敗診斷 - `28c9555` 修正挑品 Agent SQLite fallback - `c227bb4` 補競品 Feeder 搜尋詞 fallback 診斷 - `dd8ccdf` 共用業績分析引導頁快取 - `e8497d0` 補業績分析引導頁快取測試 - `f4883b4` 保留 PPT Vision 主機標記失敗診斷 - `bff8c49` 補 Code Review 失敗通知診斷 - `0bdb993` 補 OpenClaw 報表資料解析診斷 - `25e0570` 補齊 AI runtime 環境範例 - `2b2233d` 補齊 OpenClaw 與 DeepSeek 環境範例 - `acef0fa` 守住 runtime 環境變數文件契約 - `ae1895f` 守住 compose 環境變數文件契約 - `73bbc45` 更新 Claude 盤點驗證記憶 - `490336a` 守住 Market Intel seed token 不外洩 - `dc6fc69` 守住核心容器資源與健康檢查 - `7766e35` 守住 MCP compose 安全邊界 - `621c9f2` 守住 optional compose profile 邊界 - `353295a` 移除舊 Navbar accent 色票殘影 - `ca97840` 守住 Agent Actions 動態白名單邊界 - `ba140f1` 移除未引用缺貨清單佔位模板 - `9af9592` 修正 AI 觀測台 V3 排版規範 - `a305b26` 記錄觀測台 V3 排版守門 - `830661b` 守住 app.py 不再新增路由 - `c50180f` 補齊 AI 觀測台 badge 對比規範 - `b7ba54a` 更新 ADR-017 模組化現況 - `b6e6573` 收斂觀測台手機字體與視覺契約 - `c10e6a4` 記錄觀測台視覺契約守門 - `5a21e23` 略過 SQLite host probe 寫入 - `f947469` 融合觀測台點陣視覺語彙 - `60b73e1` 固定觀測台點陣層覆蓋順序