bd48813900
evaluate_weekly_goals discarded the return value of add_xp(bonus_xp), so a level-up triggered by a weekly goal completion never fired LevelUpEvent — the level-up toast and mode-unlock at L5 were silently skipped. Now captures prev_level, checks leveled_up_from(), and sends LevelUpEvent matching the pattern used by progress_plugin. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>