Files
mnote/bugs/07-ai/process/7-22-apply-block-ops-missing-write-preconditions-v1.md
T
lix-2026 3311bd0366 chore: document architecture gaps and add dev hot reload
- add npm dev:hot wrapper using cargo-watch and page reload polling

- add mnote-web dev hot reload endpoint and coverage

- record current architecture review and tracked bug findings across realtime, tree, editor, and AI runtimes

Verification:

- node scripts/task-dev-hot-plan-test.js

- node --check scripts/dev-hot.js

- cargo test -p mnote-web dev_hot -- --nocapture
2026-05-17 23:09:56 +08:00

1.5 KiB

7-22 [process][bug] mnote.doc.apply_block_ops 批量写入缺少 revision / conflictDetectionKey 校验 v1

发现时间:2026-05-17

状态:[process]

关联主线:07-ai

1. 问题定义

mnote.doc.apply_block_ops 的批量入口只校验 dryRun / idempotency 写入合同,没有调用页面 revision、conflictDetectionKey、blockRevisionRef 的写前校验。

同文件中已有 ensure_page_write_preconditions,但该批量入口没有使用它。

2. 证据

  • block.rs 定义 doc_apply_block_ops
  • block.rs 仅调用 ensure_write_contract
  • block.rs 存在 ensure_page_write_preconditions,但批量入口未调用。

3. 影响

  • AI 可能基于旧 PageAggregate 对正文写入,覆盖用户新编辑。
  • 多轮 Hermes / ACP run 同时写入时缺少冲突保护。
  • markdown_edit 在线分支会转调 apply_block_ops,因此该缺陷会影响 markdown 主路径。

4. 建议修复

  • doc_apply_block_ops 真实写入前必须校验 page revision 与 conflictDetectionKey。
  • 块级操作应支持并校验 blockRevisionRef 或等价版本字段。
  • 增加负向测试:缺少 revision / conflictDetectionKey 时真实写入必须拒绝。

5. 状态

已确认批量写入入口缺少必要冲突校验,尚未修复。