test: termlens 0.10.1, and the invariant the PTY suite rests on - #19
Conversation
The harness moves from 0.9. The upgrade itself is small — `drag` takes four column-first arguments instead of two coordinate pairs, so a transposed `find` result cannot be handed to it by mistake — but 0.10 brings the accessor this suite was missing. `crates/oxidelake-tui/tests/emulation.rs` pins `Screen::unsupported()` exactly. Every screen assertion in this repository reads a grid a VT emulator produced from the binary's bytes, so a sequence that emulator does not implement makes the grid quietly wrong and every assertion a claim about a plausible-looking fiction. The measured answer is one `SGR 59` — underline colour, which changes no cell. The four blink/strikethrough entries that termlens#320 reports as unsupported despite being implemented are noted in the test rather than pinned as if they were real. `crates/oxidelake-runtime/tests/oxide_tui_pty.rs` is the coverage gap this found. `oxidelake-tui` is tested through `oxidelake-tui-demo`, a binary that exists for the tests; what people install is `oxide`, and `oxide tui` renders the same model behind clap, tokio and a tracing subscriber writing to stderr. `tests/cli.rs` drives the other subcommands with assert_cmd, which captures pipes and cannot see that in a terminal stdout and stderr are one stream — so a log line lands on the dashboard and nothing was watching. `crates/oxidelake-tui/tests/termlens_cli.rs` drives termlens-cli at the version the lockfile names, so the tool and the library are one release. The vendored agent skill is refreshed to 0.10.1 and check-skill-version.sh fails when that copy and the dependency disagree on major.minor; it had drifted two releases with nothing to notice. `skill-version` is registered in ci-policy.py's always-run set, with tests. CI writes TERMLENS_ARTIFACT_DIR and renders failures into the job summary. Also gitignores __pycache__, which the Python scripts under .github/scripts have always produced and nothing excluded. Signed-off-by: Vyncint Ng <115854244+vyncint@users.noreply.github.com>
a0316b6 to
d19d2b3
Compare
|
Updated after adversarial verification. Two independent verifiers re-ran every gate and audited the diff; both returned
Also gitignores Gates re-run after the fixes: fmt, clippy |
Upgrades the PTY harness from 0.9 → 0.10.1. The break itself was small:
dragtakes four column-first arguments now instead of two coordinate pairs, so a transposedfindresult cannot be handed to it by mistake.134 tests pass. fmt, clippy
--workspace --all-targets --all-features, and the full suite are clean locally.tests/emulation.rs— the invariant everything else rests onEvery screen assertion in this repository reads a grid a VT emulator produced from the binary's bytes. If the binary emits a sequence that emulator does not implement, the grid is quietly wrong and every assertion becomes a claim about a plausible-looking fiction. 0.10 made it checkable, and the measured answer is one
SGR 59— underline colour, which changes no cell. Pinned exactly, so anything joining that list has to be read before the suite is trusted again.The four blink/strikethrough entries that termlens#320 reports as unsupported despite being implemented are named in the test as the known false positives they are, rather than pinned as if real.
A coverage gap this found
crates/oxidelake-runtime/tests/oxide_tui_pty.rsis new.oxidelake-tuiis tested throughoxidelake-tui-demo, a binary that exists for the tests — but what people install isoxide, andoxide tuirenders the same model behind clap,#[tokio::main]and atracing_subscriberwriting to stderr.tests/cli.rsdrives the other subcommands withassert_cmd, which captures pipes and therefore cannot see that in a terminal stdout and stderr are one stream: a log line lands on the dashboard, and a program that never restores the terminal leaves the user's shell in the alternate screen. Only a PTY test can see either.The rest
crates/oxidelake-tui/tests/termlens_cli.rsdrivestermlens-cliat the version the lockfile names, so the tool and the library are one release.check-skill-version.shfails when that copy and the dependency disagree on major.minor — it had drifted two releases with nothing to notice.skill-versionis registered inci-policy.py's always-run set, with tests.TERMLENS_ARTIFACT_DIRand renders failures into the job summary via termlens'sreportaction (SHA-pinned).__pycache__is gitignored — the Python scripts under.github/scriptshave always produced it and nothing excluded it.