Build an ordered fix plan from file-level violations.
violations are grouped per file (and tagged with the file's layer)
the import graph is projected onto the violated files: file A depends on
violated file B when B is reachable from A without passing another
violated file (clean files and barrels in between are walked through)
import cycles among violated files become one cluster (Tarjan SCC) that
has to be fixed together
clusters are ordered dependencies first; the topological level of a
cluster decides its phase. Within a level single files come before cycle
clusters, then files are sorted by layer and path.
Pure: the caller supplies the dependency lookup and the layer lookup.
Build an ordered fix plan from file-level violations.
Pure: the caller supplies the dependency lookup and the layer lookup.