index/lindex.js:201:PS,243-254: a wh128 lane is unkeyed, so every run adds a MARK
row and none is removed; base/pTrees therefore grows by one commit per
index run and descend pays |pTrees| git.getTreeDiff calls at every tree
level, forever. Confirmed: 7 bee index runs over 7 commits left 13 mark rows
per ref and a rebuilt step 2 got pTrees = 13 distinct trees. With the
BEE-031 post-commit hook that is one extra parent tree per commit — thousands
on a live repo. Found in the 2026-09-18 index review.
Keep only the marks the diff needs — the newest few by CTS, or the single tip whose tree is an ancestor of all — or compact the MARK key space on write.
index/lindex.js:225:PS baseTrees). A
dropped mark loses no row: descend prunes a path equal to
ANY base tree, so an older mark only ever saves a re-lex and
the mint is idempotent either way.rec.base names the tree count — what the repro pins; the
scanned ... summary line is unchanged._compact_wh128 merges runs, never drops one.
Compacting the MARK key space wants a keyed lane (kv64) or a
C-side delete — gritzko's call. The cost is 16 B and one
seek per run; only the diff base ever paid more.index/index.js:452:Wt markSet grows the same way for the ref
watermark, but it is a membership test and no diff base, so
it was left alone (another agent holds that file).