Skip to content

[EPIC] Derive relation data instead of hand-writing it #79

Description

@dieterbaier

Why these belong together

The metamodel's relation contract is authoritative outgoing relations only: a source artifact declares what it points at, and everything pointing back is derived during generation.

Two open issues found the same violation of that contract from different directions, and both land in the same generator and the same schema:

Both propose the same remedy: generate the incoming view from the outgoing relation, and stop accepting a hand-maintained reciprocal. Fixing them separately would mean touching ChapterIncludeFragmentGenerator's neighbours twice, deciding the fate of the superseded_by schema field twice, and risking two different answers.

#68 says so itself: the superseded_by inconsistency is "worth resolving at the same time".

Shared decisions

These must be answered once, not per slice:

  1. The fate of superseded_by in metamodel/artifact.schema.yaml — removed, deprecated, or declared generated-only. This is the decision both issues stop at.
  2. Where a derived relation becomes visible to a reader. The -traceability.adoc fragment already carries incoming relations, but as a matrix row at the foot of the document — which is why the contradiction in generate the refinement note instead of hand-writing it #68 survived review. A reader meets the decision paragraph first.
  3. Whether the validator rejects hand-maintained reciprocal metadata, or only warns.
  4. Which relation types this covers. supersedes and refines are the two in evidence; the rule is generic to any relation with a meaningful inverse.

Slices

Out of scope

  • Changing the outgoing-only relation model itself. This epic implements it more completely, it does not revisit it.
  • Rewriting historical ADR text. Superseded and refined decisions keep their original reasoning; that is the point of preserving them.

Origin

Both slices were found while validating the toolkit in dieterbaier/budget, which vendors the tooling. See also budget#42, referenced from both.

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