Life emerged, but the mutation-rate window did not
All 100 runs finished, and five of them crossed the transition: self-replicating structure arose from a random soup with no fitness function, the first at epoch 5 030. But it arose at 2^-13, 2^-12, 2^-9 and 2^-8 alike, about one seed in ten wherever it arose, so the window of DESIGN §1.3 sweep 1 is not supported at this scale. Only a lower cutoff is hinted at: 0 of 40 runs below 2^-13 against 5 of 60 at or above it, one-sided Fisher p ≈ 0.073.
Hypothesis
Mutation is the only source of novelty in the soup: nothing else writes bytes a program did not already contain. DESIGN §1.3 sweep 1 predicts a window. At mutation_rate = 0 the soup can only shuffle what randomness handed it, so emergence is delayed; far above the error threshold — Eigen's quasispecies bound — a replicator's copies are corrupted faster than it can make them, and nothing persists. Between the two there should be a band of rates where the time to emergence is shortest.
Method
A 128×128 torus of 64-byte tapes, 20 000 epochs per run, ten mutation rates from 0 up to 2-8, ten seeds each. Every other parameter is at its default. The dependent variable is transition epoch as defined in DESIGN §1.2: the first sampled epoch at which compress_ratio falls below 0.6 and stays below it for the next three samples. A run that never crosses that line is censored, not zero, and appears as a hollow marker along the top of the phase diagram.
Result
All 100 runs finished. What follows states the shape of the sweep; the per-run numbers behind it are in the two tables below, which read the runs live. The first of them names each finished run that either observable flagged — the transition detector or the replicator_count census — with its peak census, its lowest entropy_bits, its highest copy_rate and a CSV of its samples.
Life emerged. In a handful of seeds a random soup with no fitness function and no selection pressure collapsed into self-replicating structure: compress_ratio holds near the random-soup floor for thousands of epochs, falls off a cliff inside a few sampling intervals, stays down for the rest of the run, and the snapshots of those runs show one colony spreading across the torus from that epoch on. Every censored run instead ends where it started, high. That is the BFF result, reproduced here with nothing selecting for it.
The earliest transition of the sweep is the 2-13 arm's first seed, and its compress_ratio has the shape every transitioning run has — the random-soup plateau, a cliff, then a floor it never leaves.
The census agrees where the effect is strong. The two strongest transitions of the sweep — the first and the fifth seed of the 2-13 arm — carry a large replicator_count while they are running: hundreds of replicating cells at the peak, with entropy_bits falling from the random-soup value near 7.85 to under 5 and compress_ratio down to a fraction of the soup floor. Where the effect is strong the detector and the census agree, and they agree in the stored worlds too: rescoring the first seed's snapshot near its peak counts several hundred replicating cells and one tape holding a few percent of the torus and passing the 3-of-4 replicator trial. The lineage is in the world, not in the sampling.
The census fades; the compression does not. After the peak the count falls back towards zero over the following samples while compress_ratio stays collapsed for the rest of the run — a lineage that spread, saturated and dissolved, leaving the compressible debris behind. That is why a terminal snapshot under-counts: a rescore of a run's last stored world, the cheapest thing to ask for, reads the world after the lineage is gone and reports none. The zero censuses read that way earlier in this sweep are a snapshot-retention artefact and not evidence that the census never sees a lineage.
Three runs still disagree with themselves. Two flagged runs — the ninth seed of the 2-12 arm and the fifth seed of the 2-8 arm — collapse entropy and lift copy_rate off the floor with a peak census of zero, no ranked tape passing the replicator test at any sample; and the second seed of the 2-8 arm carries a census of a couple of cells with no flag at all. They are reported as disagreements, not resolved in either direction. Ranking width is not the explanation: rescoring at the top 16, 64 and 256 tapes returns identical metrics, so the cut stays where DESIGN §1.2 locks it, at 16.
A floor, and no ceiling. Nothing transitioned at any rate at or below 2-14 — the zero-mutation control included, which the hypothesis expected to be slow rather than silent. Transitions appear only at 2-13 and above, and in no arm more often than 2 of 10. They are fastest in the 2-13 arm: the earliest transitions of the sweep are there, and the arms above it transition later when they transition at all. The sharp collapse in entropy_bits that marks a soup turning into copies of one thing is confined to the two lowest transitioning arms; higher up, the flagged runs stay diverse. And there is no upper error threshold anywhere in the swept range: the top arm transitions as often as the middle ones do.
The window is not there. A window predicts a peak — an interior band where emergence is fastest and common, falling away on both sides. What the sweep shows is a lower cutoff and then a plateau at the resolution ten seeds per arm can give: at 2 of 10 against 0 of 10 the arms at or above 2-13 are not distinguishable from each other. The hypothesis of DESIGN §1.3 sweep 1, as stated, is not supported by its own data.
The cutoff is suggested and not established. Pooling the arms at the split the transitions themselves suggest gives 0 of 40 runs at rates ≤ 2-14 against 5 of 60 at ≥ 2-13, a one-sided Fisher exact test on that 2×2 table giving p ≈ 0.073. That is suggestive and nothing more — and the split was drawn after looking at where the transitions fell, which makes it weaker than the number looks.
What the mutation rate does change, and changes unambiguously, is the floor a soup without replicators sits on: among the censored runs the final compress_ratio climbs arm by arm from 2-14 to 2-8 without a single reversal, while the three arms below 2-14 sit in no order at all, the no-mutation arm the highest of them. That is mutation randomising the tapes faster than interaction can make them alike. It is real, it is large, and it has nothing to do with emergence.
Three caveats. The detector fires on compression and diversity, not on a census of copiers, so it is a transition in the DESIGN §1.2 sense and not a count of replicators; the census disagrees with it on some flagged runs, in both directions, which is exactly what the per-run table above is for. Every 0/10 arm is censored at 20 000 epochs rather than negative, and several transitions landed after epoch 10 000, so an arm that shows nothing here may only be slower than the budget. And nothing here is a clean negative until the positive control transitions: a sweep with a handful of events in a hundred runs is a weak instrument whichever way it points.
What next
Emergence at 128×128 within 20 000 epochs is rare enough that this sweep mostly measured censoring: 95 of 100 runs stopped before anything happened, so most of what was compared between arms is where the clock ran out. Turning "one seed in ten" into a rate needs longer runs, larger worlds, or both, and the sweeps for that are queued. Mutation rate, long runs re-runs 2-14…2-11 for 60 000 epochs — three times the budget — to separate "rare" from "slow" and to test the lower cutoff exactly where it was drawn. World size asks whether emergence is a per-world event or a per-cell rate; if it is per-cell, a bigger world is the cheapest way to buy events. And the BFF positive control — 217 tapes, well-mixed, 50 000 epochs — is the run that says whether this engine reaches the published emergence rate at all. Until it finishes, every censored run above is evidence about the instrument as much as about the soup.
Evidence
Transition, flagged, census and arm are used here in the senses set out in the glossary.
Sweep: Mutation rate
Filled dots are runs a replicator confirmed emerged in; the line joins the median per value. Hollow dots are crossings the detector flagged that nothing confirmed. Hollow markers at the top count the runs with no emergence in 20000 epochs, the flagged-only ones among them.
Transitions and replicator counts
One row per finished run the detector flagged or that counted at least one replicator. "Transition epoch" is the detector's event; "Peak replicators" is the largest census the run reached, with the epoch it first reached it in brackets; "—" means the run never had a value.
| Run | Seed | Mutation rate | Transition epoch | Peak replicators | Min entropy_bits | Max copy_rate |
|---|---|---|---|---|---|---|
| Run #41 (CSV) | 1 | 0.000122 | 5,030 | 867 (5,080) | 4.85 | — |
| Run #45 (CSV) | 5 | 0.000122 | 7,000 | 108 (9,580) | 4.32 | 0.00336 |
| Run #83 (CSV) | 3 | 0.00195 | 10,670 | 14 (16,270) | 6.92 | 0.00214 |
| Run #59 (CSV) | 9 | 0.000244 | 15,560 | 0 | 4.9 | 0.00128 |
| Run #95 (CSV) | 5 | 0.00391 | 18,080 | 0 | 7.52 | 0.00195 |
| Run #92 (CSV) | 2 | 0.00391 | — | 2 (8,120) | 7.99 | 0.000061 |
Runs
Every run of the sweep, flagged or not, with its seed — the denominator of the rate above.
| Seed | Mutation rate | Status | Priority | Epochs done | Transition epoch | Census | |
|---|---|---|---|---|---|---|---|
| 1 | 0.000122 | finished | 0 | 20,000 | 5,030 confirmed | 867 | Run |
| 2 | 0.000122 | finished | 0 | 20,000 | — | — | Run |
| 3 | 0.000122 | finished | 0 | 20,000 | — | — | Run |
| 4 | 0.000122 | finished | 0 | 20,000 | — | — | Run |
| 5 | 0.000122 | finished | 0 | 20,000 | 7,000 confirmed | 108 | Run |
| 6 | 0.000122 | finished | 0 | 20,000 | — | — | Run |
| 7 | 0.000122 | finished | 0 | 20,000 | — | — | Run |
| 8 | 0.000122 | finished | 0 | 20,000 | — | — | Run |
| 9 | 0.000122 | finished | 0 | 20,000 | — | — | Run |
| 10 | 0.000122 | finished | 0 | 20,000 | — | — | Run |
| 1 | 0.000244 | finished | 0 | 20,000 | — | — | Run |
| 2 | 0.000244 | finished | 0 | 20,000 | — | — | Run |
| 3 | 0.000244 | finished | 0 | 20,000 | — | — | Run |
| 4 | 0.000244 | finished | 0 | 20,000 | — | — | Run |
| 5 | 0.000244 | finished | 0 | 20,000 | — | — | Run |
| 6 | 0.000244 | finished | 0 | 20,000 | — | — | Run |
| 7 | 0.000244 | finished | 0 | 20,000 | — | — | Run |
| 8 | 0.000244 | finished | 0 | 20,000 | — | — | Run |
| 9 | 0.000244 | finished | 0 | 20,000 | 15,560 flagged | — detector only | Run |
| 10 | 0.000244 | finished | 0 | 20,000 | — | — | Run |