Normalized activation specification of a module — which wave it belongs to and what it
exchanges with the capability graph.
Every module names a wave: activatesOn defaults to ActivationEvent.Idle when the
authoring record omits it. Within a wave, modules are ordered topologically (providers of
requires activate first) and a module may pull a provider whose own wave has already fired.
Because a fired event stays fired, a module gated on an event that has already passed remains
eligible in every later round — which is what lets a consumer activate once a provider from
some other wave finally lands.
Normalized activation specification of a module — which wave it belongs to and what it exchanges with the capability graph.
Every module names a wave:
activatesOndefaults to ActivationEvent.Idle when the authoring record omits it. Within a wave, modules are ordered topologically (providers ofrequiresactivate first) and a module may pull a provider whose own wave has already fired. Because a fired event stays fired, a module gated on an event that has already passed remains eligible in every later round — which is what lets a consumer activate once a provider from some other wave finally lands.