diff --git a/docs/active-work.md b/docs/active-work.md index 19709d6..71f1b02 100644 --- a/docs/active-work.md +++ b/docs/active-work.md @@ -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=` → **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=` → **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 diff --git a/docs/agent-handoff.md b/docs/agent-handoff.md index f03a881..a435e86 100644 --- a/docs/agent-handoff.md +++ b/docs/agent-handoff.md @@ -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 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.