Summary
The Light and Cool Breeze themes ship status colors that fail the marker contrast target against their own page background: WarningColor at 2.09:1 (Light) and 2.47:1 (Cool Breeze), InfoColor at 2.32:1 (Light) — under the 3:1 WCAG floor for graphical markers, let alone the 4.5:1 for text. Measured by the #3577 arm-B lane while wiring the per-row contrast readout; not changed there because it is a palette-design call with a Dashboard value-parity consequence, and the lane's scope was the mechanism, not the palette.
Why it matters now
#3606 puts a live contrast readout beside every palette color in Settings. On a stock Light theme, an operator who opens that panel without touching anything will see two of the twelve rows already amber/red — the product telling on its own defaults. That is the honest reading, and it is also a first-impression problem: the readout should find the shipped palette green.
Fix shape
Re-derive the two colors per theme to clear 3:1 against BackgroundColor (and check WarningColor against BackgroundLightColor, the card surface, where status text also lands) while keeping each theme's character — Light's warning stays an amber, not a brown. Ratio before/after beside each changed brush, tagged with this issue, the #3589 convention. Mirror the values into the deprecated Dashboard's Light theme: its ThemeParityTests pin the palette values across apps and will fail otherwise (that pin is the reason this was not folded into #3606). Dark is unaffected (its status colors measured 6.0–13.3:1 against rows in #3589's sweep).
Related: #3577 (arms A and B), #3589, #3606.
Summary
The Light and Cool Breeze themes ship status colors that fail the marker contrast target against their own page background:
WarningColorat 2.09:1 (Light) and 2.47:1 (Cool Breeze),InfoColorat 2.32:1 (Light) — under the 3:1 WCAG floor for graphical markers, let alone the 4.5:1 for text. Measured by the #3577 arm-B lane while wiring the per-row contrast readout; not changed there because it is a palette-design call with a Dashboard value-parity consequence, and the lane's scope was the mechanism, not the palette.Why it matters now
#3606 puts a live contrast readout beside every palette color in Settings. On a stock Light theme, an operator who opens that panel without touching anything will see two of the twelve rows already amber/red — the product telling on its own defaults. That is the honest reading, and it is also a first-impression problem: the readout should find the shipped palette green.
Fix shape
Re-derive the two colors per theme to clear 3:1 against
BackgroundColor(and checkWarningColoragainstBackgroundLightColor, the card surface, where status text also lands) while keeping each theme's character — Light's warning stays an amber, not a brown. Ratio before/after beside each changed brush, tagged with this issue, the #3589 convention. Mirror the values into the deprecated Dashboard's Light theme: itsThemeParityTestspin the palette values across apps and will fail otherwise (that pin is the reason this was not folded into #3606). Dark is unaffected (its status colors measured 6.0–13.3:1 against rows in #3589's sweep).Related: #3577 (arms A and B), #3589, #3606.