One alert fired, at 02:14 UTC: payments-prod · errors ≥ 5 in 5 min. It resolved at 02:31.
In the window, 47 events matched. 44 are one pattern on worker-2: charge failed card_declined, all for the same gateway retry path. The first three are at 02:13:58, 02:14:02 and 02:14:04.
Around the first one, across all sources: worker-2 logged gateway retry 1/3 latency=2.1s twelve seconds earlier, and web-1 returned 402 on POST /checkout/confirm for the same request ids. Nothing on db-1. The latency line stops at 02:30, which matches the resolve time.
This looks like the gateway slowing down, not a change in our code. The retry path in app/Payments/GatewayClient.php treats a timeout as a decline. Want me to show the 44 lines, or open the retry code?