One unified way to tag worktrees, tickets and arbitrary URIs: an LSM
multimap of wh128 rows at the SRC ROOT — key = hashlet60 of the
canonical name (+ type4 LSB), val = a ron60 word (tag atom or a
hashlet60 link to another URI, val nibble distinguishes). Reuses the
existing wh-lane machinery (graf .graf.idx, ULOG sidecar, keeper LSM
runs) — no new data structure. Since the Edwardian .be is a bare
wtlog FILE (store elsewhere), the index forces .be/ to become a DIR;
anno retraction needs generic wh-lane tombstones (mechanism open).
wh64 = off40|id20|type4, type4 in the LSB (bits 0–3,
WHIFF_TYPE_MASK 0xf, dog/WHIFF.h); hashlet keys put the
hashlet60 in the top bits (WHIFFKeyPack), wh128 = (key,val)..be
DIR = own store in .be/; a .be FILE = wtlog whose first row
references the store. A src-root index means .be/ becomes a dir
in the wtlog-only case — the anchor test must learn that a .be/
dir WITHOUT shards but WITH a wtlog row0 reference is still the
Edwardian shape, NOT an own-store anchor.WHIFFHashlet60/HexHashlet60; name
canonicalization is resolve_hash.js's job, nobody else's.wh64 set lanes have
NO spare bits at all. No universal in-row bit layout exists.anno add URI ron60 / anno get URI from jab (and later verbs):
add/get ron60 annotations for any URI or hash — worktree tags,
ticket status atoms, wt→ticket links — through ONE map..be/, beside the wtlog, NOT in the
remote store.WHIFFKeyPack(type4, hashlet60(canonical name)); the
canonical name is the resolve_hash.js-resolved URI (or the
resolved sha for object-shaped targets: commit = sha hashlet60).wh64(ron60 word, nibble); nibble says atom (tag) vs link
(hashlet60 of another URI) — a wt→ticket tag is just an edge row.get = prefix scan over the key..be/ dir-ification (gritzko's lean): the former .be file rows
become the wtlog member inside .be/, anno runs sit beside it;
exact member names need a ruling..be/ member names + legacy-file
migration story; anno write surface (a PUT/DELETE URI form vs
a jab extension first); tombstone mechanism (negative runs vs
per-run sidecar delete mask)..be/ dir for
flat wts: the full dir⇒own-store site inventory + fix plan);
blocked on it — the anno lane lands on the new anchor..be/, append-a-run on write,
k-way merged prefix scan on read, compaction; reuse the wh128
sort/merge; tests incl. crash-torn tail.jab anno extension
(add/get); barewords resolve through the standard resolver.CI-001 needs an encoding convention.