Drop a trait-layer PNG. The verdict comes from crates/inscription-gate
compiled to WASM — the same gate the LaunchPad will run at deploy — not from a
JavaScript re-implementation. Every finding carries its fix; the chain checks
none of this, and ownership is renounced after deploy, so this page is
where a mistake is still catchable.
drop a PNG here, or click to choose
square image, ideally grid×grid or an integer multiple of it
Gate configuration
675 rects is measured by binary search
against the 2^24 gas cap (25,226 gas/rect). Orientation decides which
direction a 1-cell run shears into a zigzag — flat-top punishes horizontal
runs, pointy-top vertical ones.
Verdict
waiting for a layer
—
finding
detail
fix
The layer, as the gate sees it
Cell grid. Transparent cells stay dark. Off-palette cells
are tinted; hairline runs outlined red; dither windows boxed orange; the
required margin ring is hatched — art under the hatch is inside the zone
the device clips.Source PNG at 1:1-ish. Shown as decoded, before cell
mapping, so a bad export (soft edges, wrong size) is visible next to what
the gate measured.
The blob — the layer as bytes (v2 codec, golden-tested)
Hex lattice render. Exactly the geometry the on-chain SVG
walks — flat-top or pointy-top per the gate config. This is what the cells
become; the square preview above is what they came from.
drop a layer that passes the gate, or drop a .hex blob to preview it
codec goldens: checking…
v2 wire: 0x02 version, palette count, first-seen RGB
triples, 5-byte rects (col,row,w,h,idx) — byte-identical to the Rust encoder
(bnri-cosmic) and the Solidity decoder (HexLib, 37/37 forge). Loading a .hex
blob previews it; the first byte dispatches v2/v1 exactly like
BnriArt.setLayerBlob. A blob preview is NOT a gate verdict.
Decode-side checks live here, not in the WASM — they are properties of
the PNG before cells exist: soft alpha (a soft matte destroys hard-edged pixel
art per spec §4), non-square exports, and size reduction. They are labelled
decode in the findings table so nothing
pretends to be a gate verdict that isn't one.
Corrections are part of the exhibit. This gate exists because things were
measured, not guessed — receipts in docs/SPEC-INSCRIPTION-COMPAT-1.md §4
and docs/receipts/panelfit.js. AGPL-3.0-only, with the crate it runs.