- use tagged enum serialization for BatteryError - flatten BatteryInfo telemetry with consistent field names and typed error