adr vertraulich owner: matus
Architecture Decision Records — tuxametrics
Architecture Decision Records — tuxametrics
Eigene ADR-Kette dieses Produkts, ab 0001. Nie rückwirkend gelöscht, nur „Superseded" markiert.
Löst eine Entscheidung hier eine globale Regel aus (etwas, das ohne Kenntnis der Fachdomäne
dieses Produkts Sinn ergäbe): ein Zwirn-ADR mit Herkunft: tuxametrics ADR-NNNN schreiben (siehe
../../../zwirn/GOVERNANCE.md) und von hier aus zurückverlinken.
Seit 2026-08-17 ist das einmal passiert, und der Satz, der hier bis dahin stand („bisher ist das
nicht passiert"), ist damit überholt: ADR-0008
hat Zwirn-ADR-0043 ausgelöst (Capability-Profile im zwirn-platform-service, PROFILE wird kein
ActorType). Beides war generisch — es ergibt ohne jede Kenntnis der orthomolekularen Medizin Sinn —
und wurde deshalb zuerst in Zwirn gebaut und erst danach hier nachgezogen. Das ist die
vorgesehene Reihenfolge, nicht die Ausnahme. GG-META-0002/-0005 sind davon unberührt: dieses
Produkt benutzt sie weiterhin und ändert sie nicht.
Template
# ADR-NNNN: {Titel}
## Status
{Vorgeschlagen | Angenommen | Abgelehnt | Superseded durch ADR-XXXX} ({Datum})
## Kontext
{Warum musste entschieden werden}
## Entscheidung
{Was wurde entschieden}
## Konsequenzen
{Was folgt daraus, auch Trade-offs}
Bisherige Entscheidungen
| ADR | Titel | Status |
|---|---|---|
| 0001 | Provenienz und Scope — Gold Path E1/E3, E2 bewusst ausgeschlossen | Angenommen (2026-08-09) |
| 0002 | Der regulatorische Status ist UNGEKLÄRT — externe Klärung ausstehend | Angenommen (2026-08-09) |
| 0003 | Der Pilot-Betriebsmodus ist UNGEKLÄRT | Angenommen (2026-08-09) |
| 0004 | Die vier „unbequemen" Elemente sind Zustände im Datenmodell; GM-7 verbietet die harte Sperre | Angenommen (2026-08-09) |
| 0005 | Eigene Capability-Authority (tuxametrics-platform-service), Keycloak-Realm digital-labs, eigene Virtual Identity mit agentischen Identitäten |
Angenommen (2026-08-10) |
| 0006 | Feedback-Triage als eigenes Prozessmodul (tuxametrics-feedback-process) — und ausdrücklich nicht „Autoimprove" |
|
| 0007 | tuxametrics betreibt zwirn-autoimprove-service — und nur ihn. zwirn-feedback-service außer Betrieb, das Prozessmodul aus 0006 entfernt, erster AGENT-Actor des Produkts |
Angenommen (2026-08-14) |
| 0008 | Zwei Capability-Profile (platform-owner, product-owner) für den zweiten menschlichen Actor; PROFILE wird kein ActorType; GM-7 bekommt eine fünfte Verteidigungslinie (nie über ein Profil grantbar) |
Angenommen (2026-08-17) |
| 0009 | Echtes Keycloak-Client-Provisioning für agentische Identitäten (AgentDefinition/AgentToken, KeycloakAdminClient) — Quarkus-Port von dot-ADR-0021, verschlankt um Kill Switch/Session-TTL/e2e-Realm |
Angenommen (2026-08-17) |
| 0010 | „Kataloge & Regelwerk" (R-Praxis-Governance) als Scope-Erweiterung — Verwaltungsmechanismus statt Fachzahl, kein Rückkanal in die Auswertungslogik | Angenommen (2026-08-24), Abschnitt „kein Rückkanal" abgelöst durch 0011 |
| 0011 | R-Praxis bekommt einen echten Rückkanal: Vorrangregel nach E-11/GM-6.1 (genau eine änderbare Regelart — Reevaluationsintervalle, nur verkürzend), Momentaufnahme je Fall statt Live-Lookup, append-only Änderungshistorie |
Angenommen (2026-08-24) |
| 0012 | Substanzstammdaten als eigener Service (tuxametrics-substanzstammdaten-service, Port 8128): Wirkstoff ist die Entität, Handelsname referenziert genau einen. Nicht patientenbezogen, nicht mandantengebunden (Sentinel platform), API trotzdem tenant-skopiert. Löst Handelsname → Wirkstoff auf — ohne die Interaktionsprüfung freizuschalten |
Angenommen (2026-08-26) |
Die eine Zeile, die man bei ADR-0012 überliest, und dann falsch weiterbaut: die
Wirkstoff-Auflösung existiert ab jetzt, die Interaktionsprüfung entsteht dadurch nicht. Leitplanke
4 in CLAUDE.md bleibt in der Substanz gültig; Medikationseintrag.interaktionspruefung bleibt ein
Enum mit einem Wert. Eine Prüfung bräuchte zusätzlich einen Interaktionskatalog (Wirkstoff ×
Mikronährstoff) — eine völlig andere Quelle, die es nicht gibt. FACH-021 nennt die Auflösung als
notwendige, nicht als hinreichende Bedingung.
ADR-0010 und ADR-0011 wurden am selben Tag angenommen, und das hat einen Grund, der hierher
gehört. ADR-0010 begründet den fehlenden Rückkanal mit „Vorrangregel … nicht spezifiziert" — das
stimmt gegen quelle-01.md (v1.1) und ist gegen quelle-01-v1.2.md falsch: E-11 ist dort
entschieden und FACH-063 trägt eine vollständige Tabelle veränderbarer und gesperrter Regelarten
(Z. 1397–1421). Kein Meinungswechsel, sondern eine übersehene Fundstelle — dieselbe Fehlerart wie bei
ADR-0006/0007, nur diesmal innerhalb eines Tages bemerkt. Der Text von 0010 bleibt unverändert
stehen; die abgelöste Stelle ist oben markiert.
Die wichtigste Zeile aus 0011 steht nicht im Titel: von den fünf laut E-11 veränderbaren
Regelarten führt Regelkatalog.java genau eine. Die Dosisobergrenzen — der Fall aus dem
Mockup — sind nach E-11 ausdrücklich nicht praxisseitig veränderbar (FACH-072,
„Sicherheitswerte der Zufuhr — nein"). Wer den Screen sieht und die gesperrte Dosisobergrenze für
einen unfertigen Stand hält, liest das Gegenteil dessen, was dort entschieden wurde.
ADR-0006 hat genau einen Tag gehalten, und der Grund gehört hierher. Sie begründet den Verzicht
auf „Autoimprove" mit einem DOT-Visionspapier, das im Quellrepo selbst als „nicht gebaut,
zurückgestellt" markiert ist — und übersieht dabei, dass der kanonische zwirn-autoimprove-service in
Zwirn längst existiert, gebaut und capability-gegatet. Das war ein Recherchefehler, kein
Meinungswechsel; ADR-0007 benennt ihn so. Wer nur die Tabelle liest, hielte 0006 sonst für eine
abgewogene Alternative, die sie nicht war. Der Text von 0006 bleibt unverändert stehen — als Beleg,
nicht als Systembeschreibung.
Was ADR-0007 ausdrücklich nicht sagt: dass zwirn-feedback-service in Zwirn überholt wäre.
Zwirn bietet beide Bausteine unabhängig an; die Wahl trifft jedes Produkt für sich, und sie ist ein
Entweder-oder. tuxametrics hat die Pipeline gewählt.
Der Recherchefehler hatte eine zweite Hälfte, und sie steht hier, weil sie sich wiederholen kann:
auch bei ADR-0007 wurde zunächst im falschen DOT-Verzeichnis gesucht (C:\dev\dot\dot, ein totes
Checkout) und daraus „kein Präzedenzfall" geschlossen. Das lebende Repo ist
C:\dev\dl-controlling\dot, und dort steht ADR-0071 (2026-08-03) mit exakt demselben
Schnitt — inklusive dediziertem Keycloak-Client und lokal nachgebautem Melde-Dialog. tuxametrics ist
damit der zweite Fall desselben Musters, nicht der erste. Wer künftig „wie macht DOT das?" prüft,
prüft C:\dev\dl-controlling\dot.
ADR-0004 und ADR-0005 lesen sich zusammen, und die Reihenfolge ist wichtig: 0004 sagt, dass es
keine technische Sperre gegen eine klinische Therapeutenentscheidung geben darf. 0005 sperrt
etwas anderes — nämlich dass ein Agent an ihrer Stelle entscheidet. Wer die beiden verwechselt,
liest in 0005 einen Widerspruch zu GM-7 hinein, den es nicht gibt: Zugriffskontrolle (wer darf das
System benutzen) und klinische Entscheidungsfreiheit (was darf ein Therapeut entscheiden) sind zwei
verschiedene Fragen.
ADR-0002 und ADR-0003 sind die beiden Leitplanken, die jede weitere Ausbaustufe binden. Sie sind von ADR-0005 unberührt: dass die Autorisierung entschieden ist, sagt über die regulatorische Einstufung und den Pilot-Betriebsmodus nichts — das sind Fragen an Dritte. Beide sind als Startgate implementiert und durch Tests festgehalten; beide können nur durch ein Nachfolge-ADR aufgelöst werden, das die externe Fundstelle nennt.
Herkunft der Repo-Struktur: zwirn-project-template (siehe dessen CHANGELOG.md), Servicemuster
zwirn/samples/sample-data-service-quarkus, Frontendmuster zwirn/samples/sample-frontend-react.
Abweichungen vom Template sind in ADR-0001 und im
Kommentar der Root-pom.xml (Reactor-Aggregation des Quarkus-Moduls) begründet.