fix(test): the GPU terminal suites measure geometry the flip changed
Stage 3 review round 2. `vterm_stage3_acceptance`'s three terminal fixtures opened with no `display`, so the flip placed them in a 12-row panel — and this suite measures RENDERED FRAMES and CHILD PTY GEOMETRY. It was measuring the geometry the flip had changed underneath it. I nearly recorded this as a flake, and the reasoning that stopped me is worth keeping. Two CI runs on the same commit failed DIFFERENT suites: the first `vterm_stage2`'s real-TUI smoke, the rerun `vterm_stage3`'s a37 plus two GPU terminal tests. Different failures across runs is the load-sensitivity signature, both suites are on the documented flake surface, and the ledger says a red a37 is "ambiguous by construction". Every indicator pointed at noise. But the tests it kept landing on were GPU TERMINAL tests, and terminal placement is exactly what this PR changed. Checking rather than concluding: all three `terminal.open` fixtures omitted `display`. So the flip did reach them. It did not BREAK them — they pass locally, and they passed in one CI run each — it made them MARGINAL, by shrinking the window whose rendered output they assert against. Marginal under lavapipe on the heaviest job in the workflow reads exactly like a flake until you ask which tests, and why those. The distinction that matters: "my change made this fragile" is a different finding from "this was always flaky", and only one of them is mine to fix. These take the explicit opt-out for the same reason `vterm_stage2`'s smoke already did — their subject is rendering, geometry and input round-trip over a full document window, not placement, which the panel suites cover. The reason is stated at each fixture rather than once at the top, because each asserts a different property of the geometry. Verified: vterm_stage3 9/9 with a37 taking 4.33s rather than the 0.17s that means it never ran; vterm_stage2 6/6; and the full crdt sweep at 3718 passed / 0 failed against a measured 3715/0 baseline, the +3 being this PR's new pins. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
6b4d52a5bc
commit
fdbeb5cc32
|
|
@ -608,8 +608,14 @@ pmacs.command.define {
|
|||
name = "vterm-probe.open",
|
||||
description = "Open the Stage 3 acceptance terminal child.",
|
||||
fn = function()
|
||||
-- Bottom-panel Stage 3: explicit opt-out. This suite measures
|
||||
-- RENDERED FRAMES and child PTY geometry against a full document
|
||||
-- window; the panel default would put the child in a 12-row side
|
||||
-- window and change the very geometry under test. Placement is
|
||||
-- covered by the panel suites.
|
||||
return pmacs.terminal.open {
|
||||
command = "/bin/sh",
|
||||
display = "current",
|
||||
args = { "-c",
|
||||
"i=0; while [ $i -lt 400 ]; do printf 'VTERMROW%02d\n' \"$i\"; i=$((i+1)); sleep 0.05; done" },
|
||||
}
|
||||
|
|
@ -1140,8 +1146,11 @@ pmacs.command.define {
|
|||
name = "vterm-probe.open",
|
||||
description = "Open a quiet terminal that counts SIGWINCH.",
|
||||
fn = function()
|
||||
-- Stage 3 opt-out: this test asserts the child's PTY geometry
|
||||
-- settles and stops signalling. A panel changes that geometry.
|
||||
return pmacs.terminal.open {
|
||||
command = "/bin/sh",
|
||||
display = "current",
|
||||
args = { "-c",
|
||||
"n=0; trap 'n=$((n+1)); printf \"WINCH %d\r\n\" \"$n\"' WINCH; " ..
|
||||
"printf 'READY\r\n'; while :; do sleep 0.2; done" },
|
||||
|
|
@ -1163,8 +1172,11 @@ pmacs.command.define {
|
|||
name = "vterm-probe.open",
|
||||
description = "Open a terminal child that copies stdin to stdout.",
|
||||
fn = function()
|
||||
-- Stage 3 opt-out: input must round-trip through a frame rendered
|
||||
-- over the document window this test measures.
|
||||
return pmacs.terminal.open {
|
||||
command = "/bin/sh",
|
||||
display = "current",
|
||||
args = { "-c", "printf 'READY\r\n'; exec cat" },
|
||||
}
|
||||
end,
|
||||
|
|
|
|||
Loading…
Reference in New Issue