---
name: cargo-test-bins-never-emits-fixture-exes
description: "cargo test -p spt --bins compiles [[bin]] fixtures as test harnesses into deps/ and never emits target/debug/<fixture>.exe — cold pool reds adapter_translate_proof; prebuild the fixture bins first"
metadata: 
  node_type: memory
  type: project
  originSessionId: 33101a3c-6fd0-4805-9dcd-ed3ab015d699
  modified: 2026-08-21T12:00:20.806Z
---

`cargo test -p spt --bins` compiles every `[[bin]]` target as a TEST HARNESS into
`deps/` and never emits `target/debug/translate_proof_fixture.exe` (or
`post_step_fixture.exe`). A cell that shells out to the fixture exe
(`adapter_translate_proof_gates_on_commit`) therefore REDS in a FRESH pool and is
GREEN in any pool that ever ran a normal build — same command, different pool
history, so it masquerades as a flake or a lane red.

**Why:** the green/red split keys on POOL HISTORY, not the tree — the falsest kind
of signal at a gate. Measured by todlando 2026-08-21 (#172 lane: green in his #196
pool, red in the fresh one). The e2e `mock-session.exe` precondition red at my #199
gate (panic prints the exact pre-build command) is the same class.

**How to apply:** before any filtered/bins test leg in a cold or unknown-history
pool, prebuild the fixture bins first:
`cargo build -p spt --bin translate_proof_fixture --bin post_step_fixture`
(and `cargo build -p mock-adapter --bin mock-session` for the ER e2e). The panic
text names the invocation when it fires. Related: [[cargo-builds-pkg-bins-for-int-tests]]
(cross-package + unit tests are the gap; same-package int tests are guaranteed).
