The built-in type=scxml (and long-URI, http://www.w3.org/TR/scxml/)
Statifier.Invoke.Handler - Statifier.Session.Effects.plan_invoke/3's
default entry for the built-in type set, not a name it special-cases
(ADR-0051 decision 4).
Every instruction below is exactly what plan_invoke/3 produced directly
before this module existed, so Statifier.Session.perform_instruction/3's
{:start_child, ...} clause, Statifier.Invoke.Source.resolve/2, the
6.4.3 child-datamodel seeding, and both process monitors are unchanged -
this module only names the seam they already sat behind.
cancel/2 and forward/3 return the same {:stop_child, _}/{:forward, _, _} instructions the planner already emits directly today for
:cancel_invoke/:autoforward effects; the planner does not yet route
through them (that routing is a later phase's work), so as written they
are correct but not yet reachable from plan/2. perform/2 is not
implemented: every instruction this handler returns already has its own
executor clause in Statifier.Session (and its own no-op clause in
Statifier.Replay), so there is nothing for an impure perform/2 to do.