cfdb3b7547
level_for_xp implements the two-segment level formula from ARCHITECTURE.md §13. xp_for_win = base 50 + linearly-scaled speed bonus (10..=50 for sub-2-minute wins) + 25 if no undo was used. PlayerProgress exposes add_xp returning the previous level so callers can detect level-up events. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>