While core.typed is very accurate, it is very picky. Sometimes we don't care about accuracy enough to have to please core.typed.
Having a middle ground between fully checked and untyped code would be useful, preferably one that requires no annotations, but could be made more accurate with annotations.
Implement a new "sanity check" mode. It should check things like arity mismatches
The type checking level should be configurable per-namespace (per def?)
We can use existing annotations, but perhaps strip information like generics and polymorphic binders.
nil might need to be a subtype of everything in this mode.