Add concurrent branches and merge operators #19

Open
opened 2026-09-16 21:54:39 +02:00 by morten-olsen · 0 comments
Owner

Deferred while adding audio playback, where a "play sound, meanwhile carry on" shape would have wanted it.

Why it is not a small change

The scheduler is deterministic and topological: it executes one node at a time over a compiled plan. Parallel lanes need
more than a fan-out node.

  • per-lane durable checkpoints, since any lane may suspend independently while others continue;
  • merge semantics, which ENGINE.md still lists as future work, including how empty batches from an unselected branch reach a merge;
  • cancellation and failure policy across lanes: whether one lane failing cancels its siblings, and what the run outcome is;
  • run inspection and captured-run debugging, which currently assume a single ordered node sequence.

What covers the gap today

Fire-and-forget plus wait for duration covers the "start something, continue, act later" shape. audio.play with
waiting enabled suspends on a correlated completion event, so the stop notification releases the run without a parallel
lane. This is enough for alert-style automations but not for genuinely independent work.

Deferred while adding audio playback, where a "play sound, meanwhile carry on" shape would have wanted it. ## Why it is not a small change The scheduler is deterministic and topological: it executes one node at a time over a compiled plan. Parallel lanes need more than a fan-out node. - per-lane durable checkpoints, since any lane may suspend independently while others continue; - merge semantics, which ENGINE.md still lists as future work, including how empty batches from an unselected branch reach a merge; - cancellation and failure policy across lanes: whether one lane failing cancels its siblings, and what the run outcome is; - run inspection and captured-run debugging, which currently assume a single ordered node sequence. ## What covers the gap today Fire-and-forget plus `wait for duration` covers the "start something, continue, act later" shape. `audio.play` with waiting enabled suspends on a correlated completion event, so the stop notification releases the run without a parallel lane. This is enough for alert-style automations but not for genuinely independent work.
Sign in to join this conversation.
No labels
bug
enhancement
feature
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
incubator/macros#19
No description provided.