Yeah,
the KEEP says contracts are pretty much binary stable:
•
Syntax for declaring contracts (i.e. Contracts DSL) is unstable at the moment, and it's possible that it will be completely changed in the future.
◦ It means that writing your own contracts isn't suited for production usage yet
•
Binary representation (in Kotlin Metadata) is stable enough and actually is a part of stdlib already. It won't be changed without a graceful migration cycle.
◦ It means that you can depend on binary artifacts with contracts (e.g. stdlib) with all usual compatibility guarantees
•
Semantics, as usual, may be changed only in exceptional circumstances and only after graceful migration cycle
◦ It means that you can rely on the analysis made with the help of contracts, as it won't get broken suddenly