Execution

How the engine turns a set of Goal Steps into an execution plan, runs steps in parallel where dependencies allow, and advances the Flow only on committed state so retries are deterministic.

Execution Model

Argyll executes Flows deterministically by tracking state and dependencies. When you start a Flow, you specify Goal Steps and initial values. Argyll then:

  1. Plans what work is needed to reach those Goals
  2. Executes Steps in parallel where possible
  3. Tracks results in durable state
  4. Advances based only on committed state

Deterministic Behavior

The same Flow state always leads to the same behavior. Side effects follow committed state, so retries resume from stable state with consistent results. This matters where real systems break: timeouts, delayed callbacks, partial completion, and repeated attempts across multiple services.

State and Progress

A Flow advances through explicit states. Results enter that state intentionally, and what runs next is derived only from what the Flow already knows. At any point you can inspect a Flow, see exactly where it is, and explain why it is doing what it is doing.

graph TD Init["Initial State"] Steps["Execute Steps in Parallel"] Record["Record Results"] Check{"All goals met?"} Done["Flow Complete"] Init --> Steps Steps --> Record Record --> Check Check -->|"no, more work"| Steps Check -->|"yes"| Done style Init fill:#e1f5ff style Done fill:#c8e6c9