Everything that has gone wrong
A world went extinct at tick 2042. Organisms appeared to be walking on the ocean. A performance improvement shipped visible corruption twice and was deleted. For months, a staging server quietly ran a completely different world from the one everyone thought it was running. This is the record, because a project that only publishes its good days is running an advertisement.
The world that died at tick 2042
The first live candidate for mutable terrain, a world 240 cells wide and 112 tall with two islands and 240 founding organisms, went extinct 2,042 ticks after it began. Not declined. Not struggled. Population zero, and it stayed zero, with the service still cheerfully running an empty world for another two thousand ticks before anyone looked closely.
The difficulty with investigating a death like this is that the world's own recorded history only samples every hundred ticks and keeps no detail about individual organisms or individual cells. The evidence of what happened was not saved, because nobody knew in advance that this run would be the one that needed it.
What made the investigation possible is a property the project has insisted on from the beginning: every run is exactly reproducible from its seed. The same seed, the same configuration and the same ancestral starting weights produce the same world, tick for tick, down to the byte. So the run was simply performed again offline, this time with full instrumentation, and it died again.
It died at tick 2043 rather than 2042, a one-tick difference traced to how a loop counts rather than to any real divergence, and its terrain activity matched the original closely enough to confirm the reconstruction was faithful: 48,160 successful excavations at one checkpoint against roughly 48,495 reported by the live run at almost the same moment. That match is the entire reason anything could be concluded. Without reproducibility, a dead world is just a dead world and a story you tell yourself about why.
Determinism is usually presented as a testing convenience. It is really an autopsy tool. It is the difference between "the population probably collapsed because of the terrain changes" and re-running the exact death with instruments attached. How it is built is on determinism and reproducibility.
The organisms that appeared to be walking on water
While investigating that world, something stranger turned up. Organisms were visibly standing in the ocean. Fifty-one separate observations, at four different moments, of a living creature sitting on a cell that was water.
This is the kind of finding that could mean anything from a trivial display bug to the physics being fundamentally broken, and the honest thing is that nobody knew which until each case was checked individually against the current elevation of that cell, its current passability, and whether anything was sitting on it providing support.
Thirty-two of the fifty-one, just under two thirds, turned out to be genuinely standing on land. Organisms had excavated and deposited enough material to raise those cells above the water line. The physics was right. The renderer was wrong: it painted the terrain once when the world loaded and then never looked at the ground again, so cells that had become land years earlier were still being drawn as ocean forever. Every visitor had been looking at a picture of the world as it was at birth.
The remaining nineteen were harder, and this is where the record has to be careful. Those cells were genuinely impassable water with nothing recorded holding the organism up. The most coherent explanation is that the organism crossed on something, a supporting object or a terrain fill, that was consumed or weathered away within the same tick, before the checking script could see it, since movement happens before interaction in the tick order.
That explanation was not independently verified. Confirming it would have required instrumenting the middle of the tick loop itself, which was judged out of scope. So it is written down as what it is: a low-confidence residual explanation, flagged rather than smoothed over. Both categories are now drawn truthfully either way, because the renderer reads current ground state instead of a memory of how things looked at the start.
The optimisation that shipped corruption twice
In a world where organisms are constantly digging and depositing, nearly every cell changes on nearly every update. The isometric renderer responded to this by rebuilding its entire terrain image from scratch, every single time: a full walk over every cell, several drawing operations and two noise calculations per patch of land. On the real world this measured between 310 and 500 milliseconds. On a 180 second session with no interaction at all, the page spent 35.8 seconds, a fifth of the total, with the browser's main thread blocked, and the worst single frame took 383 milliseconds.
The obvious fix is to only redraw the parts that changed. It was built, and it shipped flickering islands. That was fixed, and it shipped persistent triangular holes in the terrain. Both were live, both were visible to anyone watching, and the whole approach was then deleted rather than fixed a third time.
What replaced it does not draw less. It does the identical full rebuild, unchanged, in a background worker thread instead of the one the page needs to stay responsive, and the result is verified byte for byte against a normal rebuild of the same terrain: zero differing bytes out of 31,146,368 across both terrain and decoration, on desktop and on a phone. Frames over 100 milliseconds fell from 163 to single figures. There is also a deliberate test that breaks the worker on purpose, to confirm the world still draws if the fast path is unavailable.
The project's own notes now carry a standing instruction not to attempt partial redrawing again without reading that postmortem first. Two visible corruptions is enough of an argument.
The world that turned into a brown scar
Letting organisms move the ground had a consequence that is obvious in hindsight and was not obvious in advance. They moved it, and it stayed moved, and after a few thousand ticks the world was a uniform brown expanse of churned earth. Technically a success. Every mechanism worked. It was also unwatchable, and it modelled something false, because real disturbed ground recovers.
Ecological succession was added so that worked ground grows back over time. The first attempt at the constants failed its own pre-registered test: the rule had been fixed in advance that a candidate must keep at least 60 percent of the baseline population, and the first calibration came in at roughly 25 percent. That is a failure by a wide margin, and it was recorded as one before the constants were revised and the test run again.
Setting the threshold before running the experiment is the only reason that counts as a result rather than an opinion. A threshold chosen afterwards would have been chosen to be met.
The site that looked fine, unless you had a phone
Desktop and mobile were confirmed to be reading identical data and colouring every cell correctly. The data was not the problem. On an actual phone held upright, 73 percent of the screen was empty sea-coloured margin, because the canvas had a fixed height that knew nothing about the shape of the world it was drawing. The world is much wider than it is tall. The phone is much taller than it is wide. Nobody had put those two facts together.
Separately, freshly excavated ground was drawn a neutral grey that, on a small screen, was indistinguishable from water. Visitors on phones were looking at a world where the newest and most interesting activity was invisible, and every test passed, because every test was checking the numbers.
The staging server that ran the wrong world for months
This is the worst one, and it is the reason this page exists.
The script that brings up the staging environment had a world configuration written directly into it, dating from an early experiment: a 96 by 96 single landmass with untrained founders. Every other default in the codebase assumed the real candidate configuration, two islands at 240 by 112 with trained ancestors. The script never compared the two, because nothing ever compared them.
So a staging world was created from that stale configuration, and every redeploy afterwards correctly resumed the existing universe rather than creating a new one, which is exactly the safety behaviour you want and which in this case meant the mistake was preserved perfectly, for months. Everyone looked at it. Nobody noticed it was the wrong world, because a world that is running looks like a world that is running.
The configuration is now resolved from one place, validated, printed as an explicit summary before anything is created, and checked against whatever universe already exists on the server before it is resumed.
A close relative of this bug was found on the day this page was written. The deployment guide's instructions for shipping new code named a directory and a service that are no longer the ones serving the site. Following them exactly would run every command successfully, restart something, and change nothing a visitor could see.
The small ones, which are the same story
A camera that letterboxed the world for no reason. Creature thumbnails that inherited a stale transparency value from a cached image and drew wrong. A label in the observer that named the wrong action, off by one, which had been sitting there since the controller was built and was found only because someone was building a panel that displayed it next to the real thing. A launch checklist that told you to verify version numbers that had moved on two phases earlier, so that following it literally would fail, and the tempting fix would have been to edit the wrong number.
Notice the pattern. Almost none of these were found by tests. The extinction was found by looking. The ocean organisms were found by looking. The brown world was found by looking. The phone problem was found by holding a phone. The tests were all passing, and they were all passing because they were checking that the numbers were right, and the numbers were right.
Why publish this
Partly because a null result is a result. A ruleset that fails its own watchability test, a candidate that goes extinct, an optimisation that has to be deleted: each of those is information, and hiding it would make the surviving claims less trustworthy rather than more.
Mostly, though, because of what the failures have in common. Every one of them is a gap between what was true and what was displayed, or between what was configured and what was assumed. The physics has been comparatively reliable. The story told about the physics has repeatedly not been.
That is a useful thing to know about a project whose entire output is a claim about what happened in a world nobody can inspect directly. It is the reason for the frozen rulesets, the reproducible seeds, the state hashes, the thresholds registered before the run, and the rule that says an interpretation may never quietly become a fact by being restated on a later page. Those are not ceremony. They are what is left after being wrong in public a number of times.
The full experimental record, including the runs that produced nothing at all, is on research notes, and the reasoning behind the safeguards is on methodology.