pub fn migrate(from: u32, _doc: &Value) -> Result<()>
Format migration hook (§12). New fields are additive; breaking change = version bump, never silent reinterpretation.