Question about the scope of recursive modules

module rec Person: sig include module type of (struct 
  type t = {
    name: string;
    pet: Cat.t; 
  } 
end : sig end)
end = Person

and Cat:sig
  type t = {
    name: string;
    isLazy: bool;
  }  
end = Cat

It complains about unbound type Cat.t, if I comment that line, everything is fine, is this a bug or expected behavior?
The error is Error: Illegal recursive module reference

I am not completely sure how much this is the specified behavior for recursive modules, but currently the module expression in module type of cannot refer to the recursive modules being defined.

Thanks for having a look, shall I file an issue on github repo?

You can certainly open a feature wish issue but do you have a more precise use case in mind?

Thanks, reported here https://github.com/ocaml/ocaml/issues/9574