# language: zh-TW # release.feature — 「推送 = 全部 publish target 到位」的可驗證規格 # # 來源:docs/壓測報告.md 第 3 點(開發者「只推 GitHub,沒把 wrangler / npm 都 deploy」, # 壓測時有些可用有些不可用,浪費壓測時間)。 # # 用途:每次「完成推送」時,必須確認下列每個 publish target 都已到位。 # 這不是單元測試,是 release 把關清單(Gherkin = 人讀得懂的契約)。 # 對應驗證腳本:scripts/check-release.sh(列出每個 target 的目前版本/部署狀態)。 # # ⚠️ 實際部署機制(誠實,mindset §7):GH Actions 於 2026-05-16 配額爆掉後停用, # 且公開 repo 的 .github/ 已於 037cf9b 移除(對外只留)。**現行 deploy 走本機 # `scripts/local-deploy.sh`**(wrangler deploy worker + 本輪新增 CLI npm publish)。 # 本檔描述「該到位什麼」;real 動作由 local-deploy.sh 執行。 # `.github/workflows/publish-cli.yml` 是「若哪天重啟 GH Actions」的預備檔(目前 gitignored、不跑)。 功能: Release — 一次推送,所有對外 publish target 同步到位 作為 arcrun 維護者 我希望每次推送變動後,所有對外介面(CF workers / landing / npm CLI / MCP)都是同一版 以避免壓測者 / 用戶踩到「有些新有些舊」的不一致狀態 背景: 假設 變動已 commit 並且 維護者已 wrangler login(worker 部署)+ npm login(CLI 發版) # ── 由 scripts/local-deploy.sh 執行(現行機制)───────────────── 場景: cypher-executor(API 本體)部署到最新 當 cypher-executor/ 有變動 那麼 local-deploy.sh 應 wrangler deploy arcrun-cypher-executor 並且 https://cypher.arcrun.dev/health 應回 200 場景: 所有零件 Worker 部署到最新 當 .component-builds/*/ 或 registry/components/*/ 有變動 那麼 local-deploy.sh 應 rebuild WASM 並 wrangler deploy 對應的 arcrun-{name} Worker 並且 每個零件的 workers.dev URL(arcrun-{kebab}.{subdomain}.workers.dev)應回 200 場景: registry / builtins Worker 部署到最新 當 registry/ 或 builtins/ 有變動 那麼 local-deploy.sh tier2 應 wrangler deploy 對應 Worker 場景: landing(arcrun.dev)部署到最新 當 landing/ 有變動 那麼 應 next build + wrangler pages deploy 到 arcrun-landing 場景: CLI(npm 套件 arcrun)發佈到最新 當 cli/ 有變動且 cli/package.json 的 version 已 bump 那麼 local-deploy.sh 第 6 段應 npm publish arcrun@{新版本} 並且 npm view arcrun version 應等於 cli/package.json 的 version # 壓測 §2.6:曾發生 GitHub main 1.2.0 但 npm 仍 1.1.0 → 此場景就是要防這個。 # 根因:舊 local-deploy.sh 只 wrangler deploy worker,從不 npm publish CLI。本輪補上。 場景: MCP server 部署到最新 當 arcrun-mcp/src/ 有變動(arcrun-mcp repo) 那麼 arcrun-mcp 應 wrangler deploy MCP Worker 並且 MCP 的工具集應與 cypher-executor 最新 API 對齊(薄殼,rule 07) # ── 需人為動作(不假裝自動)──────────────────────────────────── @manual 場景: CLI 版本未 bump 時不會發版(誠實:改了 cli 但忘了 bump → npm 不會更新) 假設 cli/ 有變動但 cli/package.json 的 version 未改 那麼 local-deploy.sh 會「跳過 publish」(version 與 npm 相同) 並且 維護者必須記得 bump version 才會發版 # check-release.sh 會把「cli/src 變動晚於 package.json」標為 ⚠️ 提醒 @manual 場景: 新 publish target 加入時必須補進本清單 假設 新增了一個對外介面(如 python-sdk / js-sdk) 那麼 必須在本檔新增對應場景 並且 必須在 scripts/check-release.sh + scripts/local-deploy.sh 加對應檢查/發佈步驟