Jello HurledLaboratory

Research · Method

Fitness is the physics

A ten-week evolutionary simulation program, and the instrument discipline built to keep it from fooling itself.

How this work was produced

The research program, the world's design, and every design ruling in this document are mine. The implementation (simulation code, probe programs, analysis scripts) was written by an AI assistant, Claude, working to my specifications under the review discipline described below.

I state this plainly because it is load-bearing rather than incidental. Several results below are cases where the assistant produced a clean, confident, wrong answer, and what caught it was the instrument discipline, not the code. Directing a capable but fallible system, and building the controls that reveal when it is fallible, is the actual skill this page is evidence of.

The problem this lab was built around

Every failure in my earlier work was the same failure wearing a different hat: a metric being satisfied without the thing the metric was supposed to measure.

An animal graded on signal-following evolved to follow the sign of a number and ignore its content. One graded on output magnitude evolved to emit a constant. In one scoring scheme, an animal that did nothing at all outscored a functioning brain by 48 points. Each time, the fix was a better score, and each time the next generation found the next gap.

The rule I wrote afterward: a ruler is never exact for a behaviour, only for a statistic, and selection lives in the gap.

Throng is the response. It is a life simulation with no fitness function at all. Organisms photosynthesize, store carbon, pay maintenance, divide, shade each other, and die when their body falls below a floor. Reproduction is the only thing selection can act on, and it is a consequence of the physics rather than a score awarded by me. There is no gap between the metric and the behaviour because there is no metric.

That removes one class of self-deception and immediately exposes another, which is what most of this page is about: if the world can no longer be gamed, the instruments measuring the world still can be.

Four instruments, and what each one is for

These are the controls the program runs on. Each exists because something got past its absence.

Alongside these, three record-keeping rules turned out to matter more than they sound. Findings are append-only and carry a metadata block. Negative results are a first-class verdict, not an absence. And a number that lives only in a terminal is not a result: it has to be written to a file a reader can open.

---
date: 2026-09-26
question: Did the decomposer door open by SELECTION, or could chance
          and hitchhiking account for it?
verdict: established
probe: probes/photosim_decomposer_proof.py
data: checkpoints/decomposer_proof.npz
commit: b614fe4
---

The header that opens every finding in the library. verdict takes established, supported, negative, open or retracted. Across 64 findings today: 46 established, 1 supported, 9 negative, 6 open, 2 retracted.

Three experiments: one that held, one that didn't, one whose instrument was blind

These are chosen to show the method working rather than the program at its best. All three ran in a version of the world later found to be leaking carbon (the next section). The sleep ablation stands as a measurement of that physics. Nothing about hibernation survives the correction, and the conclusions below that concern it are withdrawn rather than revised.

Verdict · established

A behaviour appeared with nothing pointing at it, and the number shrank when I made it checkable

Two genes control sleep: the light level below which an organism sleeps, and how deeply. Both were founded at exactly zero in every organism, so they never fire and are invisible to selection until a mutation makes them non-zero. Nothing in the physics rewards sleeping.

They opened in 8/8 seeds. The organisms sleep at night, cued by the light at their own depth in the water, with no clock anywhere in the genome.

Whether it pays needs a control: eight seeds, two arms, identical except that mutation is masked on both sleep genes in the welded arm, so the door cannot open.

SeedFreeWeldedRatio
026,0887,5973.43
152,26319,9522.62
221,29416,4231.30
364,73317,9973.60
418,77611,8951.58
536,05713,4502.68
627,6349,3362.96
732,26916,1502.00
Final population at the seasonal trough plus 3,000 ticks, paired per seed. Plotted from public_draft/sleep_ablation_flat8.csv.

Free wins 8/8; the mean of the ratios is 2.52×.

The part worth the space: for three days I had been quoting this effect as 3.95×. That number was real when it was read, and it lived nowhere. The probe that produced it never wrote to disk, so it existed only in a terminal scroll and in my retelling of it. When I required a file-backed measurement, the honest number was 2.52×. The pattern I trust: unfiled numbers drift upward in the retelling, and files don't.

finding 2026-09-03 · probes/photosim_winter_bite.py · ran before the carbon correction
Verdict · negative

A result that read 8/8 and was worth nothing

The next question was hibernation: an organism that sleeps through a whole winter rather than a single night. Four new genes, and a promising first read: they moved off their founding values in 8/8 seeds, exactly the signature the sleep result had made meaningful.

It was meaningless. The genes were founded on a boundary of their own range. A gene founded at the edge can only mutate in one direction, so every seed reads as "moved" whether or not anything selected on it. Drift alone could clear the bar I had set, and I had set it, and I had believed it.

Three independent controls killed it. The evolved hibernation depth was shallower than ordinary nightly sleep in 8/8 seeds, so the mechanism was never used. The ablation was a coin flip, 1.02×, where sleep's had been unmistakable. And a neutral-drift null, the same four genes mutating where nothing could select on them, put all four evolved values inside one standard deviation of doing nothing.

A bar that pure drift clears is not a bar. Founding a gene on a boundary guarantees you build one.

probes/photosim_driftnull.py · ran before the carbon correction
Verdict · instrument fault

A clean verdict from an experiment that could not have produced one

With a colder winter built, the next test asked whether any genome could survive it, using hand-picked organisms rather than evolution. It returned an unambiguous IMPOSSIBLE: every arm extinct, in every seed.

It was an artefact. Every population died at cycle 171–177, in autumn. The hibernation cue opens at cycle 202 and the frost begins at 221. Nothing lived long enough to see any frost. The test organisms were the body evolution had produced under the previous sun, and that body starves in autumn under the new one.

The fix was to re-derive the test organism under the current physics and re-run the identical experiment once, pre-registering that single re-run so it could not become a search for a preferred answer. The real verdict was not the one the theory predicted: that winter was not lethal at all, in that physics.

Rule added: an experiment's test subject is part of its physics. Both the false IMPOSSIBLE and its autopsy are kept in the record.

The world was running on a free lunch

Verdict · established

A three-year run that died in its third winter

A hibernation experiment was run for three simulated years instead of one. Everything died in the third winter, in every seed, and every arm died on the same cycle (854–855). That was the sign the problem was the world rather than any animal in it.

Carbon was conserved to five figures. Oxygen was not: it rose from 65,536 to 291,418 and never came back. Photosynthesis here depends on the share of carbon dioxide in the water, and that share fell from 0.667 to 0.227. The organisms were suffocating on the oxygen their ancestors had made. Five code paths were returning carbon to the air without spending any oxygen; fermentation was 94% of the leak.

The conservation test had been green from the day it was written. It checked oxygen against the two lines of code that write oxygen, so it could not fail. It stays in the suite, labelled as an accounting canary, and the real law now lives in a test that checks the oxygen surplus against the carbon that should pay for it.

With the leak fixed, the suffocation is gone, and the world dies at cycle 258 instead of 854, of carbon starvation, with 48% of its carbon in corpses that nothing can eat. That free lunch had been quietly supporting every result measured in this world, including all three above.

findings 2026-09-22 / 2026-09-24 · probes/photosim_threeyear_autopsy.py · probes/photosim_oxygen_budget.py
Verdict · established

The world evolved the organism that closes its carbon cycle

Before either failure had been measured, I had asked whether some organism consumes oxygen and gives off carbon dioxide. One does: the bacterial decomposer. A single mouthful closes both books, because eating the dead frees the buried carbon and burns off the oxygen surplus.

So the genome got one new gene: the share of an organism's machinery spent eating detritus rather than fixing carbon. It is a split, not a free second mouth, and like the sleep genes it was founded at exactly zero.

The ablation settles whether it matters. Two arms are bit-identical (same seeds, same founding, same mutations) and differ only in whether the gene may be expressed. Where it may, 4/4 worlds survive three years at around 110,000 organisms. Where it may not, 0/4 survive, each extinct by cycle 552–575.

Whether it opened by selection is harder, and my first answer was void. The registered drift null died: a world whose gene cannot work cannot survive a crisis that needs the gene. The probe then printed "THE DOOR OPENED BY ITSELF" against a bar of 0.0000 ± 0.0000, and that bar was my own zero-padding for an extinct population. I held the failure as registered.

A drift null that dies cannot be a bar for the period after its death, and that period is where the effect lives.

The fix moved the control inside the survivors: a neutral twin gene in the same genome, founded identically and read by nothing. It was proved inert by bit-identity, and that proof was made to fail on purpose under a deliberate 1% leak before it was trusted.

SeedDecomposer geneNeutral twin
00.00780.0055
10.04810.0059
20.06630.0135
30.02930.0210
40.01640.0021
50.07110.0000
60.03980.0407
70.06280.0008
Mean fraction of the living population specialised as decomposers (gene above 0.9), cycles 560–940. From probes/photosim_decomposer_proof.py.

The decomposer gene wins 7/8, a mean of 0.0427 against 0.0112; Wilcoxon signed-rank, exact one-sided, p = 0.0078.

The number I trust most is a different one. Before the crisis, when there is nothing to select, the two genes should be indistinguishable, and they are: the decomposer gene leads in 4/8 seeds. After it, 7/8. That split was proposed after I saw the headline, so it is not pre-registered. It could have failed, and it did not.

findings 2026-09-26 · LAB_REPORT entry 14 · margins in the finding: three of the seven wins are thin, one seed is a loss

The strongest positive result: a measured ceiling, hit exactly, then beaten

An organism's brain here is a single linear layer. That imposes a hard limit on what it can represent, and the limit is provable rather than estimated.

The first thing this experiment did was falsify its own premise. Three of my own documents asserted that such a brain could not represent a conjunction, "attack if smaller AND I am hungry." A conjunction is linearly separable; a single unit fits it exactly. That claim had been wrong in writing for six days, and the exam killed it in four minutes. The real ceiling is non-separability: exclusive-or, and a band (a food toxic when unripe, toxic when rotten, edible between), both provably unreachable, confirmed by brute force over every separating hyperplane.

TaskEvolvedCeilingRatio
Separable (control)0.2940.2941.00
Band0.0780.0781.00
Exclusive-or0.0770.0771.00
Evolved fitness against the theoretical single-unit ceiling. From probes/ceiling_exam.py.

Selection reaches the architectural limit exactly on all three tasks. The constraint is the architecture, never the search, and that statement is only worth making because the ceiling was computed independently.

Then the result that matters. A gated memory write, evolved rather than designed, scores 0.233 on the band against a ceiling of 0.086, a factor of 2.72. The ablation is the same genome with the same random draws and the memory zeroed, and it lands on 0.086: the ceiling, exactly. The whole gain belongs to the gated write.

And the honest limitation: nothing in the live world has ever asked for this capability. Every food rule in the simulation is a threshold, which is separable. The organisms hold a capability their world has never demanded.

The pre-registration scorecard

Sixteen experiments carried a prediction, recorded and committed before the run. Fifteen were settled and are tallied by who called it, including when that was nobody. One was voided, and a void bet counts for nobody.

The neither column is the point. In 6 of 15 settled experiments both predictions were wrong, and the record says so under the experiment that embarrassed them. A pre-registration scheme that produces a good score is usually measuring how loosely the predictions were written.

The clearest instance: whether breeding from the best-performing survivor beats breeding from a random one. We both predicted a penalty for the random rule. The sign was wrong. Random-survivor breeding proved instincts 4.6× faster, a median of 221 generations against 1,021, 8/8 seeds. The reason, visible only afterward: in a world with per-birth randomness, selecting the oldest survivor selects the luckiest one, not the best genome.

The void one is worth stating too. A head-to-head hibernation experiment read decisively, and the assistant claimed the win. I said it didn't count before any evidence for that existed. The next day the evidence arrived: the oxygen leak had degraded the air for one competitor and not the other. The result is withdrawn, and the bet is void rather than scored.

What this does not show

Reproducibility

Every figure on this page traces to a file in the lab's repository: a finding, a committed probe, or a CSV. Where a number could not be traced to a file, the page says so and uses the one that can. The repository is available on request.

← Back to the research