docs(lane): the shared target directory's false compile red

Records, in this lane's infrastructure notes rather than
docs/ci-red-signatures.md, a red that has now fired twice locally. The
registry is for CI reds; a row there would have to name a job and
flavor this has never had.

The signature is E0433, "cannot find `columns` in `pmacs_protocol`",
four errors from a bare `cargo test -p pmacs-gpu`. Both times the module
was entirely present --- columns.rs matching HEAD, `pub mod columns;` at
lib.rs:40 in worktree and HEAD alike. Nothing was missing to find.

CARGO_TARGET_DIR is exported globally here, one directory for every
checkout, and `main` has no columns module at all --- the sharing
refactor is unmerged 1b work. So a pmacs-protocol artifact built without
the module shares a target directory with the branch that needs it. The
entry states what was confirmed (the shared directory, the module's
absence on main, the red clearing) and says plainly that which build
deposited the stale artifact was not determined.

Three of the four error sites are recorded. The fourth scrolled past the
captured tail, so the entry says so instead of naming a likely
candidate.

The control is `scripts/gate` and its per-worktree CARGO_TARGET_DIR, not
the touch that cleared it --- with the warning that the touch papers
over a genuine deletion exactly as readily, and that the two reds look
alike. agent-handoff.md:2609 already carries the general bare-cargo
hazard; it did not carry this signature, count, or control.
This commit is contained in:
Levi Neuwirth 2026-09-01 19:43:21 +02:00
parent bd0815c240
commit 3bd9ad14e7
No known key found for this signature in database
1 changed files with 55 additions and 0 deletions

View File

@ -381,6 +381,61 @@ 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`.
### A local false compile red from the shared target directory
Not a CI signature, so it is **not** in `docs/ci-red-signatures.md` —
that registry is for CI reds, and a row there would claim a job and
flavor this has never had. It is a hazard of running a bare cargo
command instead of `scripts/gate`, and it has now fired **twice in this
lane**.
**Signature.** From `cargo test -p pmacs-gpu`, four errors against the
bin `pmacs-gpu` test target:
```
error[E0433]: cannot find `columns` in `pmacs_protocol`
--> pmacs-gpu/src/main.rs:13291:21
error: could not compile `pmacs-gpu` (bin "pmacs-gpu" test)
due to 4 previous errors
```
Three of the four were read off the second occurrence's output —
`main.rs:13291`, `:14517`, `:14578`; the fourth scrolled past the
captured tail and is **not** recorded here rather than guessed. All are
uses of the module the 1b branch added in `9e54cd2`.
**Why it is false.** Both times, the module was fully present:
`pmacs-protocol/src/columns.rs` existed and matched HEAD, and
`pub mod columns;` stood at `pmacs-protocol/src/lib.rs:40` in both the
worktree and HEAD. Nothing was missing to find.
**What it actually is.** `CARGO_TARGET_DIR` is exported globally on this
machine — `/home/jeans/build/cargo-target`, one directory shared by
every checkout — and `main` has no `columns` module at all (the sharing
refactor is unmerged 1b work). A `pmacs-protocol` artifact built without
the module therefore sits in the same target directory as the branch
that needs it, and gets reused. The confirmed facts are the shared
directory, the module's absence on `main`, and that the red cleared;
which build deposited the stale artifact — the `main` checkout, or this
worktree before `9e54cd2` — was not determined, and either has the same
shape.
**Control.** `touch pmacs-protocol/src/lib.rs` forces the rebuild and
clears it. **But check before touching**: confirm `pub mod columns;` and
`columns.rs` are actually present and match HEAD first, because the
touch would just as happily paper over a real deletion, and this red is
indistinguishable by eye from that one. The durable fix is not to touch
at all but to run **`scripts/gate`**, whose per-worktree
`CARGO_TARGET_DIR` is exactly this problem's remedy — see
`docs/agent-handoff.md:2609`, which documents the general bare-cargo
hazard and the environment variable's override of `build.target-dir`,
but not this signature, its count, or its control.
**The cost of misreading it.** It presents as a compile error naming a
missing module, which reads as a real regression — a deleted file, a
dropped `mod` line, a bad rebase. Both times the first instinct was to
look for what had been removed. Nothing had been.
### And one coverage gap in CI, which shaped B4's design
**No non-Linux leg runs this crate's tests.** `cargo test -p pmacs-gpu`