One unreachable-remote push prints FIVE lines for ONE failure: a raw ssh: stderr
leak, a be: remote … unreachable line, then Error: WIREUNRCH and Error:
BEDOGEXIT twice (one per spawned be process level). Collapse to ONE uniform
error line — name + verb + URI + code, single-sourced (the BE-003 contract). See
BE-003, POST-020.
be post ssh://localhost/src/dogs to an unreachable git remote, verbatim:
ssh: connect to host github.com port 22: Connection refused — the ssh
subprocess's OWN stderr, inherited through the transport.be: remote <url> is unreachable (transport refused or timed out). —
keeper/WIRECLI.c:86; the same failure, restated.Error: WIREUNRCH then Error: BEDOGEXIT ×2 — abc/PRO.h:384's MAIN
error printer fires once PER spawned be process (sub-recursion), so the
code re-announces at every level as the exit propagates up.be head be://…?/beagle (abc sub) → HOMENOPROJ+WIRENOTRP+BEDOGEXIT ×2;
be patch '?6a0ce1b7!' → WIREUNRCH+BEDOGEXIT. Not just post (see SUBS-032).A failed push (or any error exit) reports ONCE, uniformly.
name + verb + URI + code line per failure (BE-003); no Error:
<code> stack from nested be processes.WIREUNRCH) wins; the generic BEDOGEXIT re-throws from
parent frames are suppressed or collapsed.ssh:) stderr is captured/labelled, not leaked alongside the
be-level unreachable line (one transport message, not two).PRO.h MAIN printer is process-global, so the
fix must gate per-process re-printing or thread the code up without re-announcing.be's exit code must still propagate (BEDOGEXIT carries the failure),
only its user-facing line is suppressed at non-root levels.(pending — needs a ruling on where the single error line is sourced: root be
process only, vs. each dog, vs. the spawning frame.)
(audit 2026-07-07: all three still present at tip b0fb0ce4 — the MAIN printer
is the bare fprintf(stderr, "Error: %s\n", …) at dog/abc/PRO.h:384, the
restated line at keeper/WIRECLI.c:87, ssh stderr inherited by the transport
spawn; nothing landed.)
be post to an unreachable remote; assert exactly one error line.Error: re-prints: gate dog/abc/PRO.h:384 (or the
BERun/bepost_spawn_sub spawn layer, BE.cli.c:393) so only the root
be announces; child exit codes still propagate via BE_NONE_LOW_BYTE.ssh: transport stderr instead of leaking it, then drop
the duplicate keeper/WIRECLI.c:87 restatement into the one BE-003 line.(none yet)
(pending)