docs(ci-reds): R7 --- a third in-gate run was green, and my "exclusions" were not
The gate run immediately after the seventh occurrence passed all eight stages with zero failures anywhere, R7's selector included. So "in-gate always fails" is false, and the previous entry --- written before that run --- is corrected rather than deleted. The correction that matters is a reasoning error, not a data one. I called seventeen green out-of-gate runs "four hypotheses excluded". They exclude nothing: NOTHING outside the gate has ever reproduced this failure, so matching one gate condition at a time outside the gate cannot isolate an in-gate cause. All those runs establish is that none of the four conditions reproduces it BY ITSELF. Stated at the strength it carries: in-gate is 2 failures in 3 runs, out-of-gate is 0 in 17. Suggestive, and not a clean split. The method follows from that and is written down for the next occurrence: varying conditions outside the gate cannot answer this question, so the gate's ambient root, its exported environment, and process state across stage boundaries each need a gate run with that one thing changed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016bqGA6s9tTUFzYpbeW3tai
This commit is contained in:
parent
68a16f9058
commit
2d769846dc
|
|
@ -324,11 +324,14 @@ from #171 and #215.
|
||||||
- **GATE RUN 2: 7/8, `gpu` red on R7 again** (head `45d438c`, log
|
- **GATE RUN 2: 7/8, `gpu` red on R7 again** (head `45d438c`, log
|
||||||
`20260829T150011Z-429115`). `sweep` ran fully green this time.
|
`20260829T150011Z-429115`). `sweep` ran fully green this time.
|
||||||
**Two consecutive in-gate R7 failures prompted a narrowing**: 17 green
|
**Two consecutive in-gate R7 failures prompted a narrowing**: 17 green
|
||||||
runs outside the gate excluded the selector being flaky, the gpu
|
runs outside the gate, in four configurations, never reproduced it.
|
||||||
binary's own concurrency, the gate's TMPDIR, and residue from the
|
**A third in-gate run was then GREEN**, so "in-gate always fails" is
|
||||||
preceding `m4` stage. The discriminator is in-gate versus out, and
|
false and the registry's first write-up — which called those runs
|
||||||
the three obvious runner differences are ruled out. Recorded in the
|
*exclusions* — is corrected there: nothing outside the gate has ever
|
||||||
registry; **not this lane's to solve**.
|
reproduced this, so matching one gate condition at a time outside it
|
||||||
|
cannot isolate an in-gate cause. In-gate is 2 failures in 3;
|
||||||
|
out-of-gate is 0 in 17. Recorded in the registry; **not this lane's
|
||||||
|
to solve**.
|
||||||
- **Still owed, separately:** `workflow_dispatch` on `ci.yml`, and U9's
|
- **Still owed, separately:** `workflow_dispatch` on `ci.yml`, and U9's
|
||||||
discriminating control — pin test-binary concurrency to 1, then load
|
discriminating control — pin test-binary concurrency to 1, then load
|
||||||
a lone `--lib` binary — which has been named since 2026-08-09 and
|
a lone `--lib` binary — which has been named since 2026-08-09 and
|
||||||
|
|
|
||||||
|
|
@ -538,30 +538,45 @@ sixth was.
|
||||||
five were spread across lanes and months. It prompted a narrowing, and
|
five were spread across lanes and months. It prompted a narrowing, and
|
||||||
the narrowing is the useful part.
|
the narrowing is the useful part.
|
||||||
|
|
||||||
**Four hypotheses EXCLUDED, 17 green runs, all at head `45d438c` on the
|
**A THIRD IN-GATE RUN WAS GREEN** (head `68a16f9`, log
|
||||||
failing worktree:**
|
`20260829T152024Z-563254`, all eight stages, zero failures anywhere).
|
||||||
|
So "in-gate always fails" is **false**, and the paragraph below was
|
||||||
|
written before that run and is corrected rather than deleted.
|
||||||
|
|
||||||
| hypothesis | test | result |
|
**Seventeen green runs outside the gate, in four configurations, all at
|
||||||
|
head `45d438c` on the failing worktree:**
|
||||||
|
|
||||||
|
| condition reproduced outside the gate | runs | result |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| the selector is simply flaky | isolated selector | **3 green** |
|
| isolated selector | 3 | green |
|
||||||
| the full `-p pmacs-gpu` binary's own concurrency | full binary, outside the gate | **6 green** |
|
| full `-p pmacs-gpu` binary | 6 | green |
|
||||||
| the gate's isolated `TMPDIR` (this project already knows socket-path length matters) | full binary under a gate-shaped 61-character `TMPDIR` | **6 green** |
|
| full binary under a gate-shaped 61-character `TMPDIR` (tested because this project already knows socket-path length matters) | 6 | green |
|
||||||
| residue from `m4`, which the gate runs immediately before `gpu` and which spawns fake LSP servers and PTYs | `m4` then `gpu` back to back, twice | **2 pairs green** |
|
| `m4` then `gpu` back to back, as the gate orders them | 2 pairs | green |
|
||||||
|
|
||||||
**So the discriminator is "inside `scripts/gate`" versus "outside it",
|
**THESE ARE NOT EXCLUSIONS, and an earlier version of this entry called
|
||||||
and it is NOT the TMPDIR, NOT the preceding stage, and NOT the
|
them that.** The reasoning was wrong: **nothing outside the gate has
|
||||||
binary's own concurrency.** Something else about the gate's execution
|
ever reproduced this failure**, in 17 runs across four configurations —
|
||||||
context remains, and this row does not guess at it.
|
so matching one gate condition at a time *outside* the gate cannot
|
||||||
|
isolate an in-gate cause. All these runs establish is that none of the
|
||||||
|
four conditions **by itself** reproduces the failure. They do not show
|
||||||
|
that any of them is uninvolved when the gate supplies the rest.
|
||||||
|
|
||||||
**Causal status: still UNRESOLVED.** What these two occurrences add is
|
**What the observations actually support**, stated at the strength they
|
||||||
a sharper question than the row had before: previous entries compared
|
carry: in-gate is **2 failures in 3 runs**; out-of-gate is **0 failures
|
||||||
lanes and trees, and this one says the difference is in the *runner*,
|
in 17**. That asymmetry is suggestive and it is not a clean split,
|
||||||
with the three most obvious runner differences already ruled out.
|
because the third in-gate run passed.
|
||||||
|
|
||||||
* **Next occurrence should start from that**, not from another tree
|
**The method for the next occurrence follows from that.** Varying
|
||||||
exclusion. The remaining candidates are the gate's ambient root, its
|
conditions outside the gate cannot answer this question. It has to be
|
||||||
exported environment, and process state carried across stage
|
varied INSIDE — the gate's ambient root, its exported environment, and
|
||||||
boundaries — none of which has been isolated.
|
process state carried across stage boundaries are the uneliminated
|
||||||
|
candidates, and each would need a gate run with that one thing changed.
|
||||||
|
|
||||||
|
**Causal status: still UNRESOLVED.** What these occurrences add is a
|
||||||
|
sharper question and a method, not a cause: previous entries compared
|
||||||
|
lanes and trees, and these locate the asymmetry in the *runner* while
|
||||||
|
showing that the obvious way to probe it — reproducing gate conditions
|
||||||
|
outside the gate — cannot work.
|
||||||
|
|
||||||
**Fifth occurrence — panel cell-mapping generation (§5b) framing,
|
**Fifth occurrence — panel cell-mapping generation (§5b) framing,
|
||||||
2026-08-15, local (Linux).** The `scripts/gate` **`gpu` step** again,
|
2026-08-15, local (Linux).** The `scripts/gate` **`gpu` step** again,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue