# ADR001 – WP2 Runtime Infrastructure

**Status:** Completed 
**Date created:** 2026-07-19
**Date updated:** 2026-07-19
**Note PL** Abgeschlossen ca. 2026-07-19 16:00

## Ziel

Mit WP2 wird die technische Infrastruktur von Reconcilix modernisiert.
Ziel ist eine klare Trennung zwischen Konfiguration, Objektverdrahtung
und laufzeitbezogenen Informationen.

Die Runtime Infrastructure bildet die technische Grundlage für HTTP,
CLI, Batch-Verarbeitung und zukünftige Worker-Prozesse.

## Architektur

Die Runtime Infrastructure besteht aus drei Komponenten:

- RuntimeContext
- RuntimeFactory
- Composition Root

Diese Komponenten besitzen klar getrennte Verantwortlichkeiten.

## RuntimeContext

Der `RuntimeContext` enthält ausschließlich **immutable request-scoped data**.

Er enthält ausschließlich laufzeitbezogene Kontextinformationen, z. B.
den aktuellen `TenantContext`.

Der `RuntimeContext` enthält ausdrücklich **keine technischen Services**.

Insbesondere gehören **nicht** in den `RuntimeContext`:

- ProviderRegistry
- RuntimeFactory
- Repositorys
- Logger
- Cache
- Configuration
- PDO bzw. Datenbankzugriffe

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

## RuntimeFactory

Die `RuntimeFactory` erzeugt tenantabhängige Infrastrukturkomponenten
sowie den `ApplicationService`.

Sie verwendet ausschließlich eine bereits validierte Konfiguration.

Der Controller kennt nicht die konkrete `RuntimeFactory`, sondern einen
schmalen Factory-Vertrag zur Erzeugung des `ApplicationService`.

## Configuration

Die `Configuration` ist verantwortlich für:

- Laden der Konfiguration
- Validieren der Konfiguration
- Bereitstellen der validierten Konfiguration

Sie enthält keine Objektverdrahtung.

## Composition Root

Der `Composition Root` ist ausschließlich für das Assembly des
Objektgraphen verantwortlich.

Er verwendet die validierte Konfiguration und erzeugt daraus die
benötigten Objekte.

Konfigurationslogik gehört nicht in den `Composition Root`.

## Long-running Processes

Für jede unabhängig verarbeitete Einheit wird ein neuer
`RuntimeContext` erzeugt.

Dies gilt gleichermaßen für:

- HTTP Requests
- CLI-Kommandos
- Batch-Verarbeitung
- Worker-Prozesse

Tenant-bezogene Services dürfen niemals zwischen zwei
Verarbeitungseinheiten wiederverwendet werden.

## Architekturprinzipien

Die Runtime Infrastructure folgt den bereits in ADR001 festgelegten
Grundprinzipien:

- keine Einführung eines Frameworks oder DI-Containers,
- explizite Constructor Injection,
- klare Dependency Direction,
- KISS-Prinzip,
- immutable Runtime-Daten.

## Ergebnis

Die Runtime Architecture schafft eine stabile technische Grundlage für
die weiteren Modernisierungsschritte in WP2, ohne die in WP1 eingeführte
fachliche Architektur zu verändern.
