LITE-006 DONE: quickjab index <repo> — the lazy commit-based .git/be index

Now
DONE
Sev
MED
Ask
gritzko
Rep
///lite
See
LITE-003

Ruling (gritzko 2026-08-13): beagle-lite indexes many git repos to do what it can for git users; weave building needs each blob's history, so the first index is blob<->path. Indexing is COMMIT-BASED (read a commit, its tree, index everything, then next), LAZY (a watermark row per ref; on request recheck, reindex the gap, answer from the index), and lives in the repo's own .git/be/. Tracked repos are listed in $HOME/.config/be/tracks, a plain list of absolute paths.

Input

Context

The record structure and widths are ruled; the substrate exists (quickjab index.c = the 3 native leaves an abc.index LSM stands on, lane-typed pup stacks; dog/git = the read-only ODB waist quickjab git.c binds as git.open/getHex/getSafe/close). be/ has the JS precedents to mirror, NOT to import: metaidx.js (the lazy self-updating lane + mark-written-LAST discipline), mtimeidx.js (HEAD mark staleness = ancestry check, drop marks only, rows stay valid), ingest.js idxWriter (DOG-027: <=200 rows per batch, one 4 KB memtable page).

Goals

quickjab index $HOME/src/linux indexes that repo; a second run is a fast no-op (watermark hit).

Constraints

WIP

Design decisions

TODOs

Blockers and bummers

Outcome

Landed in ///lite (worktree work/LITE-006), zero quickjab edits.

End to end: the fixture (5 commits incl. a merge and a same-blob-new-path move) → indexed 5 commits, 5 revs, 23 rows, rerun up to date, gap run indexed 1 commits, 1 revs, 6 rows. libdog (340 commits) → indexed 340 commits, 1713 revs, 6566 rows in 0.59 s, rerun 13 ms. gitoxide (15841 commits) → indexed 15841 commits, 71415 revs, 295705 rows in 15.7 s, rerun 8 ms. One file's prefix scan matches git log -- CMakeLists.txt exactly (36 revs, same commits, same order), reverts included.

Suggested commit message: LITE-006: quickjab index — the lazy .git/be commit index