jab get differential-vs-native bug batch (13 defects)
A differential probe of jab get (the JS be get, be/verbs/get/get.js + be/shared/*.js) against native be get as oracle, retrofitting all ~54 untouched beagle/test/get cases (the JS-096 test-port follow-on), surfaced 13 NEW defects — 3 of them SILENT loss/corruption of committed or uncommitted user work (verified from evidence). The current get.js DOES implement in-worktree forms (inRepoSeed) and recursive submodule mounting (submount.js), so these are real-code bugs, not no-ops — which also makes DIS-058's "JS get never descends a sub" and parts of JS-096's triage stale. Method Issues; one child ticket per defect, grouped by disjoint file ownership.
be oracle vs jab get on the same form); evidence under ~/todo/JS096-probe{1,4}, ~/todo/JSGET-cases, /tmp/claude-1000/jabprobe.<<<<dirty||||-feat>>>> into an uncommitted file.CLAUDE.md §17). No hand-rolled URI parsing — fix via the URI binding / parseRemote. Keep changesets file-disjoint where possible.beagle/test/get assertion into be/test/get as the regression gate (parity vs native, the JS-096 harness model).
commits (cases 27/28/58); get.js seed*/fanoutWholeTree, no dag.aheadBehind.
be get ? (trunk switch) records the WRONG branch → next
be post rewrites that branch's history; get.js:423-429.
uncommitted file + grows wtlog (case 09); dirtyOverlapCheck get.js:328.
pickWant wire.js:107 builds refs/<b> not refs/heads/<b>.
.be/ dir crashes jab get (the
hermetic-shield shape); discover.js find() + get.js:128-134 + seedRemote.
submount.js:128-138 (no branch-fetch+history-resolve fallback).
sameSourceUri emits malformed ssh:////host;
submount.js:121 uses u.authority (already //-prefixed) not u.host.
.gitmodules → HOMENOPROJ
(cases 31/45); depth-2 reads the parent top-level .gitmodules.
restorePath
get.js:390 runs before the branch/detach branches (see DIS-017).
parseRemote srcRoot misderive (cases 29/55); get.js:96-101.../sub not resolved vs parent source(case 50, SUBS-020).
--force leaves a tracked orphan (case 49, GET-016).cnf/rc=1 vs native mrg/rc=0, andours/theirs SWAPPED (case 66).
be/test/get gate (spec-based since TEST-003 — native is no longer the oracle).refs/<b>), 006 open (seedLocal face), 007 PARTIAL (local half landed d80bdb5c); 008/009 DONE (SUBS-047)..be-FILE half landed via GET-038/DIS-058), then LOW (014 — premise needs a spec ruling, see the ticket).be/test/get/dirty (d80bdb5c pins weave + loud-conflict) — the native-refusal/native-mrg oracles are retired.be leaked a .be/srcgit shard into ~/.be during a git-source oracle clone — prune it..be crash) masks many submodule/clone cases (the native harness pre-creates wt/.be), so it gates clean repros for several children.be from be/test ("LAGS jab") — every "parity-port vs native" TODO in the children is now a spec-gate TODO instead.be/test/submount.js); JGET-007 local-source half landed (SUBS-046, d80bdb5c); JGET-011 .be-FILE-redirect half landed (GET-038, in the DIS-058 changeset da7fa5a7); the rest re-verified still present in be/verbs/get/get.js / be/shared/wire.js.