How about having two modules that depend on each other, but only parts of each other?
Say one part of math (call it math.one) depends on one part of text (call it text.two) and this part of text depends on another part of math called math.two. Math.two can depend on another part of text (call it text.one).
There is no cycle! and yet the 2 modules depend on different parts of each other... actually math.one could depend also on text.one and not produce a cycle.
So the submodule math.one can depend on the whole module text but only part of this text (text.two) depends on a part of module math (math.two). We have no cycles!!
Don’t be too harsh. The internet is a scary mistress when coding, and JUANDENT has learned that we tend to work through the weirder stuff he comes across with a bit of focus.
I haven’t touched modules yet. (I’m still living in C++17 land.) So I cannot say anything useful, alas.