See https://github.com/nilslice/protolock. Should be able to help us codify avoiding accidental breaking changes. The one thing that comes to mind is we are likely going to need some type of mixed mode where certain messages are locked and others are not locked while they are draft. Not sure if that is supported but probably pretty easy to do via some type of comment annotation.
cc @nilslice @rodaine @twoism @htuch