7092689b36
## 变更内容 在 master(0f829cd25)上用故障注入复现出四类"每走一步都会卡住"的生命周期残留,本轮按"超时后真正隔离并核对底层操作"收口,不再新增 operation 字段: - 本地会话写入队列从"无限等上一次完成"改为带解围期限的闸门(60s)。Rust 侧 install/clear 本来就按 generation 单调拒绝更旧写入,所以渲染层只需保证新 generation 不被卡死的调用永久挡住; - generation floor 读取不再把一次瞬时失败缓存成永久失败(原先 `??=` 缓存了已 reject 的 promise,导致同一渲染进程内后续登录/退出全部失败); - 登录 UI 的 45 秒围栏只放弃等待、不放弃结果:本地运行时确实装好会话时界面跟随进入工作区,且迟到结果不会覆盖更新的登录尝试; - 首页自动建项从 `deadlineMs: null` 改为 10 分钟兜底期限:到点解围并提示(底层创建继续在后台跑,迟到成功照常进项目),失败时保留 `scope.projectPath`、登记最近项目并新增「打开已创建的工作区」入口;底层创建未返回期间只挡"再建一个",不挡打开已有项目; - 同步 `project.bootstrap` 权限文案断言、生命周期技术方案状态与 shared pitfalls。 ## 验证 - `npm --prefix apps/ai-game-creator-shell run typecheck`(含 skill-pack、check-config) - `vitest run apps/ai-game-creator-shell/tests/appSurface.test.ts`(428/428,含新增 5 个故障注入回归;`project.bootstrap` 文案断言在此前 master 上确定性失败) - 定向 `clientHttp`、`clientApi`、`clientOperation`、`recentProjectsModel`、`clientRuntimeErrorBoundary`、`sessionPreview`、`start-dev-stack`、`dev-port`、`start-tauri-dev`(全部通过) - `npm run check:doc-index`、`npm run check:encoding`、`git diff --check` 原生 Runner/IPC 与真实 Provider 下的同一批时序未执行,本轮结论来自 deterministic surface 与 mock 故障注入。 Co-authored-by: DotCraft <273930855+dotcraft-ai@users.noreply.github.com>
项目记忆目录
本目录只保存可以通过 Git 共享、并且对当前开发仍有效的项目知识。.codex/ 只放 Codex 工具资源,不作为项目知识库。
当前结构
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
│ └─ 【模板】规范驱动开发主规范与里程碑模板-2026-09-12.md
├─ plans/ # 仅限正在执行的短期计划
└─ todos/ # 仅限仍开放且有退出条件的事项
使用原则
- 开发前先读
AGENTS.md;复杂任务再读 Agent 执行准则、共享记忆和任务对应的当前专题文档。 - 稳定架构、接口、流程和排障边界写入
shared-memory/;同一事实只保留一个当前口径,细节放在权威专题文档。 plans/只保存正在执行、具有明确剩余项和验收门禁的计划;完成或作废后立即删除,稳定结论融合进当前专题或共享记忆。todos/只保存真实开放、有人接手即可执行的事项;每项应写明状态、下一决策点和关闭条件。已退役对象不保留未来 TODO。- 分支、提交、测试轮次和阶段流水账不进入长期记忆;需要追溯时使用 Git 历史。
- 若本目录与代码或最新
docs/冲突,以代码和最新专题为准,并在同次变更中修正记忆。 - 禁止写入个人配置、API Key、Token、Cookie、会话记录、认证文件、本地私密路径、构建产物、日志、缓存和数据库 dump。
RAG 索引
本目录是本地 RAG 的高权重索引源,但检索结果只作为候选上下文。索引脚本位于 scripts/rag/;运行时依赖和 .rag/ 数据默认不安装、不提交,启用前需先征得用户确认。