Recover the brute's serve and fall sheets, which I overwrote

Re-running --variant to rewrite a spec re-seeded EVERY placeholder from the
master, and placeholders are copies of the lean red-shirted man the poses came
from. That silently replaced a finished brute's bounce, toss, strike and four
fall frames with racket-zombie art. I restored z_br1..4 by hand afterwards and
did not notice the other seven were gone — so three subsequent passes were
regenerating sheets that already existed and had been good since this morning.

Recovered from 0e92c72, and variant() now refuses to seed over a frame that is
already there: a placeholder is a stand-in for art that does not exist yet, and
nothing else.

Then colour-matched every brute frame onto z_br1 rather than generating: five
moved from failing the palette gate to passing, with no generator calls at all.
That is the point of the correction being arithmetic — it applies retroactively
to art already on disk.

WHERE THE BRUTE HONESTLY STANDS:
  HEALTHY   11/11 — stance, shuffle pair, forehand, bounce, toss, strike, and
            the full fall. Consistent, colour-matched, done.
  ARM OFF   the play and serve frames read; the four FALL frames are standing
            figures of the wrong build entirely.
  HEADLESS  not headless — z_brw2 still has its head, and is near-identical to
            the arm-off frame it was drawn from. The `changed` gate passed it
            because SOMETHING moved; it does not know that the something has to
            be the head.

So about a third of the brute is right and it is the third that matters least —
the healthy row was always the easy one. The wound stages are the job.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
wuwiandClaude Opus 5 committed 2026-08-12 14:50:36 +02:00
1 parent a58e8b18aa
commit 759488dd44
31 files changed
+5

No files matched your search

+5
View File
@@ -150,6 +150,11 @@ def variant(key, who):
# score it against a copy of the master, two steps better than the stage it follows.
if newart:
for src, dst in zip(pose_refs, sprites):
# NEVER OVERWRITE ART THAT EXISTS. Re-running --variant to rewrite a spec used to
# re-seed every placeholder from the master, which quietly replaced a finished brute's
# serve and fall sheets with copies of the lean man they were drawn from. A
# placeholder is only ever a stand-in for a frame that is not there yet.
if not os.path.exists(os.path.join(HERE, dst + '.png')):
seed(src, dst)
spec = dict(sprites=sprites, ref_only=list(refs), check='loose', anchor=0, subject=subject)
spec['newart' if newart else 'state'] = True
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 22 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 22 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 26 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 32 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 36 KiB