Skip to content

risk-writing-guide asks for the reciprocal relation that relation-rules forbids #92

Description

@dieterbaier

Problem

Two skill references give opposite instructions for the same relation, and an
author following the risk guide produces a relation the relation rules forbid.

skills/references/risk-writing-guide.md, under Relation Guidance:

Use depends_on from the risk to the ADR when the risk exists because of the
decision.

skills/references/relation-rules.md, under Impact Rules:

Do NOT link artifacts back with depends_on as a reciprocal for
introduces_risk, addresses, or other directional relations. The risk or
scenario's dependency on the decision is derived from the ADR's outgoing
relation.

Both files are read by the same workflow: skills/adr/SKILL.md lists them
together under Required Reading, and skills/risk/SKILL.md reaches the risk
guide when a decision creates a risk.

Which one is right

relation-rules.md. It matches the authoritative-outgoing-relations convention,
the metamodel, and the repository's own practice:

  • No risk under src/docs/arc42/11-risks-and-technical-debt/ carries a
    depends_on to an ADR — R-001 through R-007 have none.
  • The ADRs carry the outgoing direction instead: ADR-001, ADR-003 and ADR-008
    each declare introduces_risk.
  • The incoming direction is derived. ADR-005's generated traceability view shows
    the incoming refines from ADR-008 without either file storing it.

The advice is not merely stylistic — it produces a warning

Verified by temporarily adding the relation the risk guide asks for, to a risk
whose ADR already declares introduces_risk:

- type: depends_on
  target: ADR-008-skill-decomposition-boundary

./build.sh validate then reports:

Bidirectional relation detected: ADR-008-skill-decomposition-boundary ->
R-007-gate-results-lack-independence and R-007-gate-results-lack-independence ->
ADR-008-skill-decomposition-boundary. Consider removing the reciprocal relation
from one artifact.

The probe was reverted; it is not in any branch. So the guide walks an author
into a warning that the same toolkit then tells them to undo.

Scope

  • Correct the Relation Guidance section in
    skills/references/risk-writing-guide.md so the risk does not link back to
    the ADR, and say which direction is authoritative and that the reverse is
    derived.
  • Check the neighbouring references for the same defect before changing only
    this one. skills/references/quality-scenario-guide.md is the obvious
    candidate, since addresses has the same shape as introduces_risk.
  • templates/risk.adoc ships a depends_on relation to an ADR in its example
    front matter. Decide whether the template is teaching the same thing and
    correct it if so.
  • Keep the canonical rule in one place. The guides should point at
    relation-rules.md and the metamodel rather than restating relation
    semantics, so this cannot drift apart again.

Acceptance criteria

  • No skill reference instructs an author to create a relation that
    relation-rules.md forbids.
  • The risk guide states the authoritative direction for a decision-created
    risk and notes that the reverse is derived.
  • templates/risk.adoc does not demonstrate a forbidden reciprocal.
  • The neighbouring guides are checked, and any identical defect is fixed in
    the same change.
  • Relation semantics live in one canonical place; the guides reference it.
  • ./build.sh validate reports no new warning, and the existing warning
    count does not grow.

Origin

Found on 2026-09-04 while authoring R-007-gate-results-lack-independence for
#86. The two references were read in the same sitting, which is the only reason
the contradiction surfaced; an author reading only the risk guide would have
followed it.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions