CI red on all nine test cells, one test:
test_the_flag_exists_and_is_documented.
Rich/Typer emits PER-CHARACTER ANSI escapes on a colour-capable runner,
so `--noise-floor` arrives as
\x1b[1;36m-\x1b[0m\x1b[1;36m-noise\x1b[0m\x1b[1;36m-floor\x1b[0m
and `"--noise-floor" in result.output` cannot match. Windows passes
because Rich auto-disables colour there, which is exactly why the local
run was green -- the same platform asymmetry that has now turned this
project's CI red four times (test_auto_tuning.py documents the previous
one and carries the same helper).
Adds _plain() -- ANSI-strip plus whitespace-collapse, since Rich also
WRAPS -- and routes EVERY CLI-output assertion in the file through it,
not just the one that failed. Verified under FORCE_COLOR=1 with a TERM
set, which reproduces the escape sequences locally; 175 pass in both
colour modes.
Two guards so this does not come back a fifth time:
- the helper is pinned against the exact byte sequence from the failing
run, with a control that it does not invent matches (a helper that
collapsed everything would make every assertion in the file vacuous);
- a SCAN of this file's own source, not a hand-written list, fails on
any surviving `in result.output` / bare `readouterr().out` assertion.
It considers only lines that actually start with `assert`, because the
guard's own prose and string literals mention the pattern.
Also corrects a flaw in this release's own security test. It asserted
"\x1b not in the panel", which conflates Rich's legitimate SGR styling
with injection -- it would pass on Windows and fail on a colour-capable
runner while testing the wrong property. It now asserts the specific
hostile sequences are gone (OSC title-set, BEL, CSI clear-screen), with
a control that the fixture still contains them.