# LA Review Summary -- ADR001 WP2 Runtime Infrastructure

**Status:** Accepted with minor required clarifications\
**Reviewer:** LA\
**Adressat:** ED

## Gesamturteil

Die vorgeschlagene Runtime-Architektur ist konsistent mit DM001, DM002,
AM001 und der in WP1 eingeführten Architektur. Die Trennung zwischen
Composition Root, RuntimeContext und RuntimeFactory ist grundsätzlich
sauber. Auf dieser Basis kann **WP2 implementiert werden**.

Es werden **keine neuen Konzepte** vorgeschlagen. Die folgenden Punkte
dienen ausschließlich der Präzisierung der bestehenden Architektur.

------------------------------------------------------------------------

# 1. RuntimeContext

Die aktuelle Richtung ist richtig.

Bitte die Dokumentation noch eindeutiger formulieren:

-   `RuntimeContext` enthält ausschließlich **immutable request-scoped
    data**.
-   Er darf **keine technischen Services** aufnehmen.

Explizit ausgeschlossen bleiben insbesondere:

-   ProviderRegistry
-   RuntimeFactory
-   Repositorys
-   Logger
-   Cache
-   Configuration
-   PDO / Datenbankzugriffe

Der RuntimeContext darf sich **nicht** zu einem Service Locator
entwickeln.

------------------------------------------------------------------------

# 2. Controller-Abhängigkeit

Der Controller sollte nach Möglichkeit **nicht direkt von der konkreten
RuntimeFactory** abhängen.

Empfehlung:

-   Controller kennt lediglich einen schmalen Factory-Vertrag für die
    Erzeugung des Application Service.
-   `RuntimeFactory` implementiert diesen Vertrag.

Dadurch bleibt die Abhängigkeitsrichtung der Gesamtarchitektur
konsistent.

------------------------------------------------------------------------

# 3. CompositionRoot und Configuration

Die Verantwortlichkeiten sollten sprachlich noch etwas klarer getrennt
werden.

## Configuration

Verantwortlich für:

-   Laden
-   Validieren
-   Bereitstellen der Konfiguration

## CompositionRoot

Verantwortlich für:

-   Verwendung der validierten Konfiguration
-   Assembly des Objektgraphen

Die eigentliche Konfigurationslogik gehört nicht in den Composition
Root.

------------------------------------------------------------------------

# 4. Long-running Processes

Da die Runtime künftig auch für CLI, Batch und Worker vorgesehen ist,
sollte ausdrücklich dokumentiert werden:

-   Für jede unabhängig verarbeitete Einheit wird ein neuer
    `RuntimeContext` erzeugt.
-   Tenant-bezogene Services dürfen niemals zwischen zwei
    Verarbeitungseinheiten wiederverwendet werden.

Damit bleibt das Tenant-Modell auch außerhalb klassischer HTTP-Requests
korrekt.

------------------------------------------------------------------------

# Zusammenfassung

Die Architektur erfüllt die Ziele von ADR001:

-   klare Trennung zwischen Assembly, Runtime-Daten und Factory,
-   keine Einführung eines Frameworks oder DI-Containers,
-   explizite Constructor Injection,
-   saubere Dependency Direction,
-   KISS-konforme Runtime-Infrastruktur.

Die vier oben genannten Präzisierungen erhöhen die Robustheit der
Architektur, ändern jedoch weder den Workpackage-Schnitt noch die
grundlegende Architekturentscheidung.

------------------------------------------------------------------------

# Review-Ergebnis

**Review Status**

> **Accepted with minor required clarifications**

Nach Einarbeitung der vier Präzisierungen kann ADR001-WP2 aus Sicht der
Architektur auf **Accepted** gesetzt und WP2-001 begonnen werden.
