5effe287d4
Replace per-effect launch with a single launch that iterates effects sequentially via dispatchAll, closing the ordering race (I-E1 invariant). Add EffectDispatchOrderTest proving sequential preserves order while fire-and-forget does not.