fe986ef4a1
The Reward::BonusXp path in evaluate_on_win was adding XP directly without sending XpAwardedEvent, so players saw no "+25 XP" toast when the no_undo achievement first unlocked. Adds the missing event send and a regression test verifying the event fires on unlock. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>