Parents: #478, #491 Related: #617
Problem
tools/nogil-corpus-gate.ts discards each threads-test child stdout/stderr and records only [case, elapsed]. Fresh ReleaseSafe CI therefore reports that cve/mc-val-multislot-clone.js and semantics/oom-one-thread.js regressed, but not whether either exited on a semantic assertion, safety trap, panic, timeout, or signal-shaped host failure. This blocks exact diagnosis of security and OOM regressions and makes distinct failures look identical.
Required implementation
- Preserve exit status, timeout state, and a bounded tail of stdout/stderr for newly regressing cases.
- Prefix and escape every emitted diagnostic line so corpus-controlled output cannot inject GitHub workflow commands or terminal controls.
- Keep the current baseline comparison and one-execution-per-case behavior exact.
- Add deterministic self-tests for truncation, stdout/stderr labeling, control escaping, empty output, and workflow-command neutralization.
- Run that self-test in an existing Home-enabled required tooling leg.
No-workaround rules
- No reruns, hidden retries, case skips, deadline changes, unbounded logs, swallowed failures, or test-source edits.
Acceptance
- A synthetic failing child produces bounded, safe, source-labeled diagnostics with exact exit/timeout metadata.
- Existing pass/known/improved/regression classification stays unchanged.
- Dependency/tooling audits and workflow-generated platform evidence pass.
The engine defects exposed by those diagnostics remain separate children.