- Spell is no longer a name-only stub: optional level and description (serde skips missing fields, so old saved JSON stays parseable) - mock: demo prepared spells — two vacant slots, Огненный шар (level 3, with description) and Магическая броня (level 1)