xinionos/nutzlast/VERTRAG.md
Thomas Reitz d9ed1bc2ff XinionOS als eigenes Erzeugnis herausgeloest
Die Geraeteschicht — Abbild, zwei Wurzeln, Selbstprueflauf, Ruecksprung —
verlaesst die Ablage der ersten Appliance und wird ein eigenes Erzeugnis
mit eigenem Takt und eigenem Nachweis.

Drei Gruende, nach Gewicht: Der Cyber Resilience Act verpflichtet fuer das
gesamte Produkt einschliesslich der Betriebssystemschicht — vier gewachsene
Basissysteme waeren vier Stuecklisten und vier Schwachstellenprozesse, eine
gemeinsame Basis ist ein Dossier. Der Ruecksprung wird nur einmal richtig
gebaut, weil er nur geprueft wird wenn ihn jemand braucht. Und eine
abgegrenzte Aufgabe laesst sich ausschreiben, was unmittelbar auf das
groesste benannte Risiko des Hauses einzahlt.

Der Einwand der Vertraeglichkeitsmatrix wird durch den Nutzlast-Vertrag
entkraeftet statt weggeredet: Die Nutzlast liegt in der Wurzel und wird mit
ihr getauscht. Eine Fassung, ein Rueckweg, keine Matrix.

Das OS kennt kein Produkt — Regel 1. Alle Namen sind entkoppelt, die
Statusseite ist auf die Standardbibliothek umgestellt, weil jede
Abhaengigkeit im Grund-OS eine Verpflichtung ueber die Produktlebensdauer
ist.

Nichts davon ist gelaufen. Der Inhalt gilt als Bauplan.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 08:02:55 +02:00

75 lines
3.6 KiB
Markdown

# Der Nutzlast-Vertrag
XinionOS liefert ein Gerät, das startet, sich prüft und zurückspringt. Was darauf arbeitet, ist die
**Nutzlast** — und dieser Vertrag ist alles, was die beiden voneinander wissen.
Er ist bewusst klein. Je mehr das Betriebssystem über die Nutzlast weiß, desto weniger Produkte
kann es tragen.
## Der Grundsatz: eine Fassung, ein Rückweg
**Die Nutzlast liegt in der Wurzel und wird mit ihr getauscht.** Damit erbt sie den A/B-Wechsel und
den Rücksprung, ohne selbst etwas dafür zu tun.
Das ist die wichtigste Festlegung dieses Dokuments, und sie ist eine Entscheidung gegen eine
naheliegende Alternative: Nutzlast und Betriebssystem **getrennt** zu versionieren. Das klingt
flexibler und erzeugt eine Verträglichkeitsmatrix — welche Nutzlastfassung läuft auf welcher
OS-Fassung —, die gepflegt und geprüft werden muss. Vor allem aber gäbe es **zwei Rücksprünge**,
die zueinander passen müssten.
> **Ein Abbild, eine Fassung, ein Rückweg.** Wer die Nutzlast aktualisieren will, baut ein neues
> Abbild.
## Was die Nutzlast bereitstellt
| Pfad | Pflicht | Zweck |
|---|---|---|
| `/opt/nutzlast/bin/selbstpruefung` | **ja** | Meldet mit Rückgabewert 0, dass die Nutzlast arbeitsfähig ist |
| `/opt/nutzlast/nutzlast.target` | **ja** | systemd-Ziel, unter dem alle Dienste der Nutzlast hängen |
| `/opt/nutzlast/kennung` | **ja** | Name und Fassung, einzeilig — erscheint auf der Statusseite |
| `/opt/nutzlast/bin/einrichten` | nein | Wird bei der Ersteinrichtung einmalig aufgerufen |
## Wie der Selbstprüflauf zusammenspielt
Der Selbstprüflauf des Betriebssystems prüft **seine** Sachen — Wurzel erkennbar, Bestandsbereich
eingehängt und beschreibbar, Statusseite antwortet. Danach ruft er
`/opt/nutzlast/bin/selbstpruefung` auf.
**Fällt einer von beiden durch, gilt der Start als misslungen.** Das ist der ganze Mechanismus: Die
Nutzlast entscheidet über den Rücksprung mit, ohne dass das Betriebssystem wissen muss, woran sie
das erkennt.
Was die Nutzlast dort prüft, ist ihre Sache. Eine Fach-Appliance fragt ihre Datenbank; eine
Anwendungsplattform fragt, ob ihre Dienste bereit sind; ein Proxy prüft, ob er lauscht.
## Was die Nutzlast nicht darf
**Sich selbst aktualisieren.** Kein Dienst, der im Hintergrund neue Fassungen holt. Das umginge
Updatekanal, Signaturprüfung und Rücksprung — also alles, wofür dieses Betriebssystem da ist.
**Zustand außerhalb des Bestandsbereichs ablegen.** Alles Dauerhafte gehört nach `/bestand`. Was in
der Wurzel liegt, ist beim nächsten Fassungswechsel weg — das ist Absicht.
**In die andere Wurzel schreiben.** Die gehört dem Fassungswechsel.
## Drei Beispiele
**Eine Anwendungsplattform** (Helm-Bündel, Kubernetes): Die Nutzlast bringt die Laufzeitumgebung und
das Bündel mit; ihr Selbstprüflauf fragt, ob die Freigabe ausgerollt und erreichbar ist.
**Eine Fach-Appliance mit Wirt-Diensten:** Die Nutzlast bringt ihre Dienste als systemd-Units unter
`nutzlast.target`; ihr Selbstprüflauf fragt Datenbank und Dienste ab.
**Ein Proxy:** Ein einziger Dienst, ein dreizeiliger Selbstprüflauf.
**Keines der drei erfordert eine Änderung am Betriebssystem.** Wenn doch, ist der Vertrag falsch
geschnitten — dann wird er geändert und nicht umgangen.
## Was noch offen ist
* **Wie die Nutzlast ins Abbild kommt.** Als Verzeichnis beim Bau oder als signiertes Paket, das
das Bauwerkzeug einliest. Zu entscheiden, bevor das zweite Produkt gebaut wird.
* **Die Signatur.** Nutzlast und Abbild müssen gemeinsam signiert und vor dem Umschalten geprüft
werden.
* **Ob die Statusseite Angaben der Nutzlast anzeigt** — und wenn ja, wie sie sie bekommt, ohne dass
das Betriebssystem sie versteht.