

They don’t need to use semantic versioning. I doubt coreutils itself uses it, though I admit I haven’t checked. Actually I think semantic versioning is less popular in practice than it looks like.
For a set of tools to that completely replaces another one, announcing a 1.0 version would be a message that the developers think the project has actually reached its initial goals. “0.2” does not.
I mean if your OS was “smart” as not to send IO to devices that indicate critical failure (e.g. by marking them read-only in the array?), and then thinks all devices have failed critically, wouldn’t this happen in that kind of system as well…