Firebreak.Forest (Firebreak v0.1.0)

Copy Markdown View Source

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

t()

@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

build(modules)

@spec build([Firebreak.ModuleInfo.t()]) :: t()