---
name: negative-control-must-mutate-every-encoding
description: "A negative control that disables ONE site of a doubly-encoded rule can stay GREEN and prove nothing — count the encodings first, mutate them all, and report that you had to"
metadata: 
  node_type: memory
  type: feedback
  originSessionId: f635b37f-9074-4de1-9540-eb96bcd49e42
  modified: 2026-08-04T23:57:43.580Z
---

Disabling the record check in the perch-GC classifier (step 1: `RecordState::Present ⇒
Occupied`) left the negative control — "the sweep declines to reap a LIVE endpoint" —
**green**. The rule was encoded twice: the step-1 read AND the subtree scan that treats an
`info.json` anywhere under a slot as occupancy. Only mutating BOTH reddened it.

**Why:** a single-site mutation on a redundantly-encoded rule measures the OTHER site, not
your tooth. The control then reports "green under mutation", which reads as *the guard is
defended* when it actually means *this control cannot see this guard*. Same family as
[[stacked-defects-mask-each-other]], but the masking is between DEFENCES, not defects, and
the false signal lands on the control rather than on the fix.

**How to apply:** before running a control, grep for every site that could produce the same
verdict (here: two `info.json` reads in one file). If more than one exists, either mutate
them all, or make the control assert a value only the intended site produces. When it takes
N sites to red, SAY SO in the gate report — "a single-site mutation would have looked like a
passing control that proved nothing" is information the gater needs, and it is also the
honest disclosure that your defence-in-depth is real. Kin
[[make-a-new-rig-red-on-purpose]], [[verify-the-subject-not-just-the-measurement]].
