Replace RewardGrantService + ICurrencySpendService with IInventoryService tx. CommitAsync's currency-collision rule replaces the manual Crystal RemoveAll+re-append scrub in BuyPremiumAsync. AddPointsAsync uses result.Deltas for NewlyClaimed to preserve per-track visibility (two Rupy grants stay two entries). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
13 KiB
13 KiB