Files
ElyOffice/tasks/reviews/C18.3-r2.md
T

2.4 KiB

FAIL

crates/ely-ui/src/settings/storage.rs:47 — 异步读取无条件覆盖尚在等待保存的恢复限制,页面切换会丢失已经选择的值。真窗口复现:初始 keep=20、megabytes=64,持有 .settings.lock,选择 10,切到 General 后回到 Storage,再选择 32,最后释放锁;settings.json 最终为 keep=20、megabytes=32。证据:/tmp/c18.3-r2-native.log 的 NAVIGATED_CHOICES 与 BOTH_CHOICES_PERSISTED False;同页连续选择能正确保留两项。修复方向:保留待提交的 Limits,磁盘回读按提交版本生效,避免等待写入期间的旧值覆盖最新选择。

crates/ely-ui/src/run.rs:71 — R1 第3项的启动顺序问题仍存在:清理失败后记录设置页错误,继续执行 root 并打开待清理的缓存。复现:web/locked 内放文件,将目录权限设为 0555,创建 .clear-web,再启动 ElyMark 打开 opened.md;日志先报 Permission denied,随后记录 CEF 在同一 web 路径启动和文档显示,旧文件及标记均保留。这违反 C18.3 的“打开任何东西之前清掉”约定。证据:/tmp/c18.3-r2-failure.log、/tmp/c18.3-r2-native.log。修复方向:清理失败时阻止打开对应数据,显示原因并保留标记供重试。

tests/scripts/ax-values.swift:28 — 坐标后新增 help 字段破坏现有调用方的尾部解析。tests/scripts/settings.sh:56 用 sed 提取 at= 后的全部内容,传给 click.swift 的 y 因而成为带制表符和 help= 的字符串;Double(y) 返回 nil,强制解包崩溃。独立运行 settings.sh,在首次点击 Author name 时触发 Trace/BPT trap,退出 133,后续设置用例无法执行。证据:/tmp/c18.3-r2-settings-script.log、/tmp/c18.3-r2-coordinate.log。修复方向:统一输出与既有调用方的字段解析,让点击坐标仅含 x、y,并回归 settings.sh。

tests/scripts/storage.sh:57 — R1 第4项的大小验收仍只覆盖缓存,日志与恢复副本的显示值缺少断言。隔离副本仅将这两行显示改成 0 KB,重建后原有存储断言全部通过,脚本输出 ok: storage;此时日志实际有 10,594 字节,恢复点合计 370 字节,AX 两行均为 0 KB。证据:/tmp/c18.3-r2-mutation.log;缓存显示为 0 KB 的另一个突变会触发大小断言失败,见 /tmp/c18.3-r2-cache-mutation-repeat.log。修复方向:用已知非零样本分别核对日志、缓存、恢复副本的实际显示值,使各行大小错误都触发失败。