The canonical paper on handling software failures: https://erlang.org/download/armstrong_thesis_2003.pdf
Algorithms can be faulty as well.
Which was never claimed.
That paper is a little bit about Erlang and a whole lot about OTP and other methodology and design technique.
It is still, very much "the paper" for distributed systems, though its applicability to this particular problem is limited.