ChangeTracker.reset(state) clones the argument into activeState
unconditionally, so passing the raw incoming workflowData on the
same-path reuse path could overwrite a freshly-migrated UUID with the
slug id that was on disk, negating the migration on the next save.
Wrap the two reset call sites in a withMigratedId helper that preserves
a valid incoming UUID and otherwise substitutes the existing UUID (or a
fresh one) so reset can never write a non-UUID id back. Strengthen the
slug-vs-UUID reuse test to assert the reset payload, and add a both-
sides-legacy-slug test plus an explicit pass-through test for the
common matching-UUID case.