RedEther debit now goes through tx.TrySpendAsync (freeplay-aware); Card grants route through tx.GrantAsync (cosmetic cascade for first-time owners). Validation phase unchanged. DestructCards left on direct-viewer path (structural mismatch: validation on one viewer, mutation on same instance — clean tx port deferred to follow-up). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>