Skip to content

Relationships

The relationships are the methodology: they connect intent (actors), behaviour (journeys, use cases), knowledge (rules, terms, contexts) and obligations (requirements), and they carry traceability through changes, slices and handoffs.

Every relationship has exactly one canonical direction: it is authored on one artifact type, in one frontmatter field, targeting an allowed set of types.

SourceFieldAllowed targets
Journeyprimary-actorActor
Journeysteps[].use-caseUse Case
Use Caseprimary-actorActor
Use Casesupporting-actorsActor
Use Casebounded-contextBounded Context
Use Casegoverned-byBusiness Rule
Use Caseuses-termsDomain Term
Business Ruleapplies-toJourney, Use Case, Bounded Context
Domain Termdefined-inBounded Context
Functional Requirementderived-fromUse Case, Business Rule, Constraint
Quality Requirementapplies-toJourney, Use Case, Bounded Context
Constraintapplies-toJourney, Use Case, Bounded Context; absent = entire product
Product Changeoperations.addany product artifact (new ID)
Product Changeoperations.modifyany existing product artifact
Product Changeoperations.removeany existing product artifact
Delivery Sliceimplements[].requirementFunctional Requirement, Quality Requirement, Constraint
Delivery Sliceaffectsany product artifact
Delivery Slicedepends-onDelivery Slice
Product HandoffimplementsFunctional Requirement, Quality Requirement, Constraint
Product Handoffaffectsany product artifact

A relationship referencing an unknown ID, or targeting a type outside the allowed set, is a validation error.

Reverse relationships are always derived by the graph compiler and MUST NOT be authored or manually maintained. Users never maintain reciprocal references.

The canonical/derived split is decided once per pair. The load-bearing case:

  • Domain Term.defined-in is canonical. Bounded Context.owns-terms is derived. A bounded context’s owned terms are exactly the domain terms whose defined-in references it. owns-terms MUST NOT appear in authored bounded-context frontmatter; schemas reject it. Tools MAY display owns-terms in inspection output and generated indexes as a derived field.

All other reverse views (Actor ← journeys, Business Rule ← governed use cases, Use Case ← derived requirements, and so on) follow the same rule: derived, displayed, never authored.

  • An active artifact MUST NOT reference a retired artifact (error).
  • An active artifact referencing a deprecated artifact SHOULD produce a warning.
  • draft artifacts MAY reference draft artifacts.

Some diagnostics depend on reachability, defined deterministically as follows: two artifacts are connected if a path exists between them in the undirected view of the product graph restricted to the canonical product relationships above (excluding Product Change, Delivery Slice and Product Handoff edges). A requirement is reachable from an actor when it is connected to at least one Actor node under this definition.