The git-format storage floor: pack-log encoding, delta scheme, ingest normalization, and the upload/receive wire. Tickets here migrate the keeper pack log to a single-stream, OFS-only, offset-addressed store (one growing pack per shard, deltas reference earlier objects by offset only, REF_DELTA quarantined at the ingest boundary). The native format core (writer, OFS resolver, OFS varint) lands in dog/git so keeper and the js/JABC binding share one implementation — no pack-log logic in either consumer. Plan-shaped, cleared via the Issues loop. Concept page: PackLog (rewritten by GIT-001).
ZINFInflate wraps next_out on a full output slice instead of returning a NOROOM code, silently corrupting output + reporting 0; NOT fully latent for pre-sized callers (a lying size header corrupts through PACKInflate), surfaced by JS-035's grow-and-retry.PACKResolveOfs sizes the delta-apply gauge dst + half for BOTH ping-pong targets; latent overflow when deltalen > 2*baselen, and every delta-chain result is capped at deltalen/2. From the 24Jul26 dog/git review.SetSafeHash(0) plus every SHA1DCFinal return dropped, so collision detection costs cycles and protects nothing; needs a policy verdict (git-parity check-and-fail vs dropping sha1dc). From the 24Jul26 review.PACKRecordEnd carves obj.size straight from the record's own untrusted varint (up to ~2^60): one corrupt record = OOM/DoS at every scan site; bound by the zlib max ratio before carving. From the 24Jul26 review.GITFeedRef feeds, IGNO glob gaps, sha1Drain pointer arithmetic, …) as one TODO list.4370d67e (HTTPS via spawned curl on pol, ssh untouched, test/wire/http-*); open residue only — git:// still misroutes to ssh (split it off or refuse) + the optional git:// daemon adapter.234b0f54 (A absolute-marker strip, POSTREF empty-segment guard, B POSTNOREF refusal — all in shared/relate.js); open residue — an end-to-end repro test for the defect-B POSTNOREF refusal.?/project/branch); ingest.saveRemoteRef/clone/add strip the query to ?, so branches collapse onto the trunk key and a cached head //origin?branch can't resolve the tip. Split from GIT-016 T3.261680bf (shared/serve.js uploadPack + the jab upload-pack raw-wire CLI entry + test/serve/uploadpack, jab-to-jab via KEEPER_BIN=jab); the receive-pack serve loop landed later under POST-028; the residue (ssh-remote jab spawn form + the TEST-003 test flips) moved to GIT-022.classify()'s ssh arm still hardcodes ssh host keeper <verb> for be://host, so ssh-remote be:// push/fetch is dead despite both serve halves existing in serve.js; spawn jab remotely, flip get/be + get/cached off the keeper SKIP, retire the native daemon. Enables CI-001 push-into-a-VM.
GIT-013/GIT-014 (the JS wire PUSH: shared wire.push() receive-pack client over ssh:+http:, FF-only jab post + force/set jab put, DIS-011 log-only, report-status parse) landed cb3881f8; test/wire/push-*, put-force-*, put-dis011.
GIT-016 (ONE graph-only advertise→resolve→verdict spine shared/relate.js + dag remote wh128 index + the head verb + honest non-FF post; get/post/put rerouted) landed 14924366+c12f6d4b; test/relate/verdict, test/dag/remoteindex, test/wire/head-*, push-nonff-msg. Residue split to GIT-017 (remote-track rows still drop the branch).
GIT-018 (push-pack built in pure JS — markReachable closure + git.pack emit, keeper spawn dropped from buildPushPack) landed e42c94e7; test/wire/push-nokeeper. Pack is RAW for now — OFS_DELTA emit stays PACK-002.
GIT-019 (ONE receive-pack session per push; advertRefs flush-closes, relate advert injectable — no more remote end hung up) landed 3610b643; test/wire/push-1conn.
GIT-010 (pack-log index-emit: new dog/git/PIDX scan/feed-emit (sha→offset) wh128 into a caller buffer, no index owned; keepKeyPack→shared WHIFFKeyPack; git.pack scan(out) / feed(…,out) binding → a JS-022 abc.index) landed 090658bb; PIDXtest + JABCpackidx. Deferred: converge keeper UNPKIndex onto PIDXScan.
GIT-009 (fresh-remote push omitted the .be store-anchor blob → fsck missing blob; pack-closure walks now ship it via a WALK_INCL_ANCHOR flag, on push + serve) landed c4955e5b; test/post/47.
GIT-007 (js/pack.hpp reduced to pure marshalling over dog/git PACKu8sFeedObj/ PACKResolveOfs + new PACKRecordEnd; JABCPackFeedOfs + inline encode/resolve dup deleted, double-header bug gone, keeper↔binding cross-impl vector) landed d8fec51a. GIT-002 (object-by-object OFS-only writer) landed e59a1c91; GIT-003 (ingest re-encoder to OFS-only + per-object dedup) landed fa52117d; GIT-005 (verbatim full-clone blast + thin-pack serve builder) landed 71a31179; GIT-008 (OFS writer chains delta-of-delta, depth cap 50 — fixes 38% fresh-clone bloat) landed b01496da; GIT-004 (OFS-only native resolver via the shared dog/git PACKResolveOfs; REF arm + cross-file recursion + MEM-022 hardening deleted, assert-backstopped) landed cd1e8a00. GIT-006 (migration + crash recovery) DROPPED — not needed: beagle.new is born OFS-only (GIT-003 re-encodes every object on clone-in), so there is no mixed store to migrate.