| Review | services/payments/webhook_handler.ts | Signature verification rewritten; replaces HMAC path from Feb
2026 incident. | +412 −289 |
| Review | services/payments/retry_queue.ts | Idempotency key now derived from event.id — changes replay
semantics. | +188 −94 |
| Review | db/migrations/20260419_webhook_events.sql | Adds unique index on (provider, event_id); backfill not gated. | +61 −0 |
| Skim | services/payments/__tests__/webhook_handler.test.ts | New fixtures mirror handler changes; confirm edge cases match
spec. | +204 −18 |
| Skim | lib/crypto/hmac.ts | Constant-time compare extracted into shared util — same
behavior. | +48 −12 |
| Skip | services/payments/**/*.snap | Snapshot updates follow from the fixture changes above. 14
files. | +284 −201 |
| Skip | package-lock.json, yarn.lock | Lockfile churn from bumping @stripe/webhook.
Auto-generated. | +87 −118 |