Move done DOCREV short-terms, checklists, and handoffs into archive/ops and retarget relative links after Round20 close-out. Co-authored-by: Cursor <cursoragent@cursor.com>
3.0 KiB
3.0 KiB
title, status, created, updated, owner, branch, worktree, mutex
| title | status | created | updated | owner | branch | worktree | mutex |
|---|---|---|---|---|---|---|---|
| 编辑弹窗 hydration 竞态修复 | done | 2026-09-13 | 2026-09-14 | Cursor-Auto | fix/document-revision-editor-hydration-race | - | document-revision-editor-hydration-race |
编辑弹窗 hydration 竞态修复
目标
堵住第十二轮 UI-06:编辑弹窗打开期间后台 hydration 换块 ID,保存静默关窗且不发 PATCH。用户编辑期间与 PATCH 成功后,迟到 hydration 不得覆盖基线;找不到块 fail-closed。
范围
web/src/lib/controlledDocHydrate.ts:fetchRevisionState保留head_block_map,hydrate 后applyHeadBlockMapweb/src/lib/editorHydrationGate.ts与单测(迟到响应不得覆盖 PATCH 成功正文)web/src/lib/blockSavePolicy.ts与单测(stale-id / doc 绑定 / 切文档 fail-closed)web/src/lib/saveControlledBlockEdit.ts:App 真实调用的 PATCH 编排(可注入 patch API)web/src/App.tsx:editorSession、关窗续跑、切文档 fail-closed- audit / remediation / CURRENT 认领
非目标
- 不修改、移动、删除或提交
.doc/test-reports/assets/2026-09-13-document-revision-runtime-ui/ - 不合
dev、不 push、不启动/重建 Docker - 不运行或伪造真实 UI/E2E;不得声称 UI-06 已通过
- 不改 FEATURE-MATRIX 完成度;不削弱 ETag/409
步骤
- 从
dev@4c465d2开fix/document-revision-editor-hydration-race,mutex 不与现有 in_progress 冲突 - 定位全部会在弹窗打开期间替换 AST 的路径(effect / 选文档 / 重试;lease 改 deliverables 触发 effect)
- hydrate 对齐
head_block_map+ generation token / 编辑门闩 + stale-id fail-closed - 单测:同 map ID 稳定、缺 map 仍随机、deferred hydrate、stale id、迟到 hydrate、PATCH ETag、409
webnpm test / build(首轮)- 独立审查补强:真实 PATCH 编排测试、editorDocId 绑定、关窗续跑、切文档 fail-closed
- 真实 UI-06 重跑(本轮不做)
验收标准
- 编辑中不因后台 hydration 换 ID 而静默丢稿(逻辑门闩 + 单测)
- 找不到目标块保留编辑器并提示
- 现场 r0→r1(未跑 E2E,保持未勾选)
相关链接
- Audit: ../../audit/2026-09-13-document-revision-editor-hydration-race.md
- Remediation: ../../remediation/2026-09-13-document-revision-editor-hydration-race.md
- 失败证据(勿提交):
.doc/test-reports/assets/2026-09-13-document-revision-runtime-ui/schema30-ui06-r-bump-noop-failure/
证据 / 备注
- mutex:
document-revision-editor-hydration-race(新 mutex,未占用document-revision-save-selector等 in_progress 行) - 基线:
dev@4c465d2 - 验证:补强后全量
npm test+npm run build通过;saveControlledBlockEdit断言一次 PATCH - 未跑真实 UI-06,不得标 done