jab get (JS) writes NO project shard on a FAILING wire fetch — native writes the flat shard BEFORE fetching (beagle/test/get/25 pre-fetch arm)Native be get be://<host>?/proj/ref writes the project shard .be/<proj>/
(flat refs carrying the peer URI) in BEEnsureProjectRepo BEFORE the keeper
fetch runs, so even a FAILED fetch (unreachable host) leaves the on-disk layout
in place (beagle/test/get/25 asserts exactly this). The JS jab get
(verbs/get/get.js::seedRemote) does wire.fetch FIRST and only ingests on
success — a wire-fail throws and writes NOTHING (no .be, no shard). Surfaced
splitting JS-096: the 25 port (test/get/remote-shard) lands the
SUCCEEDING-clone flat-layout arm; the pre-fetch-shard arm is this divergence.
Method Issues.
jab): jab get be://nonexistent.invalid?/myproj/main
from a fresh dir → ssh: Could not resolve hostname, JS exception:
wire.fetch: peer advertised no usable ref, exit 1, and NO .be / no
myproj shard written. Native writes .be/myproj/{refs,...} first.verbs/get/get.js::seedRemote (~line 145): wire.fetch(...) runs
ahead of ingest.clone, so a fetch throw aborts before any shard write.
Native BEEnsureProjectRepo (beagle/GET.c) mints the shard up front.remotes/
dir, peer URI in the single flat refs) — already covered by
test/get/remote-shard + test/get/remote-shard-refs (JS-096).jab's atomic-write model; if so, just record the
decision and the native-divergence note here, no code change.test/get/remote-shard.