"Alternative to Design by Contract is Program by Coincidence." That's why clojure/spec is huge.
In requirements work and documents, clearly differentiate between semantic invariants—core, invariable requirements and more situational or potentially changeable policies.
"Any system of agents (services) depends critically on contracts, even if they are dynamically generated." OpenAPI.
If DbC is so powerful, why isn't it used more widely?
Well-specified interface contracts reduce cases when clients intentionally or unintentionally rely on unspecified behaviour.
Specify interface contracts