Der Stack wird per **GitOps** aktualisiert — nichts von Hand am Cluster, alles über einen Commit nach git.lab (**nie direkt nach Gitea** pushen).
## ESS-Chart
- Chart-Version in `apps/production/element-server-suite.yaml` (HelmRelease) anheben, committen → Flux zieht die neue Version.
- Vorher das Changelog/Breaking-Changes der ESS-Version prüfen (die Schema-Validierung ist streng — ungültige Werte brechen den Reconcile mit kryptischen Fehlern).
Wiki.js läuft als **Upstream-Image** (`ghcr.io/requarks/wiki:2.5`) — **kein** Code-Fork, keine Build-Pipeline. Unsere eine Anpassung wird als **Startup-Overlay** im Deployment (`apps/production/wikijs.yaml`, Container-`command`) eingespielt: neue OIDC-Nutzer bekommen `timezone: 'Europe/Berlin'` statt des Wiki.js-Defaults `America/New_York`. Wiki.js legt SSO-Nutzer in `processProfile` (`server/models/users.js`) ohne Zeitzone an, sonst greift der DB-Spalten-Default (New York). Der Container `sed`-patcht die Datei vor dem Boot — **idempotent** (grep-Guard) und **fail-open** (Wiki.js startet auch, wenn der Patch nicht greift; neue Nutzer fielen dann auf New York zurück).
⚠️ **Beim Wiki.js-Upgrade prüfen:** Der Patch hängt am Anker `localeCode: WIKI.config.lang.code,` in `users.js`. Ändert sich diese Zeile in einer neueren Version, muss der `sed` im Deployment nachgezogen werden (der ⚠️-Kommentar steht direkt im Manifest). Gleiche Logik wie bei den Element-Forks oben: Upstream-Bump → Patch gegenprüfen → ggf. Anker anpassen. Der `localeCode` selbst kommt bereits aus der Standard-Locale (`de`), nur die Zeitzone braucht den Patch.