# ED-Review – Beobachtungen aus der Inbetriebnahme der Runtime Platform (RA-003)

**Datum:** 2026-08-05
**Author:** RA

## Zusammenfassung

Die produktionsnahe Runtime Platform (Ubuntu 26.04, Apache 2.4, PHP 8.5, MySQL 8.4) wurde erfolgreich eingerichtet.

Folgende End-to-End-Tests wurden erfolgreich durchgeführt:

- Manifest über OpenRefine
- Reconciliation über xTree
- Reconciliation über Lobid
- Reconciliation über LocalStore
- Verarbeitung von ContextItems
- Einzeltests
- Mehrfachtests (10 Datensätze)

Die komplette Reconciliation-Pipeline arbeitet erfolgreich.

---

# Beobachtungen

## 1. PHP 8.5

### curl_close()

PHP 8.5 markiert `curl_close()` als deprecated.

Da `curl_close()` seit PHP 8.0 keine Wirkung mehr besitzt, können diese Aufrufe entfernt werden.

Betroffene Klasse:

- XtreeJsonApiClient

Priorität:
**niedrig**

---

### PCRE JIT

Server meldet

```
preg_match():
Allocation of JIT memory failed.
PCRE JIT will be disabled.
```

Die Verarbeitung läuft anschließend korrekt weiter.

Empfehlung:

```
pcre.jit=0
```

in der PHP-Konfiguration setzen.

Kein Reconcilix-Problem.

Priorität:
**niedrig**

---

## 2. LocalStore

Der LocalStore benötigt beim vollständigen Laden großer JSON-Dateien mehr als das Standard-Memory-Limit von PHP.

Mit

```
memory_limit = 512M
```

läuft die Verarbeitung stabil.

Langfristig wäre zu prüfen, ob der LocalStore

- streamend,
- indexbasiert
- oder persistent

implementiert werden kann.

Priorität:
**mittel**

---

## 3. MySQL 8.4

### reserviertes Schlüsselwort `rank`

PL, 2026-08-07: Backticks in src/Infrastructure/Persistence/Mapper/CandidateItemMapper.php für rank eingefügt


Im CandidateItemMapper wurde die Datenbankspalte

```
rank
```

ohne Maskierung verwendet.

Unter MySQL 8.4 ist `RANK` reserviert.

Lösung:

```
`rank`
```

Backticks verwenden.

Status: erledigt



Priorität:
**hoch**

---

## 4. Exception Logging

Beim Persistieren des ReconciliationResult wird aktuell nur

```
Unable to persist ReconciliationResult aggregate.
```

ausgegeben.

Die eigentliche Exception wird nicht geloggt.

Empfehlung:

temporär

```
error_log($exception->getMessage());
```

im Catch-Block ergänzen.

Dies würde zukünftige Fehlersuchen erheblich vereinfachen.

Priorität:
**mittel**

---

## 5. Runtime Platform

Die Runtime Platform hat mehrere Unterschiede gegenüber der lokalen Entwicklungsumgebung sichtbar gemacht.

Unter anderem:

- Dateirechte
- Memory-Limits
- reservierte SQL-Schlüsselwörter
- PHP 8.5-Kompatibilität

Dies bestätigt den Nutzen einer produktionsnahen Testplattform bereits ab Version 0.3.

---

# Ergebnis

Die Runtime Platform kann als erfolgreich eingerichtet betrachtet werden.

Die vollständige Reconciliation-Pipeline wurde erfolgreich gegen

- xTree
- Lobid
- LocalStore

getestet.

Die Plattform eignet sich damit für die weitere Entwicklung des Discovery- und Interpretation-Frameworks.