the tldr of this blog post is "today's invalid states are often tomorrow's feature requirements" and i found myself nodding along in agreement
However, user-facing software will eventaully be forced to break many of its constraints in the interest of better fulfilling the real-world goal of that software. Thus, some invalid states ought to be representable.
Working with games almost exclusively. This is a real mood. Some places I have hard constraints such as making sure my math doesn't go sideways. But, also hard constraints for games can turn into catastrophic rewrites that spiral into more and more rewrites until a) rewrite the whole game b) give up and start on a different project.
I've been majorly burned in the past by specifying hard constraints in the wrong places 🥴