A customer was paid 160 from a balance of 100.
Two taps on Withdraw 80 at the same moment, and the bank paid twice. Find how on the real code, then pick the fix that holds in every order.
Made by Saba Janelidze, principal engineer. I build payment and ledger systems for fintech and crypto teams. Hiring, or need help with payments? Book a call →
- Balance
- 20
- Paid out
- 160
- Exchange short
- 80
Each run is a recorded trace of the game's real code, checked by a test on every build.
How each incident works
- 1Reproduce: pick the step where one request gets slow, and watch two requests race.
- 2Count: guess, then see how many of all the possible orders lose money.
- 3Fix: pick a patch. The machine tries it in every order; wrong patches fail in front of you.
You never write code. You tap steps with plain labels, and each one runs the real code in your browser: the same files the incident's "How it works" card links to, with their tests.
Incidents
"I tapped Withdraw 80 twice. The bank paid me 160 and my balance still shows 20."
Play this incident
Next: incident 2, new customers ("approved yesterday, pending again this morning"). Later: deposits on a test network, a support AI that must not be tricked, and the end-of-shift books.