in/out contracts ought to remain in release builds.Since debug and non-zero-assert disappear in release, I can just use them inside the in/out blocks when I want debug-only verification steps.
Compiling away contracts seems redundant, and it would help reduce noise to push more verification logic out of function bodies and into contracts.