Artifact 577a212af02a8226d51b068c5d0f56c66a13e9059d90674a50d839c4103e0490:
- File
build.zig
-
2026-08-24 14:36:22
— part of check-in
[e845821a65]
on branch readpath-141
— diff and artifact: read through the image path, not a whole-store derive
Both opened `.full`, so each invocation re-derived the entire repository view before reading anything. The cost tracked the STORE, not the work: a one-line diff on a 302MB store took 0.33s, and cost the same whether the diff was 13 lines or 4126. diff read two file lists -- exactly what ls reads at 0.04s -- and artifact never touched the derived view at all, resolving through logStore alone.
diff inherited `.full` by omission: it called Repository.open directly instead of going through main.openRepo, which is where every other read verb chooses a mode. Nothing failed, so nothing caught it.
fossil 112MB 0.06s -> 0.01s tk 240MB 0.14s -> 0.03s sqlite 236MB 0.25s -> 0.03s tcl 302MB 0.33s -> 0.04s
Output byte-identical on all four.
readpath_test pins which verbs take which path, and pins the comment justifying each deliberate `.full` -- timeline reads the merge mark off adjacency, annotate walks ancestry. An unexplained `.full` is indistinguishable from this bug. grep is named there as an open question rather than pinned, since it also wires --no-cache, which has to move with the mode.
The OpenOptions comment claimed ls, cat, info, branch and tag were `.full`. All five have been fast_read since #98; reading it was how this stayed hidden.
Fixes #141 (user: dmestas, size: 32269) [annotate] [blame] [check-ins using]
- 2026-08-24 14:47:34 — part of check-in [9bcc83b530] on branch trunk — merge readpath-141: diff and artifact read through the image path (#141) (user: dmestas, size: 32269) [annotate] [blame] [check-ins using]
-
2026-08-24 14:36:22
— part of check-in
[e845821a65]
on branch readpath-141
— diff and artifact: read through the image path, not a whole-store derive