Replay worked, except on the path everyone takes

15 September 2026

The replay layer was built in five pieces, each tested before the next started. Data fetch, then the clock, then the no-lookahead truncation, then the guards keeping replay out of live modes, then the end-of-window screen. All of it worked.

Then I started a New Game and it failed immediately.

What I had been testing

An existing save. Every single time.

Replay fetches historical bars for the tickers the brokers are covering. On a saved floor, those tickers are already known — they are in the save file, because brokers picked them in earlier sessions. So the fetch has a list to work from and everything proceeds.

On a brand new floor there are no tickers yet. The brokers have not scouted anything. The list is empty, the fetch has nothing to ask for, and replay comes up with no data on the one path that every new player takes and I never took.

The uncomfortable part: I had a working save on my machine from early development, so the broken path was invisible to me specifically. The more you use your own software, the less you resemble a new user, and the first-run experience is the one you stop being able to see.

The fix

Two halves. A new floor fetches a starting window before the brokers scout, so there is always something in hand. And because brokers name their own tickers at runtime — the model picks four to eight per scouting round, and that set is not fixed — anything unknown gets fetched on first use and kept.

The habit it changed

Delete the save before testing. Not once at the end, as a final check — regularly, as part of ordinary testing, because "works with existing state" and "works from nothing" are two different programs and only one of them is what a new user runs.

Previous: The simulated clock was an hour behind the price

Next: The ticker universe isn't fixed, and the cache assumed it was

All devlog posts