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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user