Non-crash faults
What should a system do about a node that is up and wrong, short of Byzantine consensus?
Between crash and Byzantine lies the practically dominant category: a node that is up and wrong. Examples: corrupted bytes on a network card with weak checksums, a misconfigured member with a different view of the cluster, a half-open connection (one side thinks it is open, the other has closed it), a client pinned to a stale configuration.
Byzantine consensus costs N ≥ 3f + 1. The reason: you must decide on N − f responses (f nodes may not answer), and of those, f may lie. The honest ones must outnumber the liars, so N − 2f > f, hence N > 3f. It also needs extra rounds. It is rarely justified inside one administrative domain, where the threat is bugs rather than adversaries.
The practical substitutes are end-to-end checksums, validation on arrival, and epoch checks everywhere. This is the fencing discipline already derived, applied as a general defence and not only against stale leaders. It also explains why detection of an asymmetric partition belongs here: the same node is "up" for one observer and "down" for another (gray failure is what the system does next).