wuwi and Claude Opus 5
af30db2ff3
Make the regen pipeline check the kit, and fix the swing and toss
...
Every roll drifts the palette and nothing measured it: a white headband on six
frames, pale grey shorts on the toss twice, brick-red shirts and brown shoes on
the swing all sailed past --tries. check: "same"/"loose" skips colour_match, and
colour_match is a global mean/sd fit far too weak to pull brick-red back to red
— a nearest-colour palette lock is worse still, it drags the duller reds into
the racket's browns.
So _regen.py measures three numbers and a batch opts in with palette_ref:
redness (r minus mean(g,b) over saturated warm pixels — brightness alone cannot
tell brick-red from red), shorts brightness (charcoal 61 vs the drift's 83), and
the near-white fraction that is the shoes and socks (brown drops it to 0.9%,
pale shorts push it to 7.9%, correct frames sit at 2.8%). Frames known to be
right cluster tightly on all three; every drifted frame fell outside on at least
one. It rejected five bad rolls in a row, then passed a good one.
The swing also kept re-inheriting its own drift: ref_sheet is built from
[lead] + the sprites being replaced, so it was showing the generator the very
brick-red frame it was about to overwrite. Copying a canonical frame over the
targets first breaks the loop — it passed on the next roll.
Swing is now a real backswing and follow-through (silhouettes differ by 1.0,
racket low behind vs up over the shoulder), both at full standing height, and
the toss and smash wear charcoal shorts again.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-01 11:51:27 +02:00
..
2026-08-01 11:51:27 +02:00
2026-08-01 10:55:18 +02:00
2026-07-14 16:11:12 +02:00
2026-08-01 01:00:56 +02:00
2026-07-27 05:28:04 +03:00
2026-08-01 01:09:57 +02:00
2026-08-01 11:51:27 +02:00
2026-08-01 11:51:27 +02:00
2026-07-12 17:30:46 +02:00
2026-07-17 22:13:59 +02:00
2026-07-30 12:55:35 +02:00
2026-07-30 13:50:47 +02:00
2026-07-28 10:34:43 +03:00
2026-07-27 05:28:04 +03:00
2026-07-11 14:55:21 +02:00
2026-07-31 19:05:31 +02:00
2026-07-12 10:19:21 +02:00
2026-07-31 21:29:41 +02:00
2026-07-12 17:30:46 +02:00
2026-07-17 22:13:59 +02:00
2026-07-30 14:56:00 +02:00
2026-07-31 20:10:20 +02:00
2026-07-28 10:34:43 +03:00
2026-07-27 18:09:18 +03:00
2026-07-17 21:17:17 +02:00
2026-07-17 20:39:07 +02:00
2026-07-31 20:52:52 +02:00
2026-07-31 18:57:03 +02:00
2026-07-31 19:57:45 +02:00
2026-07-11 13:38:28 +02:00
2026-07-31 21:29:41 +02:00
2026-07-12 17:30:46 +02:00
2026-07-27 05:28:04 +03:00
2026-07-27 10:20:43 +03:00
2026-07-27 10:20:43 +03:00
2026-07-17 21:17:17 +02:00
2026-07-27 05:28:04 +03:00
2026-07-27 05:58:18 +03:00
2026-07-30 14:56:00 +02:00
2026-07-27 05:28:04 +03:00
2026-07-30 13:50:47 +02:00
2026-07-31 20:05:44 +02:00
2026-07-11 14:55:21 +02:00
2026-07-11 10:22:10 +02:00
2026-07-11 13:56:18 +02:00
2026-07-11 15:11:30 +02:00
2026-07-31 20:36:25 +02:00
2026-07-11 10:22:10 +02:00
2026-07-11 13:56:18 +02:00
2026-07-31 21:03:47 +02:00
2026-07-31 19:02:15 +02:00
2026-07-31 21:29:41 +02:00
2026-07-12 10:19:21 +02:00
2026-07-14 16:11:12 +02:00
2026-07-31 20:10:20 +02:00
2026-07-12 10:19:21 +02:00
2026-07-12 10:19:21 +02:00
2026-07-11 15:58:18 +02:00
2026-07-14 16:11:12 +02:00
2026-07-31 20:42:12 +02:00
2026-07-31 19:57:45 +02:00
2026-07-31 20:52:52 +02:00
2026-07-11 16:26:49 +02:00
2026-07-31 21:03:47 +02:00
2026-07-11 16:26:49 +02:00
2026-07-30 16:23:04 +02:00
2026-08-01 10:25:30 +02:00
2026-08-01 10:25:30 +02:00
2026-08-01 10:25:30 +02:00
2026-07-27 05:58:18 +03:00
2026-07-27 05:58:18 +03:00
2026-07-27 05:58:18 +03:00
2026-07-27 05:58:18 +03:00
2026-07-27 05:28:04 +03:00
2026-08-01 11:37:16 +02:00
2026-08-01 11:37:16 +02:00
2026-08-01 11:37:16 +02:00
2026-08-01 11:37:16 +02:00
2026-08-01 11:37:16 +02:00
2026-08-01 11:37:16 +02:00
2026-08-01 11:37:16 +02:00
2026-08-01 11:37:16 +02:00
2026-08-01 11:51:27 +02:00
2026-08-01 11:51:27 +02:00
2026-08-01 11:51:27 +02:00
2026-08-01 11:51:27 +02:00
2026-08-01 00:49:28 +02:00
2026-08-01 00:49:28 +02:00
2026-07-31 21:47:29 +02:00
2026-07-31 21:47:29 +02:00
2026-07-31 21:47:29 +02:00
2026-07-31 21:47:29 +02:00
2026-07-31 21:52:34 +02:00
2026-08-01 00:49:28 +02:00
2026-08-01 00:49:28 +02:00
2026-08-01 01:09:57 +02:00
2026-07-31 22:46:19 +02:00
2026-07-31 22:46:19 +02:00
2026-07-31 22:46:19 +02:00
2026-07-31 22:46:19 +02:00
2026-08-01 01:09:57 +02:00
2026-07-31 22:36:13 +02:00
2026-07-31 22:36:13 +02:00
2026-08-01 00:49:28 +02:00
2026-07-14 16:11:12 +02:00
2026-07-14 16:11:12 +02:00
2026-07-14 16:11:12 +02:00
2026-07-14 16:11:12 +02:00
2026-07-14 16:11:12 +02:00
2026-07-14 16:11:12 +02:00
2026-08-01 10:25:30 +02:00
2026-08-01 10:25:30 +02:00
2026-07-12 17:48:39 +02:00
2026-07-31 21:52:34 +02:00
2026-07-31 21:52:34 +02:00
2026-07-31 21:52:34 +02:00
2026-07-31 21:52:34 +02:00
2026-07-31 21:52:34 +02:00
2026-07-31 21:52:34 +02:00
2026-07-31 21:52:34 +02:00
2026-07-31 21:52:34 +02:00
2026-07-31 21:52:34 +02:00
2026-07-31 21:52:34 +02:00
2026-07-31 21:57:26 +02:00
2026-07-31 21:57:26 +02:00
2026-07-30 14:56:00 +02:00
2026-07-28 10:34:43 +03:00
2026-08-01 10:25:30 +02:00
2026-08-01 10:25:30 +02:00
2026-08-01 10:25:30 +02:00
2026-08-01 10:25:30 +02:00
2026-07-28 10:34:43 +03:00
2026-07-30 09:33:37 +02:00
2026-07-12 10:19:21 +02:00
2026-07-31 21:52:34 +02:00
2026-07-31 21:43:58 +02:00
2026-07-31 21:43:58 +02:00
2026-07-31 21:43:58 +02:00
2026-07-31 21:43:58 +02:00
2026-07-31 21:43:58 +02:00
2026-07-31 21:43:58 +02:00
2026-07-31 21:43:58 +02:00
2026-07-31 21:43:58 +02:00
2026-07-31 21:43:58 +02:00
2026-07-31 21:43:58 +02:00
2026-07-30 16:23:04 +02:00
2026-07-30 16:23:04 +02:00
2026-07-30 16:23:04 +02:00
2026-07-30 16:23:04 +02:00
2026-07-30 16:23:04 +02:00
2026-07-30 16:23:04 +02:00
2026-07-30 16:23:04 +02:00
2026-07-30 16:23:04 +02:00
2026-07-30 16:23:04 +02:00
2026-07-31 21:43:58 +02:00
2026-07-31 21:43:58 +02:00
2026-07-31 21:43:58 +02:00
2026-07-31 21:43:58 +02:00
2026-07-31 21:43:58 +02:00
2026-07-31 21:43:58 +02:00
2026-07-30 16:23:04 +02:00
2026-07-30 16:23:04 +02:00
2026-07-30 16:23:04 +02:00
2026-07-30 16:23:04 +02:00
2026-07-30 16:23:04 +02:00
2026-07-31 21:52:34 +02:00
2026-07-31 21:52:34 +02:00
2026-07-31 21:52:34 +02:00
2026-07-31 21:52:34 +02:00
2026-07-31 21:43:58 +02:00
2026-07-31 21:43:58 +02:00
2026-07-31 21:43:58 +02:00
2026-07-31 21:43:58 +02:00
2026-07-31 21:43:58 +02:00
2026-07-31 21:43:58 +02:00
2026-07-31 23:51:30 +02:00
2026-07-31 23:51:30 +02:00
2026-07-31 23:51:30 +02:00
2026-07-31 23:51:30 +02:00
2026-07-31 21:43:58 +02:00
2026-07-31 21:43:58 +02:00
2026-07-31 21:43:58 +02:00
2026-07-31 21:43:58 +02:00
2026-07-31 23:05:18 +02:00
2026-07-31 23:06:52 +02:00
2026-07-31 23:06:52 +02:00
2026-07-31 23:06:52 +02:00
2026-07-31 23:06:52 +02:00
2026-07-31 23:06:52 +02:00
2026-07-31 23:05:18 +02:00
2026-07-31 23:10:52 +02:00
2026-07-30 16:23:04 +02:00
2026-07-30 16:23:04 +02:00
2026-07-30 16:23:04 +02:00
2026-07-30 16:23:04 +02:00
2026-07-30 16:23:04 +02:00
2026-07-30 16:23:04 +02:00
2026-07-30 16:23:04 +02:00
2026-07-31 20:05:44 +02:00
2026-07-31 20:05:44 +02:00
2026-07-31 21:57:26 +02:00
2026-07-31 21:57:26 +02:00
2026-07-31 21:57:26 +02:00
2026-07-31 21:57:26 +02:00
2026-07-31 21:57:26 +02:00