Parent evidence lane: #1019
Measured problem
tools/json-pipeline-benchmark.ts collected two 126-sample direct-JSC triplets while unrelated compiler/test work started mid-run. The second run appeared to narrow both target gaps, but its shallow baseline/candidate/JSC RSD reached 30.01%/28.52%/41.56%. Raw paired candidate/baseline ratios ranged from 0.51x to 1.46x.
The contemporaneous host evidence identifies the interference: another Codex task launched a Zig test process, it crashed at 02:15:04, and macOS ReportCrash then consumed a core. The crash report is outside the repository and is not evidence to check in; all benchmark samples and the rejection rationale are preserved in c6082df7.
The exact-parent collector already calls competingEvidenceProcesses before and after every benchmark invocation. The JSON/JSC collector did not perform an equivalent check, so a short process could contaminate a complete matrix without causing collection to fail.
Scope
- Reuse the shared
tools/evidence-processes.tsclassification rather than creating a second process parser. - Reject competing build/test/corpus/crash-report work before and after every zig-js, baseline, and JSC invocation in ordinary, gap-reduction, and tier-residency modes.
- Exclude the collector and its direct child runner from self-detection exactly as the shared classifier requires.
- Keep raw sample order, checksums, runner arguments, and report schema unchanged.
Acceptance
- A deterministic self-test proves recognized competitors fail both pre- and post-invocation checks while a clean fixture passes.
- The collector self-test and repository tool gate pass.
- A contaminated run fails before publishing either artifact.
- A clean seven-triplet #1019 run completes with the same 126-sample schema and exact checksums.