The goal of Ensurance is to provide a flexible validation API for production code. Ensurance is used when you need to Ensure that a condition is valid or when a constraint must hold. Typically there is only one way in which we deal with these situations, whatever it may be. Ensurance allows you to change the way your code reacts to failed assumptions.