| 1 | # 草稿机制修复验证记录 |
| 2 | |
| 3 | 本记录对应基于 `8e2e6ef0` 的本地修复。工作区同时包含此前草稿机制的改动; |
| 4 | 本任务没有创建提交、PR、CI 运行或发布。[English](SESSION_DRAFT_REPAIR_VALIDATION.md) |
| 5 | |
| 6 | ## 六类问题的修复 |
| 7 | |
| 8 | | 问题 | 修复边界 | 回归依据 | |
| 9 | | --- | --- | --- | |
| 10 | | 重试只改显示设置 | 在运行时重建和执行准入屏障内配置或替换真实 Controller;准入再次核验身份和配置。候选失败保留原运行时及 Session。 | `draft_runtime_test.go`:真实权限变化、canonical 模型/effort/MCP 替换、失败候选不覆盖旧运行时。 | |
| 11 | | 捕获后仍能编辑 | 首个 await 前同步登记准备 ID 并锁定内容、设置;flush 核对捕获快照,Begin 核对摘要。 | 草稿所有权、保存竞态及 Composer 测试。 | |
| 12 | | 丢弃或迟到响应影响其他项目 | 捕获 DraftID、generation、编辑版本、revision 和导航意图;后端 CAS 删除。 | 确认期间切项目、迟到删除及导航隔离测试。 | |
| 13 | | 附件任务计数残留 | 全局任务结算与内容写回资格分离;字段更新合并到原草稿最新内容。 | 冲突替换后的任务结算测试;原生文件拖入经过 preload 并落盘。 | |
| 14 | | 重启丢失操作身份 | 只读状态包含原操作;显式继续携带操作版本,并无缝移交 worker 租约。 | 请求/继续 CAS、重启不重放、v3 冻结快照回归。 | |
| 15 | | 未知状态停止查询 | 应用级查询持续核实 shell 派发及未知接收;按操作版本拒绝倒退;取消返回 accepted 同样完成一次转换。 | 可控 Promise 的轮询/取消测试;shell 回执先落盘及去重测试。 | |
| 16 | |
| 17 | 同时修复了相邻边界:Begin 丢响应后以相同请求 ID 在后端串行核实;取消与 |
| 18 | 运行时发布、持久准入互斥;旧 worker 收尾期间的新操作不会静默卡住。正常退出 |
| 19 | 等待附件、提交准备、目标保存版本及恢复目标。测试清理等待 Controller 真正 |
| 20 | 关闭存储后,才删除临时目录。 |
| 21 | |
| 22 | ## 验证范围 |
| 23 | |
| 24 | - 前端:应用生命周期、草稿所有权/保存竞态、Composer/剪贴板、远程、transcript、 |
| 25 | 应用与测试类型检查、hooks、分层及生产构建。 |
| 26 | - Go:Desktop 按独立模块测试;草稿 store 和运行时执行聚焦 race 检查; |
| 27 | 根模块测试覆盖共享 Controller/session 改动。 |
| 28 | - Electron:219 项 shell 测试;隔离目录中的真实服务新建、原生 PNG 剪贴板保存及 Composer 键盘粘贴、 |
| 29 | 原生文件拖入、附件重启恢复、编辑后立即正常关闭、SIGKILL 后服务重启恢复。 |
| 30 | 测试不调用模型,剪贴板测试内容为临时 fixture。 |
| 31 | - 浏览器:项目加号、顶部新建、快捷键、项目右键、命令面板均恢复同一草稿; |
| 32 | 20 次重复新建不增加正式会话行;30 次采样均从历史页出发,到正确草稿可编辑 |
| 33 | 为止。最近一次 mock 浏览器 p95 为 **28.9ms**。 |
| 34 | |
| 35 | ## 验证限制 |
| 36 | |
| 37 | 最终本地结果: |
| 38 | |
| 39 | | 检查 | 结果 | |
| 40 | | --- | --- | |
| 41 | | 根模块 `go test ./...` | 通过;共享 control 包耗时 367.7 秒。 | |
| 42 | | Desktop `go test -timeout=25m ./...` | 通过;Desktop 主包耗时 1054.4 秒。随后少量恢复/store 收尾改动也通过聚焦检查。 | |
| 43 | | 草稿 store、运行时 `go test -race` | 通过,包括最终的未知版本文件字节保护检查。 | |
| 44 | | 宿主契约、桌面代码清单 | 生成一致性检查通过。 | |
| 45 | | 前端类型、hooks、分层、生产构建 | 通过。 | |
| 46 | | 草稿、Composer、生命周期、侧栏、远程、transcript | 通过;Composer 草稿套件 118 项,剪贴板菜单套件 15 项。 | |
| 47 | | Electron shell 测试 | 219 项通过,无失败、无跳过。 | |
| 48 | | 浏览器、原生冒烟 | 上述验证范围内通过。 | |
| 49 | | 远端 CI、Windows/Linux 原生验证 | 未执行。 | |
| 50 | |
| 51 | 浏览器数据是本机 mock 基准,不代表生产 Electron 延迟。未完整执行原生多窗口 |
| 52 | 冲突交互及全部端到端故障注入矩阵。确定性 store、 |
| 53 | 组件测试覆盖部分跨窗口及异步乱序场景,并包含独立进程 worker 锁测试。 |
| 54 | 本机为 macOS,未验证 Windows/Linux 原生剪贴板和拖入。没有运行远端 CI。 |
| 55 | |
| 56 | 早期广泛回归发现过生成文件过期和测试清理竞态,均已修正。根模块早期运行中, |
| 57 | 无限 Goal 压力测试在并发负载下超过既有 60 秒等待上限;单独运行用时 37.4 秒并 |
| 58 | 通过。没有放宽超时或削弱产品断言。 |
| 59 | |
| 60 | schema v4、独立快照版本、回滚与恢复行为见[生命周期及兼容说明](SESSION_DRAFT_LIFECYCLE.zh-CN.md)。 |
| 61 |