Build notes from a one-person studio
These are write-ups of real defects found while building PixelTrader — a trading floor where eight AI brokers propose trades and a human approves every one.
They have one thing in common, which is the reason they are worth writing down: not one of them would have been found by reading the code. Every single one surfaced because the program was run and the output was actually read. Several of the fixes were also wrong on the first attempt and only caught the same way.
Nothing here is a postmortem written to look good in hindsight. Two of these bugs were caused by the fix to another one.
15 September 2026
Every broker's first proposal of every session was rejected, and the reason was a rounded number in a sentence.
The clock announced a new day. The rebaseline checked the wrong one.15 September 2026
Simulation mode replays a real 90-day window. One safety rail kept comparing the simulated date against the actual date.
The simulated clock was an hour behind the price15 September 2026
Alpaca stamps an hourly bar with the time the hour started. The replay read that as the time it ended.
Replay worked, except on the path everyone takes15 September 2026
Five bricks of historical replay, tested repeatedly, shipped broken for anyone starting a new game.
The ticker universe isn't fixed, and the cache assumed it was15 September 2026
Pre-fetching data for the tickers the brokers use assumes you know which ones those are. A language model does not work that way.
Sixty network calls at every launch, for data already on disk15 September 2026
Lazy fetching fixed the coverage problem and quietly created a new one, because nothing wrote the results back.
A pair of parentheses broke the build after it had already succeeded15 September 2026
Windows batch scripting has a parsing rule that turns a perfectly ordinary folder name into a syntax error.
The single-instance guard worked perfectly and bricked the game15 September 2026
Two copies of a trading application running at once is a real problem. The first fix was worse than the problem.
The save file was destroyed by the code meant to save it16 September 2026
A plain open-for-write truncates the file before a single byte of new content arrives. Real positions, no memory of owning them.
Six real tickers a week, thrown away over a full stop16 September 2026
The model was naming valid stocks. The parser was asking the price feed for PEP. and QCOM. with the punctuation still attached.
Every broker kept buying 444.44 shares. That number was in the prompt.16 September 2026
Eight brokers with ten million dollars each were deploying four percent of it. The prompt had a worked example, and the model was copying it.
This first batch was published together, from build notes taken during the work rather than written on the day. Later posts will be dated when they happen.