lite in a git repo indexes and opens listgritzko's ruling 2026-08-14: lite must give a SEAMLESS first experience. Bare lite (no view/verb specified) run inside a git repo indexes everything and opens the LITE-017 list view of the repo. Today bare lite at a tty opens an empty pager viewport and piped it throws usage (main.js:57 BROUSAGE, :329); the index exists only as the explicit lite index verb (LITE-006, lazy/watermark) and list never indexes. First run = index from scratch + list; every later bare run = the watermark no-op + list, instantly.
The pieces all exist; this ticket is WIRING, not new machinery.
main.js arg loop: no-args tty = empty pager, piped = BROUSAGE throw; a bare path arg opens the fs pager — that stays, only the ZERO-arg case changes.lite index (LITE-006): resolves cwd to a git repo (root/.git/gitfile), builds <repo>/.git/be/, lists it in $HOME/.config/be/tracks; reentrant, indexes only the gap.lite log/lite list already bringUp the index themselves where they need it — the precedent that a view owns its freshness.lite list (LITE-017, staged in work/LITE-017): the github-style browser; its last-commit fuse rides the LITE-006 lane, so an unindexed repo is exactly the case where it starves.lite keeps today's behavior (empty pager at a tty, usage when piped) — the fs pager story is not this ticket.cd <any git repo>; lite — one command, no setup: first run visibly indexes (the LITE-006 progress reporting as-is), then the list view of the repo root opens; subsequent bare runs open list immediately.
lite (zero args, no verb) in a git repo == lite index && lite list semantically, ONE process, index first.--plain/piped bare run emits the list rows plain after the same bring-up — scripts get the board too.///lite/, work there, jab put + report, never post; NEVER set the ticket's Now: — only gritzko closes tickets.be/ and jab/ READ-ONLY precedent; never read beagle/; scratch/builds in ~/tmp; ZERO quickjab edits; sh tests dash-safe, no $'\t'.Made, not proposed — each confirmed against the code before it was built on.
lite list OWNS the bring-up and the zero-arg branch just calls it (the lite log precedent). So bare lite, lite list and a clicked list row are the same code path and the same bytes — pinned by a cmp of lite against lite list --plain. Three lines in main.js total.list already called bringUp, but only as a top-up: it opened the lane at the SMALL handle, so a repo with no .git/be at all was derived with a durable seal per commit. It now opens at idx.openIndex(gitdir, idx.fresh(gitdir)) — the bulk handle lite index uses. Measured on a 1468-commit repo: first run 1.39 s → 0.73 s (sys 76 ms → 8 ms), second run 71 ms.idx.openRepo(cwd, true) — list, cat, tree, blob, log, diff and main.js's own openPartial — so a no-climb probe would make bare lite the ONE thing in lite that dies in a subdirectory while lite list works. main.js inRepo() is that same call, used as a probe only: it closes what it opened and lets list open the repo for real, so no error of the view's is swallowed. Bare lite in a subdir lists the repo ROOT, exactly as bare lite list there already did.lite TRACKS, lite list DOES NOT. The goal says bare lite == lite index && lite list, and the tracks row is the index half; a read verb writing to $HOME is LITE-007's own no. One option, list(arg, {track:true}), default off. Both halves are pinned.lite | grep gets the board and nothing else. list() completes the whole bring-up before it returns hunks, so the pager takes the tty strictly after indexing.git init, no HEAD) fails the probe and gets today's behaviour, not a crash.work/LITE-018 over the LITE-017 tree (jab get //LITE-017/, base #d820d07e 10:37 today, clean)LITEJAB) — 12 dirs, 638 checksREADME.mkd usage line; suggested commit message in Outcome; Now: untouchedNone. One thing to know: the tests build the runtime with the tree PACKED IN (-DQUICKJAB_JSRC_PACK=ON), so every JS edit needs a ninja before it is under test — a stale pack cost one confusing failure.
Landed in the worktree work/LITE-018, jab put only, zero quickjab edits.
main.js — inRepo() (the probe, exported for the test), the zero-arg branch, an opts pass-through on runView.index/list.js — the FULL bring-up (bulk handle on a fresh repo) and opts.track.test/first/run.sh + test/first/first.js — 34 checks: the first run indexes and shows the LITE-017 fixture's own fused rows, lite index then says up to date, the second run does not grow the run family, a new commit lands on the next run, lite list writes no tracks row, the non-repo legs (bare, --plain, path arg) are unchanged, and a never-indexed repo derives its index and paints the board on a real pty.README.mkd — the bare-lite usage line, and the list line's own bring-up sentence.Suggested commit message:
LITE-018: bare lite indexes and opens the browser