Project-wide Data Input & Sync — Manual + CSV Import + Provider Abstraction
Dual-block migration structure in database.js duplicates every migration entry
LOW: LIVE constant interpolated into SQL queries in payments.js
MEDIUM: No pagination on core list endpoints - returns all records
Imported payments have no payment_source
PATCH /api/snowball/order doesn't exclude soft-deleted bills
Mortgage category not auto-detected as debt (snowball DEBT_LIKE_CLAUSES gap)
Imported payments don't update debt balance (balance_delta always NULL)
Recurring bill generation from cycle rules
Recurring bill generation from cycle rules
Fixed in 1f1c505. getCycleRange now called per-bill so quarterly/annual bills check their full window, not just the calendar month. Null-guard added after buildTrackerRow() prevents…