Zum Inhalt springen
Bartl

Bartl-Startmechanismus

Technische Spec

Diese Seite erläutert den normativen Anwendungsvertrag in README.md, Abschnitt Application contract and qualification. Der Startmechanismus ist ein Baustein von Bartls umfassender Betriebsphilosophie. Die Pflichten gelten je unterstützter Konfiguration; eine bestimmte Container- oder Kubernetes-Architektur ist nicht vorgeschrieben.

Normativen Anwendungsvertrag öffnen

Der Zustand wählt den Pfad, nicht der Name einer angeforderten Operation.

Startvertrag und Eingaben

Release, deklarierter Zustand und Zielkonfiguration müssen technisch prüfbar sein. Eine Sicherung ist optional und wird nur ohne lokalen Zustand abgefragt. Der Startpfad benötigt weder Moduswahl noch eine gesonderte Initialisierungsfreigabe.

Eingabe Vertrag
Versioniertes Release Unveränderliches Anwendungsartefakt mit bekannter Engine-Version und der zugehörigen produktspezifischen Migrationslogik.
Vollständig deklarierter Zustand Inventar des eigenen veränderlichen Zustands mit Konsistenzbeziehungen und zuverlässig ermittelbarer Zustandsversion. Fremde Persistenz ist eine Abhängigkeit, keine automatische Änderungsbefugnis.
Optionaler Sicherungsstand Der neueste geprüfte Stand für diesen Kunden und diese Anwendung. Kein konfigurierter Backup-Store oder ein konfigurierter Store ohne Sicherung bedeutet Abwesenheit, nicht Fehler.
Zielkonfiguration Vom Ziel gelieferte Endpunkte und Zugangsdaten. Sie sind weder Bestandteil des Releases noch des gesicherten Zustands.

Beobachtungen vor der Aktion

  1. observe_local_state() unterscheidet gültigen lokalen Zustand mit bekannter Version von bestätigter Abwesenheit. Beobachtungsfehler, beschädigter oder unvollständiger Zustand stoppen den Start.
  2. observe_backup() läuft nur ohne lokalen Zustand. Die Funktion liefert den neuesten vollständig veröffentlichten und geprüften Stand für Kunde und Anwendung oder dessen Abwesenheit. Abfrage- und Integritätsfehler stoppen den Start, statt zur Initialisierung überzugehen.
  3. Engine- und Zustandsversion sind gleich, die Engine ist neuer oder die Engine ist älter.
  4. Release, vorhandener Zustand, gegebenenfalls Sicherung und Zielkonfiguration müssen vollständig und widerspruchsfrei sein.

Beobachteter Startpfad

Der Mechanismus entscheidet nicht aus einem Label wie Install, Restore oder Upgrade. Komponenten dürfen zusammenarbeiten; Übergangsverantwortung und aktuelle Fertigmeldung müssen eindeutig sein. Nach jeder Zustandsänderung wird erneut beobachtet.

Pseudocode für die Bartl-Startentscheidung
until serving():
    local = observe_local_state()
    if local.exists:
        engine version vs local.version:
            equal:    serving()
            engine >: migrate(local)
            engine <: abort("downgrade")
    else:
        backup = observe_backup()
        if backup.valid: restore(backup)
        else:            init()

Auswertung

Gültiger lokaler Zustand und gleiche Version
Die Anwendung kann bedienen.
Gültiger lokaler Zustand und neuere Engine
Die native produktspezifische Migration läuft. Nicht unterstützte Übergänge oder Fehler stoppen den Start; Erfolg führt zur erneuten Beobachtung.
Gültiger lokaler Zustand und ältere Engine
Der Start bricht als unzulässiger Downgrade ab.
Kein lokaler Zustand und gültiger Sicherungsstand
Der neueste geprüfte Stand für Kunde und Anwendung wird nativ wiederhergestellt. Fehler stoppen den Start; Erfolg führt zur erneuten Beobachtung.
Kein lokaler Zustand und kein Sicherungsstand
Native Initialisierung erzeugt neuen Zustand. Fehler stoppen den Start; Erfolg führt zur erneuten Beobachtung. Eine fehlgeschlagene Backup-Abfrage ist kein fehlender Sicherungsstand.
Ungültige, unvollständige, widersprüchliche oder nicht beurteilbare Eingaben
Der Start bricht kontrolliert ab, bevor Zustand verändert oder bedient wird.

Invarianten des Mechanismus

Eine Implementierung folgt dem Muster nur, wenn diese Eigenschaften über alle Startfälle erhalten bleiben.

Eine Entscheidungsschleife
Normalstart, Erstinitialisierung und Restore beginnen mit derselben Beobachtung und verwenden dieselben Abbruchbedingungen.
Fail-closed
Beschädigter oder teilweise erzeugter Zustand, unvollständige Sicherungen und widersprüchliche Versionen werden nicht als leerer Startzustand umgedeutet.
Prüfung vor Verwendung
Ein Sicherungsstand wird erst nach erfolgreicher Prüfung seiner Veröffentlichung, seines Inventars und seiner Integrität wiederhergestellt.
Migration gehört zum Produkt
Bartl koordiniert den Übergang. Vorhandene native Initialisierung und Migration bleiben beim Produkt; ergänzt werden nur fehlende Beobachtung, Koordination und Prüfung.
Erneute Beobachtung
Initialisierung, Restore und Migration führen zurück an den Anfang. Erst ein gültiger kompatibler Zustand erreicht serving().
Kontrollierter Abbruch
Downgrade, Inkonsistenz und fehlende Voraussetzungen enden sichtbar. Der Mechanismus rät keinen Ersatzwert und überspringt keine Prüfung.

Pflichten der Anwendung

Die Anwendung liefert die konkreten Verfahren für ihren eigenen Zustand. Eine gemeinsame Entscheidungsstruktur verlangt weder identischen Code noch einen universellen Operator. Mehrere Komponenten können über ein eindeutiges Protokoll zusammenarbeiten.

  • Zustandsgrenze: eigenes vollständiges Inventar und Konsistenzbeziehungen deklarieren; fremde oder gemeinsam genutzte Persistenz nur innerhalb ausdrücklich zugewiesener Verantwortung verändern.
  • Beobachtung: leeren, gültigen, unvollständigen, beschädigten und nicht beurteilbaren Zustand samt relevanter Version zuverlässig unterscheiden; Marker allein genügen nicht.
  • Lifecycle: Normalstart, Initialisierung, Restore und Migration aus derselben Beobachtung ableiten; native Fehler stoppen den Start, erfolgreiche Änderungen führen zur erneuten Beobachtung.
  • Sicherung und Rekonstruktion: vollständige konsistente Recovery-Punkte erzeugen, vor Verwendung prüfen und ohne Quelle wiederherstellen; Software, Schlüssel und Zielvoraussetzungen benennen.
  • Sichere Ausführung: Unterbrechungen, Wiederholungen und konkurrierende Änderungen beherrschen; veraltete Fertigmeldungen und ungeprüfte Teilzustände dürfen keine Bedienung freigeben.
  • Ergebnisprüfung: native Übergangsergebnisse vor dem normalen Start prüfen und Fehler maschinenlesbar melden. Die Paketqualifikation belegt die vereinbarte Fachleistung; sie ist keine privilegierte Abnahme bei jedem Start.

Bedeutung von serving()

serving() startet die native Anwendung mit ihrem normalen Readiness-Verhalten. Eine erfolgreiche Rekonstruktion benötigt keinen zweiten technischen Freigabebefehl. Der vollständige Servicevertrag regelt Quellisolation, Fencing, Erreichbarkeit, Aktivierung und Wiederanlaufzeit. Menschen autorisieren das Ergebnis und die akzeptierten Risiken; gepflegte Verfahren müssen diese Entscheidung technisch durchsetzen.

Nachweise für die Katalogaufnahme

Je Anwendung wird zunächst eine begründete unterstützte Konfiguration mit Releases, Übergängen, Persistenz und Zielvoraussetzungen festgelegt. Die folgenden Fälle benötigen ausführbare Nachweise mit konkreten Artefakten und Aussagegrenzen. Einzelne bestandene Fälle sind keine vollständige Qualifikation; ein gemeinsamer Test-Runner ist nicht vorgeschrieben.

  • Erstinitialisierung: nachweislich leerer eigener Zustand ergibt durch native Initialisierung eine nutzbare Installation, sowohl ohne konfigurierten Backup-Store als auch mit einem Store ohne Sicherung.
  • Normaler Wiederanlauf: gültiger Zustand und Identität bleiben ohne Backup-Zugriff, erneute Initialisierung oder unnötigen Restore erhalten.
  • Restore ohne Quelle: der neueste geprüfte vollständige Stand für Kunde und Anwendung stellt die vorgesehenen Daten, Identitäten und Rechte wieder her.
  • Versionswechsel: unterstützte native Migration gelingt; unbekannte Übergänge und Downgrades werden ohne destruktiven Ersatzpfad abgewiesen.
  • Unterbrechung und Wiederholung: Teilzustände werden erkannt; Wiederholung, konkurrierende Ausführung und veraltete Fertigmeldungen enden sicher.
  • Fehlende oder widersprüchliche Eingaben: unerreichbarer Speicher, beschädigte Daten und unvollständige Backups werden nicht zur Erlaubnis für eine leere Installation.
  • Fremder Zustand: ein Fehler der Anwendung setzt weder eine gemeinsam genutzte Datenbank noch einen anderen Dienst zurück.
  • Fachliche Abnahme: die Paketqualifikation belegt die vereinbarte Nutzbarkeit nach jedem unterstützten Übergang; ein erfolgreicher Container oder Job reicht nicht.

Ausführbare WordPress-Referenz

bartl-wordpress illustriert den Startmechanismus für eine konkrete WordPress-, MySQL- und Docker-Compose-Konfiguration. Die folgenden Angaben beschreiben die vorhandene Referenz, nicht zusätzliche normative Startbedingungen. Ihr Nachweis ist keine pauschale Bestätigung aller Katalogfälle.

Deklarierter Zustand
MySQL-Datenbank und wp-content/uploads
Unveränderliches Release
WordPress-Core, Plugins und Themes im Image
Sicherungsformat
database.sql, uploads.tar, state.json und SHA256SUMS in einem Archiv
Veröffentlichung
Archiv plus .sha256-Sidecar, wobei das Sidecar als Commit-Marker zuletzt erscheint
Restore
Neuester vollständig veröffentlichter Stand auf einem leeren kompatiblen Ziel
Fehlerverhalten
Auf einem leeren Ziel Abbruch bei fehlendem Store-Mount sowie immer bei unvollständigem Paar, falschen Prüfsummen oder ungültigem Inventar
Referenz und Runbook auf Codeberg öffnen

Aussagegrenze

Die Spec beschreibt nur den Startmechanismus für Anwendung und deklarierten Zustand.

Teil des Startmechanismus

  • Zustand und Versionen beobachten
  • Sicherungsstände vor Verwendung prüfen
  • initialisieren, wiederherstellen oder produktspezifisch migrieren
  • gültigen Zustand bedienen oder kontrolliert abbrechen

Nicht durch den Startmechanismus abgedeckt

  • Zielinfrastruktur, Netzwerk, DNS, TLS oder Identity bereitstellen
  • externen Backup-Speicher betreiben
  • allgemeine Backup- oder Migrationslogik für andere Produkte liefern
  • Verfügbarkeit, Zielqualität oder Wiederanlaufzeit garantieren
  • Traffic oder Schreibautorität koordinieren
  • einen vollständigen Betriebs- oder Recovery-Prozeß ersetzen

Die WordPress-Referenz belegt diese Eigenschaften nur für ihre festgeschriebene Konfiguration. Andere Anwendungen benötigen ein eigenes Zustandsinventar, Sicherungsformat, Migrationslogik und ausführbaren Nachweis.

Zur Startseite