An ideal chain has low probability of reversal.
A poor chain has high probability of reversal.
A typical chain?
The EC Finality Calculator bounds the probability of a tipset being reverted given the actual chain history.
The result? Practical finality in 15 minutes, under typical conditions.
The calculator computes the potential adversarial lead for each of three stages: the distant past (prior to the epoch being examined), the recent past (between the epoch being examined and the current epoch), and the future (beyond the current epoch). While it assumes the worst case for the future, it takes into account the observed history for the past, which constraints the maximum potential lead. It then combines the different probability distributions into an overall error bound.
The 900-epoch requirement was derived based on a worst-case assumption. In reality, we can observe the actual chain history and compute the finality bound based on concrete information. The calculator isn't magical: in situations where the chain is seeing few blocks being added, reaching finality will continue to take longer. But those situations are rare.
It depends on the application, and that's also why the calculator is interesting. The threshold may be picked by each application, and can even vary based on the transaction. For instance, instead of focusing on the raw probability, you may target a maximum loss, given by the multiplication of the probability of error by the value of a given transaction.
Expected consensus cannot guarantee a specific number of blocks per epoch. Rather, it provides an expected ("mean") number of blocks per epoch but, even in ideal conditions, the actual number will vary. The number can remain below the target average during extended periods when the system is under stress, e.g. due to an outage affecting a substantial fraction of validators, a network partition, or even just a network upgrade.
You can use it today by implementing the calculator code on the application side. See the FRC, linked above, for more details and a prototype implementation that you can use as reference. We're looking to add out-of-the-box support to Filecoin clients, which would allow easy querying of finality probabilities.