The produces edge is canonical on the producing process only

0007-produces-edge-direction

decision read as Explain confidence verified status active 2026-06-14 owner knowledge-architect
Reversibility
two-way door

DEC-0007 — produces edge direction (single source of truth)

Context

While scaffolding the DXA vertical (Digital Experience Agency vertical as the first reference implementation), the QA audit caught two produces defects: (a) capability atoms double-declaring produces on artifacts already produced by a process, and (b) an artifact — dxa-solution-architecture-doc — with no producing process at all. An artifact↔producer edge expressed on two atoms can drift; an artifact with no producer is a dead-end node. The model (Knowledge Model v0) names produces → artifact but had not fixed its canonical direction, so the convention needed pinning before more verticals copied the ambiguity.

Options considered

  1. Allow produces on any atom that "results in" an artifact (process and capability) — convenient, but multi-source and drift-prone.
  2. Express the artifact→producer relationship on the artifact (produced_by) as canonical.
  3. Make produces canonical on the producing process only; everything else (capabilities, etc.) references the artifact via relates_to.

Decision

Adopt option 3. The produces edge is declared once, on the process that creates the artifact — the single source of truth. A capability links its signature artifact via relates_to, never produces (a capability is the commercial bundle, not the maker). To resolve the two findings without weakening the convention:

  • Added a dxa-solution-design process (owner: dxa-solution-architect) as the canonical producer of dxa-solution-architecture-doc, and inserted it into the dxa-discovery-to-launch workflow.
  • Reassigned dxa-release-management ownership to dxa-devops-engineer to remove a dead-end role and keep every process owned.

Rationale

  • Single source of truth. One artifact has exactly one declared producer; the graph stays consistent and diffs stay legible. Mirrors design principle 2 of Dossier — The Knowledge Model (v0).
  • Type semantics stay clean. produces is a making edge (a process makes a thing); a capability's tie to an artifact is associative (relates_to), preserving the process/workflow vs. commercial-unit distinction from Digital Experience Agency vertical as the first reference implementation.
  • The model held; only conventions tightened. These were exactly the conformance findings the vertical was meant to surface — the v0 taxonomy needed no change, only a pinned edge-direction rule. Confidence is verified: caught by QA against authored atoms and fixed.

Consequences

  • Every artifact must have exactly one producing process; "orphan" artifacts are a QA failure, not an accepted state.
  • Capabilities declare signature artifacts only via relates_to; verify-kb and future scaffolds should enforce single-producer / no-orphan-artifact as a check.
  • The convention is vertical-agnostic and binds all OKF authoring going forward, not just the DXA template.

Review

Revisit if a real case emerges where an artifact genuinely has multiple independent producers, or where a non-process atom must own a produces edge — at which point reconsider a canonical produced_by on the artifact.