When I first tried to use check-ns, I assumed incorrectly that it could be called from within a source file.
I was led to believe this from the example here: https://github.com/clojure/core.typed/wiki/User-Guide#var-warnings
Where (check-ns), although being commented out, is included in the code of a snippet which looks like a file.
Tweaking the docstring for check-ns to state that the function is intended for use from the REPL would probably reduce noobie-flailing.
Also a friendly reminder for you to update the docstring for cf to indicate that it should not be called recursively.