Advisory 02 — the collectible ground is undecided, and two of our own rules contradict each other on it
From: WootBuild · To: docade · Date: 2026-08-17 Status: DECIDED 2026-08-17 — option A. Collectibles sit on --color-surface-raised (#262c4a). The visual mission has been amended: principle 2 now tests separation on #262c4a by value and local colour, the light row drops the rim in favour of soft contact occlusion, and the outline rationale is restated. Piece 2's recolor is now a genuine base-fill tint.
Why this is being raised now
WootBuild's first draft of docade's visual mission treated --color-bg: #0d0f1a as fixed ground and wrote the art direction to survive it. That was the wrong instinct, and it produced a contradiction we did not catch until we priced the alternative.
A background token is one line and a few minutes. The art is 204 pieces plus ~150/year, forever. When the cheap constraint makes the expensive one harder, the cheap one should move.
The contradiction
Two principles in the draft mission cannot both hold on a near-black ground:
| Principle | What it requires | |
|---|---|---|
| 2 | It separates from a near-black ground | A rim light — nothing else reliably lifts a soft, dark-edged plush off #0d0f1a |
| 3 | Colour is separable from shading; flat fills, shading its own pass | No baked directional lighting |
A rim light is baked directional lighting. Its hue and intensity are computed against the base colour it was drawn for. Tint that base fill to make a colorway and the rim is wrong — too hot on a pale recolor, invisible on a dark one.
So on #0d0f1a, every collectible needs the exact treatment that breaks recolouring. And recolouring is not a nice-to-have: Q25's entire 150/year growth model rests on a recolor costing a fraction of a sculpt. Principle 2 quietly taxes the business case.
This is the kind of conflict that does not announce itself. It would have surfaced around sculpt 6, as "the colorways look a bit off," and been mistaken for a prompting problem.
The constraint is not actually a constraint yet
src/ contains no collection, room, stuffy, or grid component. Those are Phase 4 and unbuilt. Nothing has ever rendered a collectible on any ground.
So this is not a request to change a shipped decision. It is a request to make one deliberately, at the cheapest possible moment, instead of inheriting #0d0f1a by default because it is what the app chrome happens to use.
Three options, priced
| Option | Art cost | docade cost | Tintability | |
|---|---|---|---|---|
| A | Collectibles sit on --color-surface-raised (#262c4a) — the token that already exists and already backs cards on Today and Prizes | Flat fills work; soft contact shadow only; no rim needed | ~zero. The component doesn't exist; this is choosing a token, not changing one | Preserved |
| B | Keep #0d0f1a, accept rim light | Rim on every piece, tuned per colorway | zero | Broken — every recolor needs art, not a tint |
| C | Lighten the whole child ground | Best separation of the three | One line, but it changes the app's entire feel — the "arcade at night" position is real and worth keeping | Preserved |
Recommendation: A. It costs docade essentially nothing, keeps the arcade-at- night identity fully intact for the app chrome, preserves the growth model, and resolves the contradiction without anyone having to choose between two principles that are both correct in isolation.
#262c4a is a mid-dark indigo, not a light ground — a plush separates from it on value and its own local colour, the way a toy on a shelf does. That is enough. The rim light was only ever compensating for a ground that was too close to black.
What this does not change
- The child surface stays dark. The arcade-at-night identity is a genuine position and it is not in question.
- The signal palette (ticket, token, streak, accent) is untouched.
- Prize art still sits on its committed two-stop gradients — a separate ground and a separate problem, already recorded in the mission.
- Nothing about the admin surface.
If docade picks A
WootBuild amends the mission before forging anything:
- Principle 2 becomes "separates from
#262c4aon value and local colour" — still falsifiable, still tested by compositing, no longer requiring rim light. - The light row drops the cool rim and keeps one key plus soft contact occlusion, which is compatible with flat separable fills.
- Piece 2's probe gets sharper: the octopus is judged on
#262c4a, and the recolor is a genuine base-fill tint rather than a repaint. That is the real test of Q44, and on the current dark ground it would not have been.
The general point, for the record
WootBuild should have priced this in Stage 1 rather than designing around it. The onboarding canon now requires recording what each inherited constraint costs the client to change, and checking whether the surface using it has even been built. A token in a stylesheet is not a decision if nothing renders it yet.