This MR adds a "cycles" section to the CI. It basically does this:
mix xref graph --format cycles --label compile
It will fail if there are any compile-time cycles found. Right now there are compile-time cycles, so it will fail.
Once the other issues with #2651 (closed) are addressed, we can merge this to prevent it from happening again.
Side note: I also suggested Elixir add this to their compiler to help prevent cycles as soon as they're introduced: https://groups.google.com/g/elixir-lang-core/c/UFGioJoFjYw