pub fn validate_nodes(repo_root: &Path, nodes: &[PlannedNode]) -> Result<()>Expand description
Validate a proposed DAG against the repo’s backlog: 1..=MAX_NODES
nodes; every slug slug-valid, unique within the set, and not colliding with
an existing ticket; every blockedBy edge resolving to a slug in the
proposed set or an existing ticket; no cycle within the proposed set; at
least one root (a node with no blockers). Cycles that run THROUGH
pre-existing ticket edges are caught by the authoritative
deps::detect_cycle gate inside write_dag (it reads the files, so it
needs the staged write first).