test(conventions): templated-fence ratchet — check 13 lands D4 (7c)#501
Merged
Conversation
This was referenced Jul 22, 2026
Merged
leeovery
force-pushed
the
feat/render-surface-swaps
branch
from
July 22, 2026 14:25
58cf8d1 to
1b55dcf
Compare
leeovery
force-pushed
the
feat/render-ratchet-lint
branch
from
July 22, 2026 14:25
0a82666 to
5ab7812
Compare
leeovery
force-pushed
the
feat/render-surface-swaps
branch
from
July 22, 2026 14:25
1b55dcf to
468a2b4
Compare
leeovery
force-pushed
the
feat/render-ratchet-lint
branch
from
July 22, 2026 14:25
5ab7812 to
38e858f
Compare
leeovery
force-pushed
the
feat/render-surface-swaps
branch
from
July 22, 2026 14:26
468a2b4 to
afb26b6
Compare
leeovery
force-pushed
the
feat/render-ratchet-lint
branch
from
July 22, 2026 14:26
38e858f to
f93852c
Compare
leeovery
force-pushed
the
feat/render-surface-swaps
branch
from
July 22, 2026 14:26
afb26b6 to
ac7f70a
Compare
leeovery
force-pushed
the
feat/render-ratchet-lint
branch
from
July 22, 2026 14:26
f93852c to
be4e738
Compare
leeovery
force-pushed
the
feat/render-surface-swaps
branch
from
July 22, 2026 14:26
ac7f70a to
0fe7d67
Compare
leeovery
force-pushed
the
feat/render-ratchet-lint
branch
from
July 22, 2026 14:27
be4e738 to
b85c1a2
Compare
leeovery
force-pushed
the
feat/render-surface-swaps
branch
from
July 22, 2026 14:27
0fe7d67 to
e95aa4c
Compare
leeovery
force-pushed
the
feat/render-ratchet-lint
branch
from
July 22, 2026 14:27
b85c1a2 to
d5c6c96
Compare
leeovery
force-pushed
the
feat/render-surface-swaps
branch
from
July 22, 2026 14:27
e95aa4c to
4bb21dd
Compare
leeovery
force-pushed
the
feat/render-ratchet-lint
branch
from
July 22, 2026 14:27
d5c6c96 to
6126b59
Compare
leeovery
force-pushed
the
feat/render-surface-swaps
branch
from
July 22, 2026 14:27
4bb21dd to
57c2603
Compare
leeovery
force-pushed
the
feat/render-ratchet-lint
branch
from
July 22, 2026 14:27
6126b59 to
9cc19df
Compare
A templated menu/display fence in prose is a violation: state-derivable output renders from the engine. The 174 remaining sites (sanctioned judgment, artefact echoes, chrome one-liners, and the not-yet-converted families) are pinned per file; any drift fails in both directions — a new templated fence must become an engine surface (or be pinned deliberately, with the PR saying why), and a converted site must shrink its pin. The ratchet only tightens. Markers and signposts are chrome, out of scope; static fences are always fine. Scanner mirrors the render-surfaces census exactly. D3 decided (a): the 83 static menus stay prose — nothing to derive, nothing to misfill, grammar already under checks 3–5. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ardened Six-slice flow-integrity review over the whole stack (two mechanical traces + five agent slices, findings adversarially verified). Fixes: - Ratchet check 13 had two holes: the trigger regex missed the ` ```diff ` instruction form 6c introduced, and the placeholder classifier missed digit-first / slash / comma placeholders — both broadened; two genuinely-templated sites the narrow forms hid are now counted and pinned (analysis-checkpoints, spec-construction). - resume-gate plan variant keeps the phase anchor when only the phase is known (post-advance interrupt: phase set, task null) instead of dropping the whole parenthetical. - promoted_to interpolation guarded like its superseded_by sibling at both blocker sites (corrupt state degrades to "" — never "undefined"). - pivotSections drops the "above the confirmation" wording — pivot emits no confirmation. - Orphaned pre-variant JSDoc block removed (documented a string const as a function). - Coverage: --own/--paths through the CLI boolean-flag mechanism (previously untested argv path), the full pipeline-banner matrix (only Feature was pinned), the inverse guard that start/reopen/ supersede append no sections, the phase-only plan parenthetical, and the diff-form-instruction ratchet fixture. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…n sites pinned The completeness sweep found rendering instructions nested under list items (three sites) that the column-0 anchor hid from the census and the ratchet — among them the topic-supersede warning fence already banked for 7d. Trigger now allows leading whitespace; the three files re-pinned at their true counts. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
leeovery
force-pushed
the
feat/render-ratchet-lint
branch
from
July 22, 2026 14:31
9cc19df to
7c9915e
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stage 7c — the closing PR of the render-surfaces stack (design log: #489; base: #500). D3 and D4 decided and landed.
D4 — the ratchet lint (check 13)
"A templated menu/display fence in prose is a violation" — now mechanical. The census scanner (rendering-instruction line → following fence; markers/signposts excluded as chrome; templated = placeholder syntax or
@if/@foreach) counts per file and compares againstRATCHET_PINS, the 174 remaining sites across 81 files. Drift fails both ways:So no new templated fence can land silently, every conversion shows up as a shrinking diff, and the pin map always mirrors reality. Zero-false-positive doctrine holds: counts, not line numbers, so unrelated edits never trip it.
D3 — static menus stay prose
Decided (a): the 83 static menus (conclude gates, y/n confirms, mode choices) have none of the failure class the programme kills — no placeholder to misfill, no state to drift from — and their grammar is already under checks 3–5. Converting them would be ~30 catalogue entries of fixed text: surfaces earned by nothing.
Test plan
npm test— 1528/1528 (lint suite 27/27). Typecheck clean.🤖 Generated with Claude Code
Stack