← 패치노트

일관성 2026-07-29

v1.36.88

selftest --json 잡음 3종 제거 · "우연히 지켜지던" 단일 JSON 계약을 원인 단계에서 고정

먼저 계약이 실제로 깨졌는지 측정했고, 제보의 전제 두 가지는 사실이 아니었다.

핵심 변경

**stdout 은 이미 순수 JSON 이었다** — JSON.parse(stdout) 성공 · stdout.trimStart().startsWith('{') 참 · exit 0. 잡음 5줄은 **전부 stderr** 였다(2>&1 로 합쳐 보면 오염처럼 보인다). 소비자 계약은 깨져 있지 않았다.
**cwd 의존도 아니었다** — 리포 루트와 임시 cwd에서 잡음이 **동일하게** 나온다. e2e 가 통과한 이유는 "임시 cwd 라 잡음이 안 보여서"가 아니라 **stdout 이 실제로 순수해서**다.
**프로브가 stderr 를 안 가로챘다** — fail() 은 --json 모드에서 ✗ 를 **stderr** 로 보내는데(io.js 설계), 두 케이스(fail() exitCode 행위 · lib/io 프리미티브)는 process.stdout.write 만 스왑했다. 양쪽 스트림을 스왑하도록 수정 — 이미 있던 패턴(4558행 케이스는 _w/_e 둘 다 스왑)을 따랐다.

GitHub 릴리스 v1.36.88 →