0011 — Retire the gaming-era wallet currencies¶
Status: accepted (2026-08-10). Follow-up to 0010.
Context¶
After 0010 removed the gaming and affiliate domains, the wallet still carried
their currencies: free_points (contest play-money), cash (contest
stakes), rewards (contest prizes), and the pending-claim buckets
(is_reward_points, is_shopping_points, is_e_vouchers) that only the
rewards→credits claims conversion ever filled. None had a remaining earn or
spend path — with one dangerous exception: every real-money top-up still
minted free_points at 100.7% of the top-up amount (the "Scratch Card /
Mystery Box" bonus — play-money matching from the fantasy era) with no way to
redeem it. Every balance across all of these was zero in production.
Decision¶
- Drop the columns and the
claimstable (migration065_retire_gaming_currencies.sql, guarded to refuse if any balance is non-zero). Remove the claims conversion endpoints (/wallet/claim,/wallet/claims,/admin/users/:uid/claims) and their repo machinery. - Remove the top-up bonus entirely rather than redirect it: at 100.7% it was play-money economics, and paying it in any redeemable currency would double customers' money. A real loyalty bonus, if wanted later, is its own deliberately-rated decision.
- Keep
/wallet/settle-pendingas a compatibility no-op (returns the wallet, settles nothing) because shipped app builds call it from the spin & win gate. - The wallet is now:
shopping_credits(money),reward_points(checkout redemption),e_vouchers,last_daily_spin. The daily spin is untouched. wallet_ledgerhistory keeps its oldcurrency_typevalues; the CHECK constraint is not tightened, andRealMoneyTopupPredicatekeeps its currency filter because historical bonus rows sharetxn_type='topup'.
Consequences¶
- A top-up now credits exactly 100%
shopping_credits— no promotional ledger rows. - Old app builds render absent currency fields as 0 and their settle calls no-op; no forced app update is needed.
- Restoring any of this means a new design, not a revert — there is no rollback file, only pre-migration backups.