Surfaced while implementing #110 (wave 2 of #102).
Wave 2 made unresolvable colours fail validation, but only for Color-typed fields in CssStyle — the ones paint_pass resolves through parse_css_color.
Component-specific colour fields are plain String and go through parse_hex_color's more lenient path, so they are not covered:
Kbd.background_color, Table.header_color, Marquee.color, Notification.accent_color, Badge.dot_color, chart series colours, Glow.color, and the roughly forty other *_color fields the audit counted living outside style.
An unresolvable colour in any of those still reaches the renderer, where it now paints magenta (wave 1) rather than black — loud, but only discovered after rendering.
Fix: route the component-level colour fields through the same validation. Consider whether they should be Color-typed rather than String in the first place, which would make the whole class impossible to get wrong.
Acceptance: an unresolvable colour fails validation wherever it appears, not only inside style.
Surfaced while implementing #110 (wave 2 of #102).
Wave 2 made unresolvable colours fail validation, but only for
Color-typed fields inCssStyle— the onespaint_passresolves throughparse_css_color.Component-specific colour fields are plain
Stringand go throughparse_hex_color's more lenient path, so they are not covered:Kbd.background_color,Table.header_color,Marquee.color,Notification.accent_color,Badge.dot_color, chart series colours,Glow.color, and the roughly forty other*_colorfields the audit counted living outsidestyle.An unresolvable colour in any of those still reaches the renderer, where it now paints magenta (wave 1) rather than black — loud, but only discovered after rendering.
Fix: route the component-level colour fields through the same validation. Consider whether they should be
Color-typed rather thanStringin the first place, which would make the whole class impossible to get wrong.Acceptance: an unresolvable colour fails validation wherever it appears, not only inside
style.