DebtRank Propagate — the cascade engine
Everything downstream of 'what if THIS breaks' runs through here: declare a shock, let it reverberate with saturation, read who ends up distressed and along which edges the damage actually travelled.
How it reads
node_distress[] terminal values under the declared shock; edge_flux[] is the realised flow — hand it to dissipation for the whirlpool-vs-drain verdict.

