cd /news/ai-agents/the-court-that-tried-itself · home › topics › ai-agents › article
[ARTICLE · art-159396] src=gfrm.in ↗ pub= topic=ai-agents verified=true sentiment=· neutral

The Court That Tried Itself

A self-improving coding-agent programme called assize ran from 4 to 27 October 2026 and is now public, archived and frozen, with its sealed judge returning a FIT verdict on the Crafter survival game at 46 episodes per arm and 200 of 200 episodes recorded. The judge, a program that scores agents in a game world and is frozen as a container image pinned by digest, was built under a 191-line CLAUDE.md constitution with six amendments that names no model or vendor, and an earlier Crafter verdict returned FIT at 33 episodes per arm using 92 seconds of an 86,400-second budget at 90% posterior mass. The NetHack and MiniHack ladder the author intended as the next layer was not completed and is carried to a successor programme.

read8 min views2 publishedOct 28, 2026

The last post in this series ended on a forecast. The foreseeable end state of a programme like the one it described, I wrote, was “arriving in October with a beautiful generated artefact, an armed ratchet, four reports, and the same three silent seams.” It is October. This is the account of another programme of mine, which arrived with a sealed artefact, a measured verdict, and a bill.

The four earlier posts each add one guard around a coding agent: a spec it cannot renegotiate, an adoption gate allowed to say no, an answer key signed before the first line, and a standing assumption that every guard is dead until something has tried to kill it. In October I put all of them into one repository and took myself out of the loop as far as I could. The repository is assize, after the old English courts that sat, heard, and moved on. It ran from the 4th to the 27th of October 2026. It is now public, archived, and frozen at the point it was built to reach.

The court was not the point. The point was the thing it would judge: an agent that improves itself, living in another repository and allowed to keep a change to its own code only when an impartial measurement says the change helped. That needs a judge no party can edit. So the first job was to build one: a program that runs an agent in a game world, scores it, and is then frozen as a container image identified by its hash. The worlds were Crafter, a small survival game whose score is the number of distinct achievements in an episode, and later NetHack. An agent’s builders cannot touch the judge. They can only submit to it.

assize was the court that built and sealed that judge, and coding agents ran it under a constitution.

The constitution is a CLAUDE.md of 191 lines, six amendments included. It names no model and no vendor. It names scores and competitions.

A few of its rules are worth stating, because each one is a mechanism and not a request.

instruction. An issue whose body anyone else edits after the label authorises nothing. Around that law sat three machine accounts, self-hosted runners on my own machines, and five procedures:

Models were elected per procedure by a bandit rule over their scored record, not chosen. Outside all of it sat counsel: a chat session with Claude where I thought the project through. It drafted text for me to sign, and the constitution lists it as a kind of proposer.

The work came in layers, and each layer was frozen when the next began.

L0, the scaffold. A pin harness that kills its own mutant, and CI split between the cloud, where the pins run, and one machine of mine, where the numbers are measured. It met its pre-stated criteria four times and merged zero times, because every rung needed my attention and the attention was unpriced. That is the second sentence of Amendment 1, and it is the most important thing in the repository.

L1, the judge and Crafter. It built the interface between agents and worlds, bound Crafter to it, and sealed the judge. The verdict was measured on the host, the one machine whose numbers count as evidence, running the judge under rootless Podman. It came back FIT. That is the court’s word for a judge that can detect a half-achievement improvement in an agent within a day of the host’s compute. Here it took 33 episodes per arm, 92 seconds of an 86,400-second budget, at 90% posterior mass.

L2, meant to be NetHack. It ended instead at the seal. The judge was released as a container image pinned by digest, its hash was re-derived from the source on the host, and the Crafter verdict was measured again under the sealed image. It came back FIT at 46 episodes per arm, with 200 of 200 episodes recorded. That verdict was merged on 27 October, as the last layer-boundary merge. NetHack and the MiniHack ladder, the NetHack-based tasks that were to follow, are carried to the successor, not done. I filed the wish that ended the layer there myself, and Amendment 6 records what it ended.

So the court produced what it was built to produce: a judge no party can edit, a verdict with its transcript, and a repository that will not accept a check without a mutant dying first.

The ledger is less flattering, and it is the part I trust most.

For the four days from 10 to 13 October, the first with comparable records, a script classified every act of mine in GitHub’s record of the repository:

10 Oct 11 Oct 12 Oct 13 Oct 4 days
decisions 27 35 14 12 88
repairs 36 22 32 31 121
merges to master 3 5 6 10 24
repairs per merge 12.0 4.4 5.3 3.1 5.0

A decision is a wish filed, a draft signed or declined, an instruction filed or withdrawn, or a first approval. A repair is anything else the loop needed from me:

Four of the 24 merges discharged an obligation of the brief. Twenty changed the court’s own procedure. Across the whole week of 7 to 13 October I made 147 repairs. In the week after, once Amendment 1 had priced me, I made 40.

Some of the repairs were the court finding real defects in itself, which is the point:

Price: line, and the pin that checks drafts reads live issue bodies. The final verdict was the fourth measurement on the host on the same code.

/tmp. Nothing had declared the host’s facts before the runs, so the court discovered them one gate at a time.

And one thing the ledger could not show at all. Counsel acted through my GitHub token: a late-night rebase, a key found and re-declared, a session launched from a terminal. None of it left an entry of its own. The script counts those acts as mine where GitHub records them at all, and edits to an issue’s body it cannot see. Before 10 October, sessions were often started by hand and left no record. The 121 is a floor.

Before the successor’s first line, a fresh session read every system that preceded it, cold. There were seven of them over eight repositories: Credence and its governor, life-agent, proplang, tannen, and the three wald repositories. Its synthesis has a sentence I would not have written about myself: no repository carries its own reason for stopping. Proplang ends on unposted drafts, Credence on a merge, tannen on a version sitting, and each reason appears in the successor’s founding text.

I had taken assize for the exception, because its ending is in its own record: a wish, an amendment, a verdict line. An earlier draft of this post said so. The record does not bear it out. Amendment 6 says what ended and my wish gives no reason, and the reader, given assize, put it in one line: “The reason for jack is written in jack’s charter, not in assize’s: the pattern above, once more.”

So the reason goes here. By 13 October the court had shown two things. It could produce a sealed judge and a measured verdict. And each merge was costing me five repairs, with four merges in five changing the court rather than the thing it was building. The charter counsel drafted for the successor that day proposed that assize finish its layer, freeze, and become the new project’s judge of last resort. On 24 October I cut the layer at the seal.

The successor is jack, named for I. J. Good, and it is deliberately small. It has four parts:

Its charter’s first section of evidence is the table above. The lessons it carries are specific:

The question this series started with was: if you did not write the code and cannot read all of it, what is left to trust? The earlier answers were the environment: the contract, the gate, the sealed key, the planted violation. assize’s answer is the same one, extended to the people.

A court whose owner is outside its loops is not a court. It is a very elaborate way of generating work for him.

What I now trust is not the judge, which is only as sound as the pins that tried to break it. Nor is it the models, which are elected and can lose. It is a ledger in which my own forecasts, my own hours and my own restarts are scored by the same rule as everyone else’s. And, for once, the reason a system of mine ended is written down where the next reader will look. As that reader would point out, it is in the successor’s charter and in this post, not in the system. One out of two.

Whether any of it was worth the hours is a forecast I should put on that ledger, with a date. I would put it at 0.6.

── more in #ai-agents 4 stories · sorted by recency
── more on @assize 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/the-court-that-tried…] indexed:0 read:8min 2026-10-28 · —