Skip to main content
A local run exposes two truths at once: the journal while work is happening and the outcome after the child process settles.

Stream and settle

The handle is an AsyncIterable and owns an outcome promise. Keep both. A UI can ignore an event kind it does not render, but it must not infer success from the last kind it recognized.

Buffer when progress is not visible

runToEnd() drains the same iterator and returns the accumulated events. It is convenient for a worker, test or command whose interface does not need live progress.

Let the caller cancel

Pass the request or job owner’s signal. Do not create a hidden process timeout that the caller cannot observe or cancel.

Exit contract

Continue

Run events

Design an additive event reducer.

Errors and exits

Keep refusal classes separate.

Receipts

Preserve proof after the stream closes.

Method index

Scan every local and remote method.