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>
项目记忆目录
本目录保存可以进入 Git 的项目级长期知识,供开发者和 Agent 读取。.hermes/ 只保留 Hermes 工具专用资源,不再作为项目知识库。
目录结构
docs/project-memory/
├─ README.md
├─ shared-memory/
│ ├─ project-overview.md
│ ├─ team-conventions.md
│ ├─ development-workflow.md
│ ├─ document-map.md
│ ├─ decision-log.md
│ ├─ pitfalls.md
│ └─ handoff-template.md
├─ plans/
└─ todos/
使用原则
- 开发前先读
AGENTS.md;复杂任务继续读取docs/【协作规范】Agent工作入口与执行准则-2026-06-22.md,再按任务读取docs/project-memory/shared-memory/和当前docs/文档。 - 长期有效的架构约定、接口变化、排障经验、开发流程和协作规则写入
shared-memory/。 - 阶段性计划写入
plans/,已确定但暂未实施的共享 TODO 写入todos/。 - 如果本目录内容与代码或最新
docs/冲突,以代码和最新docs/为准,并同步修正过期记忆。 - 禁止写入个人配置、API Key、Token、Cookie、会话记录、认证文件、本地私密路径、构建产物、日志、缓存和数据库 dump。
RAG 索引
本目录是 Agent 本地 RAG 的高权重索引源。RAG 主要用于 Agent 检索上下文,不替代人工阅读入口或正式文档地图。索引脚本位于 scripts/rag/,本地生成的 .rag/ 数据不提交 Git。