Expand description
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::TaskIds, the edges are typed by
edge::EdgeKind.
§Module map
edge: directed edges tagged by kind (edge::Edge,edge::EdgeKind).graph: thegraph::TaskGraphaggregate.construction: build a validatedgraph::TaskGraphfrom 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 agraph::TaskGraphfor relational query evaluation (traversal::direct_predecessors,traversal::direct_successors,traversal::transitive_predecessors,traversal::transitive_successors).
Modules§
- construction
build_task_graph: turn a loadedWorkspaceinto a validatedTaskGraph.- cycles
detect_cycles: find every strongly-connected component of size two or more in the union graph of aTaskGraph.- edge
Edge: a directed relation between twoTaskIds in the task graph, tagged with itsEdgeKind.- effective
- Overlay merging: combine each project’s own tasks with the
tasks contributed by every overlay file that attaches to it,
producing an effective task set for every project per
DAG-001..DAG-006ofdocs/spec/07-dag-semantics.md. - graph
TaskGraph: the validated task DAG of a workspace.- outputs
detect_literal_output_collisions: theDAG-015literal-output uniqueness check.- producer
compute_producer_edges: theDAG-013producer-matching relation expressed asEdgeKind::ProducerMatchingedges, plusproducers_of_path: the per-path queryAUX-015step 3 needs to annotatehaz whyinput lines.- traversal
- Hard-edge graph traversal helpers for relational queries.