# 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 `(本機無 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]。