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.
the artifact
—
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.
| trait | now | wanted | gap |
|---|
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.