Валидатор принял решение. И оно близко к "правильному". Но при этом что "правильное" решение, что мое при запуске в Идее стабильно выдает
Exception in thread "main" java.io.InvalidClassException: Animal; local class name incompatible with stream class name "OldAnimal"
аналогично со следующим заданием: JAVA 25 SELF, 45 уровень, 3 лекция Обновление профилей пользователей: интеллектуальная миграция возраста тот же ИнвалидКлассЕксепшн и та же несовместимость классов куда копать и в чем может быть причина? суть: есть старый класс. его пишут в файл, а потом добавляют в него новое поле и читают как новый класс
OldAnimal zebraV1 = new OldAnimal("Зебра", 350);

try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("animal.dat"))) {
    oos.writeObject(zebraV1); // сохраняем старую версию объекта
}

// 2) "Вторая версия" класса Animal: добавлено поле animalColor, serialVersionUID не меняем.
// Десериализуем старый файл. При чтении маппим OldAnimal -> Animal.
Animal loaded = null;
try (ObjectInputStream ois = new CustomObjectInputStream(new FileInputStream("animal.dat"))) {
    Object obj = ois.readObject();
    if(obj instanceof Animal){
        loaded = (Animal) obj;
    }
}
public class CustomObjectInputStream extends ObjectInputStream {
    public CustomObjectInputStream(FileInputStream fileInputStream) throws IOException {
        super(fileInputStream);
    }
    @Override
    protected Class<?> resolveClass(ObjectStreamClass desc) throws IOException, ClassNotFoundException {
        if (desc.getName().equals(OldAnimal.class.getName())) {
            return Animal.class;
        }
        return super.resolveClass(desc);
    }
}