GIT-019 JS: reuse ONE receive-pack session for push — advert+verdict+pack, no hangup/reconnect

A jab post //host push opens the remote's git-receive-pack TWICE: first in relate.relatewire.advertRefs, only to read the old tip for the FF gate, and closed with a BARE io.close (no flush) so git-receive-pack dies fatal: the remote end hung up unexpectedly on EVERY push, even a successful one; then AGAIN in wire.push, which RE-drains the identical advert before sending the pack. One push, two connections, one gratuitous scary line. Reuse ONE session: advertise once, keep the child alive, run the LOCAL FF verdict + build the pack from that advert's haves, send updates+pack on the SAME fds; on the advert-only / non-FF refusal path send a flush-pkt (0000) before close so receive-pack exits clean. Respect GIT-016's graph-only relate spine — make its advert INJECTABLE, do not fuse wire transfer into the verdict. JS only (be/, via jab). Method: work; siblings GIT-013/GIT-016; cuts BE-006 stacked-error noise.

Input

Context

Goals

Constraints

WIP

Design decisions

TODOs

Blockers and bummers

Outcome