---
name: cfg-gated-code-is-invisible-to-the-other-platform-gate
description: "A #[cfg(unix)] arm or test is not compiled, linted, or run by any Windows gate — green Windows gates are silence about it, never evidence."
metadata: 
  node_type: memory
  type: feedback
  originSessionId: e85925aa-e501-498f-855b-550e75112265
  modified: 2026-08-23T11:05:50.072Z
---

Code and tests behind `#[cfg(unix)]` are **not compiled** on Windows, so `cargo clippy
--all-targets`, the full lib suite, and a mutation battery on HFENDULEAM all return green
while saying **nothing at all** about that arm. A `cfg(unix)` test with a compile error or a
dead assertion passes every Windows gate by not existing. The reverse holds for
`#[cfg(windows)]` on Linux.

**Why:** IR-16 (2026-08-03) fixed `DetachedChild::kill_tree` on BOTH arms. Windows gave
clippy 0, 821/821, battery 4/4 — and had zero exposure to the unix ESRCH whitelist. Proving
it needed kitsubito: clippy 0, 815/815, and its own 2-row battery. Same class as
[[opt-in-ci-legs-skip-silently]] — a leg that did not run is silence, not a pass — but worse,
because here the *local* gate looks complete.

**RULING-SIDE FACE (2026-08-23, #212 r2/r3):** the class bites RULINGS, not only gates. My
gate's clippy 0 on Windows was structurally silent about a `#[cfg(not(windows))] { return; }`
tail that Linux clippy -D denies as unreachable (found only when the golden's Linux leg first
REACHED its clippy step). Then my ruled fix shape — a runtime `cfg!` skip — exposed a SECOND
boundary: the tail calls a symbol that is `#[cfg(windows)]`-only upstream, E0425 on Linux.
**A ruled fix shape that names exact code is a claim compiled on zero platforms** — either
compile the shape on the target platform before ruling it, or rule the PROPERTY and let the
builder (who will compile it) pick the spelling. The builder's stop-and-refer on the
unauthorized-but-necessary helper was the protocol working.

**How to apply:** when a change touches a cfg-gated arm, name the platform each piece of
evidence covers and get the other platform before claiming the change is proven. `ssh
reavus@kitsubito` is authorized; ship the tree with `tar | ssh` into a scratch dir (~21MB
excluding `.git`/`target`) rather than touching their checkout, use a separate
`CARGO_TARGET_DIR`, and reap the scratch after. ⭐⭐ The mutation that matters on the second
platform is the one proving the row **reaches** the gated branch — re-key the condition
(ESRCH→EPERM) and confirm the row dies; a row that never enters the arm survives that and
looks identical to a passing one. See [[make-a-new-rig-red-on-purpose]] and
[[verdict-from-probe-competence]].
