C14.11 r1: fingerprints carry the file's identity; stale disk reads never land

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
ZacharyZhang-NYandClaude Opus 5.5 committed 2026-10-12 08:04:18 -04:00
1 parent 1dc0d31615
commit e2cb83ceaa
6 files changed
+86 -3

No files matched your search

+5
View File
@@ -0,0 +1,5 @@
FAIL
- apps/ely-mark/src/outside.rs:154:仅以长度和修改时间相等判定文件未变,漏掉保留时间戳的原子替换,违反 MARK-08、§14.4、QA-22。复现:打开 `old text\n`,另建内容为 `new text\n` 的文件,保留原文件的修改时间,再替换原路径;调用实际的 `look` 路径后,页面仍是 `old text\n`,没有重载或冲突提示,手动刷新也无效。Windows、WSL 探针均失败。修复方向:将文件身份纳入替换判定,不能仅凭长度、mtime 相同跳过真实变更;补上保留时间戳的原子替换回归。证据:`.work/C14.11-r1/probes.log`、`.work/C14.11-r1/linux-probes.log` 的 `review_clean_atomic_replacement_with_preserved_time`。
- apps/ely-mark/src/outside.rs:221:异步读取结果只核对标签路径,没有读取代次或当前磁盘版本校验,迟到的旧读取会覆盖已经接收的新版本。复现:同一路径连续写入 A、B,两次后台读取分别取得 A、B,B 的完成回调先落下,A 的回调后落下;干净标签先显示 B,随后被重载为 A,并被标成已保存、清空撤销历史,即使磁盘仍是 B。探针用实际的 `disk_read` 完成入口按此顺序交付两份成功快照,Windows、WSL 均得到 `older\n`,预期为 `newest disk\n`。修复方向:为每标签的读取编号并丢弃过期结果,应用结果前校验磁盘版本;补上读取乱序及读取期间再次写入的回归。证据:上述两份探针日志的 `review_old_read_cannot_replace_newer_disk_text`。