BEE-001: multi-repo — bee install registers a repo in ~/.config/bee/repos

Now
OPEN
Sev
MED
Ask
gritzko
Rep
///bee
See
LITE-006
See
LITE-026

bee's pages cross repos — the wiki, the tickets and the code are separate git repos that link to each other — so bee needs to know which repos it serves. Today the only registry is $HOME/.config/be/tracks, written as a SIDE EFFECT of index() (track(), index/index.js), and bee install wires the merge driver and the pre-commit hook while registering and indexing nothing. This ticket makes install the one registration point, renames the registry to $HOME/.config/bee/repos, and rules that a repo is identified BY ITS PATH — so a linked worktree is not installed.

Input

Context

bee install [<repo>] (merge.js install) writes merge.lite.driver/merge.lite.name through git config, appends * merge=lite to <gitdir>/info/attributes, and plants .git/hooks/pre-commit — then stops. The index is built only when a read verb happens to run.

Goals

One registry of paths, written by install, and an install that leaves the repo wired, listed AND indexed.

Constraints

WIP

Design decisions

Ruled by gritzko 2026-08-15 in chat, before any code.

  1. IDENTITY IS THE PATH. No repo id is minted and the file has one column. A root-commit hashlet was weighed (stable across clones and worktrees) and dropped: a repo can carry several roots, a shallow clone's earliest commit is not the root, and a fresh git init — exactly when install runs — has no commit to hash at all. A path hashlet, if one is ever wanted, is a pure function of the row and needs no column either.
  2. Because the path IS the identity, a LINKED worktree must not be installed: the tell is <gitdir>/commondir, which only a linked worktree carries.
  3. The registry is $HOME/.config/bee/repos, plain lines, dedup on read — the track() contract as it stands, under the bee name.
  4. An ULOG-shaped registry (<ts>\t<verb>\t<uri>, dog/ULOG.*) was weighed and dropped: the C ULOG has no JS binding here, and an append-only history of registrations buys nothing a one-column list does not give.
  5. install OWNS the bring-up: driver, attributes, hook, registry, index, lindex. A bare bee run keeps registering as it does today.

TODOs

Blockers and bummers

Outcome

Landed in the main tree, uncommitted (gritzko's call whether to keep it).