Found by the #166 sweep (PR for that card touches five other files). Reported rather than fixed, because the fix the #166 ruling prescribes does not apply cleanly here and the remaining options are palette decisions.
What was measured
Same method as #140/#167: Chromium at native viewBox size, getComputedStyle().fill per text leaf, ground sampled as the median of nine pixels across the glyph box in a second raster with text{visibility:hidden}.
| File |
class |
size |
fill |
ground |
ratio |
floor |
enterprise-ontology-race-open-vs-closed/cover-en.svg |
.accent |
40px w800 |
#e8b04b |
#eff7f3 |
1.794 |
3.0 |
enterprise-ontology-race-open-vs-closed/cover.svg |
.accent |
40px w800 |
#e8b04b |
#eff7f3 |
1.794 |
3.0 |
One node per file: the large ? in the centre of the cover, between the vendor column and the open-definition card. After the #166 PR these are the only two text nodes left under 3:1 anywhere in content/blog/**/*.svg.
Why #166's rule does not settle it
#166's ruling is written for de-emphasised labels — "keep the hue, change the lightness … a de-emphasised label must still read as de-emphasised". This node is the opposite: it is the composition's emphasis mark, in the brand accent gold, and both routes to darkening it break something the ruling explicitly fences off.
- Recolouring the class is out.
.accent is not a text-only class in this file. It also fills the five padlock rects on the vendor chips:
<g transform="translate(360 13)"><rect y="14" width="40" height="32" rx="7" class="accent"/>…
Changing .accent would recolour non-text geometry — a ground/decoration change, which the ruling forbids.
- An inline override on the text splits the accent. The smallest hue-preserving step that clears 3:1 here is
#e8b04b → #bd8218 (L 0.602 → 0.418). But the ? is visually fused with the gold arrow stroke 28px to its right — they read as one glyph pair ? → — and that arrow is a path with stroke="#e8b04b", as are the five padlocks. The result would be two different golds inside one composition, adjacent.
Both renders were looked at at native size to confirm this: the ? does not read as a faint or broken label, it reads as the accent mark it is; the low ratio comes from gold-on-near-white being intrinsically low-contrast, not from anything the cascade or the author got wrong.
If it is taken up
The real options are design calls, not mechanical ones, which is why this is filed rather than swept:
- Leave it. It is decorative-adjacent — the
? carries no information the surrounding text does not, and the aria-label does not depend on it. Arguably WCAG 1.4.3 does not bind a purely decorative glyph.
- Darken the accent gold site-wide, geometry included, so the
?, the arrow and the padlocks stay one colour. #e8b04b appears on dark grounds in enterprise-agent-true-cost, eu-ai-act-runtime-audit and why-ai-agent-pilots-fail-four-layers, where it currently passes comfortably — darkening it would need re-measuring there.
- Put the
? on a ground that carries it (e.g. the same treatment the padlocks get — accent fill with a dark glyph), which is a layout change.
Recording only; unassigned. Numbers are re-measurable with the sweep method described above.
Generated by Claude Code
Found by the #166 sweep (PR for that card touches five other files). Reported rather than fixed, because the fix the #166 ruling prescribes does not apply cleanly here and the remaining options are palette decisions.
What was measured
Same method as #140/#167: Chromium at native
viewBoxsize,getComputedStyle().fillper text leaf, ground sampled as the median of nine pixels across the glyph box in a second raster withtext{visibility:hidden}.enterprise-ontology-race-open-vs-closed/cover-en.svg.accent#e8b04b#eff7f3enterprise-ontology-race-open-vs-closed/cover.svg.accent#e8b04b#eff7f3One node per file: the large
?in the centre of the cover, between the vendor column and the open-definition card. After the #166 PR these are the only two text nodes left under 3:1 anywhere incontent/blog/**/*.svg.Why #166's rule does not settle it
#166's ruling is written for de-emphasised labels — "keep the hue, change the lightness … a de-emphasised label must still read as de-emphasised". This node is the opposite: it is the composition's emphasis mark, in the brand accent gold, and both routes to darkening it break something the ruling explicitly fences off.
.accentis not a text-only class in this file. It also fills the five padlockrects on the vendor chips:<g transform="translate(360 13)"><rect y="14" width="40" height="32" rx="7" class="accent"/>…Changing
.accentwould recolour non-text geometry — a ground/decoration change, which the ruling forbids.#e8b04b→#bd8218(L 0.602 → 0.418). But the?is visually fused with the gold arrow stroke 28px to its right — they read as one glyph pair? →— and that arrow is apathwithstroke="#e8b04b", as are the five padlocks. The result would be two different golds inside one composition, adjacent.Both renders were looked at at native size to confirm this: the
?does not read as a faint or broken label, it reads as the accent mark it is; the low ratio comes from gold-on-near-white being intrinsically low-contrast, not from anything the cascade or the author got wrong.If it is taken up
The real options are design calls, not mechanical ones, which is why this is filed rather than swept:
?carries no information the surrounding text does not, and thearia-labeldoes not depend on it. Arguably WCAG 1.4.3 does not bind a purely decorative glyph.?, the arrow and the padlocks stay one colour.#e8b04bappears on dark grounds inenterprise-agent-true-cost,eu-ai-act-runtime-auditandwhy-ai-agent-pilots-fail-four-layers, where it currently passes comfortably — darkening it would need re-measuring there.?on a ground that carries it (e.g. the same treatment the padlocks get — accent fill with a dark glyph), which is a layout change.Recording only; unassigned. Numbers are re-measurable with the sweep method described above.
Generated by Claude Code