fix(core): forward stderr from stdout-only filters and count it
`RunOptions::stdout_only()` is documented as "stdout-only to filter, stderr passthrough", but the passthrough half was never implemented: stderr was captured and dropped on every path except `skip_filter_on_failure`. A tool that reports on stderr and leaves stdout empty therefore produced nothing at all. golangci-lint is the visible case -- a config or build error goes to stderr, the filter is handed an empty stdout, and the never-worse guard replaces its "JSON parse failed" fallback with the empty string, so both streams end up silent. The same shape applies to every other stdout-only filter: ruff, pytest, rspec, rubocop, gh, glab, prettier, tree, wc. Savings are also measured against running the command directly, so the stderr that is forwarded has to be counted as emitted. Comparing stdout to stdout while printing stderr as well booked a passed-through stream as if it had been filtered away. The guard keeps comparing against stdout. stderr is forwarded verbatim on both sides, so it cancels: never-worse reduces to `filtered <= stdout`, and widening the baseline to the combined output would let rtk emit more than the command it replaces. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
N
Nicolas Le Cam committed
3a4daef6f31490249082e613891131d3298987cf
Parent: 8b891a5