记录 AGC background_agent_runtime 家族的本机 Timeout 抖动与判据
- pitfalls 新增条目:宽过滤 background 一次匹配 138 条慢用例,本轮 47 passed / 91 failed;给出 A/B 判据与本轮实测(一条用例合并前后安静状态都 3/3 通过,两条在合并前的分支尖上同样失败) - ExternalV1 场景路由里程碑与实施计划的本轮核对改为采信 external_generation_state 10 passed,并把「新路由结构化字段 / reuse-or-create 与 regenerate 端到端」保持未勾选
This commit is contained in:
@@ -50,4 +50,6 @@
|
||||
- 契约与 OpenAPI:`external_editor_api.rs` 的 `external_openapi_documents_dedicated_scene_generation_route` 钉住 `docs/openapi/genarrative-external-v1.openapi.json` 的新路径。
|
||||
- 客户端:`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 契约)。
|
||||
- 仍未取得(勾选状态保持未完成):客户端 `reuse-or-create` / `regenerate` 的定向回归套件与「本地真实栈 + 测试 Key 受理」smoke;客户端的 `-- background` 定向套件在本机单次运行超过 10 分钟未收敛,本轮未采信。
|
||||
- 客户端账本与身份契约:`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 同样未执行。
|
||||
- 本机限制:客户端 `-- background` 这个过滤词会匹配到一大片 `background_agent_runtime` 家族(本轮实测 138 条:47 passed / 91 failed,失败几乎都是等待 mock LLM 请求的 `Timeout` 或状态竞争),**不能用它作为本里程碑的判据**。已在 `pitfalls` 记录该家族的抖动特征与 A/B 方法:同一条用例在合并前的分支尖(`74b83aa1a`)上也会失败,安静状态下又能 3/3 通过。
|
||||
@@ -53,4 +53,6 @@
|
||||
- 契约与 OpenAPI:`external_editor_api.rs` 的 `external_openapi_documents_dedicated_scene_generation_route` 钉住 `docs/openapi/genarrative-external-v1.openapi.json` 的新路径。
|
||||
- 客户端:`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 契约)。
|
||||
- 仍未取得(勾选状态保持未完成):客户端 `reuse-or-create` / `regenerate` 的定向回归套件与「本地真实栈 + 测试 Key 受理」smoke;客户端的 `-- background` 定向套件在本机单次运行超过 10 分钟未收敛,本轮未采信。
|
||||
- 客户端账本与身份契约:`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 同样未执行。
|
||||
- 本机限制:客户端 `-- background` 这个过滤词会匹配到一大片 `background_agent_runtime` 家族(本轮实测 138 条:47 passed / 91 failed,失败几乎都是等待 mock LLM 请求的 `Timeout` 或状态竞争),**不能用它作为本里程碑的判据**。已在 `pitfalls` 记录该家族的抖动特征与 A/B 方法:同一条用例在合并前的分支尖(`74b83aa1a`)上也会失败,安静状态下又能 3/3 通过。
|
||||
@@ -6045,4 +6045,10 @@ Cocos Creator 根目录由 `package.json.creator.version` 与普通 `assets/`
|
||||
|
||||
- **现象**:把 237 个上游提交并进一条改了传输层的分支时,`git merge` 报 29 处冲突;剩下的**自动合并**里藏着三类静默错误:① 对冲突文件用 `git checkout --ours` 整文件取本分支,会连上游新增的 `#[tauri::command]`(本例 `clear_game_creator_acl_elevation_denials`)一起丢掉,表现为 `cannot find macro __tauri_command_name_*`;② 上游给别的 item 加的 `#[cfg(test)]` 会被插到本分支新增函数的前一行(本例 `configure_game_creator_manifest_invalidation_event_sink`),表现为非 test 构建 `unresolved import`;③ 上游删除的实现(本例 `DirectCodexTurnFailure` / `record_direct_codex_turn_failure`)只在 **test 构建**里才报错,`cargo check` 全绿。
|
||||
- **处理**:冲突文件一律用 `git checkout -m -- <path>` 取回"未解决但已自动合并"的内容,只手工解决冲突块,不要整文件取一边;`cargo check` 之后必须再跑 `cargo test --no-run` 把 test 构建的错误扫出来;合并后再跑一遍 `cargo fmt -- --check`,rustfmt 的「Incorrect newline style」正好能抓到被脚本重写过的文件。
|
||||
- **附注**:reqwest 0.12 的 `Response` 没有 `into_parts` / `from_parts`(0.13 才有),想在发送层统一改写响应体会直接编译失败。平台维护态因此改成在各 facade 的错误分支复用已经读到的 body 判断,而不是重建响应对象。
|
||||
- **附注**:reqwest 0.12 的 `Response` 没有 `into_parts` / `from_parts`(0.13 才有),想在发送层统一改写响应体会直接编译失败。平台维护态因此改成在各 facade 的错误分支复用已经读到的 body 判断,而不是重建响应对象。
|
||||
## 2026-09-28 AGC 的 `background_agent_runtime` 家族在本机会大量 Timeout,别把它当成回归判据
|
||||
|
||||
- **现象**:`cargo test --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml --offline -- background --test-threads=1` 在本机跑满 31 分钟后给出 `47 passed; 91 failed`,失败几乎都是 `planning request: Timeout` / `design plan llm request: Timeout` / `left: "running", right: "waiting-for-confirmation"` 这类等待 mock LLM 请求或状态竞争的形态。这个过滤词会连带匹配到 `tests::command_runtime`、`tests::project_tools`、`tests::runtime_state`、`tests::sessions` 等大批慢用例,整组串行运行会把机器压到超时。
|
||||
- **判据**:拿它当门禁会得到假红。要判断某次改动是否真的破坏了这些用例,必须做 A/B:在当前改动与改动前(或 `master`)上分别**单独**跑同一条用例。
|
||||
- **本轮实测(2026-09-28)**:`tests::collaboration::delegation::background_agent_runtime_delegate_respects_project_policy` 在机器被其它 cargo 任务压住时曾失败(`Timeout` 与状态竞争各一次),安静状态下合并前后都 3/3 通过;`background_agent_runtime_can_delegate_task_to_other_agent` 与 `runtime_state::foreground_agent_chat_releases_lane_then_drains_queued_background_task` 在合并前的 `74b83aa1a` 上同样失败。
|
||||
- **做法**:AGC Rust 验证只跑受影响模块的定向过滤(例如 `direct_thread_manager`、`platform_maintenance`、`external_generation_state`、`write_lock`、`gui_`),全量或 `background` 这类宽过滤留给 CI 分片;本地要排查该家族时一次只跑一条、且先确认没有其它 cargo/链接任务在跑。
|
||||
|
||||
Reference in New Issue
Block a user