Files
Genarrative/docs
lhk229 515682d571 修复账本寿命短于标记寿命导致的成功误判与孤儿失效
阶段 3 引入的判据「布局里有 perfectPixelOperationId、本机没有账本 ⇒ 无效」
按构造就是错的:标记写进布局后寿命无限(服务端完成 completion 只做字段级
改写,从不摘标记),账本寿命却很短(收口即清、75 秒对账窗口、7 天保留期、
换设备即无)。账本消失是正常终态,不是异常。

同一个不对称造成两个缺陷:

一、每一次成功都被判成失败。settle 时先清账本、紧接着用真实 hydrate 重新
套用权威快照,成功结果被判成 failed + perfectPixelOperationInvalid;该状态
还会被下一次自动保存写回服务端,覆盖正确的 idle,且标记一旦落库就能单独
强制 failed,自我固化。历史上早已完成的占位在标记化改写后同样中招。

二、孤儿账本对账在唯一目标场景下失效。它的场景是「关掉浏览器、稍后重开」,
重开必然晚于 75 秒,而分支按 reconcileUntil 短路,等于永不生效,条目还会在
本机躺满保留期反复被跳过。

修复:凡是「缺账本 ⇒ 无效」的判据一律先排除收口态(复用既有的
isUnresolvedCanvasGenerationDialogRecord 取反)。收口态无条件忽略已落库的
无效标记与残留错误文案、强制归位 idle,让被写脏的行自愈;写边界同步收窄,
收口后不再输出标记,让标记寿命与账本对齐。

孤儿不按 reconcileUntil 短路,改走新增的 readPerfectPixelOrphanVerdict——
一次确定性的读,不轮询。dialog-missing 提示结果只进素材库;applied 静默
刷新(本次读到的就是权威状态,结果本就在眼前);未落库完全静默。三者都清
账本,读失败不清。

测试缺口的根因:工作流里所有 applied 用例的 applyProjectSnapshot 都是空桩,
跨 hook 协作从未被跑过;共享 fixture 也没还原服务端真实保留的标记。补了一条
把 verdict.project 真正喂进 splitCanvasLayoutItems 的集成用例,回退修复后它
报 expected 'failed' to be 'idle'。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-05 07:45:23 +00:00
..
2026-07-17 21:03:15 +08:00
2026-07-27 18:28:26 +08:00

文档总览

docs/ 只把当前融合文档和仍在维护的专题文档作为实现依据。旧创作模板、旧创作入口及其专属服务文档仅保留为历史材料,不再要求继续实现或兼容。

必读入口

  1. Agent 工作入口与执行准则
  2. 当前产品与工程约束
  3. server-rs 与 SpacetimeDB 数据契约
  4. 平台入口与玩法链路
  5. 本地开发验证与生产运维
  6. AI 游戏创作项目开发工作台 PRD

团队长期约定、决策、流程和排障摘要统一从 项目记忆入口 读取。代码、当前融合文档与项目记忆冲突时,以代码和最新融合文档为准。

当前专题

图片编辑器与 Agent

后端与公开数据

后台、宿主壳与运维

测试与协作

历史文档边界

  • 旧创作模板、旧创作入口、旧运行态和旧素材生成方案不再从本页索引,也不再作为修复目标。
  • maincloud、旧 Node/Express/PostgreSQL/Go 后端和人工 spacetime --root-dir 口径均已废弃。
  • 历史文档不得覆盖当前融合文档、代码契约或 docs/project-memory/shared-memory/decision-log.md 中更新的决策。

命名规则

后续新增 Markdown 文档文件名使用 【标签名】中文标题-日期.md。历史文件不做无关批量重命名;本次涉及的旧文档可直接删除或在当前入口中取消引用。