Let's assume we have a payment gateway interface variant capable of charging any positive amount. We also define a contract like payment gateway should successfully charge this amount and the current variant passes the contract.
Eventually another variant arises that charges only if the payment is greater than a threshold and throws exception otherwise. As the earlier contract makes no assumption on amount (still the concept of threshold is unfamiliar to the client) tests for an amount less than the threshold, this variant fails while the first one passes.
Now, does the second variant's contract failure tell us that this variant is not suitable for clients not familiar with threshold and client has to familiarize itself with threshold in order to be able to use the second variant?
Would like some resources that provides insights and guidelines for writing contracts.