pub fn validate_dag(steps: &[WorkflowStep]) -> Result<Vec<String>, CliError>
Validate DAG with petgraph; return topological order of step ids.