I&#x27;m with you that version ranges cause problems, but my belief is that lockfiles are a better solution.<p>Generally I&#x27;d use semver ranges in libraries, and then fixed versions + lockfiles for transitive deps in applications.<p>I suppose this is roughly equivalent to doing `:pedantic :abort` in leiningen, except you wont&#x27;t have as many warning to squash - either way you have to rely on the test suite to tell you if the versions you&#x27;ve pegged work.