# thin-shell-alignment — Tasks

> **狀態**：方向待確認，**尚未實作**（全 `[ ]`）。確認後才動 code。
> 對應 `design.md`。每完成一個立刻標 `[x]`，不批次。
> 建立：2026-06-27（issue #11）

---

## Phase 0：方向確認（前置）

- [x] 0.1 SDD 三件式寫好，核實總管盤點（P0 CLI run 死端點屬實 + 挖到第三漂移：CLI list key 前綴對不上 + 直連 KV）
- [x] 0.2 回報 issue #11 comment（署名 [arcrun CC]）— leo 2026-06-27 全拍定，4 點照 SDD
- [x] 0.3 確認 validate 對齊狀態 — **總管核實揭第四漂移：CLI `acr validate` 純本機（validate.ts:44 不打端點）、MCP `arcrun_validate_yaml` 打 server /validate → 需收斂**（Phase 3.1 處理）

## Phase 1：P0 死端點（R1）

- [x] 1.1 CLI `run.ts:102` 改打 `/webhooks/named/:name/trigger`（真端點）— headers 已含 X-Arcrun-API-Key、body 已就緒，只改路徑一行。tsc 綠
- [ ] 1.2 驗證：leo21c 部署 workflow → `acr run <name>`（本機無 YAML 走玩法二）→ 觸發 200 非 404
- [ ] （MCP deploy 死端點不在本 SDD，歸 #8 ①-a / #10 ①-b）

## Phase 2：P1 list 來源統一（R2）

- [x] 2.1 CLI `list.ts` 停 `CfKvClient` 直連 KV，改 `GET /webhooks/named`（X-Arcrun-API-Key）— 整段改寫，tsc 綠
- [x] 2.2 MCP `u6u_list_workflows` 改讀 `GET /webhooks/named`（取代讀 KBDB record，tag 過濾仍走 resource_tag）— registry 簽名加 partnerToken，tsc 綠。⚠️ tag resource_id 語意債（UUID vs name）記 design §4，待總管確認 tag 收斂
- [x] 2.3 確認 `GET /webhooks/named` 回欄位夠 list 用（#8 1.3b 已補 description/created_at/cron_expr）— CLI/MCP 都讀 name/description/created_at
- [ ] 2.4 驗證：CLI list 與 MCP list 對同帳號回**同一組** workflow（同源、欄位齊）；key 前綴 bug 消失（列得到新部署的）
- [ ] 2.5 驗證：self-hosted 用戶不需 CF API token 即可 list（走 cypher 不直連 KV）

## Phase 3：P2 單邊能力（R3）

- [⏸] 3.1 validate：核實完成——**真漂移且依賴 #10**。CLI 本機驗 YAML（loadWorkflowYaml+parseTriplets+validateRelations）；MCP 打 server /validate 但傳的是已解析的 `{nodes,edges}` graph（graphSchema.safeParse）。兩邊**輸入不同層**（YAML vs graph），與 deploy 的 YAML→graph 編排債同根。乾淨收斂依賴 #10 編排下沉（YAML→graph 變 API 能力後 validate 才能統一吃 YAML）。**標記依賴 #10，記對照清單，不在本 SDD 強收**
- [ ] 3.2 creds push：記明「刻意單邊」於能力對照清單（含原因：含加密+本機檔，AI 不代傳 credential）
- [ ] 3.3 search：CLI `acr workflow search` 對稱補（次階段，同 #8 Phase 5）

## Phase 4 ⭐：防複發機制（R4，治本）

- [x] 4.1 能力對照清單 `docs/4-guides/cli-mcp-capability-matrix.md`（能力×CLI端點×MCP端點×route存在?×同源?）— 13 能力盤好，標 3 個已知債連 SDD
- [x] 4.2 本機 smoke test `scripts/thin-shell-smoke.sh`：對每能力打真端點斷言非 404（本機手動跑，非 CI/cron/輪詢）— 跑 prod 通，死端點 exit 1
- [x] 4.3 機制自驗：注入故意死端點 `/this-route-does-not-exist-xyz` → smoke 當場攔下列入死端點清單、exit 1（證明能攔）✅
  - 📌 **副產品實證**：smoke 對 prod 跑揭出 `search_workflow`/`backfill` 報 404 — 非 bug，是「#8 code 已寫但 prod cypher 未部署」的假綠被當場揭出（正是 #11 治本要點）

## Phase 5：收尾

- [ ] 5.1 tsc 全綠（cli / mcp / cypher 受影響者）
- [ ] 5.2 leo21c 端到端：對齊後的能力 CLI/MCP 都真打通（200 非 404）、防複發機制驗收可攔死端點
- [ ] 5.3 issue #11 comment 回報端到端證據；由實證決定結案

---

## 鐵律提醒

- 能力落 API、薄殼讀同一源、不直碰儲存（rule 07）。
- 完成＝leo21c 端到端客觀證據非 tsc 綠（mindset §7，這正是 #11 要治的假綠）。
- smoke test 本機手動跑，非 CI 高頻（flag 紅線）。
- deploy 那條不重複改（#8/#10 處理）。
- 跨 repo comment 署名 [arcrun CC]。
