Disagree here (at least in spirit?) - code smell can also point to maintainability issues - if the codebase is continually changed some code is more likely to break than others.
When you're debugging a concrete issue and have a hunch what might be the cause, that's not a "code smell."
Sounds like you're basing your heuristic on dogma rather than experience.
I think if you’re talking about CS and code you’re right - it’s a very pure and deterministic system. But if you consider software engineering at scale, you do get scenarios where failure states emerge in a gradual fashion, like the OP example of a worn mechanism. An example would be monitoring error rates on a large fleet of servers. You expect a certain background level of failures, but when the rate starts to rise you might be observing the beginning of some kind of cascading failure mode. The errors might be manageable up to a point, but it isn’t always clear when the system will tip beyond that point. Post-mortems of cloud platform outages often mention these kinds of failures, because they typically arise from complex interactions between different layers which put the system into a state which nobody anticipated.
In a previous job in early 2000s they did have some legacy software that was originally written for VAX/VMS and run on an emulator. Even that environment wasn't stable enough so they maintained some real VAX hardware just in case. And as far as I know, the hardware was physically breaking down.