haz-dag 0.1.0

DAG construction and traversal for haz tasks.
Documentation
//! Task DAG construction, validation, and traversal for `haz`.
//!
//! This crate owns the directed-task-graph layer that sits above
//! `haz-domain`'s value objects. It consumes a fully loaded
//! workspace (a `haz_domain::workspace::Workspace` containing
//! validated projects and tasks) and produces a
//! [`graph::TaskGraph`]: the nodes are
//! [`haz_domain::task_id::TaskId`]s, the edges are typed by
//! [`edge::EdgeKind`].
//!
//! # Module map
//!
//! - [`edge`]: directed edges tagged by kind
//!   ([`edge::Edge`], [`edge::EdgeKind`]).
//! - [`graph`]: the [`graph::TaskGraph`] aggregate.
//! - [`construction`]: build a validated [`graph::TaskGraph`]
//!   from a loaded workspace
//!   ([`construction::build_task_graph`],
//!   [`construction::BuildError`],
//!   [`construction::BuildErrors`]).
//! - [`effective`]: overlay merging into a per-project effective
//!   task set ([`effective::compute_effective_tasks`],
//!   [`effective::EffectiveTasksByProject`],
//!   [`effective::OverlayMergeError`],
//!   [`effective::OverlayMergeErrors`]).
//! - [`producer`]: producer-matching edges from outputs/inputs
//!   intersection ([`producer::compute_producer_edges`]).
//! - [`cycles`]: cycle detection over the union edge set
//!   ([`cycles::detect_cycles`]).
//! - [`outputs`]: literal-output uniqueness across the workspace
//!   ([`outputs::detect_literal_output_collisions`],
//!   [`outputs::LiteralOutputCollision`]).
//! - [`traversal`]: hard-edge predecessor / successor closures over
//!   a [`graph::TaskGraph`] for relational query evaluation
//!   ([`traversal::direct_predecessors`],
//!   [`traversal::direct_successors`],
//!   [`traversal::transitive_predecessors`],
//!   [`traversal::transitive_successors`]).

#![deny(missing_docs)]

pub mod construction;
pub mod cycles;
pub mod edge;
pub mod effective;
pub mod graph;
pub mod outputs;
pub mod producer;
pub mod traversal;