DIS-072: a submodule must track the parent's pin URI //WT/path/to/sub; kill the synthetic pin-branches

Now
DONE

RULED 2026-07-15 (gritzko, law #4 of DIS-071): a submodule tracks the parent's PIN, addressed by the child worktree's own local URI //WT/path/to/sub the same syntax a worktree tracks set by the parent's first get and refreshed by any later parent update; the sub's own commit leaves the pin behind and DETACHES it (bare-hash post records, DIS-075), and ONLY the parent's get/post re-attaches it by writing a fresh //WT/path/to/sub#<hash> record. be/ JS instead mints a synthetic branch /child/.parent/.grandparent/gp_branch (submount.js:109-116 syntheticBranch over branch.js:64-68 sub()), records it as an ordinary ATTACHED branch (submount.js:287), and lets the child's own commit advance that ref (post.js:720-721) so a sub never detaches and the parent never refreshes anything. Submodules:7-8,28,49 specs the synthetic branch and is rewritten here. Carries the pin half of the stale DIS-061 (whose 2026-07-13 pin-reflection ruling materialized pin refs the parent maintains is overruled by the URI model).

Input

Context

The sub is mounted on an invented branch nobody owns; the pin relation it should track exists only as a comparison in subs.js.

Goals

The pin is a URI the parent writes, not a branch the child owns.

Constraints

Old mounts must survive the flip, and the orphaned refs are somebody else's problem.

WIP

Design decisions

TODOs

Blockers and bummers

Outcome