szal 0.26.3

Workflow engine — step/flow execution with branching, retry, rollback, and parallel stages
Documentation
//! Sequential deployment pipeline.

use szal::flow::{FlowDef, FlowMode};
use szal::step::StepDef;

fn main() {
    let mut flow = FlowDef::new("deploy-pipeline", FlowMode::Sequential);
    flow.add_step(StepDef::new("build").with_timeout(60_000));
    flow.add_step(
        StepDef::new("test")
            .with_retries(2, 1_000)
            .with_timeout(120_000),
    );
    flow.add_step(StepDef::new("deploy").with_rollback());

    flow.validate().unwrap();
    println!(
        "Flow '{}' validated: {} steps, mode={}",
        flow.name,
        flow.steps.len(),
        flow.mode
    );
    for step in &flow.steps {
        println!(
            "  - {} (timeout={}ms, retries={}, rollback={})",
            step.name, step.timeout_ms, step.max_retries, step.rollbackable
        );
    }
}