Adding to the confusion, I'm perfectly fine with most of these strategies, but I'm also comfortable with #1 and a suitable unit test to check that they are in sync. As you note in #6, if you're changing constants/enums, you're probably changing fundamental functionality in the code. The testing strategy reflects your understanding that this change is not one that can be automated.