From 50f66ed1d1529a17f0daab8f7dc9e4f59122f33d Mon Sep 17 00:00:00 2001 From: Jonathan Borduas Date: Sat, 22 Aug 2026 02:39:57 +0100 Subject: [PATCH] goals: a catcher binds only over the population its CHANNEL can see -- and a stale tree is self-consistent A boundary condition on the rule directly above it, found by testing that rule rather than by doubting it. CLAUDE.md on origin/main strikes the "No CI" claim, says why, and points at scripts/check-orientation.py as the catcher that re-measures it. That is the strongest shape this document records: a decayed claim, given an event-attached catcher, by an author already burned by it. Run origin/main's check-orientation.py inside a checkout at a163854 and it prints "workflow files present : 0", "un-struck 'no CI' lines: 1", and "claim and world agree: no workflows, claim stands." It passes the refuted claim. The catcher is not broken and did not drift: it counts .github/workflows/ in the tree it was run from, and that tree genuinely has 0 where origin/main has 1. The claim's population is the repository. The measurement's population is the checkout. Those are the same sentence only while the checkout is current, and nothing in the output says which one you hold. The part that makes this hard to notice: a stale checkout is SELF-CONSISTENT. Gate, doctrine, and measured world are all the same age, so every internal check agrees -- and agreement is exactly the signal a reader trusts. The staler the tree, the more coherent it looks. Closure-bar criterion 5 already demands the channel be pinned to the proposition. This is the case that shows why, and it is not the usual one: the channel was not wrong, unavailable, or ambiguous. It was a working tree, which every reader assumes is the repository and silently is not. Not claiming event-attached rules are weak. They still bind 3 of 3 here, and this one would have fired on a current tree. The shape decides whether a rule can bind; the channel decides what it binds over. Two questions, one written down. n = 1, one claim, one gate, one machine, found sideways: I copied a script out of the shared checkout, got 276 lines where origin/main has 1155, and produced an 894-line deletion. Exposure is measured in #205; resulting errors are zero and I am not claiming otherwise. Gates: check-orientation 0, check-goal-conformance 0, check-tools-index 0, gate-selftests 0. Filed by ARCHITECT, session c83ecf77. Refs #205, #29, #272. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01RTX4A8KkC9cRRrt17yzjWQ --- goals/README.md | 61 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/goals/README.md b/goals/README.md index caf5502..9a8d025 100644 --- a/goals/README.md +++ b/goals/README.md @@ -540,6 +540,67 @@ does not move — a design property, not agent behaviour. catchers are why.** ★ **It says the catcher is part of the rule, not a fallback**, and a principle shipped alone has shipped without the half that makes it hold. + #### ⛔ THE CATCHER BINDS ONLY OVER THE POPULATION ITS CHANNEL CAN SEE + + ⚠ **This is a boundary condition on the rule immediately above, found by testing it rather than + by doubting it.** ⇒ **An event-attached catcher can be present, current, correct, and CONFIRM the + claim it was built to refute.** + + **The case.** `CLAUDE.md` on `origin/main` carries a struck line and the reason it was struck: + + ``` + ⛔ ~~No CI.~~ FALSE since 2026-08-20 — CI exists and GATES. + ⇒ scripts/check-orientation.py now re-measures this one. + ``` + + ★ **That is the strongest shape in this document: a decayed claim, given an event-attached + catcher, by an author who had already been burned by it.** ⛔ **Run it in a stale checkout and it + passes the refuted claim:** + + ``` + same tree (a163854), two gate versions + the tree's OWN check-orientation.py exit 0 + origin/main's check-orientation.py "workflow files present : 0" + "un-struck 'no CI' lines: 1" + "⇒ claim and world agree: no workflows, claim stands" + + .github/workflows/ at a163854 0 files + .github/workflows/ at e66aeb4 1 file + ``` + + ⇒ ⛔ **The catcher is not broken and did not drift. It counted `.github/workflows/` in the tree it + was run from, and in THAT tree the claim is TRUE.** + + ★ **THE CLAIM'S POPULATION IS THE REPOSITORY. THE MEASUREMENT'S POPULATION IS THE CHECKOUT.** + ⇒ **They are the same sentence only while the checkout is current, and nothing in the output says + which one you are holding.** + + ⚠ **Why this is not just "pull more often."** ⛔ **A stale checkout is SELF-CONSISTENT.** The gate, + the doctrine it guards, and the world it measures are all the same age, so **every internal check + agrees** — and agreement is the signal a reader trusts. ★ **The staler the tree, the more + coherent it looks.** + + #### ⇒ What this adds to the closure bar + + **Criterion 5 already demands the CHANNEL be pinned to the proposition.** ⚠ **This is the case + that shows WHY, and it is not the usual one:** the channel was not wrong, unavailable, or + ambiguous — **it was a working tree, which every reader assumes is the repository and which + silently is not.** + + > **A catcher that reads the filesystem is measuring ONE CHECKOUT. If the claim is about the + > repository, say the ref, or the catcher answers a smaller question with the bigger question's + > confidence.** + + ⚠ **What this does NOT say:** ⛔ **not that event-attached rules are weak** — they still bind 3 of + 3 here, and this one *would* have fired on a current tree. **It says the shape decides whether a + rule can bind, and the CHANNEL decides what it binds OVER — two separate questions, and only the + first was written down.** + + ⚠ **n = 1, one claim, one gate, one machine, and I found it sideways** — I copied a script out of + the shared checkout, got a 276-line file where `origin/main` has 1155, and produced an 894-line + deletion. **The exposure is measured in #205; the resulting-error count is zero and I am not + claiming otherwise.** *(measured 2026-08-22 at `e66aeb4` vs `a163854`; #205 · #29 · #272.)* + ⚠ **n is 5 + 1, one pane, one day, and the confound is not removable from this data:** the ordering was the author's most RECENT rule as well as the only procedural one. ⛔ **Recency is fully consistent with the result.** ★ **What argues against it: the five failures were recent