Does it make sense to (1) extend the GF for the Allegro case in CLOSER-MOP to return NIL or some other sensible value (2) embed an appropriate check in the CL-SERIALIZER client code or (3) do you have another suggestion?
my take is basically (2): define separate (de)serializers for structure-object's and standard-object's instead of a shared (def serializer-deserializer slot-object ...) and use them appropriately from (def serializer-deserializer structure-object ... ) and (def serializer-deserializer standard-object +standard-object-code+ ...). maybe dealing with funcallable-standard-class, too if necessary.
this requires a good knowledge of the related part of the standard, and/or an environment with many enough lisps to be able to run practical tests quickly. i personally have neither at the moment, but Levy may have some words on this.
patches are very welcome, though! :)