按合并后的真实状态收口六组计划的状态与取证
- 游戏分发阶段A领域合同:状态改为 implemented-awaiting-runtime-acceptance,记录 module-game-distribution 13 passed
- 游戏分发目录详情与在线游玩:里程碑状态与阶段 A 行按 A/B/C 已落地的事实更新,阶段门禁关系保持不变
- 项目客户端占用锁收敛:里程碑与实施计划状态收口,记录 write_lock 21 passed 与 gui_ 31 passed
- UI编辑器多树预览与独立显示开关:里程碑与实施计划状态收口,记录 4 个套件 59 passed
- AGC模型目录上游同步:里程碑与实施计划状态收口,记录上游提交 4234a21ee 与本地真实上游 smoke 出处
- ExternalV1游戏场景生成路由:里程碑与实施计划状态收口,勾选已由 scene 套件 18 passed 覆盖的验收项
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
| 字段 | 值 |
|
||||
| --- | --- |
|
||||
| Version | 1.0 |
|
||||
| Status | in-progress |
|
||||
| Status | implemented-awaiting-runtime-acceptance |
|
||||
| Date | 2026-09-24 |
|
||||
| Parent Milestone | `docs/project-memory/plans/【里程碑】AGC模型目录上游同步-2026-09-24.md` |
|
||||
|
||||
@@ -34,3 +34,12 @@
|
||||
- **混合版本**:module 的缺行语义变化要求 module 与 api-server 同批发布/回滚;未升级的 api-server 会把自己的 AGC 接口打到 `503`(后台 DTO 未变,admin-web 可独立发布)。回滚点必须同时覆盖 module 与 api-server。
|
||||
- **存量目录**:结构合法的旧目录(含 `quality/fast`)不会自动重建,需要 owner 在后台修改或清空该行后重启。
|
||||
- **目录规模**:目录项上限仍是 32;上游在售模型超过 32 条时同步会失败并记录原因,需要 owner 在后台维护子集。
|
||||
|
||||
## 本轮核对(2026-09-28)
|
||||
|
||||
上游已用同主题提交落地,合并后工作树与计划完全对齐:
|
||||
|
||||
- `module-runtime`:`AgcModelCatalog::from_upstream_models`(含 slug/默认项/32 项上限与单测)在 `server-rs/crates/module-runtime/src/agc_models.rs`。
|
||||
- `api-server`:`ensure_agc_model_catalog_initialized` 在 `src/agc_models.rs`,接线在 `src/main.rs`(启动期按 HTTP 角色调用,失败只记 error),未初始化统一 `503` 与 `AGC_MODEL_CATALOG_NOT_INITIALIZED` 语义在 `agc_models.rs` 里。
|
||||
- 上游提交:`4234a21ee 服务端:AGC 模型目录缺配置时改为启动期从上游同步,保留原目录格式`;本地真实上游 smoke(清空目录 → 启动日志「已按上游模型列表初始化 AGC 模型目录 revision=1 model_count=6」→ `GET /api/llm/models` 返回原名 → 上游不可达时 503 且不写替代目录)已经记在 `decision-log` 里。
|
||||
- 仍待补:生产发布(module 与 api-server 必须同批发布/回滚)与超过 32 条上游模型时的 owner 维护动作,都属于外部环境/发布范畴。
|
||||
@@ -3,7 +3,7 @@
|
||||
| 字段 | 值 |
|
||||
| --- | --- |
|
||||
| Milestone | `docs/project-memory/plans/【里程碑】ExternalV1游戏场景生成路由-2026-09-24.md` |
|
||||
| Status | ready |
|
||||
| Status | implemented-awaiting-runtime-acceptance |
|
||||
| Owner | Agent |
|
||||
|
||||
## 修改边界
|
||||
@@ -41,3 +41,13 @@
|
||||
- 共享逻辑抽取改变站内路由行为:以「相同输入 Prompt 逐字一致」单测为门禁;回滚点为抽取提交本身。
|
||||
- 旧路由登记的身份记录在新常量下读不到:保留旧路由 + `spec` 的读取分支,仅新增写入走新路由;回滚点为常量迁移提交。
|
||||
- 幂等重放依赖现有外部生成重放链路(issue #495 问题一不涉及图片生成入口,实测正常);若 smoke 暴露重放异常,停止合并并记录。
|
||||
|
||||
## 本轮核对(2026-09-28)
|
||||
|
||||
上游已用同主题提交落地(`155f0d316 新增 external v1 游戏场景生成路由并迁移 AGC 美术包背景阶段 (#516)`),合并后工作树与计划对齐:
|
||||
|
||||
- 路由与共享实现:`server-rs/crates/api-server/src/external_editor_api.rs` 的 `generate_external_editor_scene`、路由登记与矩阵(`external_editor_api.rs`、`modules/external_api.rs`)、站内共享组装仍在 `editor_project.rs`。
|
||||
- 契约与 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 分钟未收敛,本轮未采信。
|
||||
@@ -3,7 +3,7 @@
|
||||
| 字段 | 值 |
|
||||
| --- | --- |
|
||||
| Milestone | `docs/project-memory/plans/【里程碑】UI编辑器多树预览与独立显示开关-2026-09-14.md` |
|
||||
| Status | ready |
|
||||
| Status | implemented-awaiting-runtime-acceptance |
|
||||
| Owner | Codex |
|
||||
|
||||
## 修改边界
|
||||
@@ -33,3 +33,10 @@
|
||||
- Node DTO 是生成绑定,Rust 与 TS 不一致会阻断编译;每次结构变更后立即生成并检查 diff。
|
||||
- 预览选择与 activeImageId 解耦可能暴露 Inspector 当前依赖;通过 treeId 反查补齐。
|
||||
- root 拖动需与画布平移和子节点拖动区分;若命中冲突,优先保留现有子节点手势。
|
||||
|
||||
## 本轮核对(2026-09-28)
|
||||
|
||||
- 数据与布局契约在现役代码里:`features/ui-editor/types/NodeOffset.ts`(含 min/max 派生)、`src-tauri/src/ui_editor/layout/offset.rs`、`view/ui-editor/components/preview/previewGrid.ts`。
|
||||
- 三个独立开关在 `view/ui-editor/index.tsx` 里渲染:`显示框线` / `显示原图` / `显示组件`。
|
||||
- 定向用例:`npx vitest run tests/uiEditorPreview.test.tsx tests/previewWorkspaceZoom.test.tsx tests/previewRightPanGesture.test.ts tests/uiEditorPage.test.ts --root apps/ai-game-creator-shell` → **59 passed / 0 failed**。
|
||||
- 仍待补:真机手感与多树布局的目视验收(本机只到定向用例级)。
|
||||
@@ -3,7 +3,7 @@
|
||||
| 字段 | 值 |
|
||||
| --- | --- |
|
||||
| Milestone | `docs/project-memory/plans/【里程碑】游戏分发目录详情与在线游玩-2026-09-18.md` 阶段 A |
|
||||
| Status | in_progress |
|
||||
| Status | implemented-awaiting-runtime-acceptance |
|
||||
| Owner | Codex |
|
||||
|
||||
## 修改边界
|
||||
@@ -132,3 +132,13 @@
|
||||
- 真实独立发行域名、通配 TLS 与 CDN 仍属部署侧:边缘模板与门禁已就绪,本地已用真实 nginx 验证按主机映射、Cookie 403 与命名空间隔离,但仍需在真实域名/证书下跑一次“审核通过 → 游玩 → 换版 → 下架”并确认 CDN TTL 不超过 60 秒窗口。
|
||||
- 版本回读、撤回与管理员安全下架已实现;主规范 HTTP 表中不再有待落地路由。容量与限额边界、发行包 PUT 重试已有真实栈证据;仍未做的是 CDN purge 失败行为、回滚演练与清理策略(不删除仍被公开版本引用的对象)的上线验收。
|
||||
- 生产调用依赖已初始化的 editor generation runtime service identity;未初始化时 procedure 拒绝写入,不会退回 API 进程内存状态。
|
||||
|
||||
## 本轮核对(2026-09-28)
|
||||
|
||||
阶段 A 的领域实现在合并 `origin/master` 后的工作树里已经齐备,并跑通了它自己的验证命令:
|
||||
|
||||
- `server-rs/crates/module-game-distribution` 已在 workspace 声明里(`server-rs/Cargo.toml` 的 `crates/module-game-distribution` 成员与 `module-game-distribution` 依赖),包含 `domain.rs` / `application.rs` / `commands.rs` / `errors.rs` / `events.rs`。
|
||||
- `cargo test -p module-game-distribution --manifest-path server-rs/Cargo.toml` → **13 passed / 0 failed**。
|
||||
- 仍待补:阶段 A 的真实验收需要与冻结的 SpacetimeDB 表同批的真实栈写入证据(本机只到领域单测)。
|
||||
|
||||
本计划按仓库口径收口为 `implemented-awaiting-runtime-acceptance`:源码与领域单测已落地,真实栈验收未执行。
|
||||
@@ -1,7 +1,7 @@
|
||||
# 【实施计划】项目客户端占用锁收敛-2026-09-14
|
||||
|
||||
Version: 1
|
||||
Status: in-progress
|
||||
Status: implemented-awaiting-runtime-acceptance
|
||||
Date: 2026-09-14
|
||||
Milestone: `【里程碑】项目客户端占用锁收敛-2026-09-14.md`
|
||||
|
||||
@@ -62,3 +62,9 @@ Milestone: `【里程碑】项目客户端占用锁收敛-2026-09-14.md`
|
||||
- 命令:`cargo test --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml --offline -- --test-threads=1 project_write_lock` 全绿(含 `project::write_lock` 与 `tests::project_lock_recovery` 分组)。
|
||||
- Runner owner 的跨 AppData / 跨 boot / 恢复与诊断覆盖已经存在,并且本轮实跑通过:`cargo test --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml --offline -- --test-threads=1 project_execution_owner` → **8 passed**(含 `project_execution_owner_is_unique_across_appdata_and_records_recovery`、`project_execution_owner_cross_boot_claim_recovers_durable_runtime_once`、`project_execution_owner_concurrent_claims_single_flight_recovery`、`tests::response_stream::project_execution_owner_cross_boot_replays_same_run_provider_handoff_to_completion_once`);`… --test-threads=1 owner_diagnostic` → **4 passed**(含 `corrupt_legacy_owner_diagnostic_does_not_block_lock_recovery`、`partial_owner_diagnostic_is_atomically_recovered_after_os_lock`)。
|
||||
- 平台边界:`project_owner_relative_open_does_not_follow_parent_replacement_race` 与 `project_execution_owner_rejects_symlinked_runtime_parent_without_touching_target` 都是 `#[cfg(unix)]`,本机(Windows)不执行,本次没有它们的证据。
|
||||
|
||||
## 本轮核对(2026-09-28)
|
||||
|
||||
- 统一锁与 Runner owner 两条路径都在工作树里:`apps/ai-game-creator-shell/src-tauri/src/project/write_lock.rs`、`runner/project_owner.rs`。
|
||||
- 定向用例:`cargo test --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml --offline -- write_lock --test-threads=1` → **21 passed**;`-- gui_ --test-threads=1` → **31 passed**(覆盖 `gui_owner_*`、`gui_owned_runner_*`、`gui_participant_lock_*` 等同进程重入、跨线程争用、owner 交接与崩溃恢复分支)。
|
||||
- 仍待补:真机多窗口/跨进程占用的运行时表现(本机只到定向用例级)。
|
||||
@@ -3,7 +3,7 @@
|
||||
| 字段 | 值 |
|
||||
| --- | --- |
|
||||
| Version | 1.0 |
|
||||
| Status | in-progress(实现与本地真实上游验证完成;生产发布未执行) |
|
||||
| Status | implemented-awaiting-runtime-acceptance(实现与本地真实上游验证完成;生产发布未执行) |
|
||||
| Date | 2026-09-24 |
|
||||
| Parent Spec | `docs/technical/【技术方案】AGC后台模型别名与对话选择-2026-09-05.md` |
|
||||
|
||||
@@ -54,3 +54,12 @@
|
||||
- 已决:初始化失败不阻塞启动,只在下次启动重试。
|
||||
- 已决:目录结构与既有 DTO/页面保持不变,本变更不引入不兼容改动。
|
||||
- 待决:是否需要“上游自动跟随同步”(当前不做)。
|
||||
|
||||
## 本轮核对(2026-09-28)
|
||||
|
||||
上游已用同主题提交落地,合并后工作树与计划完全对齐:
|
||||
|
||||
- `module-runtime`:`AgcModelCatalog::from_upstream_models`(含 slug/默认项/32 项上限与单测)在 `server-rs/crates/module-runtime/src/agc_models.rs`。
|
||||
- `api-server`:`ensure_agc_model_catalog_initialized` 在 `src/agc_models.rs`,接线在 `src/main.rs`(启动期按 HTTP 角色调用,失败只记 error),未初始化统一 `503` 与 `AGC_MODEL_CATALOG_NOT_INITIALIZED` 语义在 `agc_models.rs` 里。
|
||||
- 上游提交:`4234a21ee 服务端:AGC 模型目录缺配置时改为启动期从上游同步,保留原目录格式`;本地真实上游 smoke(清空目录 → 启动日志「已按上游模型列表初始化 AGC 模型目录 revision=1 model_count=6」→ `GET /api/llm/models` 返回原名 → 上游不可达时 503 且不写替代目录)已经记在 `decision-log` 里。
|
||||
- 仍待补:生产发布(module 与 api-server 必须同批发布/回滚)与超过 32 条上游模型时的 owner 维护动作,都属于外部环境/发布范畴。
|
||||
@@ -3,7 +3,7 @@
|
||||
| 字段 | 值 |
|
||||
| --- | --- |
|
||||
| Version | 1.0 |
|
||||
| Status | proposed |
|
||||
| Status | implemented-awaiting-runtime-acceptance |
|
||||
| Date | 2026-09-24 |
|
||||
| Parent Spec | `docs/technical/【技术方案】ExternalV1游戏场景生成路由-2026-09-24.md` |
|
||||
|
||||
@@ -33,9 +33,9 @@
|
||||
## 验收标准
|
||||
|
||||
- [x] 账号场景入口透传可选幂等键、入队前拒绝非法键;场景配方保留 AGC 来源标记且队列完成结果包含可下载资源(路由校验及组装到结果序列化的定向测试)。
|
||||
- [ ] 新路由契约测试通过:路由矩阵与鉴权、参数 400、同键重放返回原任务、同键不同请求 409。
|
||||
- [ ] 外部场景路由与站内路由对相同输入产出相同的后端 Prompt 与入队 payload(共享实现单测对照)。
|
||||
- [ ] `docs/openapi/genarrative-external-v1.openapi.json` 与实现一致,相关契约检查通过。
|
||||
- [x] 新路由契约测试通过:路由矩阵与鉴权、参数 400、同键重放返回原任务、同键不同请求 409。
|
||||
- [x] 外部场景路由与站内路由对相同输入产出相同的后端 Prompt 与入队 payload(共享实现单测对照)。
|
||||
- [x] `docs/openapi/genarrative-external-v1.openapi.json` 与实现一致,相关契约检查通过。
|
||||
- [ ] 客户端定向测试:背景阶段请求命中新路由且为结构化字段;保留账本匹配器与实际请求口径一致;`reuse-or-create` 与 `regenerate` 路径回归通过。
|
||||
- [ ] 本地真实栈 smoke:`npm run dev:api-server` + 测试 Key 下美术包背景阶段受理成功(Provider 出图按环境可用性记录为已验证或未验证)。
|
||||
|
||||
@@ -44,3 +44,13 @@
|
||||
- 自动化:`cargo test -p api-server`(契约与场景相关单测)、AGC `src-tauri` 定向测试、`npm run check:encoding`、`git diff --check`。
|
||||
- 运行时:本地 api-server 受理 smoke。
|
||||
- 边界:鉴权 401/403、幂等重放、参数失败关闭。
|
||||
|
||||
## 本轮核对(2026-09-28)
|
||||
|
||||
上游已用同主题提交落地(`155f0d316 新增 external v1 游戏场景生成路由并迁移 AGC 美术包背景阶段 (#516)`),合并后工作树与计划对齐:
|
||||
|
||||
- 路由与共享实现:`server-rs/crates/api-server/src/external_editor_api.rs` 的 `generate_external_editor_scene`、路由登记与矩阵(`external_editor_api.rs`、`modules/external_api.rs`)、站内共享组装仍在 `editor_project.rs`。
|
||||
- 契约与 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 分钟未收敛,本轮未采信。
|
||||
@@ -3,7 +3,7 @@
|
||||
| 字段 | 值 |
|
||||
| --- | --- |
|
||||
| Version | 1.0 |
|
||||
| Status | approved |
|
||||
| Status | implemented-awaiting-runtime-acceptance |
|
||||
| Date | 2026-09-14 |
|
||||
| Parent Spec | `docs/technical/【前端架构】UI编辑会话模块边界-2026-08-19.md` |
|
||||
|
||||
@@ -45,3 +45,10 @@ UI 编辑器预览同时展示全部界面树。每棵树使用 root.offset 的
|
||||
- 自动化:UI editor preview、state、transform 相关 Vitest;Tauri Rust 单元测试;类型检查。
|
||||
- 运行时:必要时执行 AGC UI 编辑器页面 smoke。
|
||||
- 边界:非法缺失 offset 不兜底;树重叠命中顺序;root 禁止 resize。
|
||||
|
||||
## 本轮核对(2026-09-28)
|
||||
|
||||
- 数据与布局契约在现役代码里:`features/ui-editor/types/NodeOffset.ts`(含 min/max 派生)、`src-tauri/src/ui_editor/layout/offset.rs`、`view/ui-editor/components/preview/previewGrid.ts`。
|
||||
- 三个独立开关在 `view/ui-editor/index.tsx` 里渲染:`显示框线` / `显示原图` / `显示组件`。
|
||||
- 定向用例:`npx vitest run tests/uiEditorPreview.test.tsx tests/previewWorkspaceZoom.test.tsx tests/previewRightPanGesture.test.ts tests/uiEditorPage.test.ts --root apps/ai-game-creator-shell` → **59 passed / 0 failed**。
|
||||
- 仍待补:真机手感与多树布局的目视验收(本机只到定向用例级)。
|
||||
@@ -3,7 +3,7 @@
|
||||
| 字段 | 值 |
|
||||
| --- | --- |
|
||||
| Version | 0.2 |
|
||||
| Status | accepted(用户“继续”确认按既定假设进入阶段 A;A 未验收) |
|
||||
| Status | implemented-awaiting-runtime-acceptance(阶段 A/B/C 源码级已落地;真实发行域名、TLS/CDN 与生产账号验收待补) |
|
||||
| Date | 2026-09-18 |
|
||||
| Parent Spec | `docs/【玩法创作】平台入口与玩法链路-2026-05-15.md` |
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
| 阶段 | 行为切片 | 依赖 | 状态 |
|
||||
| --- | --- | --- | --- |
|
||||
| A | 真实包、游戏身份与可恢复发行 | 主规范评审及持久化合同冻结 | accepted(实现中) |
|
||||
| A | 真实包、游戏身份与可恢复发行 | 主规范评审及持久化合同冻结 | implemented-awaiting-runtime-acceptance |
|
||||
| B | 人工审核、公开投影与隔离托管 | A 验收;发行站点/私有存储/审核策略确认 | proposed |
|
||||
| C | AGC 与网页发布、现代游戏目录和跨端游玩 | B 验收;导航与交互稿评审 | proposed |
|
||||
| D | 端到端验收、容量与撤销、上线准备 | C 验收;实际部署资源可用 | proposed |
|
||||
@@ -137,3 +137,14 @@
|
||||
主规范仍待确认人工审核策略、导航、首版能力/额度、对象保留、发行域名及运营责任;当前没有主规范与里程碑通过评审的记录,也没有任何阶段验收证据。先评审这些决策,再冻结 A 的持久化与 DTO 明细并创建仅覆盖 A 的实施计划。不得把该文档状态改为 accepted 以代替评审。
|
||||
|
||||
所有阶段完成并验收后,稳定事实回写主规范,删除本临时里程碑与各阶段实施计划;过程记录不进入产品代码、用户文案或长期共享记忆。
|
||||
|
||||
## 本轮核对(2026-09-28)
|
||||
|
||||
合并 `origin/master` 后的工作树里,阶段 A/B/C 的实现都已落地,D 仍未开始:
|
||||
|
||||
- 阶段 A:`server-rs/crates/module-game-distribution` 领域 crate 在 workspace 内,`cargo test -p module-game-distribution` → 13 passed。
|
||||
- 阶段 B:后台人工审核页 `apps/admin-web/src/pages/AdminGameManagementPage.tsx`、公开投影与发行入口派生(服务端按 `GENARRATIVE_GAME_DISTRIBUTION_RELEASE_ENTRY_TEMPLATE` 生成 `entryUrl`,决策记录见 `decision-log` 2026-09-23 条目)都在现役代码里。
|
||||
- 阶段 C:AGC 发布资料链路、现代游戏目录与跨端游玩路由(`games` / `games/detail` / `games/mine` / `games/play` / `games/publish` 已进 nginx SPA 白名单)、`src/components/game-distribution/gameDistributionGuards.ts` 与统一作品详情都在现役代码里。
|
||||
- 阶段 D:需要实际部署资源、真实发行域名与 TLS/CDN,本轮未执行。
|
||||
|
||||
阶段状态只按上面三等事实更新;**阶段验收本身仍按原门禁流程**(A 验收后才允许把依赖它的阶段标记为 accepted),因此里程碑状态改为 `implemented-awaiting-runtime-acceptance`,阶段表里的门禁关系保持不变。
|
||||
@@ -1,7 +1,7 @@
|
||||
# 【里程碑】项目客户端占用锁收敛-2026-09-14
|
||||
|
||||
Version: 1
|
||||
Status: in-progress
|
||||
Status: implemented-awaiting-runtime-acceptance
|
||||
Date: 2026-09-14
|
||||
Parent Spec: `docs/technical/【技术方案】AI游戏创作智能体App实施计划-2026-06-24.md`
|
||||
|
||||
@@ -55,3 +55,9 @@ Parent Spec: `docs/technical/【技术方案】AI游戏创作智能体App实施
|
||||
- 命令:`cargo test --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml --offline -- --test-threads=1 project_write_lock` 全绿(含 `project::write_lock` 与 `tests::project_lock_recovery` 分组)。
|
||||
- Runner owner 的跨 AppData / 跨 boot / 恢复与诊断覆盖已经存在,并且本轮实跑通过:`cargo test --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml --offline -- --test-threads=1 project_execution_owner` → **8 passed**(含 `project_execution_owner_is_unique_across_appdata_and_records_recovery`、`project_execution_owner_cross_boot_claim_recovers_durable_runtime_once`、`project_execution_owner_concurrent_claims_single_flight_recovery`、`tests::response_stream::project_execution_owner_cross_boot_replays_same_run_provider_handoff_to_completion_once`);`… --test-threads=1 owner_diagnostic` → **4 passed**(含 `corrupt_legacy_owner_diagnostic_does_not_block_lock_recovery`、`partial_owner_diagnostic_is_atomically_recovered_after_os_lock`)。
|
||||
- 平台边界:`project_owner_relative_open_does_not_follow_parent_replacement_race` 与 `project_execution_owner_rejects_symlinked_runtime_parent_without_touching_target` 都是 `#[cfg(unix)]`,本机(Windows)不执行,本次没有它们的证据。
|
||||
|
||||
## 本轮核对(2026-09-28)
|
||||
|
||||
- 统一锁与 Runner owner 两条路径都在工作树里:`apps/ai-game-creator-shell/src-tauri/src/project/write_lock.rs`、`runner/project_owner.rs`。
|
||||
- 定向用例:`cargo test --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml --offline -- write_lock --test-threads=1` → **21 passed**;`-- gui_ --test-threads=1` → **31 passed**(覆盖 `gui_owner_*`、`gui_owned_runner_*`、`gui_participant_lock_*` 等同进程重入、跨线程争用、owner 交接与崩溃恢复分支)。
|
||||
- 仍待补:真机多窗口/跨进程占用的运行时表现(本机只到定向用例级)。
|
||||
Reference in New Issue
Block a user