My understanding is that computation of fixpoints for recursive modules is incomplete,
and cannot even be so from a theoretical point of view (impossible to know the number
of iterations needed to reach a fixpoint).

For classes, the algorithm is bootstrapped by starting from empty classes, which explains
why inheritance doesn't work when the number of modules involved is too large.
Since I don't see any complete solution coming, the best approach is to avoid
inheritance between recursive modules.

By the way, I don't know why your workaround using a single interface works,
but this seems to scale for an arbitrary number of levels of inheritance. Good.