/<title>/.<parent>[/branch]; list of inconsistencies below. Requirement: the sub must be ON the dot-branch and the dot-branch must ADVANCE on commit. (be/ JS today.)
Inconsistency list found while landing DIS-057 via jab post (which cascade-committed the test sub 39097b42 and correctly bumped the PARENT gitlink to it — the branch tracking is what broke). Spec Submodules: a sub wt TRACKS a synthetic dot-branch /<child>/.<parent>[/parent_branch], and child worktree commits update the local synthetic branch. Fix target be/ JS today; the native be items are related evidence. See 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).submount.js::syntheticBranch (:110) — the mount anchor row records ?<dot-branch>#<pin> (submount.js:221, both the SUBS-046 local branch and the wire branch); GET-owned per the ruling.postOne advances the CURRENT branch ref (post.js:692 advanceRef), which IS the dot-branch once I1 mounts on it. Verified LIVE 2026-07-07 in ~/src/journal/be: test sub on ?/beagle-ext-tests/.beagle-ext, 236 ok, NO (ahead N) — the frozen-ref symptom is gone.be put/be post ?/<dot-branch> wrong-store sha / name-mangle): still unaddressed in beagle/; spin the beagle/ follow-up — or mark moot if native be retirement (TEST-003 direction) is ruled.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.