-
Stefy Lanza (nextime / spora ) authored
Real bugs surfaced by the retry tests (code referenced schema that did not exist / wrong table): - subscriptions was missing cancelled_at (written when a renewal exhausts its retries and cancels the subscription). - payment_retry_queue was missing last_attempt_at (written when scheduling the next retry). - retry.py queried a non-existent `tiers` table for the free tier; corrected to account_tiers (and is_default = 1 for cross-DB boolean compatibility). Migration changes add the two columns to the CREATE statements and provide idempotent, cross-DB (SQLite PRAGMA / MySQL INFORMATION_SCHEMA) ALTERs for existing databases. test_retry: crypto retries are intentionally skipped without incrementing while the wallet is unfunded, so the increment/downgrade tests now drive a failing gateway charge instead, and expect the same free tier the code selects. Verified all payment migration DDL (CREATE + new ALTERs + INFORMATION_SCHEMA existence checks) executes cleanly on MariaDB/MySQL as well as SQLite. Co-Authored-By:Claude Opus 4.8 <noreply@anthropic.com>
38d63406