验收与 Dogfood
Verification
单元测试(Vitest)
bash
npm test # vitest run
npm run test:watch # interactive覆盖(tests/**/*.test.ts):
| 套件 | 内容 |
|---|---|
config-data-binding | .xbuj / manifest v2 data 绑定解析、路径 helpers |
xbu-merge | Load data merge 规则 + hasInstanceData |
profile-archive | .xbu v2 ZIP 往返(FORMAT / manifest.xbuj / data/*)、legacy 读 |
project-package | prepareOpenPath / 包内 config 解析 |
project-data-guards | loadProjectData 注入 pg.dump、绑定空包 |
xbu-load-ui / path helpers | 进度 UI store、链接路径解析 |
npm run acceptance 会先跑 npm test。
.xbu 归档往返也在 acceptance:profile.archive_roundtrip(scripts/acceptance/profile-roundtrip.mjs)。
契约层:acceptance
bash
npm run acceptance会先 typecheck、单元测试、重新打包 server.cjs,再对 headless proxy 跑黄金脚本(LLM、Auth、S3、DB wire、Redis、Secrets、Queue、Search、MCP、Ship、PostgREST、GoTrue、Storage、Realtime、Edge …)。
期望:全部 PASS(当前 82 项)。细节见 Acceptance 参考。
Agent 侧也可先调 runtime.selftest(更快的探针集合)。
场景层:Origin dogfood
在 不修改 Origin 仓库 的前提下,只读其 migrations/functions,验证「能否当本地 Supabase」:
bash
ORIGIN_ROOT=/path/to/origin npm run origin:dogfood会:
- 起 proxy,并设置
XBUCKLE_FUNCTIONS_DIR到 Origin 的supabase/functions XBUCKLE_AGENT_MOCK=1(LLM 走本机,并把AGENT_MODEL一并钉成gpt-mock)- 应用全部 SQL migrations
- signup / profile / project / RLS / access_token / publish_release / storage / agent-chat
期望:21 项全 PASS。需要本机装 deno 才能跑 edge 两项。
失败时不要改 Origin;在 XBuckle 或测试脚本侧修。这类失败最常见的形态是应用 functions/.env 给真实厂商钉了模型名或 base URL,而 XBuckle 只改写了其中一部分—— 覆盖要成套,否则应用会打到本机 mock 却带着云厂商的模型名。
Agent 验收清单(复制用)
text
[ ] GET :3100/health
[ ] runtime.selftest → 0 failures
[ ] 应用 env 仅为 127.0.0.1/localhost
[ ] 最小业务路径(登录或一条 REST/SQL)成功
[ ] traffic.recent 能看到对应请求
[ ] 若声称 Supabase 替换:migrations + RLS +(可选)agent-chat
[ ] 未对 *.supabase.co 发送写操作