Hello.
I have not thoroughly read your posts,
but it looks like the double vision problem.
You may be interested in the following post to camllist:
http://caml.inria.fr/pub/ml-archives/caml-list/2007/06/0d23465b5b04f72fedecdd3bbf2c9d72.en.html
By the way, I believe one can hack the OCaml type checker
to (mostly) avoid the problem by "strengthening"
the external signature of the recursively defined module
in the type environment. But this is not particularly beautiful
since a type constructor may escape its scope,
although the implementation is kept sound.
I would be very happy if you could give me a practical example
which suffers from the double vision problem.
A happy new year!
Keiko