A page in one repo links a page in another — the wiki links tickets, tickets link code — but in bee the repo is PROCESS STATE, not part of the address: http.js opens the cwd's repo ONCE and chdirs to its root, and the door resolves every partial at io.cwd()'s repo. So a cross-repo ref renders as a link into the serving tree and 404s, or resolves to a same-named local file, and neither the pager nor the server can switch repos at all. BEE-002 makes the BACKLINK direction cross the boundary; this makes the repo an axis of the TARGET, which is what lets both apps serve every registered repo.
http.js takes the door's openPath/seatOf/statOf and serves paths of one repo; render/html.js turns a ref token into an href; index/resolve.js resolves a partial path against ONE tip tree.
http.js:405-407 opens io.cwd()'s repo once and CHDIRS to its root, so every URL is relative to that one tree — global state no second repo can share.door.js:94 resolves a partial at io.cwd()'s repo too, so the pager inherits the same single-repo anchor and cannot switch trees.hook.js fTokens fuses (the ONE recognizer) — the resolver, not the lexer, is what lacks a repo axis.///bee/index/index.js (authority), /todo/BEE/BEE-001.mkd (root-absolute, another repo's root), ../wiki/Plan.mkd (relative, climbing out of the repo root), plus bare ticket codes.$HOME/.config/bee/repos — the list a resolver can mount.The pager and bee http both serve every registered repo, and a cross-repo ref opens the right page in the right repo instead of a same-named local file.
///name and root-absolute refs resolve through the registry; a relative ref that climbs out of its repo root resolves to a sibling repo or is refused in words.bee http; no verb gains a write.fTokens stays the one recognizer, resolve.js the one resolver.test/http/.{repo, path, anchor}, be's be.repo
(shared/ambient.js) in bee's shape. The process cwd stops being the
repo and the http.js chdir retires. The pager's back stack holds
(repo, path, anchor) triples, so a cross-tree hop pops back cleanly./<repo-name>/<path> — and the
registry is the mount table, so a request resolves from the URL alone and
the server keeps no current-repo state. A bare repo-less URL 301s to the
prefixed form; it does NOT keep working silently, or old links never
converge on the addressable shape.abc/TCP.c"), since
the useful next move is bee install on the repo that owns it./quickjab/dog/abc/TCP.c — and served at the commit the parent's gitlink
PINS, not at the sub's own HEAD (they differ whenever the sub is ahead).
The sub's own mount is the same bytes at another commit: it redirects, or
is marked as the origin, but both are not live addresses for one file.bee and bee2, plus worktrees of one
repo). The registry basename is the default name; the disambiguator when
two entries share one is unruled.index/resolve.js), never
the REV lane. path_hl hashes the WHOLE path, so no REV row is findable
from a suffix; FSEG is keyed fn_hl:40|prnt_hl:20 — the shape a partial
actually gives — and its ancestor segment hashes prune the tree descent to
a line, recovering real TEXT at the bottom and answering ambiguity with
several paths. Fanning that scan over the registry is a prefix scan plus a
pruned descent per repo, no blob reads. REV-PARS stays the weave's DAG
edges (BEE-005), a different question.{repo, path, anchor} context; openRepo(io.cwd()) and the http chdir retire///name, root-absolute and climbing refs/<repo-name>/<path> URLs off the registry; bare URLs 301 to themREADME.mkd http lines, INDEXES.mkd if the lane is touchedabc/TCP.c exists in SEVEN sibling repos here
(c-rdx, libdog, librdx, dogs, strictmark, causal,
ast-rev-ctrl) — the ambiguity is the normal case, not an edge one.~/.config/bee/repos holds six
TOP-LEVEL repos and no subs, so of those seven only the one under
registered quickjab (dog/abc/TCP.c) is reachable at all./home/gritzko/src/bee/bee is a SYMLINK to the repo root itself, so
"reading in bee/bee/" never leaves the bee repo — a resolver must not
take a symlinked path for another tree.door.js seatOf skips its own worktree-scan fallback whenever a repo
IS found (resolvePartial answers [], not null), so a cross-repo ref
dies as a bare "cannot open" with no search at all.(open)