I’ve seen more errors from “pubilshed” strings than difficulties updating an enum.
The rest of it is arguing about what constitutes valid states, eg, commit messages when the user deletes or wrong-schema datagrams being partially utilized. Here’s the rub: if you don’t allow invalid states, you’re forced to actually have that discussion (“actually, messages don’t strictly require a user”; “only these fields are required, others are a maybe”) and those are then encoded in your software rules. They’re not things that happen informally, in undocumented ways.
Further, when you do allow invalid states, you have a typo disappear 1% of your messages into the “pubilshed” category.