1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//! 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`]).