views/log/log.js::resolveHashlet re-impls store.resolveHexAny via test-only k._packs()be log:#<hashlet> resolves a short hex to a full COMMIT sha. The log
view's resolveHashlet (log.js:104) bypasses the public reader API: it
reaches into the test-only k._packs(), re-mmaps every pack (already
cached by the store), and re-runs a full O(all-objects) decompress-and-
prefix-match scan that near-verbatim duplicates store.resolveHexAny +
indexPackByWalk. commit.js already does the same job in ~6 lines.
Method: Issues.
packs = k._packs() — _packs is store.js:551
marked "expose for tests / verification", NOT a reader verb.git.pack.mmap), walks
every offset, inflates each object (pk.resolve), reframes
the sha, prefix-matches, and re-detects ambiguity.k.resolveHexAny
then keep type==="commit"||"tag"; ~6 lines, no pack re-mmap.k.resolveHexAny(hexish) then k.getObject(sha).type filter.be log:#<commit-hashlet> for a mid-history (non-tip) commit
still resolves; an ambiguous prefix still resolves to NOTHING._packs from the production reader surface (or fence
it test-only) so views cannot re-enter the pack walk.test/js/log/*) must stay green — same resolved sha, same
ambiguity → empty behaviour as KEEPResolveHex.git.pack in log.js.resolve.resolveHex(k,hexish)
first only if it changes no bytes; else fold into resolveHexAny.test/js/log case log:#<mid-history-hashlet>
+ an ambiguous-prefix case asserting empty, against current bytes._packs from reader (store.js:555) or fence test-only.views/log/log.js:121 resolveHashlet
still calls k._packs() (:126); shared/store.js:557 still exports _packs; the
commit.js canonical form (k.resolveHexAny+getObject) is not adopted in log.js.