
The simulator-label trap
Two models agreed on every trajectory to a hundredth of a foot and still flipped 48.3 percent of scored outcomes. Simulated states degrade gracefully; simulated labels fail all at once, right where the outcomes get interesting.
Perfect trajectories, half the outcomes flipped
On the night of July 5th I handed a Claude session the throw simulator we had built for Quantum Caddy, tens of millions of simulated cornhole throws generated as a training-data engine, plus a one-page brief telling it to work like an experimentalist. The session reverse-engineered our simulator from its own outputs, built a corrected physics model from first principles, and ran both over the same balanced sample of throws. I told the full story of that session in the simulator-teardown field note; this lesson is about the one mechanism from it that generalizes.
In the air, the two models might as well have been one. Median disagreement on the landing point: 0.01 feet. If you plotted the trajectories on top of each other you could not tell them apart.
Then the bags hit the board and 48.3 percent of the scored outcomes flipped. The sample contained 2,000 hole-in throws, the maximum-score outcome the product exists to detect, and zero of them survived corrected physics. Every one traced back to a single shortcut: the simulator let a bag slide roughly three feet up the incline after landing, where real contact physics stops that bag almost where it touches down. The best outcomes in the grid were artifacts of one modelling convenience.
That simulator is retired now. The lesson outlived it, because the labels it emitted looked exactly like training data, they were wrong in a way no aggregate check would have caught, and nothing about the failure is specific to physics.
A label is state physics evaluated at a cliff
Why did trajectory agreement buy nothing at the scoreboard? Because a label is almost never the state. The state is the smooth stuff a simulator computes: positions, velocities, balances, activity levels. The label is a nonlinear function of that state, evaluated at a boundary. Did the bag come to rest inside a six-inch circle. Did simulated cash flow cross the default threshold. The question is discontinuous even when the state underneath is smooth.
That discontinuity is the trap. State error degrades gracefully: a simulator that is an inch off on rest position is an inch off, and for most purposes an inch is fine. Label error degrades all at once: near the boundary, that same inch flips the outcome, and far from the boundary it flips nothing. So the validity of a label is a property of the sim's accuracy in a thin shell around the boundary, a region that aggregate accuracy statistics barely sample.
Now stack the second half of the mechanism on top. Interesting outcomes concentrate at boundaries by construction; that is what makes them interesting. And boundaries are where generators cut corners, because the smooth interior physics is textbook material while the boundary behavior (contact, transitions, threshold crossings) is exactly the hard part a modeller under deadline approximates. Our simulator nailed ballistic flight, which is nineteenth-century physics, and improvised the landing, which is where every point is scored. Synthetic data is safest where the generator is boring and most dangerous where the outcomes are interesting, and those are the same place seen from opposite sides.
Every stack has a boundary like this
The cornhole version is a six-inch hole, but walk your own stack and the same structure shows up wherever a label gets minted:
- A game or sports sim scores with a geometric test on a resting state, and the resting state depends on contact behavior the sim probably approximates.
- A credit model labels default when simulated cash flow crosses a threshold, and threshold-crossing behavior depends on the tails of the cash-flow model, not its mean.
- A churn model labels a synthetic customer churned at an activity cutoff, and the cutoff region is dominated by the marginal customers the generator understands least.
- A trading backtest labels a position liquidated when a margin trigger fires, and triggers fire in exactly the volatile regimes where fill and slippage assumptions break.
In each case the state model can be respectable on average while the label is fiction, because the label only ever consults the state at the cliff edge. The rule I adopted:
Never train an outcome head on simulated labels until the sim has survived an audit at the regime boundaries where those labels are decided.
The operational form of the same rule: validate the observable you will train on, in the regime you will act on, or you have validated nothing. Our flight-stage agreement was real validation of the flight stage. It told us nothing about outcomes, because outcomes are decided in a regime the flight numbers never exercise.
Simulated states still earn their keep
The trap is labels, specifically, and the wrong reading of this lesson would be to torch synthetic data in general. Simulated states can be excellent pretraining. The audit reproduced our retired simulator's flight stage to about 1.5 percent, and the corrected model agreed with it in the air almost exactly, which means tens of millions of simulated trajectories carry real, transferable structure about how a bag moves. A model that learns state dynamics from a sim and outcomes from measured reality gets the best of both.
Two more honest limits. First, a boundary audit is necessary but not sufficient: ours compared two models with zero measured throws, so it could expose internal contradictions but could not certify either model against reality. Passing the audit earns a label probationary status, not a clean bill. Second, some boundaries are cheap to probe and some are genuinely hard. If your sim's boundary behavior cannot be checked even in principle, that is not a reason to train on the labels anyway. It is the strongest reason to go collect real outcomes first.
Apply this
This works for demand models, risk models, game sims, agent rollouts, any place a generator mints labels.
- List every model in your stack that trains on generated labels. Include the quiet ones: synthetic financial scenarios, simulated user sessions, LLM-labeled examples, backtests feeding a strategy selector.
- For each one, write the label's definition as a function of the simulated state. One line each.
- Mark every label whose definition contains a threshold, a cutoff, a trigger, or a geometric test. Those are boundary-evaluated, and they are where this lesson applies.
- For each marked label, write down what evidence you hold that the generator is accurate at that boundary, as opposed to accurate on average. "The aggregate distributions match" does not count.
- Queue a boundary audit for the worst gap: push the sim into the boundary region and inspect the mechanism that actually decides the label. Ours took one query to expose once someone looked at how the hole-ins were happening, and it retired the whole label set the same night.
- Until a label survives its audit, demote it. Use the sim to pretrain on states, and hold the outcome head for measured data.