git.delta.encode — git delta producer over dog/git/DELT
Expose DELTEncode as git.delta.encode(base, target, out), the twin of the existing git.delta.apply. The missing primitive for delta-compressing objects in a pure-JS git-wire client (thin packs, push deltas). Method: Issues.
git.delta.apply (JS-024) reconstructs a target from base+delta, but JS cannot PRODUCE a delta — dog/git/DELT.h::DELTEncode (libdog, already included by js/pack.hpp) does, and is unbound.git.delta.encode(base, target, out) -> n — append the delta instruction stream to out (Buf IDLE), advance fed, return n.DELTEncode (libdog). No new abc, NO dog. Caller owns out; the leaf sizes nothing (rule #4)._delt_encode(base,target,out,outOff) -> n | -1 in js/pack.hpp (beside _delt_apply); installed via JABCPackInstall.git.delta.encode in cont.cpp beside git.delta.apply; -1 surfaces verbatim (caller's raw fallback), DELT I/O errors throw.test/js/get/delta.js (registered JABCdelta, helpers from test/js/lib/): encode(base,target) → apply(base,delta) == target for shared-prefix / insert-only / copy-heavy pairs; incompressible → -1._delt_encode + git.delta.encode; update js/INDEX.md/API.md.js/pack.hpp/js/cont.cpp with JS-037 — land FIRST).742c06ff (manual reconcile onto JS-035): js/cont.cpp git.delta.encode + js/pack.hpp _delt_encode leaf + test/js/get/delta.js.be get reconcile silently dropped JS-036's edits to the JS-035-overlapping files (GET-031): js/CMakeLists.txt (JABCdelta registration) + js/API.md/js/INDEX.md encode docs are MISSING; delta.js is unwired from ctest. Follow-up edits captured in GET-031's lost-content.diff (and /tmp/js036-backup).