studio rollout hardening status 2026 04 09 - smart-village-solutions/sva-studio GitHub Wiki
Am 9. April 2026 wurde der neue job-basierte Remote-Mutationspfad fuer studio weiter verhaertet und produktionsnah getestet. Der zentrale Fortschritt ist erreicht:
- der temp-stack-basierte
migrate-Pfad laeuft inzwischen stabil und ohne Seiteneffekte auf den Live-Stack, - der Live-Stack
studiobleibt durch die Job-Ausfuehrung unangetastet, - der verbleibende Blocker ist jetzt klar auf den dedizierten
bootstrap-Job eingegrenzt.
Damit ist das Problem nicht mehr goose, nicht mehr quantum-cli exec als Migrationspfad und auch nicht mehr ein ungewollter Stack-Reconcile von studio_app. Offen ist nur noch die fachliche Ursache innerhalb des Bootstrap-SQL-Pfads.
Zielbild:
precheck-
migrate-Job im temp Stack -
bootstrap-Job im temp Stack -
schema-and-app-Rollout -
smokeundprecheck
Aktueller Stand:
-
migrateim temp Stack: funktioniert -
bootstrapim temp Stack: schlaegt weiterhin mitexitCode=1fehl -
app-only-/Live-Rolloutpfad: gehaertet, aber fuer den neuen Ziel-Digest noch nicht erneut produktiv durchgezogen - Soll-/Ist-Konvergenz: noch nicht abgeschlossen, weil der neue App-Digest noch nicht bewusst live ausgerollt wurde
Folgende Dokumentation und Spezifikation wurden fuer den neuen Rolloutvertrag erweitert:
- proposal.md
- design.md
- tasks.md
- 07-deployment-view.md
- 08-cross-cutting-concepts.md
- runtime-profile-betrieb.md
Wesentliche Runtime-Aenderungen:
- Job-basierter
migrate/bootstrap-Pfad ueber temporaere Swarm-Stacks statt ueberquantum-cli exec - Isolierung von Live-Stack und Temp-Job-Stacks
- zusaetzliche Ingress-/Live-Spec-Konsistenzpruefung im Precheck
- Vergleich der Live-Service-Spec von
studio_appgegen den gerenderten Soll-Vertrag
Relevante Dateien:
Der Bootstrap-Entrypoint wurde in mehreren Schritten verbessert:
- App-Role-Reconcile kann fuer Remote-Bootstrap deaktiviert werden
- bestehende
is_primary=true-Hostnames derselben Instanz werden vor dem Upsert zurueckgesetzt - neue Diagnose-Schalter erlauben die getrennte Isolierung von:
- Schema-Guard
- Instanz-Reconcile
- Hostname-Guard
Relevante Dateien:
Ein echter Fehler im Job-Polling wurde beseitigt:
- bereits normalisierte Task-Snapshots wurden bisher erneut als rohe Quantum-Tasks behandelt
- dadurch erkannte das Polling Terminalzustaende nicht sauber
- Folge war ein scheinbar haengender
env:migrate:studio-Lauf
Der Fix liegt in:
Folgende Checks liefen erfolgreich:
bash -n deploy/portainer/bootstrap-entrypoint.shpnpm exec tsc -p tsconfig.scripts.json --noEmitpnpm nx run sdk:test:unit --skip-nx-cache -- --reporter=dot packages/sdk/tests/bootstrap-job.test.ts packages/sdk/tests/migration-job.test.ts
Verifiziert:
-
env:migrate:studiostartet einen temporaerenmigrate-Stack - der
migrate-Task laeuft bis zum Ende durch - der temporaere
migrate-Stack wird wieder entfernt -
studio_app,postgresundredisim Live-Stack werden dabei nicht reconciled
Nicht erfolgreich:
- der nachgelagerte
bootstrap-Temp-Stack endet weiterhin mit:state=failedexitCode=1message=started
Der aktuell konfigurierte Zielstand fuer studio wurde auf folgenden Digest gesetzt:
ghcr.io/smart-village-solutions/sva-studio@sha256:27ec595d2cc5baf6ad5150c57ae3c7760063cf6109f7daba5984723419c8424b- Tag:
bootstrap-hostname-reconcile-20260409-190537-b680461
Konfigurationsdatei:
Wichtig:
- Dieser Digest ist als Soll-Zustand konfiguriert.
- Ein kontrollierter produktiver
app-only-Rollout auf genau diesen Digest ist zum Stand dieses Reports noch nicht abgeschlossen. - Damit ist die Soll-/Ist-Konvergenz weiterhin offen.
Der verbleibende Blocker liegt ausschliesslich im Bootstrap-Job.
Was bereits ausgeschlossen werden konnte:
-
gooseals Ursache - der alte
quantum-cli exec-Migrationspfad - ungewollte Stack-Updates von
studio_appwaehrendenv:migrate:studio - fehlende Grundrechte des DB-Users
sva - der Polling-/Terminal-State-Bug im Job-Orchestrator
Was weiterhin wahrscheinlich ist:
- ein fachlicher Fehler in genau einem der drei Bootstrap-Teilbereiche:
- Schema-Guard
- Instanz-Reconcile fuer
iam.instances - Hostname-Reconcile bzw. Hostname-Guard fuer
iam.instance_hostnames
Der naechste Schritt ist kein weiterer Volltest auf Verdacht, sondern ein gezielter Diagnose-Lauf mit den bereits eingebauten Schaltern:
- Bootstrap nur mit
schema_guard - Bootstrap nur mit
instance-/hostname-Reconcile - Bootstrap mit Hostname-Guard separat
Ziel:
- den fehlschlagenden fachlichen Teil eindeutig isolieren
- danach nur diesen SQL-Pfad korrigieren
- anschliessend erneut:
pnpm env:migrate:studiopnpm env:deploy:studio -- --release-mode=schema-and-apppnpm env:smoke:studiopnpm env:precheck:studio
Fuer die naechste Sitzung sind diese Punkte der beste Einstieg:
- Debug-Image mit den neuen Bootstrap-Diagnose-Schaltern fertigstellen oder den zuletzt gebauten Debug-Stand verwenden.
- Den Bootstrap-Job mit den neuen Env-Schaltern isoliert laufen lassen.
- Den fehlernden Teil auf SQL-Ebene korrigieren.
- Erst danach den kontrollierten produktiven
app-only-Rollout auf den konfigurierten Ziel-Digest durchziehen.
Der entscheidende Befund fuer die weitere Arbeit lautet:
migrate ist jetzt technisch stabil. Die Restarbeit ist ein isoliertes Bootstrap-Problem.