stage.js:73-83 writes the whole NUL-framed path list into git add's stdin
(io.writeAll) and only then reads stdout (slurp). git emits per-file
warnings (CRLF, ignored adds); once those fill the 64K pipe git blocks on
write while bee still blocks on writeAll — both sides stall forever. The
comment on the drain ("never block a chatty git") claims the opposite of what
the ordering delivers. Found in the 2026-08-21 review.
Repro first: stage a few thousand files whose content trips the CRLF warning; the test must hang without the fix and pass with it. Then fix the ordering: interleave write and drain, or point the child's stdout/stderr at a file and slurp after reaping.
Keep the NUL framing and the one-child-per-batch shape (stage.js:203 notes).
git add fills the pipe, feed() hangs