Builds the supervision forest from parsed modules: who supervises whom, which supervisors are roots, and the full set of descendant modules in each supervisor's subtree.
The subtree is what Tier-2 blast-radius analysis is computed against — a coupling edge that crosses out of a subtree is the interesting one.
Summary
Types
@type t() :: %{ supervisors: [module()], roots: [module()], child_map: %{optional(module()) => [module()]}, parents: %{optional(module()) => [module()]}, subtree: %{optional(module()) => MapSet.t()}, child_specs: %{optional(module()) => Firebreak.Child.t()}, strategies: %{optional(module()) => atom()} }
Functions
@spec build([Firebreak.ModuleInfo.t()]) :: t()