test(api): 固化 Rust-Go RPC 契约

This commit is contained in:
2026-07-31 18:20:37 +08:00
parent 1e466d3374
commit df361cff28
17 changed files with 284 additions and 9 deletions
@@ -1,9 +1,14 @@
# bat-api / Rust bat Contract Fixture Handoff
更新时间:2026-07-28
更新时间:2026-07-31
本文用于两个 Codex 窗口之间间接联调 `bat-api` 与 Rust `bat` 的跨语言 contract fixture。它只定义协作协议和验收标准,不包含已审核 fixture。
2026-07-31 更新:已审核归一化 fixture 已落入
`internal/api/testdata/contract/`Go 侧通过
`internal/api/contract_fixture_test.go` 固化 mirror struct 验证。本文件保留为
后续重新生成或扩展 contract fixture 时的协作协议。
## 最小上下文包
另一个窗口不需要知道本窗口的完整对话,只需要遵守以下上下文:
@@ -193,4 +198,11 @@ contract fixture 工作只有在以下条件同时满足时才算完成:
- Go `bat-api` 已具备消费 `launcher_metadata` / `game_main_config_bootstrap` 的 mirror struct。
- Go `bat-api` 已具备 player-facing HTTP 控制面、OpenAPI 和管理控制白名单。
- contract fixture 尚未落仓库,等待 Rust 侧真实输出与用户审核。
- 已归一化的 Rust contract fixture 落仓库
- `internal/api/testdata/contract/catalog-status.available.json`
- `internal/api/testdata/contract/catalog-status.unavailable.json`
- `internal/api/testdata/contract/resource-manifest.page0.json`
- `internal/api/testdata/contract/official-sync-snapshot.json`
- 原始交接产物仍位于 `/tmp/bat-contract-fixture/`;当前受本地 sandbox 限制,live socket daemon 无法启动,原始 JSON 通过临时 Rust 测试调用同一 dispatch/report 代码路径生成。
- Go contract 测试读取仓库内归一化 fixture,不依赖 `/tmp/bat-contract-fixture/`、开发机资源目录或远端长期运行的 `bat`
- 仍未覆盖真实长期 daemon socket 的端到端调用和完整发布切换;该项需要在允许 live daemon / smoke 的隔离环境中单独验证。