LITE-020 DONE: lite log marks the straight chain — everything off-spine greys

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

gritzko's ask 2026-08-14: in lite log, the STRAIGHT CHAIN (the first-parent spine from the walked tip) keeps its normal columns and everything else — commits reachable only through a merge's 2nd+ parents, i.e. merged-in side chains — renders GREY, whole row. be already rules this: LOG-001 (be/views/log/log.js:175) walks the spine, seeds every non-first parent as a side root, and tags non-spine rows TAG_Q (grey in dog/THEME); spine rows paint normally. lite's index/log.js currently has NO such split — its LITE-013 capped walk pops ALL parents through one date-ordered max-heap and paints every row the same L/G/S/D palette. The port is the MARKING, not be's walk: lite's display order stays the strict date order it has; only membership decides the paint.

Input

Context

lite's log machinery, where the split plugs in:

Goals

lite log on a merge-bearing history shows the mainline crisp and the merged-in noise grey, at a tty and in --tlv/span terms; --plain bytes stay EXACTLY as today (greying is paint, not text).

Constraints

WIP

Design decisions

All three leads held; confirmed against the code and built as written.

TODOs

Blockers and bummers

None. be's be/test/log/nonspine.js (the LOG-001 leg) drives be's own keeper-pack store and cannot run against lite's index, so its four claims were PORTED into test/logspine/spine.js rather than reused verbatim: spine rows present and not grey, side rows present and grey, the grey row carries TAG_Q, a spine row carries none.

Outcome

index/log.js + test/logspine/ (run.sh, spine.js, pty.js, spinelist.js) + one README clause. Put, not posted.

Suggested commit message:

LITE-020: log greys everything off the straight chain