docs: un-swap the accent colours, which failed both real pairings - #29
Merged
Conversation
In Mintlify's `colors` block the key names the colour, not the mode: `light` is the accent used *in dark mode*, `dark` the one used in light mode. They were assigned the other way round, so both pairings that actually render failed contrast — the brown accent on the near-black ground at 2.45:1, the tan one on the near-white ground at 1.99:1. Swapping them gives 7.82:1 and 6.34:1, both AA, confirmed by `mint a11y`. The naming is counter-intuitive enough that the same mistake already bit the favicon during the SEO pass, so docs/README.md now states the rule and warns against "fixing" it by matching key to mode. That note also records why `mint a11y` stays out of the CI gate: it measures `dark` against the dark background as well, a pairing that never renders, so it cannot reach exit 0 under any assignment. Both gated commands — `mint validate` and `mint broken-links` — pass. Refs #27 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0122JtRC4Dbptgefu7QR8gvZ
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.
What this changes
Swaps
colors.lightandcolors.darkindocs/docs.json. In Mintlify'scolorsblock the key names the colour, not the mode:lightis the accentused in dark mode,
darkthe one used in light mode. They were assigned theother way round, so both pairings that actually render failed WCAG contrast.
#1B1A17)#8B4513— 2.45:1 FAIL#D4A574— 7.82:1 AAA#F3F2EE)#D4A574— 1.99:1 FAIL#8B4513— 6.34:1 AAdocs/README.mdgains a short note stating the rule, because the inversion iscounter-intuitive enough that matching key to mode looks like the fix.
Refs #27 — this is item 1 of the two follow-ups that issue was left open for.
Why this way
The palette itself is not in question: both hexes stay, only the assignment
changes. Choosing new colours would have been a bigger change than the defect
warranted, and the brand brown is already
primary.The README note exists because this is the second time this naming has bitten
the repo — the same inversion hit the favicon during the SEO pass. Without it
the next person to read
light: #D4A574against a light-mode screenshot hasevery reason to "correct" it back.
It also records why
mint a11yis not in the CI gate landed in #28, whichwould otherwise look like an oversight: the command additionally measures
darkagainst the dark background — a pairing that never renders, sincedarkis the light-mode accent — so it reports FAIL and exits 1 under anyassignment. Gating it would mean gating on a check that cannot pass.
How it was verified
Computed the four ratios independently first (a WCAG 2.x relative-luminance
script), then confirmed against the tool.
mint a11yon this branch:Both real pairings went from FAIL to PASS. The residual FAIL is the phantom
cross-check described above and is unchanged by this PR.
Both gated commands pass locally on the pinned CLI (
mint@4.2.876), which isthe same version CI installs:
The
Docs sitejob from #28 is the regression guard for the JSON stayingvalid; nothing in CI can catch the assignment being wrong again, which is what
the README note is for.
Checks
Docs-only change — no Rust, MCP server, or npm package files are touched, so
the Rust and package gates are not applicable and were not run. CI runs them
regardless.
cargo fmt --all --checkcargo clippy --workspace --all-targets --all-features -- -D warningscargo test --workspace --all-featurescargo check -p ntl-core --target wasm32-unknown-unknown --no-default-featuresRUSTDOCFLAGS="-D warnings" cargo doc --workspace --no-deps --all-featuresmcp/ntl-postgres-mcp-server: not touchednpm/ntl-cli: not touchedProtocol impact
Presentation only. Nothing in
spec/is read or written by this.Security impact
spec/threat-modelis weakened by this🤖 Generated with Claude Code
https://claude.ai/code/session_0122JtRC4Dbptgefu7QR8gvZ
Generated by Claude Code