MEM-024: push-side recursive walk holds 1MB mmap per frame (keeper/WIRECLI.c)

On the push path wpush_walk_commit and wpush_walk_tree mmap a 1MB buffer and recurse before unmapping, so a long linear commit chain or deep tree stacks one C frame plus one live mmap per level. The dedup count caps bound distinct objects, not single-chain depth: haveset-build callers pass out==NULL so no count cap applies at all, and pack mode's cap (65536) far exceeds the ~8MB C stack. A deep/force-pushed history → stack-overflow SIGSEGV; the discarded recursive return also drops errors. (Category is unbounded recursion — the NORESERVE mmap is reclaimed on unwind, not leaked.) The goal is to bound depth and stop holding the buffer across recursion.

Issues

Recursion per parent/subtree with a 1MB mmap live across the call; caps don't bound depth.

Blockers

None.

Planned

Bound depth, release before recursing, propagate errors.