Of course, mistakes happen. But the degree to which they happen reflects bad engineering in the first place, and this sort of bad engineering is the very thing that SemVer encourages. Move fast and break things, if you change your mind later you can just bump the major version. This attitude is killing software. I’d rather have a broken std::regex and a working std::regex2 than have a world where C++ code just stops compiling every time I update my compiler.