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.
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.
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.
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.
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.
Handles for anything slow, a post-condition on every operation, typed errors that name the remedy, a surface that describes itself and this machine, and configuration resolved per call.
6 linesA surface is read on a sphere in three seconds, a render returns its measurements in the same answer, a distribution is reported as a set rather than a mean, and a sheet shows an asset beside its siblings.
5 linesA silhouette gate before the credit moves, a ceiling agreed once instead of a question per fetch, the mesh kept because the service deletes it at seventy-two hours, and a fetched asset normalised into this project's axes.
6 linesA Godot run judged by what the script printed rather than by an exit code that means nothing, a capture that works where there is no screen, a scale derived instead of tuned, and a runner pinned so two machines agree.
4 linesA fetched mesh rigged so it can be posed at all, motion as a clip rather than a second static render, curves as text a diff can show, and one source for both a 2D sprite and a 3D scene.
4 linesA shape stated as data rather than written as a program: a vocabulary read off real assets, numbers a search can reach, a review before anything is built, and a way back to code for the shape no format can state.
5 lines