Skip to content

Glossary

Reference

node
A declared task with a name, a mode and optional clauses. The macro emits one pub static NAME: TaskNode per node, usable anywhere in the application.
pool
A declared set of single-instance workers scaled between min and max by a policy. Members share one worker shell; take-kind resources become per-member slot arrays.
floor
The pool's member 0: always-on when min >= 1, the member a deps: [POOL] edge resolves to.
mode
Terminate (spawned at boot, respawned after a wake), Pause (parks holding its resources), or OnDemand (started by a pool policy or control).
executor slot
A runtime-filled SendSpawner static declared with executor NAME; and targeted with executor: NAME. The two uses: an interrupt-priority tier on the same core, or a second core's own executor.
default executor
The executor every node and pool inherits unless it specifies its own. Lets a supervisor run on an interrupt tier while the rest of the graph stays on thread mode.
stall / wedge / hog
Three failure modes of a still-alive task. A stall waits forever on an await and is caught by liveness. A wedge runs but never acknowledges a stop. A hog never yields from one poll and freezes its executor. The fault-inject feature can trigger each one for testing.
resource / slot
A value one party builds and one worker owns while it runs, handed over through a ResourceSlot at spawn. Kinds: lend (default), consume, shared, divisible (feature budget), with local composing onto the value kinds for !Send values.
gate
Something a spawn waits on, bounded by the node's slot_timeout: an executor slot, a resource slot, or a ready dep. Failing closed produces a fault naming the gate.
signal / coupling
A 'static two nodes both touch (a Watch, Channel, mutex, atomic), declared in reads:/writes: or derived by #[dataflow]. Couplings may be cyclic and never feed the topological sort.
budget / claimant
Feature budget: a divisible resource declares one Budget<K> with a slot per holder. Each holder receives a Claimant: it states a want and receives a grant, and the supervisor releases the share when the holder stops. An allocator provides the capacity and re-divides it under a BudgetPolicy.
veto gate / contributor
Feature veto: a VetoGate<N> stays asserted while any contributor holds its bit and releases only when all do. Each veto writer owns one slot, so a writer that stops with its bit up leaves the gate asserted.
Open guard
What node.open(&SIG).await returns for a gated signal: a counted Deref handle. The count is the reader's hold on the producer, and its slow leak to zero is what retire waits for.
retire
A producer-side verb: resolve once a Backed signal's openers have been gone a whole cooldown, then withdraw readiness and request the node's own Deactivate. The next open starts it again.
serialized
A shared slot marker that makes "every holder runs on one executor" a compile-time rule: priority ceiling by construction for a serialized link, at no runtime cost.
beat / heartbeat
A task's sign of life. Raised by beat(), a beat_put/beat_writer access, or polled from an observed beat signal entry. Consumed by is_stale() and the liveness sweep.
readiness
A task-asserted "I am actually serving" latch that gates dependents (deps: [X ready]). Status, not control, unless the edge is bound.
epoch
A per-node activation generation counter, for a running consumer to notice a provider restarted underneath it.
parked
Either a node declared with no worker (the app spawns it by hand), or a Pause instance stopped and waiting on wait_resume(), keeping its held resources.
disabled
The control latch: not started at boot (disabled;) or deactivated directly (Deactivate marks its target). Survives wake respawns and pool regrows until an Activate clears it.
collateral
Shown as "held" in the playground: stopped only as a dependent of a deactivated node. Blocks bring-up like disabled, but Activate on the ancestor releases it once no disabled node remains among its dependencies.
detached
A task that called set_detached(true): self-managed from then on. Every lifecycle verb skips it, including teardown and cascades.
wave
How starts and stops propagate: signal every node whose pass conditions hold (deps up + gates satisfied) or whose stopping dependents have all acked, and repeat. Independent branches move concurrently; providers keep serving through their dependents' cleanup.
ack
The task-side half of a stop: ack_dropped() (or the combinator doing it). Missed after its window (2 s default, ack_timeout: per node): a ShutdownTimeout fault naming the node.
fragment
A module- or crate-owned slice of a graph, declared with supervisor_fragment! and relayed verbatim into one compose_graph! site per binary.
graph
The macro-emitted bundle: node slots, dependency table, compile-time order, pools. One pub static GRAPH (or a named variant) drives one Supervisor.