4.1 KiB
FAIL
apps/ely-mark/src/compare.rs:93 — 比较结果使用旧磁盘内容,却通过 session.reload() 接受当前磁盘指纹,随后自动保存会覆盖比较期间的新修改,违反 §14.4、FILE-05、QA-22。真窗口复现:基线为 base\n\nend\n,本地插入 X,外部追加 tailA,打开 Compare;外部再把末段改为 tailB,等待监听确认第二次变更后点击 Use the Merge。最终磁盘为 Xbase\n\nend\n\ntailA\n,tailB 丢失。证据:/tmp/c146-stale2-1.log、/tmp/c146-probes-extra.log。修复方向:比较快照携带对应磁盘指纹与本地修订,提交前核对;变化时重新比较,并让写入检查使用参与比较的指纹。outside.rs 的异步读取与重载也须保持内容和指纹配对。
apps/ely-mark/src/restore.rs:194 — 有路径文件的恢复内容直接进入原文件会话,下一次编辑会自动覆盖原件,违反 §6.3 的“恢复生成新副本,不先覆盖源文件”。真窗口复现:原件为 ORIGINAL\n,崩溃恢复点为 RECOVERED\n;重启恢复后原件仍为 ORIGINAL\n,键入 X 并等待自动保存,原件变为 XRECOVERED\n。证据:/tmp/c146-recovered-1.log、/tmp/c146-probes.log。修复方向:将恢复内容打开为独立恢复副本,保留原件身份与内容;写回原件需经过明确选择和外部变更检查。现有脚本只验证未命名文档的崩溃恢复,遗漏此路径。
apps/ely-mark/src/restore.rs:98 — 原路径无法 canonicalize 时直接跳过标签,已读出的有效恢复内容随之丢失,违反 MARK-12 和 §14.4。复现:文件有未保存文本并生成恢复点,外部删除原件后终止应用;重启时该标签及其恢复文本均被跳过。独立执行 deleted_original_keeps_recovered_text,实际等待恢复标签数为 0,期望为 1;在隔离副本中将缺失原件的有效恢复内容保留为无路径副本后,同一探针通过。证据:/tmp/c146-mark-tests.log、/tmp/c146-deleted-repair.log。修复方向:区分原件不可访问与恢复内容可用,保留有效恢复内容并提供另存入口;将原路径读取错误呈现给用户。
apps/ely-mark/src/restore.rs:280 — 退出开始时将 keeping.leaving 永久置为 true,取消退出后仍持续跳过会话清单写入,违反 MARK-12。真窗口复现:新建并输入 first,Cmd+Q 后 Cancel;再新建并输入 second,等待超过 10 秒。两个标签均已生成恢复点,session.json 仍只记录 Untitled 1;终止并重启后只恢复一个标签,第二份文本失去恢复入口。证据:/tmp/c146-cancelled-restart.log、/tmp/c146-cancelled3-2.log。修复方向:取消退出或关闭流程时解除清单冻结,并更新实际存活标签;已完成的放弃操作同步移除对应恢复记录。
apps/ely-mark/web/src/main.js:157 — 恢复光标只调用 current.line(place.line, ''),Place 也仅保存行号和滚动值,行内光标位置丢失,违反 MARK-12。真窗口复现:源码为 abcdef\n,将光标置于 abcd|ef,等待位置上报后正常退出;重启并键入 X,保存结果为 Xabcdef\n,期望为 abcdXef\n。证据:/tmp/c146-caret-2.log、/tmp/c146-probes.log。修复方向:位置上报、会话序列化与编辑器恢复共同保存并还原完整光标位置;增加行内位置的重启回归检查。
apps/ely-mark/src/compare.rs:81 — Keep Yours 成功解决冲突后,保留了被 external_modified() 停止的自动保存策略,后续编辑持续无法按 §6.2 在输入停止 1 秒后保存。真窗口复现:本地输入 X,外部写入触发冲突,Compare → Keep Yours,保存得到 Xbase\n;再输入 Z 并等待 3 秒,磁盘仍为 Xbase\n;Cmd+S 后得到 XZbase\n,确认新编辑已在文档中。证据:/tmp/c146-stopped3-1.log、/tmp/c146-probes-verify.log。修复方向:显式冲突解决成功后重新建立自动保存策略,并与已保存修订及后续编辑同步。现有 mark-outside.sh 在 Keep Yours 后进入合并流程,合并分支重建策略,掩盖了该缺陷。