lint-rules
Some conventions cannot be enforced by a type: that navigation is only constructed inside the modules that own it, that a presenter carries the code generation annotation instead of a binding written by hand, that a test is named after the behaviour it checks. These are the ktlint rules that catch those in review instead of leaving them to a reviewer.
The rules are loaded through a ktlint rule set provider, so nothing here is called directly. Add the artifact to Spotless as a custom rule set, or set this in gradle.properties and let the convention plugins do that.
app.enableLintRules=trueThe rules that need an escape hatch read their exemptions from .editorconfig, so a module that legitimately breaks one says so in the file it applies to rather than disabling the rule everywhere.