From 3a2816b019e250dabc735337bb6c2c864de35a11 Mon Sep 17 00:00:00 2001 From: Levi Neuwirth Date: Wed, 2 Sep 2026 16:06:09 +0200 Subject: [PATCH] docs: correct Stage 1b gate evidence Narrow U21 to same-run intermittence without excluding an intermittent tree effect, and preserve the empty-stdout mechanism boundary from U2. Correct the shell-status explanation, record the exit-143 sweep termination, and mark the full pre-PR gate complete. --- docs/active-work.md | 32 +++++++++++++++++++++++++------- docs/ci-red-signatures.md | 15 ++++++++------- 2 files changed, 33 insertions(+), 14 deletions(-) diff --git a/docs/active-work.md b/docs/active-work.md index 8f6ef4e..5d565fc 100644 --- a/docs/active-work.md +++ b/docs/active-work.md @@ -322,7 +322,8 @@ lifetime tables made frontend-specific. **The both-axis effect witness is no longer owed**; see the completion note below, which is the authority on what this lane still has outstanding. -**Landed so far** (latest verified code head `9ec4ff1`; **full gate green at `04ebd2f`**)**:** B1's per-target fractional +**Landed so far** (latest verified code head `9ec4ff1`; **full gate green +at `04ebd2f`**, run `20260902T125049Z-4162684`, all 16 steps)**:** B1's per-target fractional wheel residual (the producer), B2's daemon-side horizontal panel leg, B3/B7's shared `scroll_window_columns` with its saturated bound and wrap pin, B4's middle-click PRIMARY paste, **B6's minimap wheel routing**, @@ -499,7 +500,8 @@ L8b–L8e, and that bullet's GPU half described the latch that no longer exists. **Owed outright: nothing. The implementation and its evidence are -complete**, and the lane's next step is the full pre-PR gate. +complete.** The full pre-PR gate is green at `04ebd2f`; the lane is +held immediately before opening its PR. The last three closed in order: @@ -527,7 +529,8 @@ The last three closed in order: local document scroll beside the panel event fails on the completion transcript. The focused row is green outside the socket-restricted sandbox; package-wide all-target clippy, fmt and `git diff --check` - are clean. The full pre-PR gate remains next. + are clean. The code later passed the full pre-PR gate at `04ebd2f`; + no further gate is owed before the PR. - **R4 and R5** (`e5ab16c`). - **B1's disposal half** (`241e82e` for panels, `a7006fa` for terminals) — and it needed mechanism, not just a row. `BufferId` keying distinguishes panel A from panel B for @@ -603,10 +606,25 @@ 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 trailing `; echo` in the same launch also hid the exit code from +the caller.** In +`./scripts/gate … > log 2>&1; echo "exit=$?"`, `$?` is expanded before +`echo` runs, so the text printed is the **gate's** status. The compound +shell command itself, however, returns the later **echo's** status — +normally zero — so the harness recorded exit 0 for a gate that failed +at step 03. Preserve and re-emit the status explicitly, or read the +gate's own summary line; do not treat the wrapper's status as the +gate's. + +**A later attempt was terminated by the harness, not by a test red.** +Run `20260902T124755Z-4122046` reached step `15-sweep`; that stage's log +contains two compilation lines followed by `Terminated`, with **zero +`test result:` lines**, and the gate reported `FAILED (exit 143)`. +The preceding fourteen stages had run successfully, but the sweep had +not executed a test. This is evidence that the harness's background +lifetime expired, not evidence about the tree. A monitor must observe +process exit as well as filtered gate output, and the launch mechanism +must outlive the full gate. ### A local false compile red from the shared target directory diff --git a/docs/ci-red-signatures.md b/docs/ci-red-signatures.md index c50d0d6..0d41df5 100644 --- a/docs/ci-red-signatures.md +++ b/docs/ci-red-signatures.md @@ -1136,19 +1136,20 @@ either** — see the relation cells below, which are the point of the row. | **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 established — two IN-RUN repetitions** | the same selector **passed in step `04-lib-crdt` and step `15-sweep` of the SAME gate run**, on the same tree, minutes after the step-03 red. This establishes within-run intermittence and excludes a deterministic failure on that tree. It does **not** exclude the tree as a cause of an intermittent failure or a changed failure rate. 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. +second), or canonical with a budget test (U9). Here one PTY assertion +failed by itself in the narrowest step, then the same selector passed +twice later in the same gate. The fragment establishes only that **the +supervisor collected empty stdout**; it shows no incorrect termios +state and does not distinguish among {the child never wrote, PTY +delivery lost the bytes, event collection missed them}. That is the +same evidence boundary U2 records. **Do not fold this into U2 or U9.** Both rows exist because their authors resisted the same pull, and each records a combination the