Some checks failed
Phase 3 of the production launch plan: task reliability improvements to prevent DB lock issues at scale and handle transient wallet API failures gracefully. - 3.1 Batched point expiration: rewrite per-card Python loop to chunked processing (LIMIT 500 FOR UPDATE SKIP LOCKED). Each chunk commits independently, releasing row locks before processing the next batch. Notifications sent after commit (outside lock window). Warning emails also chunked with same pattern. - 3.2 Wallet sync exponential backoff: replace time.sleep(2) single retry with 4 attempts using [1s, 4s, 16s] backoff delays. Per-card try/except ensures one failing card doesn't block the batch. Failed card IDs logged for observability. 342 tests pass. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>