docs: U21, and two ways I misread a gate that had already failed

The pre-PR gate redded at step 03-lib on
m6_1_pty_canonical_mode_keeps_kernel_echo, alone, with U2's familiar
`stty -a output was: ""`. Recorded as U21 rather than folded into U2 or
U9: U2's selector is the RAW test, and U9's requires the canonical test
and composition_overhead together in 11-sweep. Here canonical redded
with no companion at all, in the narrowest step, which no existing row
has shown.

The evidence is unusually good for this family. The same selector passed
in steps 04-lib-crdt and 15-sweep of the SAME run, on the same tree,
minutes apart --- an in-run control that excludes the tree without
relying on a rerun at different conditions. Three later full --lib runs
and one isolated run are also green. The load confound is once again
unmeasured at the moment of failure; the readings that exist were taken
afterwards and are recorded as such.

Two invocation mistakes are recorded in the lane notes because both made
a failed gate look like a running one. nohup leaves SIGINT ignored and
the gate refuses to start in that state --- correctly --- printing two
lines and exiting in under a second. My monitor filtered for step
banners and test results, so it matched none of that, and fifteen
minutes of silence read as progress. And a trailing `; echo "exit=$?"`
reported the echo's status, so the harness logged exit 0 for a gate
whose own summary said FAILED.
This commit is contained in:
Levi Neuwirth 2026-09-02 14:47:47 +02:00
parent fd9401e57f
commit 04ebd2f39d
No known key found for this signature in database
2 changed files with 58 additions and 0 deletions

View File

@ -581,6 +581,33 @@ the next lane does not rediscover them at review.
instead. Running it by hand also surfaces a pre-existing unresolved
link, `MathNode` at `pmacs-gpu/src/math_layout.rs:314`.
### `scripts/gate` refuses to run under `nohup`
Not a red — a **refusal**, and worth recording because it looks like
neither success nor failure. Launched with `nohup`, the gate printed
```
pmacs: SIGINT is ignored; run this command with SIGINT deliverable
gate: REFUSING TO RUN (status=1 token=valid) --- no stage has run.
```
and exited in under a second. `nohup` leaves SIGINT ignored, and the
gate declines to start in that state rather than run stages nobody can
interrupt. **The guard is right**; the way it was hit is the lesson.
Background the gate through the harness's own mechanism, not `nohup`.
**The expensive half was the watch, not the refusal.** A monitor was
armed on the output file filtering for step banners and test results —
so a gate that never started produced exactly what a gate still running
produces: nothing. Fifteen minutes of silence read as progress. The
question to ask before arming any watch is *if this process died right
now, would my filter emit anything?*, and here the answer was no.
**A trailing `; echo` in the same launch also swallowed the exit code.**
`./scripts/gate … > log 2>&1; echo "exit=$?"` reports the *echo's*
status, so the harness recorded exit 0 for a gate that failed at step
03. Read the gate's own summary line, never the wrapper's.
### A local false compile red from the shared target directory
Kept here rather than in `docs/ci-red-signatures.md` because it is a

View File

@ -1123,6 +1123,37 @@ the first thing to capture is a contemporaneous load reading — the one
piece of evidence that would separate the two explanations and that
neither U6 nor this row has at the moment of failure.
### U21 — the canonical PTY test reds ENTIRELY alone, in `03-lib`
Recorded during GUI Stage 1b's pre-PR gate, 2026-09-02, local (Linux).
**A new incident by U6's rule and U9's, not a fourth occurrence of
either** — see the relation cells below, which are the point of the row.
| field | value |
|---|---|
| **selector** | `--lib process::tests::m6_1_pty_canonical_mode_keeps_kernel_echo`, **alone** — no second selector redded anywhere in the run |
| **job / flavor** | local (Linux), `scripts/gate` step `03-lib`, per-worktree target dir, inside a full gate |
| **required fragments** | ``canonical mode should leave echo enabled (no `-echo` flag); stty -a output was: ""`` |
| **NOT fragments** | the `:LINE` suffix (`src/process.rs:3981` at this head) and the pass/fail counts — both occurrence-specific |
| **status** | **one occurrence**, `2008 passed; 1 failed; 3 ignored` |
| **what IS established — an IN-RUN control, the strongest kind** | the same selector **passed in step `04-lib-crdt` and step `15-sweep` of the SAME gate run**, on the same tree, minutes apart. The tree is therefore excluded as a cause without relying on a later rerun at different conditions. Also green in three subsequent full `--lib` runs and once isolated (`1 passed`, 0.01s) |
| **what is NOT** | cause. **The load confound is once again not measured at the moment of failure** — the readings that exist were taken afterwards: 1-minute 4.15, 4.38, 6.43, 6.54 with the 5-minute figure at 9.6–10.0, i.e. a genuinely busy machine, but *after* the fact. This is the same gap U15 exists to close and it is still open |
| **relation to U2 — same family, different selector** | U2's fragment is identical (`stty -a output was: ""`) but its selector names `m6_1_pty_raw_mode_disables_kernel_echo`. Raw passed here |
| **relation to U9 — the closest row, and still not a match** | U9's selector requires the canonical PTY test **and** `composition_overhead_under_ten_percent` failing together in `11-sweep`. Here the PTY test redded **with no companion at all**, in `03-lib`, and the composition test passed. U9's own framing distinguishes "canonical alone" from *raw*; this is canonical alone from *everything*, which no existing row has shown |
**What this adds to the family is the isolation.** Every prior
occurrence of this fragment came paired — raw with canonical (U2's
second), or canonical with a budget test (U9). A single PTY assertion
failing by itself, in the narrowest step, with two green runs of the
same selector bracketing it in the same gate, is the cleanest evidence
yet that the fragment reports **a delivery or collection failure rather
than anything about termios** — which is exactly what U2 says the
fragment can and cannot show.
**Do not fold this into U2 or U9.** Both rows exist because their
authors resisted the same pull, and each records a combination the
others cannot see.
### U7 — a *different* wall-clock render-budget test reds each sweep
Recorded during worker identity Stage 1 review round 3, 2026-08-09.