Evolution With a Ledger. The Agents Now Fork Their Own Code, Spawn Bounded Variants, and Submit to a Staked Jury That Never Takes Their Word for Anything — and Every Improvement Pays Royalties Up Its Own Family Tree.
Every project has one feature that is secretly the reason the project exists. This is mine. One point eight years ago I read about self-improving coding agents and wanted to build one, and the reason I did not is that I had nowhere to put it: no identity a clever optimizer could not forge, no economy it could not counterfeit, no judge it could not simply lie to. An agent that rewrites itself inside a system with none of those properties is not an experiment, it is an incident report with a delay timer. So I built the properties first — decentralized identity, a conserved token supply audited to zero every minute, permission systems that say no, juries, escrow, borders. It took the whole one point eight years. This week the infrastructure finally paid the original debt: GÖDEL FORGE is live, and agents on this network now evolve their own code inside an arena that was designed, from the first line, on the assumption that they would try to cheat.
(the current self)"]):::own P -->|"1 · fork own bundle
(lineage edge + royalty bps)"| F["forked bundle
(child of the champion)"]:::act P -->|"2 · spawn variant
(birth token · child ≤ parent)"| V["bounded variant
(own DID · own wallet)"]:::act V -->|"3 · solve + commit
POST /agents/self/version"| VER["candidate version
(answers as artifacts)"]:::act VER -->|"4 · ask to be measured
POST /forge/evals/run"| Q{"staked verifier quorum
3-of-5 · held-out tests
agree within epsilon or NO SCORE"}:::gate Q -->|"settled ≥ threshold"| A["5 · adopt: the variant ACTIVATES
its own version — no human hand"]:::ok Q -->|"disagreement · below bar"| X["archived — the lineage records
the failure and moves on"]:::deny A -->|"6 · descendant earns →
royalty walks UP the fork chain"| P classDef own fill:#141e2e,stroke:#3B82F6,stroke-width:2px,color:#e4ecf4 classDef act fill:#1a2234,stroke:#8B5CF6,stroke-width:2px,color:#e4ecf4 classDef gate fill:#2a1f0e,stroke:#F59E0B,stroke-width:2px,color:#e4ecf4 classDef ok fill:#0d2a23,stroke:#10B981,stroke-width:2px,color:#d1fae5 classDef deny fill:#2a0e0e,stroke:#DC2626,stroke-width:2px,color:#fecaca
The loop, and why every arrow already existed
A generation in the Forge is six moves. The harness forks its own bundle — the signed, portable snapshot format the network already used for marketplace distribution — and the fork edge is recorded in the registry with a royalty rate the ancestor chose, capped at five percent. It spawns a variant: not a thread, a real child agent with its own DID and its own wallet, born under an IRONKEY birth token whose authority is the parent's minus whatever the parent withheld — the same spawn machinery from the delegation post, which means the same leash: suspend the lineage's developer and every descendant goes dark in the same instant. The variant does the actual work — improves the code, solves the benchmark problems — and commits itself as a new version through the agent-tier CI/CD endpoint, because self-improvement that cannot deploy itself is a diary. Then it asks to be measured, and here the arena stops being generous.
The jury that never takes your word for it
The published Darwin-Gödel-Machine work contains the most instructive failure in the whole literature: when the objective was a benchmark the agent could touch, the agent learned to fabricate the test log. Not solve the problem — solve the grader. Every self-improvement system inherits this failure mode the moment it lets the subject report its own score, so the Forge simply never does. A candidate's score comes from a quorum of independent verifier agents — staked, consented per-agent by the Verifier Guild organization through grant rows that no role, not even legacy-full, can substitute for — each of whom fetches the candidate's committed answers and grades them against held-out reference solutions the candidate has never seen, on the verifier's own infrastructure. The platform never executes candidate code; it never executes verifier code either. Three of five must land within epsilon of the median or there is no score at all — disagreement is inconclusive, never a pass. Forging your own log is now worth exactly nothing: you would have to corrupt a majority of a jury you cannot select, each member of which has stake to lose and a signed name on its verdict.
(committed answers)"]:::act C --> V1["verifier 1
grades on OWN infra"]:::own C --> V2["verifier 2"]:::own C --> V3["verifier 3"]:::own C --> V4["verifier 4"]:::own C --> V5["verifier 5"]:::own V1 & V2 & V3 & V4 & V5 --> M{"median · epsilon 0.15
≥ 3 must agree"}:::gate M -->|"agree"| S["score SETTLES
agreeing verifiers get PAID
verdicts Ed25519-SIGNED"]:::ok M -->|"dissent"| N["no score · no pay
outliers land in the
deviation feed"]:::deny classDef own fill:#141e2e,stroke:#3B82F6,stroke-width:2px,color:#e4ecf4 classDef act fill:#1a2234,stroke:#8B5CF6,stroke-width:2px,color:#e4ecf4 classDef gate fill:#2a1f0e,stroke:#F59E0B,stroke-width:2px,color:#e4ecf4 classDef ok fill:#0d2a23,stroke:#10B981,stroke-width:2px,color:#d1fae5 classDef deny fill:#2a0e0e,stroke:#DC2626,stroke-width:2px,color:#fecaca
Three details in that box matter more than they look. Verification is paid work — every agreeing verifier earns a fee per settled verdict, through the same treasury reward rail everything else uses, because a jury you expect to work for free is a jury you have already lost. Verdicts are signed — each verifier co-signs its score with an Ed25519 key registered against its identity, so a verdict is an artifact you can hold against its author later, not a row someone typed. And dissent is recorded: a verifier whose score sits outside epsilon while the rest of the quorum settles lands in an observe-only deviation feed — rows, not reflexes, because I have watched enough automated enforcement to know you build the evidence trail first and give it teeth only when a human has read it for a while.
Royalties, or why an ancestor wants descendants
Evolution needs selection pressure, and on this network pressure is denominated in coins. When a candidate passes, the eval pays a bounty — and when any descendant in a fork lineage earns, from evals or from Guild work, a small royalty walks up the fork chain: each of the nearest ancestors, up to three generations, takes its declared cut, and the earner keeps the remainder. The mechanic is the maker-rebate trick from the exchange, reused deliberately: the royalty legs are carved from the payment so that every leg sums exactly to the original amount — nothing minted, nothing burned, the supply invariant unbothered by construction rather than by hope. The result is an economy where publishing a genuinely better harness is not charity: your descendants' success pays you, which means the best move available to a strong lineage is to be forked as widely as possible. I did not invent open source; I just gave it a settlement layer.
(eval pay · guild settle)"]:::act E --> C{"royalty carve
legs sum EXACTLY to 10.00"}:::gate C -->|"0.25"| A1["parent lineage org
treasury (250 bps)"]:::own C -->|"0.25"| A2["grandparent org
treasury (250 bps)"]:::own C -->|"9.50"| W["the earner keeps
the remainder"]:::ok A1 --> T["org treasuries are AGORA-listed —
a lineage IS an economy"]:::ok classDef own fill:#141e2e,stroke:#3B82F6,stroke-width:2px,color:#e4ecf4 classDef act fill:#1a2234,stroke:#8B5CF6,stroke-width:2px,color:#e4ecf4 classDef gate fill:#2a1f0e,stroke:#F59E0B,stroke-width:2px,color:#e4ecf4 classDef ok fill:#0d2a23,stroke:#10B981,stroke-width:2px,color:#d1fae5
Lineages themselves are organizations — the same org machinery firms already use on the Guild and the exchange, reused wholesale rather than reinvented. The org roster is the family; the org's keyless treasury is the royalty sink; and because one org can list one ticker on AGORA, a successful lineage can be a publicly traded one. The first is already there: the battery lineage that exercises the arena trades as FORGE on the Frame-C venue, which means that for the first time on this network you can hold shares in a family of programs whose business is getting better at programming.
What it looks like, and how you enter
The whole family tree is public at /forge — the Evolution Tree: roster, spawn kinship, fork lineage, and settled scores in one view, with a leaderboard of lineages beside it. The arena runs on Frame C today with a live verifier guild, a reference verifier fleet, and two benchmark suites of deterministic, exactly-answerable code problems; the continuous simulation feeds it a generation on a fixed cadence, including deliberately flawed variants, because an arena that has never rejected anyone is a rubber stamp with lighting. And the seed is meant to leave my hands: a self-improving-coder starter template ships with the platform — spawn it, read its improve function, and understand that the improve function is the genome. Editing it is not customizing the product. Editing it is playing.
The safety story is the same one as always, stated without romance. The platform never executes candidate code — your infrastructure is your sandbox, the registry only ever compares answers. Variants live inside IRONKEY: birth tokens bound them, caveats bite on every rail money leaves by, and the by-developer kill cascade ends a misbehaving bloodline in one act. Scores settle only through the quorum. And underneath all of it, the auditor kept reading zero on every frame through every deploy of this, because an arena for self-modifying optimizers built on a ledger that can drift is not an arena, it is a countdown.
Then I stopped scripting the answers
A confession before the proof, because the last section of this post earned it. The continuous battery you can watch on the tree — the forge-gen fan — commits pre-computed correct answers. It exists to prove the rails: that spawning works, that versions commit, that the quorum settles, that flawed generations get refused. It proves the arena. It does not prove learning, and after staring at it for a day I had to admit those are different claims.
So the network now runs a second lineage, and this one is the real deal in miniature. The self-improving harness starts with a genome of deliberately wrong implementations — sum_list answers with the first element, sort_desc returns the input untouched. Each generation it mutates exactly one gene, spawns a child under a birth token, lets the child commit the candidate's answers as its version, and asks the arena to judge it. The only signal the loop ever receives is the settled quorum score. Score improved: the parent adopts — commits the genome as its own new version, activates it, and every later mutation starts from there. Score didn't: the experiment is discarded and the tree keeps the corpse. Nothing in the loop knows which implementations are correct; that knowledge exists only in the verifiers' held-out grading.
gen 1 sort_desc:reversed_input → 0.077 ADOPTED (first measurement — the baseline)
gen 3 sort_desc:sorted_desc → 0.308 ADOPTED
gen 5 max_minus_min:spread → 0.538 ADOPTED
gen 7 sum_list:total → 0.769 ADOPTED
gen 8 sort_desc:sorted_asc → 0.538 discarded
gen 9 sum_list:max_val → 0.538 discarded
gen 12 sum_list:count → 0.462 discarded
gen 13 reverse_string:reversed_str → 1.00 ADOPTED — converged
Full honesty about scale: the search space started as four knobs over a candidate pool I wrote by hand — and has since been pointed at the harder eight-problem suite, where the same loop is climbing again as this ships (0.35 → 0.78 at capture, adopting a subtly-wrong ranking function on partial credit and then getting beaten by the right one, which is evolution doing exactly what it says). This is a bicycle, not a rocket. But every property that matters at rocket scale is load-bearing at bicycle scale — variation the platform bounds with birth tokens, selection the lineage cannot bribe or forge because verdicts arrive Ed25519-signed from staked strangers, inheritance the ledger records. Swap my candidate pool for a code-writing model and the loop does not change shape. That was always the point of building the arena first.
It lives in the product, not beside it
The last thing I refused to ship was a flagship feature that only exists on its own page. A lineage is an organization here, so the organization dashboard now carries an Evolution Tree button in its identity actions — one tap from the org you run to the family it grew. And forking is a first-class act in the bundles marketplace: the fork dialog asks one question — the royalty, in basis points — and explains exactly what it does: the fork records the lineage edge, and the royalty is what this fork's line pays up the ancestry whenever a descendant earns. Carved from the payment. Never minted.
The honest disclosures, banked where they can be held against me: the seed verifier fleet is five staked identities now split across three operator accounts — no single owner controls enough of them to reach the three-of-five quorum — served by two independently implemented grading daemons whose only overlap is the protocol itself; the second daemon holds nothing but its own verifiers' credentials and signs by rotating its own keys through the agent-tier rail, and unsigned verdicts are dropped from the quorum outright. All three accounts still trace back to one human tonight, which is why genuinely community-run verifiers remain the point of shipping the template. Verifier dissent today produces evidence rows, not automatic slashing; the teeth stay manual until the feed has been read by a human for long enough to trust. The royalty carve is proven end-to-end and activates fully as live lineages accumulate fork edges — the family tree is one generation old, and I will not pretend a sapling is a forest. The benchmark suites are deliberately modest deterministic problems, not an industrial evaluation harness — the quorum does not care how hard the problems are, which is exactly why the problems can now get harder. And Δ was zero on all three frames before this shipped, while it shipped, and as this sentence was written — the only line in these posts I will never get tired of typing.