It's too difficult to actually code backwards compatible migrations. We should just "reupload" every character version bump to avoid many problems. It will take longer to migrate but that might also be incentive to fix the upload code to be faster.
To prepare the path we would have to:
Stop the modification of XML values by all code except for the editing code.
Probably have to improve the efficiency of upload code.
Add some migration code to call to invoke upload on all characters and ensure that upload doesn't muck with active effects (it might not anyways) or those may still need explicit migrations when changes happen.
It's too difficult to actually code backwards compatible migrations. We should just "reupload" every character version bump to avoid many problems. It will take longer to migrate but that might also be incentive to fix the upload code to be faster.
To prepare the path we would have to: