For about a week in late August I had two simulation projects running in parallel. The first was an evolution sim: does altruism evolve when your neighbors are your relatives? The second was a village, a real-time micro-society running at one hour per year, with beings you could speak to as an unexplained voice.
At the start of each project, before any code went down, I said the same thing: name the thing that has to be true for this to work. Test that first. If the premise fails, the machinery doesn’t matter.
Both times, we built the machinery first.
The evolution sim ran for several hours before the numbers made sense. Five defects, none visible by reading the code, all found by instrumenting the run. One of them was the measuring instrument itself: relatedness measured on the gene under study was coming back at 0.156. A neutral marker measured 0.044. Three and a half times overstated. Every result I had been looking at was wrong, and the confident story I was building around those results had to be walked back. The algebra that would have ruled out most of the search space was available on day one. Selection pressure needs rate×c to be large and rate×(b-c) to be small, rate cancels out of both, which leaves b/c under roughly 5 and r above 0.2. The region we spent hours sweeping was excluded by those constraints before we started.
The village ran four days unattended and reached year 78.3. Twelve beings alive. Nine buried. 3,900 events. Hunger peaked at 0.000 over 76 years. Nobody was hungry, not even once. I had designed the conflict system around scarcity. Somewhere along the way an extinction bug got over-corrected into permanent abundance and I never checked whether the scarcity system was actually running. 3,722 memories were written over four days and never read back into any decision. They were decoration. Cultural transmission, which I had described as the flagship feature, had been specced as v1 and not built. The sim ran for four days without it.
Both times I knew what to check first. Both times I skipped it.
The honest thing about both projects is that measuring is what caught everything. The defects were cheap and findable once I looked. The expensive part was trusting a mental model long enough to build on it, then having to unwind that work when the premise turned out to be wrong.
The validation isn’t the overhead. It’s the work. Everything after it is either building a real thing or cleaning up the wreckage of having skipped it.