We do string-equality checks against class name, both in core's JsonCodec as well as in the json-codec library. This breaks when we move classes and use class_alias for compatibility. We should instead (a) switch to an equality test that takes aliases into account, and/or (b) document the proper procedure to use when making a change to a serialized class -- ie, do you need to add support to a special "other aliases" table in advance in order to allow rollbacks to work, or else put the class name in "other aliases" in the first train where the name switch happens so that you continue to use the 'old' name for a train or two?
Should also add support to the serialization test infrastructure to verify that aliases work. Maybe this would catch breaking aliases before they enter production.