feat(spelwork): revise light severity values for colour-vision separation (#173) #230

Merged
peterswimm merged 1 commit from feat/173-severity-light-values into main 2026-10-26 14:40:37 +00:00
Member

Refs #173. Does not close it. Peter approved the proposal in the #173 comment ("Sounds good lets do it").

Scope

Revises three light severity values. This resolves the light-theme severity lightness-order and colour-vision finding from #173. Slow and broken collapsed under deuteranopia (simulated ΔE00 2.0) because fine, slow and broken had almost the same lightness.

State Token Before After
slow color.accent.warning #CD4D0B #B43A01
broken color.accent.error #DC2626 #AA0110
very serious color.accent.critical #960157 #84014C
  • Dark values are unchanged. Fine (#12883E) and stale (#706052) are unchanged. No token is added.
  • Brand/UDG/dtcg/color.json: the three light values.
  • udg/products/wp-themes/toilville-fse/styles/toilville.json: kept by hand. accent-warning and accent-error updated to match. It has no accent-critical entry.
  • Brand/specs/spelwork/spelwork-dashboard-design-part1.md: §3 table, §3 lightness-order section (now resolved), §1 colour-vision section and the open question.
  • Brand/specs/spelwork/spelwork-dashboard-design-part2.md: three statements that became stale (decision 1, item 2, gap table row 1).
  • dist/: regenerated, 19 files.

Testing

  • All 13 check commands pass. Each justfile command was run directly because just is not installed on this machine.
  • python3 -m pytest generator/tests/: 400 passed, 20 skipped.
  • Light ladder: fine 49.6, slow 42.4, broken 35.2, very serious 28.0 (L*). Each step is about 7.1 to 7.2 L*.
  • Worst simulated severity pair: ΔE00 2.0 before, 6.3 after. Slow/broken (6.3) and fine/slow (9.4) stay weak, because orange and red are close in hue.
  • White text on every light fill passes AA (lowest 4.55:1). Contrast on bg.surface: slow 5.92:1, broken 7.72:1, very serious 10.05:1.

Impact Statement

  • Existing features: the light severity colours get darker. Slow loses 7.5 L*, broken 12.7 and very serious 4.2. This is most visible in charts.
  • Public APIs / contracts: CSS values change for --warning, --error and the critical variable. Names do not change.
  • Schemas: none.
  • Data / artifacts: dist/toilville and dist/wp-themes (18 files) are regenerated. dist/assets/doc-safe/light/wireframe.fmo-graph.svg changes through accent.error: the "Deal-breaking rubric bounds" box and label go from #DC2626 to #AA0110. This is the expected recolour and the only change in that file.
  • Integrations: toilville and wp-themes only. Rituals and blocks have their own palettes. SPELWork's skin emits no accent.* tokens.
  • Mappings: none. wcag.py pairs are unchanged and pass.
  • Backward compatibility: three existing light values change.

Docs

Part 1 and the three stale Part 2 references are updated. The three Part 2 PNG figures predate #225 and #226 and are not redrawn.

Remaining review points

  1. Tradeoff: the revised colours are darker and heavier. Chroma is already near the sRGB limit at these lightness values, so brighter colours would give the separation back.
  2. Dark broken / old still collapses under protanopia (ΔE 4.6). It is not part of this PR.
  3. The #173 issue text is not changed here.
Refs #173. Does not close it. Peter approved the proposal in the #173 comment ("Sounds good lets do it"). ## Scope Revises three light severity values. This resolves the light-theme severity lightness-order and colour-vision finding from #173. Slow and broken collapsed under deuteranopia (simulated ΔE00 2.0) because fine, slow and broken had almost the same lightness. | State | Token | Before | After | |---|---|---|---| | slow | `color.accent.warning` | `#CD4D0B` | `#B43A01` | | broken | `color.accent.error` | `#DC2626` | `#AA0110` | | very serious | `color.accent.critical` | `#960157` | `#84014C` | - Dark values are unchanged. Fine (`#12883E`) and stale (`#706052`) are unchanged. No token is added. - `Brand/UDG/dtcg/color.json`: the three light values. - `udg/products/wp-themes/toilville-fse/styles/toilville.json`: kept by hand. `accent-warning` and `accent-error` updated to match. It has no `accent-critical` entry. - `Brand/specs/spelwork/spelwork-dashboard-design-part1.md`: §3 table, §3 lightness-order section (now resolved), §1 colour-vision section and the open question. - `Brand/specs/spelwork/spelwork-dashboard-design-part2.md`: three statements that became stale (decision 1, item 2, gap table row 1). - `dist/`: regenerated, 19 files. ## Testing - All 13 check commands pass. Each `justfile` command was run directly because `just` is not installed on this machine. - `python3 -m pytest generator/tests/`: 400 passed, 20 skipped. - Light ladder: fine 49.6, slow 42.4, broken 35.2, very serious 28.0 (L\*). Each step is about 7.1 to 7.2 L\*. - Worst simulated severity pair: ΔE00 2.0 before, 6.3 after. Slow/broken (6.3) and fine/slow (9.4) stay weak, because orange and red are close in hue. - White text on every light fill passes AA (lowest 4.55:1). Contrast on `bg.surface`: slow 5.92:1, broken 7.72:1, very serious 10.05:1. ## Impact Statement - Existing features: the light severity colours get darker. Slow loses 7.5 L\*, broken 12.7 and very serious 4.2. This is most visible in charts. - Public APIs / contracts: CSS values change for `--warning`, `--error` and the critical variable. Names do not change. - Schemas: none. - Data / artifacts: `dist/toilville` and `dist/wp-themes` (18 files) are regenerated. `dist/assets/doc-safe/light/wireframe.fmo-graph.svg` changes through `accent.error`: the "Deal-breaking rubric bounds" box and label go from `#DC2626` to `#AA0110`. This is the expected recolour and the only change in that file. - Integrations: `toilville` and `wp-themes` only. Rituals and `blocks` have their own palettes. SPELWork's skin emits no `accent.*` tokens. - Mappings: none. `wcag.py` pairs are unchanged and pass. - Backward compatibility: three existing light values change. ## Docs Part 1 and the three stale Part 2 references are updated. The three Part 2 PNG figures predate #225 and #226 and are not redrawn. ## Remaining review points 1. **Tradeoff:** the revised colours are darker and heavier. Chroma is already near the sRGB limit at these lightness values, so brighter colours would give the separation back. 2. **Dark broken / old** still collapses under protanopia (ΔE 4.6). It is not part of this PR. 3. **The #173 issue text** is not changed here.
feat(spelwork): revise light severity values for colour-vision separation (#173)
All checks were successful
PR policy check / policy-gate (pull_request) Successful in 1s
Test Generator / lint-workflows (pull_request) Successful in 44s
Security Scans / Trivy filesystem scan (pull_request) Successful in 53s
Security Scans / Gitleaks secret scan (pull_request) Successful in 52s
UDG dist drift gate / dist/ matches dtcg + udg sources (pull_request) Successful in 21s
Test Generator / lint-prose (pull_request) Successful in 31s
Test Generator / test (pull_request) Successful in 1m18s
Block Validation / validate (pull_request) Successful in 1m30s
Copy coverage / Design copy reaching rendered HTML (pull_request) Successful in 41s
677d033c48
Light color.accent.warning #CD4D0B -> #B43A01, color.accent.error
#DC2626 -> #AA0110, color.accent.critical #960157 -> #84014C.
Dark values, fine and stale are unchanged.

The light ladder now steps down in lightness (L* 49.6, 42.4, 35.2, 28.0).
No tested severity pair collapses under simulated colour-vision deficiency.

Updates Part 1 section 3 and section 1, three stale Part 2 references,
the hand-kept wp-themes toilville.json, and regenerated dist/.

Refs #173
peterswimm deleted branch feat/173-severity-light-values 2026-10-26 14:40:38 +00:00
Sign in to join this conversation.
No description provided.