Lineage Graphs
parentHashes connect Blocks into a directed graph, specifically a directed derivation graph. Each Block declares direct relationships to parent Blocks, allowing applications and intelligent systems to traverse structural lineage across related artifacts.
When the required Block data is available, a derivation graph can be validated for structural completeness, missing references, self-references, duplicate parent relationships, and cycles.
Graph Validation
A Block can be valid independently while the surrounding derivation graph is incomplete or structurally invalid.
For example, a Block may reference a parent that is not available in the evaluated Block set, or a collection of otherwise valid Blocks may contain relationships that form a cycle.
Graph validation evaluates these structural properties before an application relies on the available lineage.
Validation and Traversal
- Graph Validation
- Graph Traversal
Check structural properties across the evaluated Block set.
validateGraph() checks for:
- Self-references
- Duplicate parent relationships
- Missing parent Blocks
- Cycles
A valid individual Block does not establish a complete or valid surrounding graph.
Trace available parents and structural paths after the required graph data is available.
Once the required graph data is available and structurally valid, traceAttribution() can:
- Return the selected Block and all reachable ancestors
- Return declared parent relationships between reachable Blocks
- Identify root Blocks with no declared parents
- Calculate minimum and maximum graph depth
- Count distinct paths from the selected Block
The current JavaScript reference surface returns parentless root Blocks in the leaves field. The field name is retained for compatibility.
Partial Graphs
Applications do not always have access to every Block referenced by a derivation graph.
validateGraph() reports unresolved parent references as missing. When an application intentionally loads only part of a graph, treat the result as incomplete lineage rather than assuming the missing Blocks do not exist.
Graph completeness therefore describes the available Block set being evaluated, not the existence of Blocks across all applications, storage systems, or infrastructure.
When to Use Graph Operations
Use graph validation and traversal when an application needs to inspect relationships across a collection of Blocks.
Typical operations include validating available lineage before downstream processing, retrieving prior Blocks as context, tracing multi-step workflows, identifying roots and ancestors, and analyzing the structure of a derivation graph.