Say what is true about the design system, and recover the fix that never landed - #42
Merged
Conversation
…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.
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.
Two commits: a recovery, and the rewrite the recovery cleared the way for.
1. Recovering plan 4's final fix wave, which never reached
mainThe 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 mergemerges the remote branch, so all three sites merged the pre-fix stateand the fix sat in a local branch nobody would look at again.
What was missing from
main:fencesmeta-assertion — without it, deleting onefences: [...]line fromPAGESturnsthe 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.
CLAUDE.md— the word a version bump and sixteen page rewriteswere spent correcting.
Cherry-picked onto
main, unchanged.npm run verifyandnpm run design:checkpass in all threesites.
2. The conventions file described a discipline four fences no longer follow
CLAUDE.mdoverrides default behaviour by construction — first thing read, last thing checked.Since the design package landed it has said:
That instruction now does nothing. The block is generated; the next
npm run designoverwritesthe 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:
robertblust/design, bump both version copies, tag, then sync heredesign:check, in CI, before the browser suite — the guarantee the old habit-with-a-tripwire never wasTwo 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:checkwith a one-linediff and neither is a build fix: removing a fence from a page's
fencesarray, or a group fromdesign.config.json. Each means this site has decided to own that block and diverge.No rendering changes. No fenced content touched.