The conclusion that no consensus has been reached is a valid conclusion and can result due to poor topology or Byzantine failure. Certainty is always with respect to something that has occurred in the past. It is not possible to know with certainty the present state without observing at more points than will normally be possible.

So each server runs out ahead of what it knows for certain, applying transactions and attempting to reach consensus on them. When and if a consensus is in fact produced, the server later determines this with certainty, and thus can advance what it knows for certain.

Essentially, the consensus process produces a a stream of signed messages called "validations" from which it's possible to determine with certainty whether a consensus had actually been reached at some point in the past.

It is possible to create UNL topologies that frequently fail to reach consensus. The plan is to have Ripple servers build their UNLs using an algorithm that makes such topologies exceedingly unlikely.

Even with a perfect topology, two types of Byzantine failures are possible.

One, which is not that uncommon (one out of every 200 rounds or so), is a local failure. In order for a consensus to ever arise, someone has to declare a consensus. And for that to happen, someone must declare a consensus first. When that happens, whoever makes that declaration can't know for certain that others will declare that same consensus (or they would have already done so, and so he wouldn't be first). So it's always possible that he declares the wrong consensus.

In this case, the server that suffered the Byzantine failure quickly discovers that the other validators have built a different ledger than it did and it begins its resynchronization process. Other servers will still, from the validations, which ledger was the majority ledger.

A much less common type of failure is complete Byzantine failure. In this case, several servers declare different consensuses and there is no clear majority ledger. In this rare case, the network as a whole must reconverge before a true consensus will emerge. Ripple has an algorithm to do exactly this. Servers will see the conflicting validations and know with certainty that there was no actual consensus.