External 场景路由里程碑:账本侧取证补全,客户端请求构造保持未勾选并写明原因

- 补记两条实跑通过的账本侧用例:retained_stage_recovery_accepts_the_same_reference_contract_as_submission 与 legacy_route_background_registration_still_counts_as_valid_base
- 写明客户端「背景阶段命中新路由且为结构化字段」缺用例的技术原因:场景分支是内联字面量,且 Scene 必须带规范图引用,单独立用例需要先补规范图上传夹具;不使用镜像断言凑验收
This commit is contained in:
kdletters
2026-09-28 17:07:33 +08:00
parent 6efe7334da
commit cc01e304c0
2 changed files with 4 additions and 2 deletions
@@ -51,5 +51,6 @@
- 客户端:`canvas_generation.rs` 的 Scene 专属分支(新路由 + `sceneContent`)、保留账本匹配器(`canvas_generation.rs` 的 endpoint/`sceneContent` 判定)、`external_generation_state.rs`、`runtime_driver/recovery_scan.rs`、`direct_runtime/mod.rs` 的背景身份常量都与线上口径一致。
- 本轮实测:`cargo test -p api-server --manifest-path server-rs/Cargo.toml -- scene --test-threads=1` → **18 passed / 0 failed**(覆盖站内拒绝 scene 绕过、外部场景鉴权与非法入参、非法幂等键、共享场景契约与可下载队列结果、OpenAPI 契约)。
- 客户端账本与身份契约:`cargo test --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml --offline -- external_generation_state --test-threads=1` → **10 passed**(覆盖生成账本身份、复用与并发认领口径;场景路由的账本匹配器就在这个模块里)。
- 仍未取得(勾选状态保持未完成):客户端「背景阶段请求命中新场景路由且为结构化字段」与 `reuse-or-create` / `regenerate` 的端到端回归没有独立用例,本轮只在代码层确认分支存在;「本地真实栈 + 测试 Key 受理」smoke 同样未执行。
- 仍未取得(勾选状态保持未完成):客户端「背景阶段请求命中新场景路由且为结构化字段」这一条**没有现成用例**。`canvas_generation.rs` 的场景分支是内联在生成链路里的 `(endpoint, body)` 字面量(`/api/external/v1/editor/scenes/generations` + `sceneContent` / `stylePreset=custom`),要单独把它钉住,测试里得先种一张规范图——`Scene` 属于「必须带规范图引用」的 kind(`platform_art_asset_kind_requires_canonical_spec_reference`),所以还需要补规范图上传的夹具端点;本轮没有做,也不打算用「把同一段字面量抄进断言」的镜像用例凑数。
- `reuse-or-create` / `regenerate` 的端到端回归与「本地真实栈 + 测试 Key 受理」smoke 同样未执行。
- 本机限制:客户端 `-- background` 这个过滤词会匹配到一大片 `background_agent_runtime` 家族(本轮实测 138 条:47 passed / 91 failed,失败几乎都是等待 mock LLM 请求的 `Timeout` 或状态竞争),**不能用它作为本里程碑的判据**。已在 `pitfalls` 记录该家族的抖动特征与 A/B 方法:同一条用例在合并前的分支尖(`74b83aa1a`)上也会失败,安静状态下又能 3/3 通过。
@@ -54,5 +54,6 @@
- 客户端:`canvas_generation.rs` 的 Scene 专属分支(新路由 + `sceneContent`)、保留账本匹配器(`canvas_generation.rs` 的 endpoint/`sceneContent` 判定)、`external_generation_state.rs`、`runtime_driver/recovery_scan.rs`、`direct_runtime/mod.rs` 的背景身份常量都与线上口径一致。
- 本轮实测:`cargo test -p api-server --manifest-path server-rs/Cargo.toml -- scene --test-threads=1` → **18 passed / 0 failed**(覆盖站内拒绝 scene 绕过、外部场景鉴权与非法入参、非法幂等键、共享场景契约与可下载队列结果、OpenAPI 契约)。
- 客户端账本与身份契约:`cargo test --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml --offline -- external_generation_state --test-threads=1` → **10 passed**(覆盖生成账本身份、复用与并发认领口径;场景路由的账本匹配器就在这个模块里)。
- 仍未取得(勾选状态保持未完成):客户端「背景阶段请求命中新场景路由且为结构化字段」与 `reuse-or-create` / `regenerate` 的端到端回归没有独立用例,本轮只在代码层确认分支存在;「本地真实栈 + 测试 Key 受理」smoke 同样未执行。
- 仍未取得(勾选状态保持未完成):客户端「背景阶段请求命中新场景路由且为结构化字段」这一条**没有现成用例**。`canvas_generation.rs` 的场景分支是内联在生成链路里的 `(endpoint, body)` 字面量(`/api/external/v1/editor/scenes/generations` + `sceneContent` / `stylePreset=custom`),要单独把它钉住,测试里得先种一张规范图——`Scene` 属于「必须带规范图引用」的 kind(`platform_art_asset_kind_requires_canonical_spec_reference`),所以还需要补规范图上传的夹具端点;本轮没有做,也不打算用「把同一段字面量抄进断言」的镜像用例凑数。
- `reuse-or-create` / `regenerate` 的端到端回归与「本地真实栈 + 测试 Key 受理」smoke 同样未执行。
- 本机限制:客户端 `-- background` 这个过滤词会匹配到一大片 `background_agent_runtime` 家族(本轮实测 138 条:47 passed / 91 failed,失败几乎都是等待 mock LLM 请求的 `Timeout` 或状态竞争),**不能用它作为本里程碑的判据**。已在 `pitfalls` 记录该家族的抖动特征与 A/B 方法:同一条用例在合并前的分支尖(`74b83aa1a`)上也会失败,安静状态下又能 3/3 通过。