Hello Walter,
2. If a loop is detected, rather than issuing an error message, simply arbitrarily pick one order and continue constructing.
How about a way to explicitly cut edges in the graph (tagging imports with "pragma(nodep)" or "@nodep" for instance)? That has the same end effect but for only a little more work, removes any non-determinism and allows for easy control of how things are resolved.
-- ... <IXOYE><
