Test-fire, replay and versions
Test-fire evaluates the matcher against a record you choose (scope, trigger settings, conditions) and can start a run labelled TEST_FIRE. It defaults to dry-run: actions are logged SKIPPED_DRY_RUN and nothing is sent. Run live opts in to real side effects: the engine claims the first step and the run executes to completion. Force starts a run even when conditions fail.
Replay starts a new run labelled REPLAY with the original trigger payload. The original run is never mutated. Replay also defaults to dry-run; run live executes the current workflow to completion.
Test-fires and replays are not occurrence-deduplicated. Each is a new run.
Workflows do not yet keep immutable definition versions. A replay follows the workflow as it is saved now, not the definition that was current when the original run started.