10:17, Tuesday
The wallet alert fires: one balance has gone negative. Soon after, a customer, Cora-17, tells support that a 75.00 credit purchase went through twice, although the wallet only held 100.00. The API returned success both times.
Hearth is a marketplace, and customers spend wallet credit at checkout through POST /buy. A balance below zero is a ledger problem, and here it means Hearth handed over 50.00 of goods nobody paid for.
There's more on the page. The PSP team reports a slow stretch: charges that normally take 150ms locally took 500ms during the busiest minute, though they found no duplicate charge ids. A deploy to the wallet service went out 18 minutes before the alert. Wallet API errors are steady at 0.2%, and Postgres is taking connections.
You have 30 minutes to reproduce and contain it. Don't drop the wallet or purchase tables, don't reset the whole database, and don't restart the service in place of a fix.
What's running
The starter has the wallet API, its Postgres tables, a fake PSP whose latency you control, request evidence, lock-wait metrics, and a load command that sends the same two purchases every time. The customers and the payment gateway are local, and two requests stand in for concurrent traffic. PSP settlement reconciliation, idempotency across regions and the production ledger migration plan go in the postmortem.