Firebreak.BlastRadius (Firebreak v0.1.0)

Copy Markdown View Source

Tier-2 analysis — the part no existing tool does.

The supervision tree tells you what a supervisor contains. It says nothing about who outside that subtree depends on the processes inside it. This pass takes the resolved coupling graph and, for each supervisor, finds the edges that cross into its subtree from the outside.

Those external callers are exactly the processes that will observe :noproc or :timeout when the supervisor restarts a child — failures the tree alone would tell you are "contained".

Summary

Types

ranking()

@type ranking() :: %{
  supervisor: module(),
  members: MapSet.t(),
  edges: [Firebreak.Edge.t()],
  external_callers: [module()]
}

Functions

analyze(forest, edges)

@spec analyze(Firebreak.Forest.t(), [Firebreak.Edge.t()]) ::
  {[ranking()], [Firebreak.Finding.t()]}