Devlog

Build notes from a one-person studio

Eight bugs testing caught

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.

The prompt said 14%. The rail said 13.3%.

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 price

15 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 takes

15 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 was

15 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 disk

15 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 succeeded

15 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 game

15 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 it

16 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 stop

16 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.

About the dates

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.