# Parallel Join

Two branches activate together and persist separate arrivals at an ALL join.

- Workflow: `ParallelJoin@1@1`
- Static graph: 5 nodes, 5 edges
- Timeline: 4 ticks

## Static graph context

- **TEST:** `a` → `b`

## Tick 1: Start workflow

**Workflow status:** `WAITING`<br>
**Active/current:** `start`<br>
**Input event:** `start`

### Edge evaluation

**Evaluated**

- _No evaluated-edge detail recorded._

**Traversed**

- _No edge traversed in this tick._

### Review requests

| Activation | Task | Idempotency key |
|---|---|---|
| _none_ | — | — |

### Join state

- `join` (ALL): 0/2 arrivals; **waiting**

### Activation history

| Seq | Node | Activation | Status | Result / task |
|---:|---|---:|---|---|
| 1 | `start` | 1 | WAITING | — |

## Tick 2: Complete start

**Workflow status:** `WAITING`<br>
**Active/current:** `a`, `b`<br>
**Input event:** `complete\_latest`

### Edge evaluation

**Evaluated**

- `e1`: `start` → `a`
- `e2`: `start` → `b`

**Traversed**

- `e1`: `start` → `a`
- `e2`: `start` → `b`

### Review requests

| Activation | Task | Idempotency key |
|---|---|---|
| `a#1` | review:scenario:parallel\_join/a/1 | `scenario:parallel\_join/a/1` |
| `b#1` | review:scenario:parallel\_join/b/1 | `scenario:parallel\_join/b/1` |

### Join state

- `join` (ALL): 0/2 arrivals; **waiting**

### Activation history

| Seq | Node | Activation | Status | Result / task |
|---:|---|---:|---|---|
| 1 | `start` | 1 | COMPLETE | start-result |
| 3 | `a` | 1 | WAITING | review:scenario:parallel\_join/a/1 |
| 5 | `b` | 1 | WAITING | review:scenario:parallel\_join/b/1 |

## Tick 3: Complete a

**Workflow status:** `WAITING`<br>
**Active/current:** `b`, `join`<br>
**Input event:** `complete\_latest`

### Edge evaluation

**Evaluated**

- `e3`: `a` → `join`

**Traversed**

- `e3`: `a` → `join`

### Review requests

| Activation | Task | Idempotency key |
|---|---|---|
| _none_ | — | — |

### Join state

- `join` (ALL): 1/2 arrivals; **waiting**

### Activation history

| Seq | Node | Activation | Status | Result / task |
|---:|---|---:|---|---|
| 1 | `start` | 1 | COMPLETE | start-result |
| 3 | `a` | 1 | COMPLETE | result-a |
| 5 | `b` | 1 | WAITING | review:scenario:parallel\_join/b/1 |
| 7 | `join` | 1 | WAITING | — |

## Tick 4: Complete b

**Workflow status:** `COMPLETED`<br>
**Active/current:** _quiescent_<br>
**Input event:** `complete\_latest`

### Edge evaluation

**Evaluated**

- `e4`: `b` → `join`

**Traversed**

- `e4`: `b` → `join`
- `e5`: `join` → `approved`

### Review requests

| Activation | Task | Idempotency key |
|---|---|---|
| _none_ | — | — |

### Join state

- `join` (ALL): 2/2 arrivals; **released**

### Activation history

| Seq | Node | Activation | Status | Result / task |
|---:|---|---:|---|---|
| 1 | `start` | 1 | COMPLETE | start-result |
| 3 | `a` | 1 | COMPLETE | result-a |
| 5 | `b` | 1 | COMPLETE | result-b |
| 7 | `join` | 1 | COMPLETE | — |
| 10 | `approved` | 1 | COMPLETE | — |
