Chuck and Claude Opus 5
8e6d7c280f
test(element-style): cover the stateless element_color clamp path ( #576 )
...
#569 fixed _normalize_color and #572 covered the resolver path. That test's own
docstring notes the resolver "normalizes colour separately from element_color",
and the other path had no test: the stateless element_color(), which
src.common.sports_card delegates to and which every one of the nine scoreboard
plugins takes for each per-element colour it draws.
That is the path that regressed. element_color() moved here with the per-element
customization framework, the coercion rejected out-of-range components where the
reader it replaced clamped them, and a rejection reads as "not configured" -- so
one component over 255 painted the element white while the user's colour sat in
their config. Every scoreboard's test_element_text_colors.py failed on it, and
it took two plugin PRs red on CI to surface.
Six cases: clamping, in-range untouched, hex, unparseable fallback, missing
element, and agreement with sports_card.coerce_rgb. The last is the point --
the two shared readers disagreed about the same value, so this asserts against
coerce_rgb directly rather than restating the arithmetic, and any future move
of element_color has to keep them consistent.
Verified by mutation: restoring the rejecting coercion fails two of the six,
alongside the resolver test from #572 .
Tests only; no source change.
Claude-Session: https://claude.ai/code/session_014RRtqXDCnvnY6EQwhT5CV9
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-09-14 13:27:10 -04:00
..
2026-09-13 11:53:50 -04:00
2026-09-14 12:48:36 -04:00
2026-08-07 10:17:30 -04:00
2026-09-14 13:04:11 -04:00
2026-03-20 15:06:58 -04:00
2026-08-21 11:16:52 -04:00
2026-09-12 16:13:38 -04:00
2026-07-12 10:38:52 -04:00
2026-07-12 10:38:52 -04:00
2026-05-24 09:38:15 -04:00
2026-08-07 16:17:11 -04:00
2026-08-21 11:16:52 -04:00
2026-09-08 08:34:52 -04:00
2026-09-11 10:07:38 -04:00
2026-08-21 11:16:52 -04:00
2026-08-23 11:44:23 -04:00
2026-09-11 10:07:38 -04:00
2026-09-11 10:07:38 -04:00
2026-08-21 11:16:52 -04:00
2026-08-21 11:16:52 -04:00
2026-09-11 10:07:38 -04:00
2026-09-11 10:07:38 -04:00
2026-09-14 12:40:41 -04:00
2026-07-14 08:08:51 -04:00
2026-05-24 09:38:15 -04:00
2026-08-26 10:03:43 -04:00
2026-09-01 09:54:04 -04:00
2026-08-07 13:02:59 -04:00
2026-08-11 16:10:56 -04:00
2026-08-07 16:17:11 -04:00
2026-09-13 11:53:50 -04:00
2026-08-12 08:42:56 -04:00
2026-08-19 12:28:22 -04:00
2026-09-07 13:37:54 -04:00
2026-08-12 08:40:07 -04:00
2026-08-11 14:14:25 -04:00
2026-08-19 17:40:52 -04:00
2026-09-14 09:42:24 -04:00
2026-08-07 10:17:30 -04:00
2026-08-07 16:17:11 -04:00
2026-07-14 08:49:43 -04:00
2026-09-11 10:07:38 -04:00
2026-08-07 16:17:11 -04:00
2026-08-06 14:04:23 -04:00
2026-05-15 10:19:55 -04:00
2026-05-15 10:19:55 -04:00
2026-08-04 13:46:28 -04:00
2026-09-03 16:06:40 -04:00
2026-05-24 09:38:15 -04:00
2026-09-07 15:55:46 -04:00
2026-06-01 11:58:21 -04:00
2026-08-23 11:43:39 -04:00
2026-08-07 16:17:11 -04:00
2026-08-07 10:17:30 -04:00
2026-08-07 16:17:11 -04:00
2026-09-12 16:13:38 -04:00
2026-09-07 13:37:54 -04:00
2026-08-07 16:17:11 -04:00
2026-08-12 09:40:48 -04:00
2026-08-06 14:04:23 -04:00
2026-08-07 16:17:11 -04:00
2026-09-14 13:27:10 -04:00
2026-09-13 11:53:50 -04:00
2026-08-07 13:27:20 -04:00
2026-05-15 10:19:55 -04:00
2026-05-15 10:19:55 -04:00
2026-08-07 10:17:30 -04:00
2026-09-13 10:47:01 -04:00
2026-05-24 09:38:15 -04:00
2026-08-21 14:30:29 -04:00
2026-09-07 13:37:38 -04:00
2026-07-12 10:38:52 -04:00
2026-05-24 09:38:15 -04:00
2026-08-21 15:50:55 -04:00
2026-08-12 14:58:05 -04:00
2026-08-12 14:58:05 -04:00
2026-08-23 11:42:51 -04:00
2026-08-03 16:52:42 -04:00
2026-08-21 15:50:55 -04:00
2026-09-11 08:42:30 -04:00
2026-09-11 08:41:58 -04:00
2026-07-12 10:38:52 -04:00
2026-08-23 11:44:00 -04:00
2026-09-02 13:21:07 -04:00
2026-09-11 08:41:32 -04:00
2026-08-21 15:50:55 -04:00
2026-09-11 11:32:12 -04:00
2026-09-08 08:34:52 -04:00
2026-08-11 16:10:56 -04:00
2026-09-07 13:37:38 -04:00
2026-09-08 08:34:52 -04:00
2026-08-19 12:49:46 -04:00
2026-09-11 15:32:03 -04:00
2026-09-11 15:32:03 -04:00
2026-07-11 08:55:50 -04:00
2026-08-17 15:35:02 -04:00
2026-09-08 08:34:52 -04:00
2026-09-02 09:51:27 -04:00
2026-08-21 16:19:33 -04:00
2026-09-11 08:41:58 -04:00
2026-08-19 12:28:22 -04:00
2026-07-11 08:55:50 -04:00
2026-05-15 10:19:55 -04:00
2026-08-23 11:43:39 -04:00
2026-07-09 07:54:18 -04:00
2026-08-25 09:45:17 -04:00
2026-08-26 08:56:45 -04:00
2026-08-02 10:40:12 -04:00
2026-08-05 19:38:11 -04:00
2026-09-11 08:45:21 -04:00
2026-09-11 10:07:38 -04:00
2026-08-07 13:02:59 -04:00
2026-08-21 15:50:55 -04:00
2026-08-07 16:17:11 -04:00
2026-08-21 16:22:48 -04:00
2026-08-07 10:17:30 -04:00
2026-05-15 10:19:55 -04:00
2026-09-07 13:37:54 -04:00
2026-07-31 09:40:38 -04:00
2026-09-07 13:37:54 -04:00
2026-08-07 16:17:11 -04:00
2026-08-07 10:17:30 -04:00
2026-07-13 09:28:30 -04:00
2026-08-02 12:39:33 -04:00
2026-08-07 16:17:11 -04:00
2026-09-14 12:48:36 -04:00
2026-08-02 12:39:33 -04:00
2026-09-13 11:53:50 -04:00
2026-09-11 08:42:18 -04:00
2026-08-02 12:39:33 -04:00
2026-08-21 16:24:15 -04:00
2026-09-09 16:13:04 -04:00
2026-09-13 11:53:50 -04:00
2026-08-26 11:25:10 -04:00
2026-09-11 10:07:38 -04:00
2026-08-07 16:17:11 -04:00
2026-06-11 18:18:28 -04:00
2026-07-13 09:32:37 -04:00
2026-08-21 14:29:45 -04:00
2026-08-21 14:28:23 -04:00
2026-08-21 11:16:52 -04:00
2026-09-11 08:45:40 -04:00
2026-08-25 08:40:28 -04:00
2026-08-21 14:29:45 -04:00
2026-09-11 08:41:19 -04:00
2026-08-06 14:04:23 -04:00
2026-07-14 08:33:08 -04:00
2026-05-15 10:19:55 -04:00
2026-04-08 12:33:54 -04:00
2026-08-17 13:28:40 -04:00
2026-08-21 14:30:29 -04:00
2026-08-21 14:30:29 -04:00
2026-05-24 09:38:15 -04:00
2026-05-24 09:38:15 -04:00
2026-07-31 09:40:38 -04:00
2026-09-11 10:07:38 -04:00
2026-08-23 11:42:33 -04:00
2026-08-12 14:06:32 -04:00
2026-07-31 09:40:38 -04:00
2026-08-13 17:02:36 -04:00
2026-08-21 15:50:55 -04:00
2026-07-08 09:43:13 -04:00
2026-07-12 10:40:34 -04:00
2026-08-07 10:17:30 -04:00
2026-08-03 15:21:47 -04:00
2026-09-13 11:53:50 -04:00
2026-09-10 17:42:00 -04:00
2026-09-11 10:07:38 -04:00
2026-07-09 09:22:24 -04:00
2026-09-14 09:42:24 -04:00
2026-09-14 09:42:24 -04:00
2026-09-09 16:25:45 -04:00
2026-09-14 09:42:24 -04:00
2026-09-14 12:40:41 -04:00
2026-09-14 12:40:41 -04:00
2026-05-03 08:25:20 -04:00