# 交付前自測 Checklist（pre-customer）— 2026-06-07

> ⚠️ 歷史記錄（2026-06-07 當時的清單）。其中 credential 相關步驟所依據的舊自管金鑰機制
> 已於 2026-07-20 完全移除，**勿照本文操作**；現行做法見 `.claude/rules/01-tech-stack.md`。

> 給 **你（人）** 在交給客戶前跑一次的精簡清單，不是給 Haiku 操盤的詳細壓測（那份在
> 壓測-recipe-library-2026-06-07.md）。順序照客戶真實旅程。**任一項 ❌ = 不能交付。**
> 過關標準都是客觀證據（HTTP 2xx / D1 數字 / 檔案存在），禁口頭過關。

---

## 1. 雲端後端活著（最快，先確認 deploy 沒掛）

- [ ] `curl https://arcrun-kbdb.uncle6-me.workers.dev/health` → `{"ok":true}`
- [ ] `curl https://cypher.arcrun.dev/public-recipes?q=gmail` → `{"found":true,...}`
- [ ] `curl https://cypher.arcrun.dev/health`（或任一既有端點）→ 200
- [ ] npm 上有最新 CLI：`npm view arcrun version` → 1.3.2（或更新）

## 2. 冷啟動：空專案能裝起來（客戶第一步）

- [ ] 開**空目錄**，`npm i -g arcrun` → `acr --version` 出版本
- [ ] `acr init`（local 模式）→ 不報錯、寫出 config
- [ ] 跟著它印的「下一步」跑 hello workflow → `acr run hello` 有輸出
- [ ] （self-hosted 路徑）`acr init --self-hosted` 無 wrangler 時 → 錯訊清楚教裝 wrangler

## 3. 環境設定（self-hosted，客戶要用自己 CF）

- [ ] `acr init --self-hosted --account-id X --api-token Y` → 建 KV + D1 + deploy 成功
- [ ] 印出的「下一步①②」可照抄：.env（NAMESPACE+ENCRYPTION_KEY）+ wrangler secret put
- [ ] D1 建出來且套了 migration（`/recipe-stats/x` 回 stat 結構）
- [ ] 免綁卡（全程沒被要信用卡）

## 4. Recipe 公庫/私庫（本次新功能，重點測）

- [ ] `acr recipe search gmail` → 列出 recipe 含 author/market_stat
- [ ] `acr recipe search 不存在的xyz` → found:false + 創作引導 hint
- [ ] `acr recipe pull gmail_send` → 拉進私庫；`acr recipe list` 看得到
- [ ] 自製 recipe `acr recipe push` → 私庫有
- [ ] `acr recipe submit-p <id>` → **跳暴露同意**（未同意/非互動擋住），同意後投稿成功
- [ ] 同 canonical 不同作者 submit-p 兩次 → 公庫並存兩筆（非覆蓋）

## 5. 做一件真實的事（端到端，客戶的目的）

- [ ] 建一個真實 workflow（如 webhook → http_request → 輸出），`acr push` + `acr run` 跑通回 2xx
- [ ] 用到 recipe 的 workflow 跑完 → `curl kbdb/recipe-stats/{uuid}` success_count +1
- [ ] 缺 credential 時 → 誠實標「未驗收：缺 X」，不假裝成功（401/403 不當 bug）

## 6. 兩介面一致（CLI + MCP，AI 客戶會用 MCP）

- [ ] MCP 已裝（`acr mcp-setup` 或 init 自動）→ `.mcp.json` 存在
- [ ] MCP `arcrun_recipe_search` 回的 = CLI `acr recipe search` 回的（同一組）
- [ ] CLI pull 後 MCP `arcrun_recipe_list` 看得到（同一私庫帳號）
      ⚠️ 若 self-hosted 的 MCP 連到平台而非自己 cypher → 記下（§5.2 已知違反待修）

## 7. 回歸（沒把舊功能弄壞）

- [ ] 既有種子 recipe（gmail/telegram）的 workflow 跑通（UUID 重構沒破執行鏈）
- [ ] `acr recipe list` 無重複項（同 canonical 舊 key+uuid 兩筆）
- [ ] 既有 workflow push/list/run 全正常

## 8. 誠實性 / 安全界線（交付前必守）

- [ ] 暴露動作（submit-p / push webhook）都有人類明示同意關卡
- [ ] 非互動環境（你直跑）→ 需確認處會停下，不自己偽造同意
- [ ] 任何「未實作/缺 credential」誠實回 success:false 或標未驗收，無假綠

---

## 交付判定

- 全 ✅ → 可交付。
- 任一 ❌ → 修掉再交（記下是哪項）。
- ⚠️（已知違反，如 §5.2 MCP account-source）→ 寫進交付說明的「已知限制」，不假裝沒有。

**禁假綠**：沒實際看到證據的項目標「未測」，不要勾 ✅。
