合并最新 master 到 feat/five_min_design,并修复 master 的 Windows 构建中断
Project CI / Repository checks (pull_request) Successful in 1m15s
Project CI / Frontend tests (pull_request) Successful in 2m55s
Project CI / Backend tests (pull_request) Successful in 3m58s
Project CI / Native shell tests (pull_request) Failing after 10m29s

master 侧 5 个提交(8e78be766..9f5c84ee7)。仅一处冲突:
src/view/home/index.tsx 的 react import——我们这侧对该文件只有 prettier 格式化
改动,master 新增的 useRef 在合并后正文里用了 2 次,取 master 那行。

修复 master 带来的 Windows 构建中断(E0658):
project/manifest.rs 的 #[cfg(windows)] 分支用了 std 未稳定 API
`MetadataExt::number_of_links`(rust-lang#63010),而 rust-toolchain.toml 锁在
stable 1.96.0。该文件与 origin/master 逐字节相同,即 master 自身在 Windows 上就
构建不过——Linux CI 上 #[cfg(windows)] 整块不参与编译,所以 CI 全绿。
改为本仓库既有写法:自声明 ByHandleFileInformation 调 GetFileInformationByHandle
(另见 runner/endpoint.rs、tool_plan_handoff/storage_windows.rs 等六处)。保留原
错误文案与 fail-closed 语义(取不到句柄信息与确实是硬链接同等拒绝),并按
endpoint.rs 先例一并拒绝 directory / reparse point。
该修复目前只在本分支,须回流 master,否则下次合并会再撞一次。踩坑记录见
pitfalls.md 2026-08-15 条。

验证:
- cargo check --offline --all-targets 通过(修复前 E0658,修复后 Finished)
- cargo fmt --check 通过
- 定向 Rust 测试 project::manifest / godot / static_delegate /
  collaboration::static_deliveries 65 passed / 0 failed
- agc:typecheck 通过;check:encoding 通过(5376 files);git diff --check 干净
- 前端 vitest apps/ai-game-creator-shell/tests:738 passed / 1 failed,唯一失败是
  已知的 Windows symlink EPERM(agentSwarmTestEntry),非本次回归

两条既有环境失败,已核实与本次合并无关:
- command_exec::tests 两条报「找不到受信任的 rg 可执行文件」,该文件相对合并基线
  逐字节相同
- npm run check:native-shells 在合并前的 master worktree 上失败得一模一样
  (spawnSync npm.cmd EINVAL,脚本 spawn npm.cmd 未带 shell: true)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-15 05:37:00 +00:00
54 changed files with 2799 additions and 1066 deletions
File diff suppressed because one or more lines are too long
@@ -205,7 +205,7 @@ controller 配置:
- `editor_icon_spritesheet_generation`:图标素材 spritesheet 生成和拆分。
- `editor_ui_design_asset_extraction`:UI 设计图红框素材提取。
- `editor_character_animation_generation`:角色动作视频和帧素材生成。
- `editor_video_generation`:画布视频生成和视频素材快速编辑。
- `editor_video_generation`:画布视频生成。
- `editor_sound_effect_generation` / `editor_background_music_generation`:画布音效与背景音乐。
画板结果的业务真相仍是 `asset_object`、`editor_project_resource`、账号级 `editor_asset`、可选 `asset_entity_binding` 和对应的 legacy / structured canvas 表;`editor_generation_operation` 只是提交回执,不替代这些 read model。worker 在 Provider 与 OSS 完成后只做 prepare:使用 owner + operation kind + job ID + stable slot 派生 resource/asset ID,构造可选 object/binding、候选 layout 和 compact job result,然后一次调用 `persist_editor_generation_result_and_return`。该 procedure 必须在当前事务快照校验 owner、job kind、由 `request_payload_json` 重算的 fingerprint 与未过期 lease,最后与业务记录一起完成 job 和 receipt。任一验证、binding 或 canvas CAS 失败都回滚全部数据库事实;worker 不得随后再调用 `complete_external_generation_job_and_return`。前端轮询单 job 到 completed 后重新读取项目快照,不从队列 payload、receipt 或本地临时响应重建正式图层。
File diff suppressed because one or more lines are too long