A model writes an editable program. A verifier grades the pixels.
Every pixel below comes from a region character in a text file. Change the character and the pixel moves. Change one hex value and the whole sprite recolours — including every frame of its animation.
That is the entire bet: a diffusion model hands you a PNG you cannot edit. This hands you 800 characters you can.
The finding this is built on: a 400-line API reference made the model invent functions that did not exist. A short, strict allowlist did not. The spec file opens with a warning to future maintainers not to grow it.
fillPaint a region at its base tone.shadeStep a region through its own ramp, following the declared light.ditherChecker, bayer or dots across a tonal boundary.outlineInner outline. Selective skips the edges facing the light.highlightA square of light, clipped to its region.rimCatch one edge of a region. Calls compose.pxOne pixel. Normal in small numbers, a smell past 5%.mirrorFold the map. Run it first, or the light mirrors too.Not screenshots. Each of these is drawn from the same region map and palette the renderer reads, so what you see is what the language produces.
Fourteen programmatic checks on the rendered pixels: is the silhouette one connected shape, does the shading agree with the declared light, is the palette disciplined. Costs nothing and runs in milliseconds.
The sprite is shown to a model that is not told what it should be, and asked what it is. Blind, because a judge handed the answer tends to find it. A chest that scored perfect craft came back “wooden door”.
The same look, asked what is wrong with the picture. This is the tier that catches a six-frame animation in which nothing moves — a defect every structural check passes, because each frame is individually excellent.
“All six frames are effectively identical — the legs never cycle, the tail never swishes, so it reads as a still image pasted six times rather than an animation.”
The fourteen structural checks scored that sprite 0.975 PASS. Nothing countable could see it.
| Measurement | 16×16 | 32×32 | Note |
|---|---|---|---|
| Compiled zero-shot | 8/9 | 5/6 | spec + examples, no feedback |
| Blind identification | 17/20 | 6/6 | viewer never told the subject |
| Mean craft, final | 0.983 | 0.986 | fourteen checks, geometric mean |
use palette adoption | — | 3/3 | after the shared library shipped |
auto ops adoption | — | 2/3 | 0/1 while spec-only, 2/3 once demonstrated |
The key sprite was the useful failure. Unfixable across two
repair rounds at 16×16, identified first try at 32×32 — which made it a
resolution limit, not a loop limit. Nothing about the loop changed.
loading…