# Execution Pairs

An **execution pair** consists of:

1. **Main Actor** $$A\_{m,i}$$
   * Executes the assigned task $$T\_i$$.
   * Monitors the state of the fallback actor $$A\_{f,i}$$.
2. **Fallback Actor** $$A\_{f,i}$$
   * Monitors the main actor $$A\_{m,i}$$.
   * Takes over if the main actor fails $$S(A\_{m,i}) = \text{failed}$$.
   * Notifies the orchestration layer to assign a new fallback actor.

The state of an actor $$S(A)$$ can either be:

* **Active**: The actor is performing its assigned task.
* **Failed**: The actor is unable to complete the task.

The state of an execution pair $$P\_i$$ is considered **operational** if at least one actor in the pair is active:\
$$\[ S(P\_i) = \text{operational} \iff S(A\_{m,i}) = \text{active} \vee S(A\_{f,i}) = \text{active}. ]$$\
If both actors in the pair fail, the orchestration layer reassigns both roles.
