index/perma.js:112:Ab,122,295 earliest, historyOf and deleterOf order and
filter by AUTHOR TIMESTAMP over the path's whole rev graph on every indexed
branch, not by ancestry (deleterOf keeps any commit with ts >= anchor.ts),
so rebases, cherry-picks and skewed clocks can attribute the anchor or the
"deleted in" note to a sibling branch. :356,360: a path that resolves locally
but whose blob mismatches falls through to foreignFollow, which can land in
another repo's same-named file on as little as a 12-bit hashlet, and the whole
follow body sits in catch (e) { return null; }, so a real failure reads as
a quiet miss. Found in the 2026-09-18 index review.
Order by rev (the index's own counter) restricted to the tip's ancestry; fan out only when the PATH missed; log the swallowed error.
The ancestry mask is rev space, not commit space: repsOf for
the tip, revAncestors over the REV-PARS edges, one span read
already paid for by pathRevs. It answers null when the tip
names no rev of the path, so an index behind HEAD degrades to
the whole span rather than to no anchor at all.
historyOf keeps its author-date sort. After CODE-077 it
serves only the ODB fallback, where the path has no rev to
order by; and it also feeds blobHistory, the hashlet mint
scope, which LITE-026 scopes to the file's blobs, not to one
branch's — narrowing it would break mint/follow symmetry.
A blob that misses at a path this repo spells is now a plain
null. Only a PATH miss fans out, which is the same gate
CODE-059's goneFollow sits behind.