Block C · The asset compiler

The asset compiler

This is the block the rest of the plugin exists to make possible. Fourteen tuned constants found by hand at two minutes a sample is the single largest cost in making an asset — and the only reason it is paid by a person is that nothing anywhere states what the right answer would look like.

WHAT YOU DECLARE mascot.accept.toml silhouette_iou min = 0.97 delta_e max = 2.0 [search.light] 0.5-4.0 THE SEARCH propose values bake at the cheapest rung measure score the margin per predicate, 0 to 1 WHAT COMES BACK the winning values a contact sheet the best handful, side by side a trace every sample it rejected, and the predicate that rejected it cache key the inputs, the renderer and its version, the seed — a sweep revisits neighbourhoods, and a state already rendered is not paid for twice.

The margin is what makes it converge

Each predicate yields pass/fail and a value in [0, 1] for how comfortably it passed, normalised against its own bound. A pure boolean gives a search a cliff and nothing to climb. The overall score is the weighted mean of the margins.

The spec is the whole permission

A parameter not named in a [search.<param>] block is not searched, whatever the optimiser would like. That is what stops a search reaching a value that is wrong for reasons the spec does not capture: it can tune the exposure, and it cannot decide the asset should be twice as large.

And the spec is the thing being debugged

The expected case is a search that satisfies every predicate and returns a render a person rejects. The contact sheet is what makes that visible — the best handful side by side, so you see that the winner is not the one you would have chosen and now know the spec is incomplete rather than the renderer. Finding that out fast is the point.

The block itself

Four open lines, in the roadmap's own words

Each line names the failure it exists to remove and the measurement behind it. None of them has shipped. This list is generated from docs/ROADMAP.md, so it cannot describe a backlog the file does not have.

📋PW12what counts as a correct render lives in somebody's head, so it is approved by opinionNothing states that a face must read the drawing's own colour or that a silhouette must land within three pixels, so no later change can be checked against it.waits on PW9
📋PW13a rig number is found by rendering, looking, and changing it by hand, one sample at a timeCottony's fourteen tuned constants were each discovered that way at two minutes a sample, which is the single largest cost in making an asset.waits on PW7, PW12
📋PW14a search re-renders states it has already renderedA parameter sweep revisits neighbourhoods, and without a cache keyed on the inputs the same picture is paid for as many times as the search returns to it.waits on PW6, PW13
📋PW15a search reports the winning numbers and not what it rejectedA result nobody can inspect is one nobody can overrule, and a rig tuned against the wrong criterion looks exactly like a rig tuned against the right one.waits on PW13