Files
ElyOffice/tasks/reviews/C14.2-r2.md
T

2.3 KiB

FAIL

apps/ely-mark/src/engine.rs:79 — 保存字节与保存修订取自两份文本快照,保存期间的新编辑会被错误标记为已保存,并在关闭时丢失,违反 PRD §14.3 的内容与当前修订一致性。write 写出后释放文本锁,外壳读回临时文件再调用 history;此时 current 可已被页面更新,返回的新文本哈希随后成为 MarkView.saved 的基线。具体复现:真 CEF 窗口打开 Alpha.\n,原生 Cmd+S 导出 7 字节后,用内部 save.md 的 FIFO 延迟读回;经 CEF Input.insertText 输入 x,等待应用收到版本 1、长度 8 的全文,再放行原来的 7 字节。日志记录 write len 7、text version 1 len 8、history len 8;磁盘仍为 Alpha.\n,页面为 xAlpha.,原生 Cmd+Q 直接以 0 退出,新增字符丢失。修复方向:将导出字节与修订标记绑定到同一文本快照,保存完成后以该快照标记已保存,后续编辑继续保持未保存状态;补充导出与历史读取之间继续编辑的回归。副本中的修订绑定变异已验证:同一调度下关闭会弹出 Save changes to race.md?,原生 AX 可见 Save、Cancel 和 Don't Save。证据:/tmp/ely-c142-r2-logs/race-method.log、race-native-broken.log、race-instrument.log、race-repair.log、race-repair-ax.log。

tests/scripts/mark-session.sh:132 — 链接定义回归的多行 grep -qF 将各行视为独立模式,其中的空行模式匹配任意非空文件,后面的全文比较随之被跳过,无法验证 R1 的定义移动与修剪缺陷。具体复现:将 gap2 的保存结果替换为 R1 的损坏结果 Alpha.Beta.\n\n[r]: /path " T "\n\nTail.\n,断言通过;进一步在副本测试脚本中于此断言前将 gap2 全文写成 CORRUPTED\n,完整真窗口测试仍以 0 退出并报告 ok: mark session。修复方向:使用逐字节比较,并要求上述损坏结果变异使测试失败。证据:/tmp/ely-c142-r2-logs/predicate.log、session-mutant.log。R1 六项已复核通过;独立网页构建、cargo test -p ely-mark(四项通过)、原始 mark-session 测试及五个受影响应用的编译检查均通过。审查源码副本与其独立构建目录已在写结论前删除,原范围内文件散列一致;验证记录:/tmp/ely-c142-r2-logs/verification.log。