Skip to content

feat(standard): §11 stops restating colour values — v2.03 - #36

Merged
UnbreakableMJ merged 1 commit into
mainfrom
feat/palette-single-source-v2.03
Sep 14, 2026
Merged

UnbreakableMJ merged 1 commit into
mainfrom
feat/palette-single-source-v2.03

Conversation

@UnbreakableMJ

Copy link
Copy Markdown
Contributor

Standard side of v2.03. The Construct side syncs at the same version and date, per the two-repo rule.

The contradiction this resolves

§11 has always named steelbore.toml "the canonical machine-readable source" and told implementors that values are read, never retyped — then printed all 157 of them itself, across eleven @multitable blocks spanning §11.0–§11.5.

The instruction and the document disagreed, and §11.4 settled it in the document's favour:

"Where this document and that file disagree, this document governs and the file is corrected."

That clause wasn't wrong so much as it was the cost of keeping two copies — something had to break the tie, and a specification is the natural winner. This stops keeping two copies.

What changed

Every hex and RGB triple is gone from §11. Each table names the token and the role it plays; the value comes from the file.

Where dropping a value column would have destroyed meaning, the column was converted, not deleted:

-@tab Variant hex          →   @tab Variant token
-@tab @code{#FF8A3D}       →   @tab @strong{Plasma Orange Lift}
-@tab @code{#000027}       →   @tab (unchanged)      # unlifted rows

Seven per-palette Color headers became Token for the same reason. A §8.6 table carrying canvases by hex was converted the same way.

The normative heart: §11.4's tie-break is inverted

The file now governs every value; §11 governs the contract around it — which roles exist, which are mandatory, what the contrast guarantee covers, which palettes are adoptable. The two can no longer disagree about a colour, because only one of them states one. Changing a colour is a single edit rather than an edit plus a hunt for every restatement.

The cost, stated in §11.4 rather than left to be discovered

§11 can no longer be implemented from this document alone. A reader of the PDF, HTML, or Info output gets role names, contracts, and palette membership — but needs steelbore.toml for any actual colour. That is a real reduction in the document's self-sufficiency, accepted deliberately in exchange for values having exactly one definition. §11.4 now says so explicitly, including what the document still uniquely supplies.

Contrast ratios stay — deliberately

A measured ratio and a WCAG threshold are textually identical: 4.5:1 is the AA rule, 15.09:1 is a measurement. Removing one class would have removed the other, taking §11.0.2's matrix with it. 168 ratios preserved.

Verification

The_Steelbore_Standard.texi   hex=0  RGB=0
The_Steelbore_Standard.md     hex=0  RGB=0     (regenerated)
contrast ratios preserved     168
makeinfo --no-split           exit 0
texi2any --html               exit 0

Role names, palette slugs, and surface-alt/steelbore-navywhite references all survive.

Unchanged: every role name, the contrast guarantee, the palette family and its membership, §11.5's non-adoptable fidelity palettes, §11.6's resolution order. No project conforming at v2.02 becomes non-conformant at v2.03.

🤖 Generated with Claude Code

§11 has always named steelbore.toml "the canonical machine-readable
source" and told implementors that values are read, never retyped — then
printed all 157 of them itself, across eleven multitable blocks spanning
§11.0 through §11.5.

The instruction and the document disagreed, and §11.4 resolved that
disagreement in the document's favour: "Where this document and that file
disagree, this document governs and the file is corrected." That clause
was not wrong so much as it was the cost of keeping two copies —
something had to break the tie, and a specification is the natural
winner. The fix is to stop keeping two copies.

Every hex and RGB triple is removed from §11. Each table names the token
and the role it plays; the value comes from the file.

Where dropping a value column would have destroyed meaning, the column
was converted rather than deleted. §11.1.1's "Variant hex" is now
"Variant token" and reads Plasma Orange Lift where it read #FF8A3D, with
unlifted rows saying (unchanged) instead of repeating their base. The
seven per-palette "Color" headers became "Token" for the same reason. A
table in §8.6 carrying canvases by hex was converted the same way.

§11.4's tie-break clause is inverted, and that is the normative heart of
this release: the file governs every value, §11 governs the contract
around it — which roles exist, which are mandatory, what the contrast
guarantee covers, which palettes are adoptable. The two can no longer
disagree about a colour because only one of them states one.

The cost is written into §11.4 rather than left for a reader to discover:
§11 can no longer be implemented from this document alone. A reader of
the PDF, HTML, or Info output gets role names, contracts, and palette
membership, but needs steelbore.toml for any colour. That is a real
reduction in self-sufficiency, accepted in exchange for values having
exactly one definition.

Contrast ratios stay. A measured ratio and a WCAG threshold are
textually identical — 4.5:1 is the AA rule, 15.09:1 is a measurement —
so removing one class would have removed the other, and §11.0.2's matrix
along with it. 168 ratios are preserved.

Unchanged: every role name, the contrast guarantee, the palette family
and its membership, §11.5's non-adoptable fidelity palettes, and §11.6's
resolution order. No project conforming at v2.02 becomes non-conformant
at v2.03.

Verified: makeinfo and texi2any --html both build clean; the tracked .md
is regenerated and carries zero values; role names, slugs, and ratios all
survive. The skill encoding syncs at the same version and date.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9338110cd1

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@documentencoding UTF-8
@documentlanguage en
@settitle The Steelbore Standard 2.02
@settitle The Steelbore Standard 2.03

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Sign this commit before shipping it

The reviewed commit object has no gpgsig header, so it cannot satisfy this repository's non-negotiable requirement that every commit—including assistant-generated commits—be cryptographically signed and show as Verified. Recreate this change as a signed commit before it is submitted or shipped.

AGENTS.md reference: AGENTS.md:L88-L90

Useful? React with 👍 / 👎.

@UnbreakableMJ
UnbreakableMJ merged commit f5a79da into main Sep 14, 2026
2 checks passed
@UnbreakableMJ
UnbreakableMJ deleted the feat/palette-single-source-v2.03 branch September 14, 2026 15:39
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