docs: the m4 red is environmental --- signature-level pair, and a green gate
The `/tmp/.git` diagnosis, finished properly. **Compared on SIGNATURE, not test name**, which is what the ledger's own CI-triage rule requires. The contaminated leg panics at `m4_acceptance.rs:5668:5` and `:6615:5` with `.received = ""` --- byte-identical to the gate red's own signature --- and the clean leg has ZERO panics. Same binary, same commit, one variable. **All nine gates pass under an isolated `TMPDIR`**: m4 168/0/3 by the mandated command, and the 117-target `--workspace --no-fail-fast` sweep with zero failures anywhere, `m4_acceptance` running all 171 inside it. **The marker is left in place.** It is foreign, isolating is sufficient, and deleting it is not this lane's call. Recorded with the constraint that matters: the isolated `TMPDIR` must be outside `/tmp` AND outside every git worktree, because a child of `/tmp` is not isolated --- `/tmp/.git` is still its ancestor. **One hazard this cost a round, worth the bullet it gets.** A libtest filter that matches nothing prints `0 passed; 0 failed; N filtered out` and exits ZERO. This shell is zsh, which does not word-split unquoted parameter expansions, so `NAMES="a b"; cargo test -- $NAMES` passes one argument, matches no test, and reports green. The contaminated leg "passed" that way and briefly looked like the hypothesis collapsing. The fix is to read the `running N tests` line, which is the only place a filter's actual reach is stated --- the same family as the `feature-census` trap already recorded two bullets above, and the same lesson as "a probe must fail loudly". Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016bqGA6s9tTUFzYpbeW3tai
This commit is contained in:
parent
41a08b8237
commit
b7fea705a0
|
|
@ -338,14 +338,28 @@ waits for a signal that is not coming.
|
|||
was created at 20:14 CEST, **3.5 h before** the gate run at 23:45;
|
||||
`/tmp` held 8,920 entries. That is handoff §1's recorded hazard
|
||||
exactly.
|
||||
- **A discriminating pair, same binary and commit, one variable:**
|
||||
`TMPDIR=/tmp` → **0/2**, `TMPDIR=<marker-free>` → **2/2**. A rerun
|
||||
would have established nothing; this establishes the cause.
|
||||
- **A discriminating pair compared on SIGNATURE, not test name**, same
|
||||
binary and commit, one variable. `TMPDIR=/tmp` → **0/2**, panicking
|
||||
at `m4_acceptance.rs:5668:5` and `:6615:5` with `.received = ""` —
|
||||
**byte-identical to the gate red's own signature**.
|
||||
`TMPDIR=<marker-free>` → **2/2 with zero panics**. A rerun would
|
||||
have established only intermittence; the pair establishes the cause.
|
||||
|
||||
**`scripts/gate` isolates the target dir and five ambient roots but
|
||||
NOT `TMPDIR`** — recorded in handoff §1, where the standing fix is
|
||||
assigned to the gate lane rather than to this PR.
|
||||
|
||||
**The marker was left in place**: it is foreign, deleting it is
|
||||
unnecessary, and the isolated `TMPDIR` is the correct remedy. It must
|
||||
be **outside `/tmp` and outside every git worktree** — a child of
|
||||
`/tmp` is not isolated, because `/tmp/.git` remains its ancestor.
|
||||
- **GREEN under an isolated `TMPDIR`: all nine gates pass** (log
|
||||
`20260811T215605Z-2664352`). fmt, clippy, lib, lib-crdt,
|
||||
`gpu_invocation_acceptance`, **m4 168/0/3**, `PMACS_REQUIRE_GPU=1 -p
|
||||
pmacs-gpu`, the **117-target `--workspace --no-fail-fast` sweep with
|
||||
zero failures anywhere** (`m4_acceptance` running all 171 in it), and
|
||||
`diff-check`.
|
||||
|
||||
## The GUI arc — Stage 0 MERGED as #236 (`f8ad3e7`)
|
||||
|
||||
**Written at the branch's first commit**, with the framing, which is
|
||||
|
|
|
|||
|
|
@ -230,10 +230,30 @@ commands, read `docs/active-work.md` immediately after this file.
|
|||
```
|
||||
|
||||
Check the ancestors of the temp root for `.git`, `Cargo.toml` and
|
||||
friends before believing any markerless-fixture red. **Isolating
|
||||
friends before believing any markerless-fixture red, and **compare
|
||||
SIGNATURES, not test names** — here both runs matched on panic site
|
||||
(`:5668:5`, `:6615:5`) and on `.received = ""`, which is what makes
|
||||
the pair evidence rather than coincidence.
|
||||
|
||||
**The isolated `TMPDIR` must be outside `/tmp` AND outside every git
|
||||
worktree.** A child of `/tmp` is not isolated: `/tmp/.git` is still
|
||||
its ancestor. Verify with `git -C <dir> rev-parse --show-toplevel`
|
||||
failing, not by eye. **Do not delete a foreign marker** — isolating
|
||||
is sufficient and deletion is someone else's call. **Isolating
|
||||
`TMPDIR` inside `scripts/gate` is the standing fix and belongs to
|
||||
the gate lane**, not to whichever feature PR happens to trip over
|
||||
it.
|
||||
- **A libtest filter that matches nothing reports `test result: ok`.**
|
||||
`0 passed; 0 failed; N filtered out` and a zero exit code are what a
|
||||
*typo'd or mis-quoted filter* looks like, and it is indistinguishable
|
||||
from success at a glance. **This shell is zsh, which does NOT
|
||||
word-split unquoted parameter expansions**, so `NAMES="a b"; cargo
|
||||
test -- $NAMES` passes ONE argument `"a b"`, matches no test, and
|
||||
prints a green line. Seen 2026-08-11 while running a
|
||||
contaminated/clean pair: the contaminated leg "passed" and briefly
|
||||
looked like the environmental hypothesis collapsing. **Read the
|
||||
`running N tests` line, not just `test result`** — it is the only
|
||||
place the filter's actual reach is stated.
|
||||
- **Deliberately unbuilt**: kernel notification (framing option E) —
|
||||
a framed option, not residue; its trigger is the 4 s worst-case
|
||||
external-change latency mattering in practice.
|
||||
|
|
|
|||
Loading…
Reference in New Issue