As for the bug that you guys encountered, one thing that can be helpful is to prevent modules from being updated by using file security. That way unexpected changes arent introduced into a running system. I agree with you that this type of error is unusual however.
Oh yes. I had a long, and somewhat painful, chat about the source control system after that incident :-)
I agree that the version mixup shouldn't have happened, but it wouldn't have been a problem if we'd used inside out objects.
(and I just want to say again that kind of problem is very rare in my experience)