Files
james.maesandClaude Fable 5.1 40307120db fix(cli): a broken pipe always wins and exits 0; deterministic EPIPE tests
The EPIPE test flaked once on the macOS arm64 lane (exit 1). The handler only knew
EPIPE, but a stream already torn down by the first failed write can follow it with
ERR_STREAM_DESTROYED or ECONNRESET, a write can throw instead of emitting, and the
error can surface as an uncaught exception. All of those now exit 0 at once (stream
error events, io.out/io.err writes, uncaughtException, the top-level catch), so no later
code can turn a closed pipe into a failure.

The tests no longer depend on timing: one closes the read end before the child has
started (its first write meets a closed pipe), one after the first chunk of a 5,000
record answer, both with a 60 s timeout. 50 runs under nice -n 19 with twice as many
busy loops as CPUs: 0 failures.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-11-01 13:08:25 -06:00
..
2026-11-01 12:49:06 -06:00
2026-11-01 12:49:06 -06:00
2026-11-01 12:49:06 -06:00
2026-11-01 12:49:06 -06:00
2026-11-01 12:49:06 -06:00