From ac7d426d4de1a4e4cf7bd4cf4f5d1bae1ebda5a1 Mon Sep 17 00:00:00 2001 From: "Voight-Kampff (bot)" <151556158+sunholo-voight-kampff@users.noreply.github.com> Date: Mon, 3 Aug 2026 15:26:31 +0200 Subject: [PATCH] =?UTF-8?q?docs(skills):=20fix=20iter-134's=20own=20Gate-4?= =?UTF-8?q?=20control=20=E2=80=94=20a=20known-ABSENT=20literal=20poisons?= =?UTF-8?q?=20itself=20in=20a=20self-describing=20file?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Same iteration, same edit, corrected by running it. Iteration 134's Gate-5 edit told Gate 4 to pair the charter cheap tell with two controls: a known-present `ITERATION ` and a known-absent `ITERATION 999`. Verifying the landed record, the known-absent control returned **1**, not 0. Cause: the STATUS stamp iteration 134 had just written *documents the control*, so the string `ITERATION 999` is now in the charter permanently. The charter is a file the loop writes about itself, so any literal named as "known-absent" stops being absent the moment a record mentions it — and unlike the case bug it was added to fix, this one degrades silently in the safe-looking direction: the control reads as firing while proving nothing. Fix: keep the known-PRESENT control, which is the one that actually detects the failure mode (a broken instrument reads 0 on a healthy charter). Drop the known-absent literal, and where a structural second check is wanted, assert the rotation invariant `grep -c "^## STATUS 2026" == 3`, which is anchored to line-start and cannot be tripped by prose. Saved in the MAIN checkout first (same inode via the ~/.claude symlink, so it is live for both missions now) and mirrored here so origin matches — no drift. Co-Authored-By: Claude Opus 4.8 --- .claude/skills/mission-control/SKILL.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/.claude/skills/mission-control/SKILL.md b/.claude/skills/mission-control/SKILL.md index 141d48a6c..1360b0736 100644 --- a/.claude/skills/mission-control/SKILL.md +++ b/.claude/skills/mission-control/SKILL.md @@ -968,9 +968,19 @@ a charter that was byte-identical to origin. This is rule 3a's trap wearing THIS and it is the worst place for it: a broken tell and a genuinely stale charter produce the identical output, so the failure routes a healthy iteration down the stale-copy path — or, in the other direction, teaches you to distrust a tell you will need for real. Run it as -`grep -c "ITERATION "` **alongside two controls in the same breath**: a known-present one -(`ITERATION `, must be ≥1) and a known-absent one (`ITERATION 999`, must be 0). A `0` on the -known-present control means your instrument is broken, not that the charter is stale. +`grep -c "ITERATION "` **alongside a known-present control in the same breath** +(`ITERATION `, must be ≥1). A `0` on the control means your instrument is broken, not that +the charter is stale — that is the failure mode here, and the known-present control is the one +that catches it. + +**Do NOT add a known-absent literal as a second control — in a file the loop WRITES ABOUT ITSELF, +the absent token does not stay absent.** Iteration 134 shipped `ITERATION 999` as its +known-absent control and then measured it coming back **1** within the same iteration: the STATUS +stamp it had just written *documents the control*, so the literal is now in the charter forever. +Any self-describing file poisons this class of control the moment a record mentions it. Where you +want a structural second check, assert the rotation invariant instead — +`grep -c "^## STATUS 2026"` must equal **3** — which is anchored to line-start and cannot be +tripped by prose. **THE STATUS ROTATION IS THE MOST DANGEROUS EDIT THIS LOOP MAKES — SCRIPT IT WITH A LINE-COUNT ASSERTION, NEVER A BARE `## `-HEADER SCAN** (added 2026-08-01 iteration 127; third failure of this