VM: versioning, backward compatibility and changes in future mainnet

Hi! Once again I’m here with questions.

How are you going to manage (or version) VM development during mainnet? Can bytecode format change during that time? If yes - what happens to historical transactions and modules? How are you planning to handle that? Or are you going to launch mainnet only after VM is 100% tested (though nobody can ever be sure of that)? What if bug occurs? Is backward compatibility obligatory for new versions?


the idea is that mainnet will have a stable version of the VM.
We also think that the VM will have to be backward compatible for the reasons you mentioned (historical transactions) and that could be accomplished in different forms (through 100% backwards compatibility or a version that can run in different modes).
We don’t see what else we can do. Thoughts?