Expand description
Gate DAG execution — parallel gate runner with cascading failure propagation.
§Design: injectable runner
The core execution logic is parameterised over a GateRunner trait so that:
- Production path uses
SubprocessRunnerwhich delegates toSubprocessExecutor::spawn(no shell, sanitized env). - Tests / property tests inject a
MockRunner(or any closure) to produce deterministic pass/fail outcomes without spawning real processes.
GateRunner uses BoxFuture (via Pin<Box<dyn Future>>) to remain dyn-compatible
without requiring the async_trait crate.
Structs§
- Gate
RunOutcome - Per-gate report row suitable for headless
--report gatesJSON output. - Mock
Runner - Deterministic gate runner for tests.
- Subprocess
Runner - Production gate runner that delegates to
SubprocessExecutor.
Traits§
- Gate
Runner - Abstraction over the mechanism used to actually execute a single gate.
Functions§
- execute_
all - Execute all gates in the DAG, respecting dependency order and concurrency.
- execute_
single - Execute a single named gate, running its unsatisfied prerequisites first.
- is_
cache_ valid - Return
trueif the cached content hash still matches the current hash.