The wire-push path ships loud debug and wastes work. Every wpush: / wpush_dump: line is an unconditional fprintf(stderr,…) (keeper/WIRECLI.c:1072,1108,1139,1597,1650,1699…) — leftover instrumentation that prints all 265 objects on every push. The full pack is built BEFORE the refname/negotiation is validated, so a rejected push still pays the pack cost. have_peer=0 is printed while peer_tips=4 (a mislabel), and the have-set ("has 2349 objects") does not prune the commit walk — the full 265-object pack is sent even when the peer already has most of it. Goals: silent by default, no pack on error, incremental packs. See PackLog, Keeper.
Three independent defects in keeper/WIRECLI.c, all in the push path.
wpush:/wpush_dump: fprintf unconditional — must be ABC_TRACE-gated.wire_push_inner builds the pack, then send_update; a funny-ref/non-FF reject wastes the whole build.have_peer=0 with peer_tips=4 (:1597) is self-contradictory; the have-set is built (:1650) but the walk is not pruned by it.None.
Gate the noise, reorder validation before the pack, and use the have-set.
wpush:/wpush_dump: fprintf in ABC_TRACE (or a trace helper) so a normal push is silent.have_peer/peer_tips flag.wpush output without ABC_TRACE.