Flow is the transition engine that maps Signals + current States into new states and service lifecycle actions. They are broadcasted all across Rind and Services.
Flow Components
- States: Long-lived runtime facts that persist across reboots.
- Signals: One-shot runtime events with a no persistence.
Responsibilities
- evaluate state transition rules,
- resolve guards/conditions,
- compute start/stop/restart intents,
- coordinate branching behavior,
- maintain transition invariants.
- handle and maintain the State Machine
Evaluation Model

Conceptually:
- Inputs: current states, incoming signal, variables, runtime context.
- Rules: matching conditions, guard predicates, branch selectors.
- Outputs: state mutations, lifecycle actions, emitted events/signals.
Failure Handling
Flow implementations should define behavior for:
- invalid transition attempts,
- missing branch keys,
- unresolved dependencies,
- retry/backoff policy for failed lifecycle actions.