Skip to content

Say what is true about the design system, and recover the fix that never landed - #42

Merged
robertblust merged 2 commits into
mainfrom
conventions
Aug 31, 2026
Merged

Say what is true about the design system, and recover the fix that never landed#42
robertblust merged 2 commits into
mainfrom
conventions

Conversation

@robertblust

Copy link
Copy Markdown
Owner

Two commits: a recovery, and the rewrite the recovery cleared the way for.

1. Recovering plan 4's final fix wave, which never reached main

The final review of plan 4 produced three findings. They were fixed, re-reviewed, and verdicted
ADDRESSED — and then the commit was never pushed, because the instruction I gave the implementer
said not to. gh pr merge merges the remote branch, so all three sites merged the pre-fix state
and the fix sat in a local branch nobody would look at again.

What was missing from main:

  • the fences meta-assertion — without it, deleting one fences: [...] line from PAGES turns
    the check off for that page and the suite still prints ✓. That is the hole the check exists to
    close, and it was open on all three sites.
  • "fifteen pages" → "sixteen" in CLAUDE.md — the word a version bump and sixteen page rewrites
    were spent correcting.

Cherry-picked onto main, unchanged. npm run verify and npm run design:check pass in all three
sites.

2. The conventions file described a discipline four fences no longer follow

CLAUDE.md overrides default behaviour by construction — first thing read, last thing checked.
Since the design package landed it has said:

Edit the block, run npm run verify … Bumping vN means bumping it in all three repositories
and running all three suites.

That instruction now does nothing. The block is generated; the next npm run design overwrites
the edit and nothing warns you. Not a missing note — a confidently wrong one, in the file whose job
is to be trusted.

The rewrite says what is true:

which blocks the package owns named by their fence markers, so they can be recognised on the page
what editing one in place does nothing, silently — stated first, because it is what someone is about to do
how to actually change one edit in robertblust/design, bump both version copies, tag, then sync here
why the tag and never a SHA Dependabot's version detection rejects a SHA and the site never learns a release happened
what catches drift now design:check, in CI, before the browser suite — the guarantee the old habit-with-a-tripwire never was

Two things stay hand-maintained and now say so: the deck footer, still a versioned copy bumped
across all three repositories, and the <head> contract, which has no fence at all.

And the two escape hatches are written down, because both clear a red design:check with a one-line
diff and neither is a build fix: removing a fence from a page's fences array, or a group from
design.config.json. Each means this site has decided to own that block and diverge.

No rendering changes. No fenced content touched.

…es loophole

- CLAUDE.md: header contract fence is byte-identical on sixteen pages (6+6+4
  across the three repositories), not fifteen — the count Task 6 fixed in one
  of four places while leaving this one wrong.
- verify/check.mjs: add the missing third meta-assertion. seo and tokenVersion
  each had one; fences did not, so deleting `fences: [...]` from a page's spec
  (or adding a page to PAGES without it) turned the fence contract off for that
  page with no output change. Proved it fails by deleting `/model/`'s fences
  and watching verify name it before restoring.

PR #40's body and the untracked plan document are corrected separately: the
`.brand svg{color:var(--c-mid)}` edit never fixed a rendering defect on
blust.ch — this site's mark fills `.plate`/`.rb` directly and never reads
`currentColor`, so the rule is inert here and only load-bearing on
companygraph.io/guestgraph.io's stroke-based marks.
CLAUDE.md overrides default behaviour by construction, so it is the first
thing read and the last thing checked. Since the design package landed it
has told anyone who read it to edit a fenced block in place, run the suite,
and bump the version marker in all three repositories.

That instruction now does nothing. The block is generated; the next
`npm run design` overwrites the edit, and nothing warns you. It is the worst
shape a note can take here — not missing, but confidently wrong, in the file
whose whole job is to be trusted.

Rewritten to say what is true: which blocks the package owns, that editing
one in place is silently discarded, the three steps that actually change one
(edit in the package, tag a release, sync here), and that `design:check`
runs in CI so drift goes red without anyone going looking — the guarantee
the old habit-with-a-tripwire never was.

Two things stay hand-maintained and say so: the deck footer, which is still
a versioned copy bumped in all three repositories, and the head contract,
which has no fence at all.

Also written down: the two escape hatches. Removing a fence from a page's
`fences` array, or a group from design.config.json, each clears a red
`design:check` with a one-line diff. Both are a decision to own a block and
diverge, not a build fix.
@robertblust
robertblust merged commit ffc43b6 into main Aug 31, 2026
1 check passed
@robertblust
robertblust deleted the conventions branch August 31, 2026 23:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant