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

2.6 KiB
Raw Blame History

FAIL

crates/ely-office/src/save.rs:332 — 退出保存冲突框的 Keep Mine 仍调用无条件覆盖的 save_overwrite,导出期间的新外部写入会被覆盖,违反 FILE-05、§14.4、QA-22。真窗口复现:基线 base\n\nend\n,本地插入 X,外部追加 tailA;Cmd+Q → Save → Keep Mine,在导出完成前外部改成 tailB。隔离副本仅给 Mark::write 加入 750 毫秒延迟,最终磁盘为 Xbase\n\nend\n,tailB 丢失,应用退出。同样延迟下 Compare → Keep Yours 能保留 tailB。证据:/tmp/c146r3-slowclosemine-result.log、/tmp/c146r3-slowmine-result.log。修复方向:退出冲突的保留本地分支也携带选定磁盘版本的指纹,走受检保存,在实际写入时遇到新变化继续报冲突。隔离副本改为指纹基线加普通保存后,tailB 保留且应用停留在冲突询问,见 /tmp/c146r3-slowclosemine-repair-result.log。

crates/ely-office/src/dialogs.rs:132 — Reload from Disk 分支丢弃挂起的 then,重开标签后退出流程停止,ElyMark 的 keeping.leaving 持续为 true,会话清单冻结,违反 MARK-12。真窗口复现:有路径文档输入本地内容并发生外部冲突,Cmd+Q → Save → Reload from Disk;随后新建并输入 AFTERRELOAD,等待超过十秒。恢复点已包含 AFTERRELOAD\n,session.json 仍仅记录原文件;终止并重启后,新正文失去恢复入口。证据:/tmp/c146r3-conflictreload-result.log。修复方向:Reload 分支明确结束挂起的关闭状态,调用关闭取消钩子恢复清单更新,再重开文档,并增加该路径的崩溃重启回归。隔离副本加入该钩子后清单记录两个标签,重启恢复 AFTERRELOAD,见 /tmp/c146r3-conflictreload-repair-result.log。

apps/ely-mark/src/restore.rs:336 — 退出时的冻结清单保留保存前的路径;未命名标签首次保存成功后,关闭钩子收到的是有路径标签,此分支留下旧的 path: null,违反 MARK-12 的打开标签恢复要求。真窗口复现:新建并输入 SAVEDTEXT,Cmd+Q → Save,在系统面板保存到新文件并完成退出。磁盘文件含 SAVEDTEXT\n,session.json 仍记录 Untitled 1 和 path: null;重启恢复标签数为 0。证据:/tmp/c146r3-savedquit-result.log。修复方向:按恢复槽身份,将退出期间保存成功后的路径和名称同步到冻结记录并持久化,再完成关闭;增加首次保存后退出的重启回归。隔离副本同步路径和名称后,重启恢复标签数为 1,见 /tmp/c146r3-savedquit-repair-result.log。