docs(901): the respelling-immunity thesis is bounded by the pin's REACH, and the neighbour doc declines the rule it was cited for

Two prose overclaims in the new record, both of the shape the record itself
exists to police.

The thesis sentence generalised over the two worked pins and held for one.
`PINNED_VITE_CONFIG` compares a whole file, so no respelling escapes it; the
hook-preamble pin compares a SELECTION (`test_hook_fire_log.py:161` keeps only
the lines containing the literal `ETV_HOOK_FIRE_LIB` that are not comment-led),
so it must recognise a line before it can reject it — which is exactly the
residual `mechanics:` documents four lines later. Bound the immunity to what a
pin COMPARES and name the leftover exposure as the selector's reach.

The neighbour citation claimed `docs/defect-shapes-773.md` §4 "argues the
general form". §4 is a ranked table of detectors A-G — none of them this rule,
and A is already assigned to `guard-derives-population-from-source` by the
preceding clause. The doc's nearest class is `string-predicate churn` in the
§3.6 partition, marked `no detector proposed`, and §3.7 argues the class away as
a cross-cutting property (2 of 33 round-churn records). Only §4's closing
meta-finding — class-level rules beat one record per instance — supports
anything here, and it supports the FORM, not the content. Say that.

Refs #901

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015QqCpYFsKgnAnx6jVwrKiV
This commit is contained in:
2026-09-05 15:59:16 +02:00
co-authored by Claude Fable 5.1
parent c67b33cdcd
commit 0977f04174
@@ -17,8 +17,10 @@ someone stops it. Measured 2026-08-30 across two unrelated subjects: a guard par
decide whether a command runs the SPA suite was wrong **nine** ways from one mechanism (#887), its
replacement — a partial match of `web/vite.config.ts`**seven** further ways, and a lexical rule
over a hook preamble **five** (#891). Every fix was locally correct and none of the three sequences
converged. All three ended in the same move, and a pin has never been defeated by a respelling
because it does not have to RECOGNISE one in order to reject it.
converged. All three ended in the same move: a pin cannot be defeated by a respelling of what it
COMPARES, since it need not RECOGNISE one in order to reject it. What stays exposed is whatever it
does not compare — nothing for a whole-file pin, and exactly the reach of the SELECTOR for a pin
scoped by one, which is why `mechanics:` states the hook pin's.
**Why the pin is the DEFAULT and not the remedy — the first thing #901 left open.** The rejected
alternative is the tempting one: write the shape-matcher, and pin only once it has been defeated. It
@@ -63,8 +65,11 @@ their own records — `ci.image-build-delegates-the-spa-suite` and
`testing.guard-derives-population-from-source` answers the case where the authoritative source is
MISSING (create one, never approximate it with a predicate over text) and this one the case where
the artifact IS present and authoritative and what is approximated is its GRAMMAR.
`docs/defect-shapes-773.md` §4 argues the general form; what was missing is a rule resolvable BY
TOPIC, since `docs/guard-inventory.md` carries its precedent per incident, findable only inside one.
`docs/defect-shapes-773.md` does NOT carry this rule: its §3.6 partition lists the nearest class,
string-predicate churn, as `no detector proposed`, and §3.7 argues that class away as a cross-cutting
property. Only §4's closing meta-finding supports the FORM — a class-level rule beats one record per
instance — so the rule itself is new here, and resolvable BY TOPIC, where `docs/guard-inventory.md`
carries its precedent per incident, findable only inside one.
**What this does not cover.** Predicates over structured input a real parser produces — an AST, the
git index, parsed workflow YAML consumed as data — are not approximations and keep their shape