Right. All of these "finance and government would be so much better with smart contracts" suggestions seem predicated on the idea that human beings can design a system correctly on the first attempt and deploy an immutable version of that system they can then run independently forever without any bugs or exploits that need to be fixed in the future.
It seems the common approach now is to make a v2/v3/etc. of your protocol and let your own users migrate. Previous versions will still run forever, but your frontend can push migration paths.
Human beings cannot do that.