ADR-009: Warum klickbare Links Drill-Down-Links nie überschreiben
StatusAngenommen

Datum

2026-07-10

Betrifft

internal/sync/forward.go — Priority-Regel zwischen Drill-Down-Links und user-definierten Element-Links

1. Kontext

Seit dem link-Feld auf Elementen (#483) kann ein Element auf zwei Arten einen klickbaren Link im draw.io-Export bekommen:

  1. Drill-Down-Link — automatisch gesetzt, wenn das Element scope einer anderen View ist. Klick führt zum Detail-Diagramm (data:page/id,view-<viewID>).

  2. User-definierter Link — explizit im Modell gesetzt ("link": "…​"), z. B. auf eine ADR, ein Jira-Ticket oder eine Confluence-Seite.

Was passiert, wenn beide auf demselben Element vorkommen? Ohne klare Regel wäre das Verhalten zufällig davon abhängig, welcher Code-Pfad zuletzt geschrieben hat — nicht vorhersagbar für Nutzer.

2. Entscheidung

Drill-Down-Links haben immer Vorrang vor user-definierten Links.

Begründung:

  • Drill-Down ist strukturell Teil der Navigation zwischen Views desselben Modells — ein Klick, der innerhalb der Diagramm-Serie bleibt, wird als grundlegender erwartet als ein Sprung nach außen.

  • Ein Element, das gleichzeitig Scope einer Detail-View ist, hat bereits eine klare "was zeige ich als nächstes"-Antwort — ein zusätzlicher externer Link würde diese Antwort verdecken.

  • Die Alternative (User-Link gewinnt) würde Drill-Down-Navigation für jedes verlinkte Element stillschweigend brechen, sobald jemand eine ADR verlinkt — ein überraschender Seiteneffekt.

Bei einem Konflikt gibt bausteinsicht sync eine Warnung aus:

WARNING: element <id>: user-defined link overridden by drill-down link (ADR-009)

Der Sync bricht dabei nicht ab — die Warnung ist informativ, damit Modell-Autoren den Konflikt bewusst auflösen können (z. B. den Link auf ein anderes Element verschieben).

3. Konsequenzen

  • User-definierte Links funktionieren zuverlässig nur auf Elementen, die nicht Scope einer View sind.

  • Wer beides braucht (Drill-Down UND externen Link auf demselben fachlichen Konzept), modelliert zwei Elemente oder verlinkt die ADR stattdessen von der Detail-View eines Kind-Elements aus.

  • Die Regel ist einseitig und ohne Konfigurationsoption — Vorhersagbarkeit hat Vorrang vor Flexibilität.