core.unify does not preserve want-occurs? when recursing from unify-variable-. That is, if unify-varable- calls garner-unifiers, it does not pass itself as the uv-fn parameter, so garner-unifiers will default to unify-variable (which includes an occurs? check). I'm not sure if this was intentional, but I found it surprising. If not intentional, then I believe calls to garner-unifiers in create-var-unification-fn should look like:
(garner-unifiers ~'var-unify ~varp vb# ~expr ~binds)