# $defs.ConstructionHistory.description
How a tangled graph was built from a canonical one.

# $defs.DependencyEdge.description
A directed dependency between two nodes.

subhadipmitra@: Decision: direction is data flow, from `upstream` to `downstream`. The
downstream node reads the upstream node. The previous `parent`/`child` naming did not state
which way data moved, and a silently inverted lineage graph produces plausible-looking but
wrong results everywhere downstream.

# $defs.GraphIR.description
A complete analytical transformation DAG.

# $defs.Materialization.description
How a model is persisted.

The vocabulary follows dbt because it is the de facto standard for this problem domain. That
is a naming choice only: nothing in this package imports or requires dbt.

# $defs.PathologyRecord.description
One injected pathology, with everything needed to invert it.

subhadipmitra@: Decision: an injector that cannot describe its own inverse may not record a
pathology at all. Reversibility is what makes the construction history trustworthy as ground
truth: if injection cannot be undone exactly, then the canonical graph is not provably the
state the tangled graph came from, and every claim built on that pairing weakens.

# $defs.Provenance.description
Origin record for one serialized artifact.

# $defs.SourceKind.description
Category of input an artifact was derived from.

# $defs.TestAssertion.description
A data-quality assertion attached to a node.

Provisional: `docs/03_SYSTEM_ARCHITECTURE.md` lists tests as a required IR component, so the
slot is reserved now. Phase 2 and Phase 3 own the concrete parameter shapes, which grow
additively under the ADR-009 minor-version rule.

# $defs.TestAssertionKind.description
Category of data-quality assertion attached to a node.

# description
Evaluation material that a policy must never observe.

subhadipmitra@: Decision: this carries the hidden salt, and hidden data is derived from that
salt rather than from the case seed. The case seed stays visible so anyone can reproduce the
visible half of a case, but it unlocks nothing: a policy that knows the seed and owns the
generator still cannot derive the hidden data, because the salt is not a function of anything
it can see. Publishing the seed without this split would recreate the oracle that ADR-018
closed for fingerprints. See ADR-028.