Lessons — docade-prize
Probe 1, 2026-08-24 — the register question · run r-20260824-d616 · $0.4036
Three subjects (ice-cream, cash-5, movie-night) × three registers, on flux2-dev, the cheapest model in the capability. Deliberately not the production model — this probe settles what register the lane lives in, not how good the pieces are. seedream-5-pro-edit is the settled model for docade's stylized-volume work (clients/docade/bakeoff-plush.md) and that decision is not re-opened by this.
| Register | What it did | |
|---|---|---|
| A | a plush TOY of the object — sewn felt, visible stitching | The felt reads at 180px and mostly disappears at 96px, where it converges with B |
| B | the real object as a chunky toy-like 3D form — matte vinyl | Holds at 96px. Unambiguous at card size |
| C | flat vector, no volume | Fastest read, least information. ice-cream degrades to two circles and a triangle |
DECIDED — register A (plush). Justin, 2026-08-24, unanimous on all three.
My proposal was B and it lost. Kept here rather than tidied away, because the argument that beat it generalises:
I argued from legibility within the lane — a plush $5 note says collect me where the product means this is real and it is yours, and A's felt converges with B at 96px anyway.
The decision is a world argument. docade has one visual world and it is made of felt. A reward rendered as a real object would be the only thing in the app that is not — which makes it the odd one out rather than the special one. The felt is not decoration; it is what says this belongs to docade at any size.
Coherence across lanes outranks legibility within one. That is the rule, and it is the second time this studio has learned that a lane cannot be judged alone — collection-coherence.md is the same lesson one level down.
The tension the probe was built to expose
docade's stuffies lane is explicitly "a plush OF the animal, never the animal." A prize is a thing a child actually receives — real cash, a real ice cream. Register A would make the reward speak the collectible's language, and at 96px it is nearly indistinguishable from B anyway, so it pays a texture cost for a difference the card size cannot show.
The strongest argument for B is a product argument, not a taste one: prizes and stuffies appear in the same app, and a plush $5 note says collect me where the product means this is real and it is yours.
Not yet settled — do not treat any of this as the contract
- The register itself. This is a proposal awaiting a human; the forge protocol's gate is a person saying the set reads as one artist, and one probe is not that.
positive/negativescaffolding, palette hexes, theqamust/must_not contract, andcanary_subjectsare all still empty instyle.yaml.- The reference plate.
docade-plush@1proves this lane type is carried by a plate, not prose — the model obeys flat-fill as an image and ignores it as text. Whatever register wins needs a plate before volume.
Recorded because it cost a run to find
constraintsFor() treats spec.transparent as a model requirement unless the style declares normalize.cutout. No model WootBuild routes to can emit a transparent raster background, so a transparent lane whose style has no normalize block eliminates every candidate and reports "No model satisfies capability stylized-volume with these constraints" — which reads as a routing problem and is a style problem. art style new scaffolds without that block, so every new transparent lane will hit this.
2026-08-25 — B swept. The A/B split was wrong, and so was the cheap model.
Justin picked variant B (blind box) for all 15 pieces: "it's a blind box across the board, clean sweep."
The per-piece assignment I proposed was wrong. variants.a.suits claimed money and permissions wanted the flat marker card and only physical things wanted the box — eight pieces to A, seven to B. Zero pieces wanted A. That block in style.yaml is superseded by this verdict; it is left in place because @2 is frozen, and this file is the correction.
Why the reasoning failed: I split on what the reward is (an amount, a permission, an object). The thing that actually decides is what the artwork has to do — and every prize in this lane has the same job, which is to look like something you won. A box looks won. A flat card looks issued.
The expensive model won, and not where I predicted. gpt-image-2 at $0.211 beat ideogram-v4 at $0.06 — 3.5× the price — including on cash-5 and screen-time, the two pieces carrying the most typography, which is precisely where ideogram was supposed to be unbeatable.
The likely reason is worth more than the result: a box gives the type a physical surface to sit on. Lettering printed on a box front is an object with perspective, edge and shadow; lettering floating on a flat card is pure typesetting, and a diffusion model is better at the former than the latter. The best in-image typography model still lost to a model that was given an easier typographic problem.
So the router key is not the whole answer to "can this model do text". The composition decides how hard the text is. Filed as craft — it strips clean of every docade noun.
For @3, if there is one
- Delete
variants.aor demote it to an experiment; the lane is single-register. - Pin
gpt-image-2, and re-test ideogram only if a piece appears that genuinely has no physical surface for its type.