Crystal/Rupy/RedEther freeplay no-op (returns configured amount, balance unchanged); SpotPoint always real. Insufficient returns current balance; success returns post-deduction balance. SVSimTestFactory gains freeplayEnabled ctor overload that upserts the Freeplay GameConfigSection row after EnsureSeedData. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>