Skip to content

Relay an unaddressable child workflow through its parent - #226

Merged
alexanderguy merged 7 commits into
mainfrom
intr-541-child-runs-cannot-receive-mail-or-signals
Oct 13, 2026
Merged

alexanderguy merged 7 commits into
mainfrom
intr-541-child-runs-cannot-receive-mail-or-signals

Conversation

@alexanderguy

Copy link
Copy Markdown
Member

Summary

  • A child run stays unaddressable. Its parent relays each park the child surfaces: an author signal, an approval, and a trigger-budget input park, including a gate nested through another child workflow or a loop.
  • A parked child survives a process restart. Resume reattaches the same child from the parent's log, keeps a timed gate timed, and reads a relayed approval snapshot from the child step that still awaits it. A signal already in the parent log is relayed while the child gate is still open.
  • A deployment drain waits on the child workflow spawn step. An explicit cancel still aborts that step.

Verification

  • make all exits 0. Unit tests report 9172 passes and 0 failures. Workflow-deploy tests report 35 passes, 212 skips, and 0 failures. The skipped tests require Postgres, so the child restart and drain-wait deploy tests do not run in this environment.

Closes INTR-541

A child run has no address of its own, so a process restart has to
reattach the same child from the parent's log and put the relay back
on the spawn step.
A local abort of the spawn step tears the child down. Drain has to
leave that step running so a replacement process can still resume the
parked child.
A relay records the gate's deadline, and a deadline that has already
passed stays a timed park. Resume of a parent that has not recorded
its own await can still tell the gate from an untimed one.
The container parks on the body's correlation, and the snapshot stays
in the body's step store. Restart re-registration reads that store, so
the process can answer the supervisor.
The channel tails from the moment the wait starts, so a signal
committed before that has to be read from the log or the child
never sees it.
@alexanderguy

Copy link
Copy Markdown
Member Author

Self-review (code-review skill) returned clean.

@linear

linear Bot commented Oct 13, 2026

Copy link
Copy Markdown

INTR-541

@alexanderguy
alexanderguy merged commit e680387 into main Oct 13, 2026
6 checks passed
@alexanderguy
alexanderguy deleted the intr-541-child-runs-cannot-receive-mail-or-signals branch October 13, 2026 09:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant