Expand description
Run a list of ExpandedNodes under a bounded-concurrency executor.
Semantics:
- Roots run concurrently under
Semaphore(max_concurrent). - Each root captures its written records (via a
CapturingSinkwrapper) so descendants can fan out per parent record. - For each child whose parent has finished successfully, one pipeline
invocation runs per parent record.
${parent.dotted.path}tokens in the source / sink config and state-key suffix are resolved against that record viainterpolate_record. - All invocations share one global semaphore — children and roots compete for the same budget.
on_error: continue(default) skips a failed node’s subtree but keeps running siblings.on_error: stopcancels everything after the first failure.- State-key collisions among children of the same parent surface as a
CliError::DuplicateStateKey.
Structs§
- Execute
Options - Knobs passed to
run_expanded. - Invocation
Outcome - One pipeline invocation’s outcome.
- RunSummary
- Aggregate outcome of
run_expanded.
Functions§
- build_
dlq_ config - Translate a
crate::config::DlqSpecfrom the YAML/JSON config into a runtimeDlqConfigready to attach to aPipeline. - run_
expanded - Execute every node in
nodes.nodesmust be in BFS order (roots first then children) — that’s whatcrate::expand::expandreturns.