BEE-071: TRI lane — u32 trigram postings per path prefix, the pruning filter for grep and spot

Now
OPEN
Sev
MED
Ask
gritzko
Rep
///bee
See
BEE-063
See
BEE-066
See
SPOT-003
On1
QJAB-013

bee sym narrows a query through the SYM rows, but SYM keys whole identifiers only: a comment word, a string fragment, a partial name (Feed) or a regex literal keys no row, so a substring grep over the registry has no index at all. This ticket adds a TRIGRAM lane of u32 postings in its own <gitdir>/be/*.tri.idx family on the u32 lane of abc.index (QJAB-013). Ruled 2026-09-17 (gritzko): a posting names a PATH PREFIX at a depth, tri:18 | depth:2 | prefix_hl12:12, so the tip-tree descent prunes at the top directory levels and no level of the tree is ever listed whole; test/http/stall.js carrying a trigram mints three rows, for test (depth 0), test/http (depth 1) and the file itself (depth 2). A DIRECTORY at depth 0, 1 or 2 is recorded at its depth and a dir at depth 3 or more has NO record; a FILE at depth below 3 is recorded at its depth, a file at depth 3 or more at depth 3. The lane's one door is paths(words) -> [path], the files that MAY contain every word; the descent is concealed behind it. Trigrams are RON64, case-sensitive, C's CAPOTri40 twin. Suspects only, never delete, a rebuild once a year is fine. Main-tree work permitted by gritzko for this ticket (2026-09-17); no commits, no push.

Input

Context

Goals

Constraints

WIP

Design decisions

TODOs

Blockers and bummers

Outcome