### WP2-00X

WP2-001 Runtime Architecture
WP2-002 Composition Root
WP2-003 Persistence Foundation
WP2-004 Schema and Migrations
WP2-005 Relational Repositories and Data Mapper
WP2-006 Rehydration
WP2-007 Transactional Integration

## Next
Empfohlene Reihenfolge
### WP2-003 — Persistence Foundation

Das wäre aus meiner Sicht der nächste konkrete Schritt.

Umfang:

Aufbau einer zentralen Datenbankverbindung,
Konfiguration der Verbindungsparameter,
Definition eines TransactionManager-Ports,
konkrete PDO-basierte Implementierung,
keine fachlichen Repository-Implementierungen,
keine Tabellenmigrationen außer gegebenenfalls einer technischen Testtabelle,
Tests gegen eine reale Testdatenbank.

Zielarchitektur:

Configuration
│
▼
ReconciliationCompositionRoot
│
├── DatabaseConnectionFactory
│
├── TransactionManager
│
└── RuntimeFactory

Dabei sollte weder die Domain noch der Application Service direkt PDO kennen.


### WP2-004 — Schema and Migrations

Umfang:

Überführung von DM002 in SQL,
Primär- und Fremdschlüssel,
Unique Constraints,
Indizes,
Zeichensätze und Kollationen,
initiale Migration,
Bootstrap für Entwicklungs- und Testdatenbank,
Schema-Test.

Hier müssen wir unter anderem die bereits beschlossenen URI-Längen und Kollationen korrekt umsetzen.

### WP2-005 — Repository Contracts and Relational Mapping

Umfang:

Prüfung beziehungsweise Präzisierung der Repository-Interfaces,
relationale Implementierungen,
Data Mapper,
Speicherung des vollständigen Aggregats,
noch keine komplexe Rehydration über alle Varianten.

Mögliche Komponenten:

SourceValueRepository
InterpretationGraphRepository
ReconciliationResultRepository

Ob diese drei Repositories wirklich getrennt bleiben oder ob ein Aggregate Repository sinnvoller ist, sollte vorher architektonisch entschieden werden.

### WP2-006 — Rehydration

Umfang:

Lesen persistierter Aggregate,
Wiederherstellung der Domain-Objekte,
Einhaltung aller Domain-Invarianten,
keine Konstruktion halbgültiger Domain-Objekte,
Roundtrip-Tests:
Domain Object
→ persist
→ load
→ Domain Object

### WP2-007 — Transactional Application Flow

Erst hier würde ich die Persistenz vollständig in den laufenden Reconciliation-Anwendungsfall integrieren:

begin transaction
→ Reconciliation ausführen
→ Ergebnis persistieren
commit

Bei Fehlern:

rollback