mirror of
https://github.com/kuhyx/testsAndMisc.git
synced 2026-11-10 19:47:12 +01:00
Closes the remaining bake-off cells. The phase's real result was not a route
score but a MISSING GATE.
All twelve SDXL icons measured 100% opaque coverage -- square tiles with no
sprite silhouette -- and passed every gate in the harness. Gate-pass was
measuring pipeline hygiene, not usability. MARGIN_TOO_SMALL inverts the table
from a meaningless 12/12/12 tie to:
diffusion 0/12 (every output full-bleed)
vector 10/12
procedural 11/12
The two non-diffusion failures were true positives in MY shapes, not gate
error: the procedural sword pommel ran off the bottom edge and the vector meat
bone clipped the top. Both fixed; both routes back to 12/12.
Diffusion recovers to 12/12 with flood-fill background removal, but visual
inspection shows the fill eats into the art (bone reduced to a fragment, sword
nearly erased). Reported as inadequate rather than shipped -- proper matting is
needed before route (b) is a usable pipeline.
Blender exits 0 even when its embedded script raises: BLENDER_EEVEE_NEXT does
not exist in 5.2, and the failure produced a clean exit and no file. render()
now asserts the output exists, or the route would report phantom successes.
Model gating verified at execution time, never recalled: SDXL base and
nerijs/pixel-art-xl are ungated, FLUX.1-dev is gated=auto, and
runwayml/stable-diffusion-v1-5 now 307-redirects.
The finishing stage now generalises across three continuous-tone sources
(SVG raster, Blender render, SDXL): each is 0/N raw and N/N finished.
Verified: 114 tests, 100% branch coverage on 13 modules, zero suppressions,
all hooks pass. Note: a local pytest run masked a missing branch that the
pre-commit hook caught -- the hook's run is authoritative.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T9rQ12yZ7sJxiPQTCS5dUF
35 lines
1.4 KiB
TOML
35 lines
1.4 KiB
TOML
# Pixel-art item icon: the most machine-checkable style, and the one where
|
|
# "AI slop" is most detectable.
|
|
#
|
|
# CALIBRATION (measured, not guessed) over 250 genuine 32x32 CC0 icons from
|
|
# ~/opengameart-downloads:
|
|
# p50=7 p75=10 p90=13 p95=14 p99=26 max=30
|
|
# Rejection rate of real hand-made art by cap:
|
|
# cap 16 -> 3.6% cap 24 -> 1.2% cap 32 -> 0.0%
|
|
#
|
|
# A first attempt at 16 rejected a real DCSS rambutan icon (18 colours, clean
|
|
# binary alpha). That is the "the threshold was wrong, not the art" failure the
|
|
# seamless-tilesets skill documents, so the cap was re-derived from the corpus
|
|
# rather than nudged until one file passed. 32 admits all observed hand-made
|
|
# art while still rejecting un-quantized generator output by a wide margin
|
|
# (a raw diffusion sample measured 34403 colours before its finishing stage).
|
|
name = "pixel_icon"
|
|
canvas = [32, 32]
|
|
max_colors = 32
|
|
alpha_binary = true
|
|
min_margin = 1
|
|
|
|
# ALPHA_NOT_BINARY is listed first because ordering is load-bearing: a
|
|
# soft-alpha image has no fully-opaque pixels, so the colour gate would
|
|
# otherwise count zero and pass. See pixels.py module docstring.
|
|
# NO_OPAQUE_PIXELS is deliberately absent: it is a result code emitted by the
|
|
# colour/palette gates when they fail closed, not a gate you can request.
|
|
gates = [
|
|
"ALPHA_NOT_BINARY",
|
|
"TOO_MANY_COLORS",
|
|
"CANVAS_SIZE",
|
|
"SCALE_NOT_INVARIANT",
|
|
"SILHOUETTE_LOW_CONTRAST",
|
|
"MARGIN_TOO_SMALL",
|
|
]
|