//-empty-host nav resolves to rootTop, not the launch tree — cross-repo mutation hazard from nested worktreesFound 2026-07-11 while diagnosing PUT-008: in a scratch clone at work/putrepro (nested INSIDE the journal repo), jab put '///shared' resolved to /home/gritzko/src/journal/shared — the OUTER repo — and only PUTNONE stopped a stage into the wrong tree.
// = topWt (memoized launchTop, matches navCwd) — but the core/discover.js:320 comment still says "the LAUNCH tree (find(cwd).wt)", stale either way.work/* clone) topWt and find(cwd).wt DIVERGE: wtdir empty-host anchors the OUTER repo; relates to the two open //X rulings in BE-042's context model.authorityRepo (core/loop.js, BE-032) strips arg0 via this wtdir, so a mutation verb inherits the wrong repo silently; BE-037 ruled a ///path miss must be LOUD, but here it is a wrong-tree HIT, worse than a miss.uri._parse("///shared") → host "", path "/shared"; wtdir("///shared") from work/putrepro → journal/shared while find(cwd).wt = the putrepro clone.// empty-host = the LAUNCH/nearest tree (find(cwd)) per the spec comment, or rootTop as the code does — then make spec and code agree.// legitimately names an outer tree, crossing INTO it from a nested wt should refuse loudly.wtdir/resolve affects every verb — audit //-empty-host callers (pager launch context BE-046, contextRepo BE-039) before changing.///path arg + // context anchor the RIGHT tree