Files
ElyOffice/tasks/reviews/C14.6-r1.md
T

14 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 后进入合并流程,合并分支重建策略,掩盖了该缺陷。