Adapters are a powerful concept, but difficult to maintain. I wonder how soon we require them.
Adapters would be required to support interoperability between the pre-evolvable parameter world and the evolvable parameter world since parameter serialization will change fundamentally in that transition. But we only expect to make that transition just once, so we perhaps needn't build a general mechanism capable of handling such transitions?
Once we transition I think we'll be able to handle interoperability between adjacent major versions using your rules 1-3. Prior to the transition we would not provide wire compatibility between major versions. Do we expect protocol changes that we cannot handle with rules 1-3?
Perhaps it comes down to whether we're willing to have another non-interoperable major release. These are unfortunate, but a non-interoperable release is not a regression, so I don't see it as a hard requirement that we don't have another before we add interoperability as a feature.
If interoperability is a requirement for future releases, then perhaps we should push
HDFS-2060 into 0.23. If we did that and in some subsequent release decide we wish to incompatibly alter wire formats in some way that cannot be handled with rules 1-3 then we could implement adapters. But we might have a few interoperable releases in the meantime.