bin/get.js — be get as a pure-JS extension
Reproduce native be get as bin/get.js + bin/lib/*, pure JS over JABC (libdog+abc ONLY, no keeper/sniff/graf dog linked), output-equivalent to native across all remotes and change kinds. Validates the wire SDK and extends the JS-027 read-only store reader to the FETCH + write + checkout path.
be get adds the WIRE fetch, pack INGEST (keeper write side), and CHECKOUT (materialise the fetched tree → wt) + REFS/wtlog append.keeper/ (unlinkable from JABC), so it is reimplemented in JS exactly as status.js reimplemented sniff.be get <remote> parity: same op-summary/banner AND same resulting wt state as native, for file://, ssh://(//host), be:// remotes.abc ONLY; jabc link unchanged. Tests in test/js/get/, reusable helpers in test/js/lib/; oracle = native be get. Method: Issues.bin/get.js entry. Read libs reused as-is.test/js/get/{file,be,git} × {new,del,mod} × {file,dir} — stdout (time-normalised) + wt content + be status all match native. ctest be-js-get-{file,be,git} 3/3 (be/git gated WITH_SSH)...be.idx wtlog sidecar not written (status works without it; excluded from the tree diff as store metadata).bin/get.js + bin/lib/{pkt,wire,ingest,checkout}.js reproduce be get output-equivalently for file:/be:/ssh-git × new/del/mod files+dirs. Key find (JS-040): native keeper needs the prebuilt <ron64>.keeper.idx (a sorted wh128 run: PACK-summary entry + per-object key=hashlet60|type, val=(off<<24)|(file_id<<4)|1) — a bare .keeper reads unk. Built it byte-identical via pack.scan + abc.book/merge. Tests in test/js/get.be-js-get-* 3/3.