How this got here

Agents write a program, other agents compare the pictures it makes two at a time without knowing which is which, and the better one carries on. That much has stayed the same. Almost everything else has been rebuilt at least once, usually because a run failed in a way that was worth more than a run that worked. The work is in four series now, and they share a prehistory rather than a method.

Before any of it

Album covers, then a way to find out what the owner actually likes. All three series stand on this, and none of it was made for them.

0 shapetagger

2025-12-19 · on “album covers, one per track” · by eye

A generator written by hand. Give it a track name, a size and a seed and it draws a cover, the same one every time from the same three things. It ran in a browser or from the command line, offline, with no service behind it.

Album art for tagged MP3s, made per track and shipped with them.

What worked
It was finished and it was used. Real covers on real tracks, reproducible from the track name alone, which is the property everything downstream still depends on.
What failed
Improving it meant a person editing the code by hand and judging the result by eye. There was no way to tell whether a change had actually made it better, because the taste it was aiming at had never been written down anywhere.
What it changed
It became the material rather than the product. The next tool did not replace this script, it took it as a genome and evolved it, which is why the thing being improved has been a generator's source code ever since instead of a picture.

1 evodesign

2026-09-03 · on “album art for shapetagger” · pairwise

Six agents a generation, each given a different direction to push in. Every survivor then faced the sitting champion in a blind head-to-head, judged twice with the two images swapped, because a judge shown the same pair twice will favour whichever side it saw first.

Twelve runs of generative album covers, each generation editing the previous champion's code rather than starting over.

What worked
Pairwise selection, and the rule that a challenger is promoted only by winning both orderings. Both are still in use, unchanged, three months later.
What failed
Cost, badly, until somebody measured it. A run burned a lot of tokens before the overhead turned out to be the command-line system prompt rather than the judging itself, after which the same run cost a fraction of it.
What it changed
It measured the thing everything since rests on. The identical image scored 62, 68, 68, 71, 76 across five blind scoring calls, a spread of 14 points out of 100. A generation's real improvement is smaller than that, so scoring cannot select. That result should have carried straight into the next tool. It did not.

2 Measuring the taste

2026-09-05 · on “what he actually likes” · pairwise

A voting site. Two artworks side by side, pick one, no scores and no explanation asked for. 546 decisive votes over a pool of 1,054 works, museum painting mixed in with digital and generative art.

A record of preference recovered from choices rather than described in words.

What worked
It replaced an assertion with data. Nobody had to say what the taste was, and the answers were often not what anyone would have written down: ornate work beats minimal work here, and pure abstraction is the losing end of the scale rather than the winning one.
What failed
546 votes fell across 546 distinct pairs, no pair ever repeated and no closed triangles anywhere, so there is still no way to check whether the votes agree with each other.
What it changed
Everything after this has something to be checked against. The rubric that scores the art is fitted to these votes instead of being written from opinion.

3 Climbing the rubric itself

2026-09-06 · on “the scoring function” · fitted to votes

The same loop turned on the judge rather than the art: propose dimensions and weights, fit them to the votes, keep whatever predicts held-out picks better.

Six dimensions — bold, figurative, modern, abstract, saturated, and a penalty for ornament.

What worked
71.4% of picks it had never seen, against 50% for a coin. The thing scoring the artwork was no longer somebody's description of a preference.
What failed
The first reading of which dimensions mattered was wrong, and wrong in a way that looked rigorous. Dimensions that moved around between climbs were dropped as noise when they were actually collinear, and dropping one of them cost real accuracy.
What it changed
Gave the art climbs an objective with evidence under it. It also set the habit of re-analysing the votes rather than trusting the last conclusion drawn from them.

Open-ended climb

An agent writes a p5.js program from a one-word brief, other agents compare the pictures two at a time without knowing which is which, and the better one carries on. Some of these came from an outside collaborator working to the same brief. See the pieces

4 First open-ended climb

2026-09-07 · on “imitation” · scorecards

Three agents building a sketch from a written brief and a single concept word. Nothing to start from: no example sketches, no library of parts, just p5.js and the brief.

No champion. One round of candidates, then it stopped.

What worked
The format itself. Given one word, agents produced complete working candidates rather than variations on something that already existed.
What failed
Two things, and the second one mattered more. It was abandoned part-way with no champion recorded, after one candidate read as a leaf on a stalk on one seed and a cursor arrow on another, splitting the judges on a requirement meant to be a straight yes or no. Underneath that, starting from absolute zero meant every agent had to invent technique before it could make anything at all, so a climb from here would have needed far more rounds than anyone was ever going to run.
What it changed
The no-recognisable-subject rule became something checked before scoring rather than argued about afterwards. The deeper problem, that agents were starting from nothing, took another eight steps to actually fix.

5 Longest run on scorecards

2026-09-07 · on “unity” · scorecards

Three agents, then seven rounds of revision, the most any climb has run.

A recursive grid over a reaction-diffusion field, one region dissolving out of flat colour into the chemistry underneath.

What worked
It went the distance and kept improving for six rounds, which nothing before it had done.
What failed
Both judges disqualified the champion for a fingerprint-like spiral. A tie-break judge then cleared the same feature in the candidate that replaced it, calling it visible only on reflection. The rule was being applied to whichever image happened to be in front of the judge.
What it changed
A pass or fail question started going to a fresh judge with no rubric, no scores and no history of the run, asked as plainly as it could be put.

6 A fixed palette

2026-09-07 · on “colour stops being free”

Colour stopped being the agent's choice. Every sketch draws from one fixed set of 119 swatches, used exactly as given, with no blending or interpolation between them.

One palette across every run since, so two pieces from different nights sit together.

What worked
It removed a whole class of drift. Before it, candidates lost points for widening and muddying their palettes, and in two cases the author believed they had not touched it.
What failed
The measurement of it gets misread. The on-palette percentage tracks how fine a sketch's strokes are rather than whether it obeyed the rule, and reading it as a pass mark would have disqualified the two densest entries in a later run for being dense.
What it changed
Compliance is now checked in the source, where it is a property of the code, rather than counted in the pixels where antialiasing muddies the answer.

7 Making a rule visible

2026-09-07 · on “generativity” · scorecards

Three agents, three rounds.

A rectangle subdividing toward one corner, tangent circles shrinking and paling down a hue ramp, each mature one marked with a single heavy black arc.

What worked
The cleanest result of the whole scorecard era: one change, worth 6.5 points, well past the margin.
What failed
Twice, a principled rule was built into the work and scored exactly as though it were not there. A marker showing which circles had budded, drawn as fine low-contrast detail, returned the champion's own score to the point.
What it changed
The same rule drawn instead as one heavy black arc won by 6.5. Legibility comes from contrast and scarcity, not from adding detail, and a device meant to be read needs few instances rather than many.

8 Five agents, and a third judge

2026-09-07 · on “circulation” · scorecards

Round 0 widened to five agents. Two judges, with a third brought in to break them apart.

A schematic vessel network: a served core, a ring just run dry, and one bold circuit leaving a reservoir and returning to it.

What worked
Widening the opening field. More independent attempts at the start is the cheapest quality there is, because everything after only refines what it began with.
What failed
The two judges nearly inverted each other's ranking of the opening field, which is what forced the third judge. Scoring was still deciding the run, and it was not steady enough to.
What it changed
The run's own central negative result: the circuit does close in the geometry on all three seeds, measured at a gap of 5.7 pixels, and never once read as closed across six judge cards. Being true in the code is not the same as being visible in the picture.

9 Comparison instead of scoring

2026-09-08 · on “dissolution” · pairwise

Scorecards dropped entirely. Five agents judged as a full round robin, every pair seen twice with the images swapped.

Evaporation rings with crisp cores fraying at their rims, over a dried-lakebed crackle, one cluster broken open by a wedge.

What worked
Immediately steadier. This is what the older tool had measured three runs earlier and this project had ignored, so the fix cost four runs to arrive at a conclusion already sitting in the repo.
What failed
A candidate won both orderings and was still refused, because both judges independently measured it as near identical to the champion it was supposed to have beaten. A win that is really a tie.
What it changed
Pairwise became the method for good. It also brought in deciding partly by how hard a judge found the call, which is still the most doubtful rule in the system.

10 Reading the votes again

2026-09-08 · on “what was still missing” · fitted to votes

The votes read a second time, with four ideas borrowed from an older rubric and tested one at a time: edge quality, spatial organisation, clarity, and visual density.

A seven-dimension rubric, with composition as its heaviest term.

What worked
Composition was the hole. It had never been scored at all, and adding it is the largest single improvement the rubric has had: prediction went to 74.9%.
What failed
Three of the four added nothing, and two made prediction actively worse, because they were all measuring the same thing as each other and as composition.
What it changed
It also settled that the ceiling is real. Around three quarters of picks is as good as this gets, and nothing tried since has beaten it.

11 Three different models, same brief

2026-09-08 · on “enclosure” · pairwise

Fifteen agents: five briefs, each built independently by three different models from prompts identical to the byte, so the model was the only thing that varied.

A thick banded ring wall of switching motifs around a dark blue interior, on a densely worked grey field. see it

What worked
A real comparison, and a clear one. One model won none of its nine decided pairs, and the reason was measurable rather than a matter of taste: its work averaged 38.5% coverage against 59.1% and 69.8% for the other two, into a brief that names emptiness as the losing end. Sparser, not worse, and a different brief could invert it.
What failed
The check for recognisable subjects asked what each image depicted and got a subject named in 11 of 15, which read as most of the field failing outright. Asked merely to describe the same images, a second judge produced likenesses rather than subjects, and a third neutral pass called all fifteen of them patterns.
What it changed
The opening field narrowed from fifteen to two, on the model that won. And a pass or fail question now has to be asked more than one way, because the wording had been manufacturing the answer.

12 A parts library

2026-09-09 · on “stop starting from nothing”

520 example sketches surveyed and 202 techniques lifted out of them, each rebuilt as a single function that renders on its own and composes with the rest.

A library of parts: layouts, structures, marks, colour, texture, fields.

What worked
Immediately, and more than anything else tried. Two agents drawing on the library beat fifteen agents building from a blank file.
What failed
The filter deciding which sketches were single-frame let through ones that build up over many frames and only stop at the end, so every one of those had to be rewritten as a loop inside a single call before it could be used.
What it changed
Agents stopped writing from nothing. A brief now asks for at least three kinds of part combined, which is a harder and better problem than inventing a technique from scratch.

13 Two agents on a parts library

2026-09-09 · on “presence” · pairwise

Two agents, both on the model that won the comparison, composing from a library of 202 techniques pulled out of other people's sketches and rebuilt to work on their own.

An off-centre lens: straight colour strata bowing and compressing into a black-and-white shell around a lobed hole, with one small straight mass inside. see it

What worked
The strongest image any run has produced, and it arrived in the opening round. Two agents drawing on a shared parts library beat fifteen agents building from nothing.
What failed
Judges preferred a challenger in all three later rounds, including a clean sweep of the last, and not one of those preferences counted. Every pick was marked hard-won rather than immediate, and the rule that throws out hard-won picks turned unanimous agreement into a tie three times over.
What it changed
Nothing yet. This is the current shape and it is what runs unattended each night. That tie rule is the open question, and it has now discarded agreement in four separate rounds.

14 Climbing the brief itself

2026-09-15 · on “symbiosis” · pairwise

The same loop turned on the prompt handed to the drawing agent rather than on the drawing. Twelve agents across two generations, one concept, one rubric, one frozen judge prompt, and the only thing that varied was the brief.

The unmodified brief. The control won both generations, and six of the eight briefs that had been given more instruction finished below it.

What worked
A constraint stated as a number gets obeyed. The same constraint as prose, however emphatic, gets ignored. That held four times in one run, and it is the most transferable thing the project has measured about prompting.
What failed
Numbers are obeyed literally, including when literal obedience is the defect: an agent told to leave at least 12 percent of the canvas quiet left exactly that, and a judge called the result under-filled rather than deliberate. The texture-coverage instrument also came apart from the verdicts in both directions, and two attempts to repair it both failed.
What it changed
The brief stopped growing. An addition is now assumed to cost something until a round shows otherwise, the palette-ceiling advice was withdrawn after losing twice, and the coverage number was demoted from a screen to a readout.

15 A ledger, so each night builds on the last

2026-09-18 · on “the process” · the owner's takedowns

The nightly runs had been repeating each other. The same open question about the tie rule sat in seven logs because nothing read the previous log before starting the next climb. Now one row per run records what that night changed about the method, what its log concluded, what it left open, and whether the piece is still on this site. A run reads the table before round 0 and declares one thing it will change, or none.

Not a picture. Twenty-four rows, backfilled from every log since the first climb, and a rejected list: three pieces taken down, each with the reason.

What worked
The gallery turned out to be the missing measurement. Judges disagree with each other and drift from round to round, but a piece that stays up was liked and a piece that comes down was not, and that verdict means the same thing every night.
What failed
The judged seeds are fixed and the harness only ever renders at 1500. One champion hardcoded that size in its pixel loop, so every judged render was a real image and the gallery, which runs sketches at 900, drew noise on every seed. It was taken down the same day, the harness gained a check that renders a seed the agent never saw at the gallery size, and whether the judges should also see that seed is now the newest open question in the ledger.
What it changed
Nothing yet; this is the current shape. The scripts a run needs live in one place instead of being copied into each night's folder, the runbook reads the ledger first, and the takedown is one command that records the verdict.

Building stacking

A real city’s buildings, at their true relative sizes, stacked flat face on flat face until they balance. One image rather than a program to run. See the pieces

16 Real buildings, real weight

2026-09-18 · on “san diego” · pairwise, agree rule

The owner set the material: sixty-five downtown San Diego footprints from Overture Maps, none a plain rectangle, handed to three agents as a kit of parts. He picked the first champion himself before the judges reported, and his notes during the run became the rounds: stones stacked by hand with real centers of gravity, no diagram drawn on top, shadows that behave like light, then flat face on flat face with cantilevers rewarded and a renderer that shades every pixel.

A stabile: two posts, a bridge, a mast, and a long beam reaching several times the width of its seat, held by a heavier building set back on the other end. Every stone rests flat, every contact is exact, and the load is solved from the top down.

What worked
A rule that had sat in seven logs as an open question was finally tested. When both judges reach the same full ordering independently, a win they both deliberated over counts. It decided two of the three rounds; under the old rule both would have been ties and the cairn would have shipped without its light or its turned base.
What failed
The judges and the owner disagreed at the start and never met: his pick finished last on both cards for being small, quiet and pale, and he chose it for the stacked buildings. Later a variant that made the sculpture fill the frame lost twice to the brief's own line about quiet margins. And a stone that measured perfectly level was read as a thirty-degree lean by a judge, because a skewed plan standing on end looks tilted from the side.
What it changed
The renderer. Through round 3 every face was one flat tone and every shadow was quantized to the mesh; from round 4 a per-pixel engine draws a soft shadow map and real sky occlusion, every pixel still one swatch. Whether the rule-decided promotions were improvements is not something judges can answer. The gallery will.

17 Boston, the method replicated, then two rules

2026-09-18 · on “boston” · pairwise, agree rule

The same method the San Diego run ended with, carried whole onto a second city: fifty-five famous Boston buildings with their real massing from Overture, flat-on-flat physics, the GPU raymarcher, studio light, nothing painted on a surface, and the agree rule for ties. The owner chose the buildings and stepped back, then sent two rules from a distance: every building at its real size relative to the others, and a different color wherever two buildings touch.

A platform of two civic blocks carrying a real tower as a mast, a long low building across its roof as the bar reaching past its seat, and one whole building on the tail, every stone its own color.

What worked
It transferred, and the rules bit. Real scale threw out the stabile on posts, because real towers are slender and only the civic blocks are heavy, and produced a stack the judges called a signpost held in tension. The tie rule from San Diego decided one round here and correctly declined to decide another.
What failed
Each owner rule made the sitting champion illegal, so two rounds were judged with no incumbent. The reach shrank to between one and four seat-widths at real scale. And a round in which the two pictures were identical by the judges' own pixel diffs was decided by a statement that counted buildings across seeds instead of per image.
What it changed
Nothing yet. This is the first run the owner never picked in, and his two rules now stand for every run after it: real scale, and a color change at every joint.

Animations

Pieces that move. Each is handed the time and the beat rather than reading a clock, so the same inputs draw the same picture; the two with a memory, an elastic sheet and a stack that slips, are the exceptions, because a material that remembers is what they are about. Some are conversions of pieces already in the climb, remade rather than ported; others were made for this series outright, each starting from a property a still cannot state. /art/vj plays them to a tempo you set or to whatever the microphone hears. See the pieces

No steps recorded yet.

Vector paths

Drawing described as strokes rather than as filled regions: black ink on white paper, one finished drawing per piece rather than a program that makes variations, and sized in millimetres so the file can go straight to a pen plotter or a laser. See the pieces

No steps recorded yet.