pub struct Node {
pub block: PathBuf,
pub input: Option<InputExpr>,
pub repeat_until: Option<String>,
pub max_iterations: Option<u32>,
pub over: Option<PathBuf>,
pub accept: Vec<AcceptCheck>,
pub on_fail: Vec<Rung>,
}Expand description
One node in the graph.
Fields§
§block: PathBufThe block/bundle this node runs — same string shape as today’s
pipeline entries (a path, or a bare name@version).
input: Option<InputExpr>What feeds this node. None only for a node with no inbound edge —
the graph’s entry point(s).
repeat_until: Option<String>Bounded-loop marker: the Ty::Text output field compared against
"done". Requires max_iterations.
max_iterations: Option<u32>Mandatory alongside repeat_until — enforced at parse time, not left
as a typecheck-time gap, since a missing bound is a spec-authoring
mistake regardless of what the graph shape turns out to be.
over: Option<PathBuf>Fan-out marker: a JSONL manifest, one JSON value per line, each the
complete input for one run of this node’s block. None for an
ordinary node, which runs exactly once.
Mutually exclusive with Node::repeat_until — both describe
iteration, but over different things (manifest items vs. this node’s
own prior output), and there is no coherent combined meaning.
accept: Vec<AcceptCheck>Checks this node’s output must pass beyond its declared type.
Ordered and short-circuiting. Empty means the declared type is the only contract — today’s behaviour, unchanged.
on_fail: Vec<Rung>What to try when an attempt fails, in order.
Empty (or omitted) means one attempt and no recovery — again,
today’s behaviour. A ladder that runs out without Rung::Escalate
is an ordinary failure.