Skip to content

ADR-013: Cross-phase informs edges are valid when declared on the downstream artifact

Example from HELIX’s own docs. This generated page comes from docs/helix/. Use it to see the method in practice; start with the artifact-type catalog for reusable templates. Historical plans and reports may describe retired architecture.

Source identity (from 02-design/adr/ADR-013-cross-phase-informs-edges.md):

ddx:
  id: ADR-013
  authoring:
    home: repo
  depends_on:
    - helix.prd

ADR-013: Cross-phase informs edges are valid when declared on the downstream artifact

DateStatusDecidersRelatedConfidence
2026-05-30AcceptedHELIX maintainersartifact dependencies, schema validatorHigh

Context

AspectDescription
ProblemThe audit flagged the Deploy artifact monitoring-setup declaring informs: metrics-dashboard, an Iterate artifact in a later phase. It is unclear whether HELIX permits an artifact to declare an informs edge that crosses a phase boundary into a downstream phase, and whether the back-edge must also be declared on the consumer.
Current Stateworkflows/activities/05-deploy/artifacts/monitoring-setup/meta.yml declares informs: metrics-dashboard. workflows/activities/06-iterate/artifacts/metrics-dashboard/meta.yml declares both informed_by and informs lists but does not currently encode every back-edge for every upstream informs. The schema validator does not enforce edge symmetry across artifacts.
RequirementsThe methodology must not forbid real evidence-flow edges that cross phases (production telemetry feeding dashboards is a real flow). At the same time, cross-phase edges must be explicit on both ends so that walking from either side reveals the relationship.

Decision

An artifact may declare informs an artifact in a later phase. The cross-phase edge is valid when:

  1. The source artifact’s purpose produces evidence the target consumes (the edge encodes a real evidence flow, not a speculative association), and
  2. The edge is declared on both sides — informs on the source artifact and informed_by on the target artifact — or in a single canonical place chosen by the consumer when only one direction can be authoritative.

The monitoring-setupmetrics-dashboard edge is the canonical example: production telemetry configured in Deploy feeds the dashboards consumed in Iterate. The methodology accepts this as a valid cross-phase informs edge.

Key Points: cross-phase informs allowed | edge must be real evidence flow | declared on both ends (or canonical single place) | symmetry check is a follow-up validator concern, not required by this ADR

Alternatives

OptionProsConsEvaluation
Forbid cross-phase informs edges entirely; restrict informs to same-phase artifactsSimpler validator; clear phase boundaryErases real evidence flows (Deploy telemetry → Iterate dashboards); forces artifacts to invent intermediate hops or drop the edgeRejected: phase boundary is not a methodology firewall against evidence flow
Allow cross-phase informs but only when declared on the upstream sideSingle source of truthWalking from the consumer no longer reveals the upstream; reviewers must scan all earlier phases to find inbound edgesRejected: breaks bidirectional discoverability
Allow cross-phase informs; require declaration on both ends (or a canonical single place); leave symmetry enforcement as a follow-up validator concernPreserves real evidence flows; keeps edges discoverable from both ends; does not block this ADR on validator workPhase 3 walk must check both sides; some artifacts will need back-edges addedSelected: accepts the real flow without overcommitting the validator

Consequences

TypeImpact
PositiveReal cross-phase evidence flows (e.g., Deploy telemetry → Iterate dashboards) are recognized as first-class edges.
PositiveBoth-end declaration keeps the dependency graph walkable from either direction.
PositivePhase 3 has a clear rule: walk all artifacts for informs edges and ensure the back-edge is declared.
NegativePhase 3 must check edge symmetry across the full artifact set and add missing back-edges where the upstream declares informs but the downstream does not declare informed_by.
NeutralThe schema validator is unchanged in this ADR. Symmetry enforcement is a follow-up Phase 1B validator concern.

Risks

RiskProbImpactMitigation
Authors declare speculative cross-phase edges that are not real evidence flowsMMPhase 3 walk and reviewers reject edges that do not match the source artifact’s stated purpose
Back-edges drift out of sync as artifacts evolveMMFollow-up Phase 1B validator extension checks edge symmetry; until then, the Phase 3 walk establishes the baseline
Confusion about whether to declare on one end or bothLLThis ADR states the rule: both ends, or a single canonical place chosen by the consumer when only one direction can be authoritative

Validation

Success MetricReview Trigger
Every informs edge declared on an upstream artifact has a matching informed_by entry on the downstream artifact (or a documented canonical-single-place choice)A Phase 3 walk finds an upstream informs with no corresponding downstream informed_by
monitoring-setupmetrics-dashboard is preserved as a valid cross-phase informs edgeA review flags the edge as invalid because it crosses a phase boundary
Schema validator extension for edge symmetry is filed as a follow-up Phase 1B concernEdge symmetry drift recurs and is not surfaced mechanically

References

Innsigle seal: model-primary by HELIX

The signature covers the markdown source of this page, not these HTML bytes. This page quotes that seal; verify it against the source file.

Composition
model-primary
Issuer
HELIX helix
Signing key
ed25519:b0865d76d834a52c48506414d16f4e5a (build key)
Signed source
artifacts/adr/ADR-013-cross-phase-informs-edges.md
Signed
2026-09-23T14:11:58Z
Content digest
sha256:4610701f…6f75dc67

This build key is endorsed by the human key for build signing; the signature is not a detector and not a truth guarantee.

Raw attestation JSON
{
  "payload": {
    "innsigle": "1",
    "type": "https://innsigle.dev/claim/colophon/v1",
    "issued_at": "2026-09-23T14:11:58Z",
    "issuer": {
      "id": "helix",
      "name": "HELIX",
      "key_id": "ed25519:b0865d76d834a52c48506414d16f4e5a",
      "key_url": "https://documentdrivendx.github.io/helix/.well-known/innsigle/keys.json"
    },
    "subjects": [
      {
        "uri": "https://documentdrivendx.github.io/helix/artifacts/adr/ADR-013-cross-phase-informs-edges/",
        "digest": {
          "alg": "sha256",
          "value": "4610701f8d8f26f8d70230548c30c55193bc7fe16ec5138daead6f596f75dc67"
        }
      }
    ],
    "colophon": {
      "schema_version": "1",
      "composition": "model-primary",
      "ingredients": [
        {
          "kind": "model",
          "name": "Claude",
          "role": "draft"
        },
        {
          "kind": "tool",
          "name": "sloptimizer",
          "role": "rewrite"
        },
        {
          "kind": "human",
          "name": "operator",
          "role": "structure-edit"
        }
      ],
      "notes": null
    }
  },
  "payload_encoding": "json",
  "signatures": [
    {
      "key_id": "ed25519:b0865d76d834a52c48506414d16f4e5a",
      "alg": "ed25519",
      "sig": "s_ws8mHomNSa1BA1hjcBYpPKA4VAtpSSQxUUWxT9kLreEkG8jjegN3EJjjW3h3nk0OC8YCF14kOSCx31xkG-CQ",
      "signed_at": "2026-09-23T14:11:58Z"
    }
  ]
}