1.4 KiB
1.4 KiB
FAIL
crates/ely-files/src/session.rs:299 — fail_save() 新增的身份校验仅比较 task,遗漏重新加载后的 generation 校验,旧内容的保存失败会污染当前会话状态。隔离测试执行“编辑、开始保存 A、外部修改、成功 reload、A 的失败回调到达”,reload 后状态为 Saved、修订号为 0,fail_save(A) 实际返回 Ok(()) 并将状态改成 SaveFailed,违反 FILE-02 的当前文件状态要求。上轮旧失败回调与新任务重叠的回归已通过;本轮跨 reload 的失败回调探针失败。修复方向:匹配任务释放槽位后核对加载代次,过期失败返回 StaleTicket 并保留当前状态;补充重新加载后旧任务失败及后续保存恢复的回归。
crates/ely-files/src/session.rs:445 — 同文件聚焦仍受登记顺序影响:匹配目标前遇到无关路径的权限错误就提前返回,违反 §6.1。macOS 隔离测试先打开 restricted/first.md 为 Fresh(0),再打开 second.md 为 Fresh(1),撤销 restricted 目录访问权限;second.md 仍能正常读取,open(second.md, false) 与 is_open(second.md) 却均返回 PermissionDenied。上轮目标排在错误条目前的场景已通过,调换登记顺序后复现失败。修复方向:在传播其他条目的身份查询错误前完成已有会话匹配,保留确实无法判定时的错误与登记原子性;补充无关权限错误条目排在目标前后的聚焦回归。