Open
Description
Currently if you change much of anything in a workflow while there are ongoing workflows, they'll fail.
Allow configuring some things to make it more flexible, if you're willing to think through the edge cases:
- Allow running new steps: if you add a new step to the beginning of a workflow, existing workflows will run it. If that affects later steps, see (4, 5)
- Allow out of order steps: if steps change order but the args are the same, allow it. Use the first un-consumed result. If this was actually adding another earlier call to the "same" step (same fn & args), then the later one will re-run as if it's the new one.
- Allow removing steps: if you remove a step, carry on. If that affects later steps, see (4, 5). This also covers breaking out of a "for" loop early, e.g.
- Allow re-running steps if their args change (per-step opt-in): If an arg changes, re-run that step, if that step can handle retries.
- Allow ignoring changed args (per-step opt-in): if you add or modify args for a function, but you're fine with existing workflows using the previous result / not running it for new args.
Add good docs on all this