Skip to main content

Module determinism

Module determinism 

Source
Expand description

§Determinism in Durable Executions

For detailed documentation on determinism requirements, see the DETERMINISM.md file in the repository.

§Quick Summary

Durable execution workflows must be deterministic because they can be replayed. Common sources of non-determinism to avoid:

  • HashMap/HashSet iteration order (use BTreeMap/BTreeSet instead)
  • Random number generation outside steps
  • SystemTime::now() outside steps
  • UUID generation outside steps
  • Environment variables that affect control flow
  • External API calls outside steps

Use the replay-safe helpers in crate::replay_safe for deterministic UUID and timestamp generation.