beagle/test/get store-internals cases to the JS jab get (be/test/get)
The be/test/get JS suite has 4 transport cases (be/file/git/traversal) that assert WORKTREE+stdout+be status PARITY (native vs jab) and deliberately EXCLUDE .be (the JS clone writes a byte-different store). 10 native cases instead assert ON the .be store layout itself — flat shards, peer-URI ref rows, anchor-file shape, no escape. Port those 10 as jab-driven STRUCTURAL store-layout assertions, triaging each: a real assertion where jab get owns the path, a documented N/A (+ split ticket) where it only exercises the C keeper/dog layer jab reuses. Method Issues; harness getcase.
beagle/test/get/{21-nosub-local-refs, 25-remote-shard, 26-cached-no-wire, 26-remote-shard-refs, 39-be-pathless-project, 40-no-ancestor-wtlog-escape, 43-home-bound-no-escape, 44-file-subs-parent-no-getrow, 48-walk-dot-be-quiet, 54-file-project-selector}.beagle/test/lib/case.sh and asserts on .be/ (shard dirs, refs rows, wtlog anchor bytes) — NOT a parity diff.be/verbs/get/get.js (SEED → fan-out reconcile); store writes go through be/shared/{store,ingest,ulog,wire}.js. parseRemote classifies file:/scheme-less/keeper+local as localish; remotes go seedRemote.tree_eq: the JS clone does NOT write ..be.idx and lays a different .be; so these ports CANNOT be byte parity on .be — they are STRUCTURAL invariants (shard exists, row carries //host, .be is a FILE, no remotes/ dir) checked against jab's store.be/test/get/<name>/run.sh that drives jab get and asserts the native case's store-layout invariant against jab's .be.jab get does not own the path (pure C keeper/dog, or a form jab doesn't implement yet), DON'T fake it: document N/A in the ticket with the reason, split a follow-up ticket, and either omit or register WILL_FAIL.be/test/lib/storecase.sh (sibling to getcase): resolve jab+be, hermetic scratch + .be firewall, helpers to inspect .be (shard/row/anchor).be/test/CMakeLists.txt (glob already picks up get/*/run.sh); xfail entries go in _BE_WILL_FAIL.CLAUDE.md §17): write the JS case, RUN it, observe what jab actually writes, THEN decide port-vs-N/A. No guessing.beagle/ (native). Work only in the be/ worktree + its test sub. jab/be come from the prebuilt ~/journal/beagle/build/bin on PATH.parseRemote ?/proj
shard selection + tip; jab get file:<wt>?/sub → only sub.c, sub's tip.
.be/<proj>/refs carries
//localhost, no <proj>/<ref> leaf shard, no remotes/ dir.
.be entry →
real.txt out, jab's checkout/walk emits no bad path '.be' spam.
jab get from a fresh subdir
writes its OWN .be FILE anchor; ancestor .be/wtlog byte-identical.
fetch; seedRemote fetches first → writes nothing on wire-fail. Port the SUCCEEDING-clone layout arm; the pre-fetch-shard arm is a jab gap → split.
//host?ref cached form is unimplemented in
parseRemote (treats empty-scheme as local). Split a jab cached-form ticket.
keeper://local?/proj empty-path local-exec
is a C keeper(WIRECLI) path jab doesn't run; document + split if wanted.
ordering lives in subs.js; route to a SUBS ticket, not this one.
keeper upload-pack SERVER
doesn't rewrite refs; jab reuses that binary — nothing JS to assert.
dog/HOME.c walk-up ceiling via strace on
be status; C dog-layer, not jab get. Out of scope.
be/ worktree (see Blockers; recipe re-check needed — the 2026-06-28 one predates the JAB-001/TEST-003 reshuffle).be/test/lib/storecase.sh (jab+be resolve, hermetic .be firewall, .be-inspection helpers); model env wiring on be/test/lib/getcase.sh.be/test/get/file-project-selector/run.sh.be/test/get/remote-shard-refs/run.sh (ssh, WITH_SSH-gated skip).be/test/get/walk-dot-be-quiet/run.sh (blocked red by JS-097).be/test/get/no-ancestor-escape/run.sh.//host?ref form has since been IMPLEMENTED (DIS-055 D7; be/test/get/cached exercises it) — port the store-layout assertions against it instead of splitting an impl ticket.jab gap exists.be/test/CMakeLists.txt; xfails into _BE_WILL_FAIL (be/test/CMakeLists.txt:29; currently EMPTY — the glob auto-adds get/*/run.sh cases).jab; STOP at the commit boundary, report root-cause/triage table/test results for the human gate (no commit).?/be recipe is STALE — the shard is beagle-ext, and a pre-made empty .be triggers SNIFFFAIL): mkdir $HOME/todo/JS-096 && cd $HOME/todo/JS-096 && PATH=$HOME/journal/beagle/build/bin:$PATH be get "file:$HOME/.be/?/beagle-ext" — fresh dir, NO pre-made .be; checks out all of be/ (62 ok) and recurses the test sub (mounts test/.be). Never pipe be get to head (SIGPIPE truncates the checkout).getcase.sh's SKIP guards.beagle-ext worktree at $HOME/todo/JS-096 — NO port has landed.be/test/get/ still carries none of the 10 ports and no storecase.sh (cases there: be/cached/detach/dirty/file/git/http/oddname/ pin/restore/rewind/traversal); all 10 native source cases still exist under beagle/test/get/. One triage line went stale: the cached //host?ref form landed with DIS-055 (see the retriaged TODO). JS-097 (the 48-port blocker) is also still open.