From f5424ce805ea08a399a834497f26ee0921e95238 Mon Sep 17 00:00:00 2001 From: kdletters <61648117+kdletters@users.noreply.github.com> Date: Mon, 28 Sep 2026 15:53:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8C=89=E5=90=88=E5=B9=B6=E5=90=8E=E7=9A=84?= =?UTF-8?q?=E7=9C=9F=E5=AE=9E=E7=8A=B6=E6=80=81=E6=94=B6=E5=8F=A3=E5=85=AD?= =?UTF-8?q?=E7=BB=84=E8=AE=A1=E5=88=92=E7=9A=84=E7=8A=B6=E6=80=81=E4=B8=8E?= =?UTF-8?q?=E5=8F=96=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 游戏分发阶段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 覆盖的验收项 --- ...�实施计划】AGC模型目录上游同步-2026-09-24.md | 11 ++++++++++- ...计划】ExternalV1游戏场景生成路由-2026-09-24.md | 12 +++++++++++- ...ˆ’】UI编辑器多树预览与独立显示开关-2026-09-14.md | 9 ++++++++- ...®ž施计划】游戏分发阶段A领域合同-2026-09-19.md | 12 +++++++++++- ...实施计划】项目客户端占用锁收敛-2026-09-14.md | 8 +++++++- ...【里程碑】AGC模型目录上游同步-2026-09-24.md | 11 ++++++++++- ...¨‹碑】ExternalV1游戏场景生成路由-2026-09-24.md | 18 ++++++++++++++---- ...‘】UI编辑器多树预览与独立显示开关-2026-09-14.md | 9 ++++++++- ...¨‹碑】游戏分发目录详情与在线游玩-2026-09-18.md | 15 +++++++++++++-- ...€�里程碑】项目客户端占用锁收敛-2026-09-14.md | 8 +++++++- 10 files changed, 99 insertions(+), 14 deletions(-) diff --git a/docs/project-memory/plans/【实施计划】AGC模型目录上游同步-2026-09-24.md b/docs/project-memory/plans/【实施计划】AGC模型目录上游同步-2026-09-24.md index 5f5b383b3..eb0b75e56 100644 --- a/docs/project-memory/plans/【实施计划】AGC模型目录上游同步-2026-09-24.md +++ b/docs/project-memory/plans/【实施计划】AGC模型目录上游同步-2026-09-24.md @@ -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 维护动作,都属于外部环境/发布范畴。 \ No newline at end of file diff --git a/docs/project-memory/plans/【实施计划】ExternalV1游戏场景生成路由-2026-09-24.md b/docs/project-memory/plans/【实施计划】ExternalV1游戏场景生成路由-2026-09-24.md index ec8a48ea5..dddb33de0 100644 --- a/docs/project-memory/plans/【实施计划】ExternalV1游戏场景生成路由-2026-09-24.md +++ b/docs/project-memory/plans/【实施计划】ExternalV1游戏场景生成路由-2026-09-24.md @@ -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 分钟未收敛,本轮未采信。 \ No newline at end of file diff --git a/docs/project-memory/plans/【实施计划】UI编辑器多树预览与独立显示开关-2026-09-14.md b/docs/project-memory/plans/【实施计划】UI编辑器多树预览与独立显示开关-2026-09-14.md index 82a49e1f7..eda92d191 100644 --- a/docs/project-memory/plans/【实施计划】UI编辑器多树预览与独立显示开关-2026-09-14.md +++ b/docs/project-memory/plans/【实施计划】UI编辑器多树预览与独立显示开关-2026-09-14.md @@ -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**。 +- 仍待补:真机手感与多树布局的目视验收(本机只到定向用例级)。 \ No newline at end of file diff --git a/docs/project-memory/plans/【实施计划】游戏分发阶段A领域合同-2026-09-19.md b/docs/project-memory/plans/【实施计划】游戏分发阶段A领域合同-2026-09-19.md index 105916d8b..0aa3542bf 100644 --- a/docs/project-memory/plans/【实施计划】游戏分发阶段A领域合同-2026-09-19.md +++ b/docs/project-memory/plans/【实施计划】游戏分发阶段A领域合同-2026-09-19.md @@ -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`:源码与领域单测已落地,真实栈验收未执行。 \ No newline at end of file diff --git a/docs/project-memory/plans/【实施计划】项目客户端占用锁收敛-2026-09-14.md b/docs/project-memory/plans/【实施计划】项目客户端占用锁收敛-2026-09-14.md index 0c535ca4f..ababa1069 100644 --- a/docs/project-memory/plans/【实施计划】项目客户端占用锁收敛-2026-09-14.md +++ b/docs/project-memory/plans/【实施计划】项目客户端占用锁收敛-2026-09-14.md @@ -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 交接与崩溃恢复分支)。 +- 仍待补:真机多窗口/跨进程占用的运行时表现(本机只到定向用例级)。 \ No newline at end of file diff --git a/docs/project-memory/plans/【里程碑】AGC模型目录上游同步-2026-09-24.md b/docs/project-memory/plans/【里程碑】AGC模型目录上游同步-2026-09-24.md index b3da552a7..3c14f4a5e 100644 --- a/docs/project-memory/plans/【里程碑】AGC模型目录上游同步-2026-09-24.md +++ b/docs/project-memory/plans/【里程碑】AGC模型目录上游同步-2026-09-24.md @@ -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 维护动作,都属于外部环境/发布范畴。 \ No newline at end of file diff --git a/docs/project-memory/plans/【里程碑】ExternalV1游戏场景生成路由-2026-09-24.md b/docs/project-memory/plans/【里程碑】ExternalV1游戏场景生成路由-2026-09-24.md index a760cad64..f9dd8d684 100644 --- a/docs/project-memory/plans/【里程碑】ExternalV1游戏场景生成路由-2026-09-24.md +++ b/docs/project-memory/plans/【里程碑】ExternalV1游戏场景生成路由-2026-09-24.md @@ -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 分钟未收敛,本轮未采信。 \ No newline at end of file diff --git a/docs/project-memory/plans/【里程碑】UI编辑器多树预览与独立显示开关-2026-09-14.md b/docs/project-memory/plans/【里程碑】UI编辑器多树预览与独立显示开关-2026-09-14.md index 6222e284c..4c88885e9 100644 --- a/docs/project-memory/plans/【里程碑】UI编辑器多树预览与独立显示开关-2026-09-14.md +++ b/docs/project-memory/plans/【里程碑】UI编辑器多树预览与独立显示开关-2026-09-14.md @@ -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**。 +- 仍待补:真机手感与多树布局的目视验收(本机只到定向用例级)。 \ No newline at end of file diff --git a/docs/project-memory/plans/【里程碑】游戏分发目录详情与在线游玩-2026-09-18.md b/docs/project-memory/plans/【里程碑】游戏分发目录详情与在线游玩-2026-09-18.md index e55f03b43..3508680d1 100644 --- a/docs/project-memory/plans/【里程碑】游戏分发目录详情与在线游玩-2026-09-18.md +++ b/docs/project-memory/plans/【里程碑】游戏分发目录详情与在线游玩-2026-09-18.md @@ -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`,阶段表里的门禁关系保持不变。 \ No newline at end of file diff --git a/docs/project-memory/plans/【里程碑】项目客户端占用锁收敛-2026-09-14.md b/docs/project-memory/plans/【里程碑】项目客户端占用锁收敛-2026-09-14.md index 97824f478..bc6744951 100644 --- a/docs/project-memory/plans/【里程碑】项目客户端占用锁收敛-2026-09-14.md +++ b/docs/project-memory/plans/【里程碑】项目客户端占用锁收敛-2026-09-14.md @@ -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 交接与崩溃恢复分支)。 +- 仍待补:真机多窗口/跨进程占用的运行时表现(本机只到定向用例级)。 \ No newline at end of file