STALE 2026-07-15 (gritzko): a dot-branch ticket wearing a rescope — filed 2026-06-29 against the mechanism that URI-016 decision 5 deletes. The live ticket is SUBS-054: the parent appends its gitlink to the CHILD's wtlog as an external pin row (no trailing slash), the sub's own rows carry track + base with a slash. I1-I3 are moot (do not re-fix); I4/I5's ?/<dot-branch> trigger dies with the dot-branch; the surviving GET-owned ruling is adopted verbatim by URI-016 decision 10. Nothing here is lost — it lives in SUBS-054 and URI-016. Original filing kept below as evidence.
RESCOPED 2026-07-14 (gritzko): the synthetic dot-branch /<child>/.<parent>[/branch] is REMOVED altogether by URI-016 decision 5 — a sub's tracking is a pin row in the sub's OWN WTLOG (///path/to/sub?proj_branch#pin), not a ref in the sub shard. This ticket's I1-I3 landed against the dot-branch and are therefore REVERTED, not extended: do NOT re-fix them. What SURVIVES is the goal (a cascade-committed sub must read clean) and the GET-owned-branch ruling below, which URI-016 decision 10 adopts verbatim. Original filing (2026-06-29, the DIS-057 jab post cascade) kept below as evidence. See URI-016, Submodules, SUBS-035, SUBS-037, DIS-058, DIS-059.
~/todo/DIS-057 the sub's recentmost get is a bare ?be44a666 → detached at the pin, NOT on /beagle-ext-tests/.beagle-ext. Must mount ON the dot-branch.~/journal/be the sub IS on ?/beagle-ext-tests/.beagle-ext but reads 137 ok (ahead 1) — cur 39097b42 is 1 ahead; the cascade post committed the sub but never advanced the dot-branch ref (still be44a666).ahead 1 of TRUNK (resolveRef('') = be44a666), not its dot-branch. Ahead/behind must be measured against the dot-branch (a fresh cascade-committed sub should read CLEAN).be put ?/<dot-branch> writes the wrong sha+store (native): be put ?/beagle-ext-tests/.beagle-ext "created … at 0a8c42f3" — the PARENT commit, in the PARENT store, not the sub's 39097b42 in the sub store; ahead 1 persisted.be post ?/<dot-branch> MANGLES the name (native): ?/beagle-ext-tests/.beagle-ext → ?/beagle-ext-tests/.beagle-ext-tests/.beagle-ext → NOBRANCH → sub recursion failed → BEDOGEXIT aborted the parent commit.advanceRef when detached, so a DETACHED-mounted sub (I1) can never advance any branch on commit (I2). Fixing I1 (mount ON the dot-branch) lets the cascade post's advanceRef move the dot-branch.~/journal/be the test sub is on ?/beagle-ext-tests/.beagle-ext reading (ahead 2) — cur/HEAD/trunk AND the parent gitlink pin all equal 62eafd46, but the dot-branch ref (in <store>/.be/beagle-ext-tests/refs, NOT a wtlog) is frozen at 6e359804, exactly 2 behind (a clean FF, not diverged). The two commits (6f5c6f69, 62eafd46) advanced trunk + the gitlink but never the dot-branch — the I2 symptom, live.get sets cur's branch (a checkout/clone, or an explicit be get ?branch); a bare be get FFs the tip but KEEPS the branch; post/put/delete advance the tip but NEVER switch branch. So GET must MOUNT the sub on its dot-branch (I1), then a cascade POST advances THAT current branch's ref (the dot-branch in the sub shard) and bumps the gitlink to the same tip. Recorded in Worktree./<title>/.<parent>[/branch] (I1), advance that dot-branch when a cascade post commits the sub (I2), and measure status ahead/behind against the dot-branch (I3). Native be put/be post ?/<dot-branch> (I4/I5) target the sub store + sub commit and stop mangling the name.be/ (JS) is today's target; do not regress the working gitlink bump or the read-side sub recursion. Repro-first (CLAUDE §17).get sets cur's branch; a bare get FFs the tip but KEEPS it; post/put/delete advance the tip and NEVER switch branch. URI-016 decision 10 adopts this verbatim and generalises it to the row patterns (post #hash = a local commit advancing the BASE; a parent-written ///path#pin = the TRACKED pin).adv from gitlink != base. This replaces I3's "measure against the dot-branch": no ref is consulted.gitlink pin == sub HEAD == the sub's wtlog base, with the tracked row refreshed to the same pin.submount.js::syntheticBranch :110/:116 mount row, post.js:692 advanceRef), all of which URI-016 removes. Their REMOVAL is tracked there, not here. Do not re-fix.be put/be post ?/<dot-branch> wrong-store sha / name-mangle): the ?/<dot-branch> TRIGGER disappears with the dot-branch, so both repros die as written. OPEN: does I4's underlying defect — put targeting the PARENT store/sha instead of the sub's — survive under another name? Probe before closing; otherwise moot with native retirement (TEST-003).~/src/journal/be's test sub currently sits ON ?/beagle-ext-tests/.beagle-ext (a dot-branch row) and reads clean — it becomes a LEGACY row per URI-016's tolerate-vs-rewrite ruling.jab post DIS-057 cascade (I1-I5).submount.js syntheticBranch anchor) + post.js advanceRef of the current branch; ~/src/journal/be's test sub sits on ?/beagle-ext-tests/.beagle-ext reading clean. No commit is TAGGED SUBS-040 (the fix rode the DIS-058 da0c12c3/da7fa5a7 mount chain + the post/DIS-059-era advanceRef work) — hence kept open for the missing dot-branch-advance repro; I4/I5 (native) untouched.