Each variant's kind is the discriminator for the handler table.
state: string is required on the three time-travel variants (the
§17.4 narrowing fix from #379); the toggle-vs-set ambiguity on
PAUSE_RECORDING / LOCK_CHANGES is split into _TOGGLE / _SET
variants so the operation is encoded in the discriminator, not in
the absence of a field. IMPORT_STATE carries a guaranteed-non-empty
times: ReadonlyArray<number> so the handler does no further
narrowing.
Post-decode dispatch event — what handlers actually receive.