---
tags: [薄殼, 平台原則, 架構決策, 機制說明]
gloss: 防 CLI/MCP 薄殼漂移（死端點假綠）的雙層機制——靜態能力對照清單 + 本機 smoke test 對真端點斷言非 404。
---
# 薄殼防複發 — 能力對照表 + 本機 smoke

← [[decisions/00-INDEX]]

**來源**：`system-dev/docs/3-specs/thin-shell-alignment/design.md §5`（issue #11）、`docs/4-guides/cli-mcp-capability-matrix.md`、`scripts/thin-shell-smoke.sh`
**最後更新**：2026-06-27

## 摘要
治「薄殼打了不存在的 server 端點」（死端點假綠）用雙層：靜態能力對照清單（review 防線）+ 本機 smoke test（對真端點斷言非 404，死端點當場現形）。本機手動跑，非 CI。

## 重點
- **根因是假綠**：MCP deploy 在宣稱「一致性落地」的同一 commit 裡打了不存在的 `/workflows/deploy`（必 404），從未端到端跑過。光靠「宣稱對齊」會再犯。
- **層 1 能力對照清單**（`docs/4-guides/cli-mcp-capability-matrix.md`）：表「能力 × CLI 端點 × MCP 端點 × route 存在? × 同源?」，新薄殼能力必填一行，填前 grep 確認 route 存在。
- **層 2 本機 smoke**（`scripts/thin-shell-smoke.sh`）：對每能力打真端點斷言非 404。**本機手動跑非 CI/cron/輪詢**（守 flag 紅線，對齊「執行鏈路不依賴 CI」鐵律）。
- **機制自驗**：注入故意死端點 → smoke 當場攔下、exit 1（已驗證能攔）。
- **smoke 區分「code 有 route」vs「prod 真部署」**：首跑就揭 #8 search/backfill 在 prod 仍 404（code 已 commit 但未部署）——這正是它要揭的假綠。
- **不用 CI 高頻打真端點**（違 flag 紅線）；smoke 是「宣布完成前手動跑一次」的閘。

## 實體
- **能力對照清單**（cli-mcp-capability-matrix）— 靜態表列每能力的 CLI/MCP 端點與 route 存在性，review 防線。
- **本機 smoke test**（thin-shell-smoke.sh）— 對真端點打、斷言非 404 的腳本，死端點現形，本機手動跑。
- **死端點假綠**（dead endpoint）— 薄殼打了 server 不存在的 route（404），卻被宣稱成完成。
- **機制自驗**（注入死端點測試）— 故意加不存在端點驗 smoke 能攔，證明機制有效。

## 關聯
### 內文知識關係
- 死端點假綠 >> 被攔於 >> 本機 smoke test
- 能力對照清單 >> 互補於 >> 本機 smoke test
- 機制自驗 >> 證明 >> 本機 smoke test
- 本機 smoke test >> 區分 >> 死端點假綠
### 卡片關係
- [[薄殼防複發-能力對照表加smoke]] >> 治理 >> [[薄殼規則晚於實作-MCP漂移是歷史債]]
- [[薄殼防複發-能力對照表加smoke]] >> 落實 >> [[薄殼原則-能力長在API]]
