076324c470
run_command_with_timeout piped stdout/stderr but only read them after the child exited. When test output exceeded the 64KB OS pipe buffer, the child blocked on write() while the parent blocked on waitpid() — a permanent deadlock that caused every merge pipeline to hang. Drain both pipes in background threads so the buffers never fill. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>