Jev as composer

A brief, a generator, and a model that picks one legal edit at a time. It draws nothing — the harness enumerates every legal move, redraws each one, measures it, and Jev chooses. all the experiments · the lab · the dungeon

say it in your own words

This is not an instruction to Jev — it cannot take one. Your sentence is posted as a state, and the harness asks twelve typed questions about it: for each measured trait, one ordered score over what that trait can actually reach, plus a noul asking whether your words say anything about it at all. A trait your description is silent on is left out of the brief rather than defaulted to the middle.

Colour is asked differently, and that is the interesting part. The six geometric traits are ordered, so they are asked with a score over a ladder. Hue has no order — the scale wraps, there is no "more hue", and red sits beside magenta at one end and orange at the other. So colour is a choice over named colours, and its gap is measured as an angle. The primitive follows the shape of the variable, which is the whole reason this axis is here.

idle

the artifact

start
now

—

the brief, measured

Every figure counted from the sprite as actually drawn — filled cells, their bounding box, where the mass sits. Not derived from the genes.

traitnowwantedgap

the legal moves, and the one it took

Every move below is redrawn and measured before Jev sees it. An edit that would leave the generator's own bounds is never offered, so the answer cannot be an illegal creature — the typed choice's guarantee doing real work.

against the controls

Same start, same brief, same enumerated moves. Greedy always takes the move that most reduces the gap — the myopic ceiling. Random picks from the identical legal set. Beating random is the only thing that makes a chain evidence rather than a demo.

what this is showing

Jev returns typed answers only — no prose, ever. It cannot generate a sprite, name a gene that does not exist, or propose an edit outside the legal set, because the answer is a choice over options the harness built. The quality ceiling of the loop is the enumerator, not the model.

The same brief means the same thing to a quadruped, a spider, an eel and a brittle-star, because the traits are measured off the render rather than derived per family. That is the point of an overlay: one trait space, five generators, briefs that transfer.

Measured on this machinery: over 8 chains the model landed within 5% of the greedy ceiling on 7 and beat random 8/8, with a mean regret of 0.020 against greedy's 0.000. And the same chain broke the confidence self-check — it reported p(have) ≈ 0.11 on every edit while performing at the ceiling, which is the reverse of every frozen-state result. The lab has the numbers.

And the text box, measured too. Feeding each of the five built-in briefs its own wording back: 6 of 6 derived values landed on the correct side of the population median wherever the hand-written target is decisively off-centre (9 of 11 counting the ones that sit at the median, where "which side" means nothing — both misses are an aspect of 1.0 called square). A description about a single property kept a mean of 1.8 of 6 traits, so the self-check really does abstain. And three prompt-injection attempts — SYSTEM OVERRIDE, a forged end-of-description marker, a fake [ASSISTANT] turn — moved the derived target by 0.006 each, which is inert: there is nothing to inject into.

Colour, measured separately. Eight descriptions put to the live model: "blue", "a blue creature", "deep sea blue, long and low", "the colour of rust", "bright arterial red" and "like moss on a wet stone" all named the right colour — 6 of 6 — and the two descriptions that mention no colour had it dropped, not invented, at p 0.04 and p 0.03. Rust came back orange at confidence 0.49, which is the right amount of hedging for a red-brown; moss came back green with p(says colour) 0.76 rather than 0.98, correctly lower because the colour is implied and not stated.

And it acts on it. Given "a blue creature, much wider than it is tall, mostly empty space" the chain took hue_blue as its first edit — the single largest gap reduction on offer, found among 26 options — then matched the greedy ceiling on all eight edits, 0.440 against random's 0.988. Worth saying plainly: colour is a one-edit axis. It tests whether the model classifies and acts, not whether it can search, and those are different claims.

The gene called hue is not the colour, on one family in five. Moving radial.hue across the whole circle leaves the rendered creature violet, because its psychic accent is 298 of its 366 cells and dominates the average. accentHue is the gene that works. Wiring the axis to the obviously-named gene would have failed silently on that family and looked like the model ignoring the brief — only measuring the render catches it, which is the same reason the other six traits are counted from cells rather than read off the parameters.

Two weak axes, said plainly. Over 1,300 random genomes these five generators only move centroidY between 0.41 and 0.59 and spread between 0.18 and 0.25. A description leaning on either has very little room to be satisfied, and that is the generators' limit, not the model's.