../sub) not resolved against the parent source
jab get of a git parent whose .gitmodules declares a RELATIVE submodule url (url = ../sub) passes it to the sub fetch without resolving it against the parent SOURCE URI, so the fetch targets a nonexistent project (HOMENOPROJ / "peer advertised no usable ref"), the sub is absent and the get exits 1. Native resolves ../sub against the parent URI (the SUBS-020 rule). Part of JGET-001; method Issues.
beagle/test/get/50-file-subs-git-relative (SUBS-020, relative ../sub)..gitmodules url=../sub; jab get <parent> →
HOMENOPROJ / no usable ref, sub absent. Evidence ~/todo/JSGET-cases/c50/wk/c3a.err.
relative-to-parent-source resolution (be/shared/submount.js).
.gitmodules url is resolved against the parent source locator beforefetch (matching native SUBS-020); absolute urls unchanged.
JGET-006/JGET-007 (sub mount must work for non-relative first).
(scheme/host/path) to form the sub locator; keep absolute urls as-is. Slot it as a candidate before the raw declared-url fallback.
url=../sub → sub mounts.gitmodules.js urlOf/declaredUrl return the raw string; mount (submount.js:212) feeds it verbatim to localSourceUri/tryFetch, where a relative ../sub resolves against jab's CWD (the clone wt), not the parent source. Merge a relative url against opts.source (scheme/host/path) via the URI binding, slotted before the raw-url fallback.be/test/get (case-50 shape; native oracle retired by TEST-003).sameSourceUris (SUBS-047) may MASK this for a worktree-git parent (the <path>/<subpath> candidate mounts before the relative url is ever tried) — the repro must use a source shape with no same-source candidate (e.g. a bare .git parent).