Module maker contributing operation handlers. Handler sets register eagerly by default: a
keyed set is a definition→loader map with a thin closure (definitions carry no
implementations), so the operation registry is complete at boot while each handler's BODY
still loads per invocation. The deferral axis is the operation, not the module.
A feature plugin whose operations cannot be invoked before the app is interactive declares
activatesOn: ActivationEvents.Idle to register in that wave instead of on the startup pass;
the boot path (deck, layout, space, client) invokes operations during startup and stays eager.
Stated explicitly rather than inherited: omitting activatesOn now normalizes to Idle, which
would leave the registry incomplete for exactly those boot-path invocations.
Module maker contributing operation handlers. Handler sets register eagerly by default: a keyed set is a definition→loader map with a thin closure (definitions carry no implementations), so the operation registry is complete at boot while each handler's BODY still loads per invocation. The deferral axis is the operation, not the module. A feature plugin whose operations cannot be invoked before the app is interactive declares
activatesOn: ActivationEvents.Idleto register in that wave instead of on the startup pass; the boot path (deck, layout, space, client) invokes operations during startup and stays eager.Stated explicitly rather than inherited: omitting
activatesOnnow normalizes to Idle, which would leave the registry incomplete for exactly those boot-path invocations.