src/lib/speicher/fehler.ts übersetzt die bekannten Fälle:
Fehler
Was jetzt dasteht
NoSuchBucket
Ablagebereich fehlt, Verweis auf Schritt 6
NotImplemented (SSE)
Speicher kann die Verschlüsselung nicht, S3_SSE herausnehmen
AccessDenied u. Ä.
Zugangsdaten abgelehnt, Namen der Variablen genannt
Netzfehler
Speicher antwortet nicht, Eingaben gehen nicht verloren
Durchgereicht wird nichts. Fremde Fehlertexte tragen Hostnamen, Eimernamen und Anfragekennungen — das gehört ins Log, nicht auf den Bildschirm. Ein Test prüft ausdrücklich, dass keines davon in der Meldung landet. Unbekannte Fehler bleiben bei der allgemeinen Meldung.
Bereitschaftsprüfung
Schreibt eine winzige Datei, liest sie zurück, räumt sie weg — beantwortet damit erreichbar, Ablagebereich vorhanden und Schreibrecht auf einmal. Ergebnis in /api/gesundheit und als Zeile im Log.
Nicht über instrumentation.ts. Der naheliegende Starthaken wird auch für die Edge-Laufzeit gebündelt, und über die Treiber kommt node:path in ein Bündel, in dem es das nicht gibt — der Build schlägt fehl. Das war ausprobiert, nicht vermutet. Die Prüfung hängt deshalb an der Gesundheitsabfrage, die der Healthcheck ab 40 s nach dem Start ohnehin alle 30 s aufruft. Eine Schonfrist von fünf Minuten verhindert, dass dabei ständig Probedateien entstehen; gemeldet wird nur bei einer Änderung.
Ein gestörter Speicher führt nicht zu 503. Sonst startete der Healthcheck den Behälter neu und machte die ganze Akte unerreichbar — wegen eines Teils, den ein Neustart nicht repariert. Fristen, Buchungen und Stammdaten funktionieren ohne Ablage weiter.
Geprüft
760 Unit-Tests, tsc, Lint und ein vollständiger Produktions-Build. Gegen drei Mutationen: NotImplemented ohne Textprüfung · alte Reihenfolge bei der Codeermittlung · Erklärung nicht benutzt — jede wird rot.
Beim Testschreiben fiel ein eigener Fehler auf: Die Codeermittlung las name vor code, und bei einem Node-Netzwerkfehler steht dort 'Error' — der echte Code wäre nie erreicht worden.
Closes #44
## Verständliche Meldungen
`src/lib/speicher/fehler.ts` übersetzt die bekannten Fälle:
| Fehler | Was jetzt dasteht |
|---|---|
| `NoSuchBucket` | Ablagebereich fehlt, Verweis auf Schritt 6 |
| `NotImplemented` (SSE) | Speicher kann die Verschlüsselung nicht, `S3_SSE` herausnehmen |
| `AccessDenied` u. Ä. | Zugangsdaten abgelehnt, Namen der Variablen genannt |
| Netzfehler | Speicher antwortet nicht, Eingaben gehen nicht verloren |
**Durchgereicht wird nichts.** Fremde Fehlertexte tragen Hostnamen, Eimernamen und Anfragekennungen — das gehört ins Log, nicht auf den Bildschirm. Ein Test prüft ausdrücklich, dass keines davon in der Meldung landet. Unbekannte Fehler bleiben bei der allgemeinen Meldung.
## Bereitschaftsprüfung
Schreibt eine winzige Datei, liest sie zurück, räumt sie weg — beantwortet damit erreichbar, Ablagebereich vorhanden und Schreibrecht auf einmal. Ergebnis in `/api/gesundheit` und als Zeile im Log.
```json
{"status":"bereit","version":"1.11.1","speicher":{"status":"bereit","treiber":"s3"}}
```
## Zwei Entscheidungen, die Erklärung brauchen
**Nicht über `instrumentation.ts`.** Der naheliegende Starthaken wird auch für die Edge-Laufzeit gebündelt, und über die Treiber kommt `node:path` in ein Bündel, in dem es das nicht gibt — der Build schlägt fehl. Das war ausprobiert, nicht vermutet. Die Prüfung hängt deshalb an der Gesundheitsabfrage, die der Healthcheck ab 40 s nach dem Start ohnehin alle 30 s aufruft. Eine Schonfrist von fünf Minuten verhindert, dass dabei ständig Probedateien entstehen; gemeldet wird nur bei einer Änderung.
**Ein gestörter Speicher führt nicht zu 503.** Sonst startete der Healthcheck den Behälter neu und machte die ganze Akte unerreichbar — wegen eines Teils, den ein Neustart nicht repariert. Fristen, Buchungen und Stammdaten funktionieren ohne Ablage weiter.
## Geprüft
**760 Unit-Tests**, `tsc`, Lint und ein vollständiger Produktions-Build. Gegen drei Mutationen: `NotImplemented` ohne Textprüfung · alte Reihenfolge bei der Codeermittlung · Erklärung nicht benutzt — jede wird rot.
Beim Testschreiben fiel ein eigener Fehler auf: Die Codeermittlung las `name` vor `code`, und bei einem Node-Netzwerkfehler steht dort `'Error'` — der echte Code wäre nie erreicht worden.
Beim Ablegen eines Schreibens stand in der Oberflaeche "Das Schreiben
konnte nicht abgelegt werden." Bei einer Fehlersuche am 31.08.2026 lagen
hinter genau diesem Satz nacheinander DREI verschiedene Ursachen: ein
fehlender Ablagebereich, ein Endpunkt, der auf einen fremden Anbieter
zeigte, und eine Verschluesselung, die der Speicher nicht anbietet. Ohne
Zugang zum Serverlog waere die Suche aussichtslos gewesen.
Jetzt uebersetzt src/lib/speicher/fehler.ts die bekannten Faelle in
Saetze, die sagen, was zu tun ist - fehlender Ablagebereich mit Verweis
auf Schritt 6 der Installation, abgelehnte Zugangsdaten mit den Namen der
beiden Variablen, nicht unterstuetzte Verschluesselung mit dem Hinweis auf
S3_SSE, und nicht erreichbarer Speicher mit der Zusicherung, dass die
Eingaben bleiben.
Durchgereicht wird dabei nichts. Fremde Fehlertexte tragen Hostnamen,
Eimernamen und Anfragekennungen - das gehoert ins Log, nicht auf den
Bildschirm eines Betreuers. Uebersetzt werden nur die bekannten Faelle;
alles andere bleibt bei der allgemeinen Meldung.
Dazu eine Bereitschaftspruefung: Sie schreibt eine winzige Datei, liest
sie zurueck und raeumt sie weg - und beantwortet damit erreichbar,
Ablagebereich vorhanden und Schreibrecht auf einmal. Das Ergebnis steht in
/api/gesundheit und als Zeile im Log.
## Warum nicht instrumentation.ts
Der naheliegende Ort waere der Starthaken von Next. Der wird aber auch
fuer die Edge-Laufzeit gebuendelt, und ueber die Treiber kaeme node:path
in ein Buendel, in dem es das nicht gibt - der Build schlaegt fehl. Das
war ausprobiert, nicht vermutet.
Die Pruefung haengt deshalb an der Gesundheitsabfrage. Der Healthcheck
ruft sie ab 40 Sekunden nach dem Start alle 30 Sekunden auf; die erste
Pruefung passiert also von selbst kurz nach dem Hochfahren. Eine
Schonfrist von fuenf Minuten verhindert, dass dabei alle 30 Sekunden eine
Probedatei in den Objektspeicher geht, und gemeldet wird nur bei einer
Aenderung.
Ein gestoerter Speicher fuehrt ausdruecklich NICHT zu 503. Sonst startete
der Healthcheck den Behaelter neu und machte die ganze Akte unerreichbar -
wegen eines Teils, den ein Neustart nicht repariert.
Gegen drei Mutationen geprueft: NotImplemented ohne Textpruefung, alte
Reihenfolge bei der Codeermittlung, Erklaerung nicht benutzt - jede wird
rot.
Refs #44
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Closes #44
Verständliche Meldungen
src/lib/speicher/fehler.tsübersetzt die bekannten Fälle:NoSuchBucketNotImplemented(SSE)S3_SSEherausnehmenAccessDeniedu. Ä.Durchgereicht wird nichts. Fremde Fehlertexte tragen Hostnamen, Eimernamen und Anfragekennungen — das gehört ins Log, nicht auf den Bildschirm. Ein Test prüft ausdrücklich, dass keines davon in der Meldung landet. Unbekannte Fehler bleiben bei der allgemeinen Meldung.
Bereitschaftsprüfung
Schreibt eine winzige Datei, liest sie zurück, räumt sie weg — beantwortet damit erreichbar, Ablagebereich vorhanden und Schreibrecht auf einmal. Ergebnis in
/api/gesundheitund als Zeile im Log.Zwei Entscheidungen, die Erklärung brauchen
Nicht über
instrumentation.ts. Der naheliegende Starthaken wird auch für die Edge-Laufzeit gebündelt, und über die Treiber kommtnode:pathin ein Bündel, in dem es das nicht gibt — der Build schlägt fehl. Das war ausprobiert, nicht vermutet. Die Prüfung hängt deshalb an der Gesundheitsabfrage, die der Healthcheck ab 40 s nach dem Start ohnehin alle 30 s aufruft. Eine Schonfrist von fünf Minuten verhindert, dass dabei ständig Probedateien entstehen; gemeldet wird nur bei einer Änderung.Ein gestörter Speicher führt nicht zu 503. Sonst startete der Healthcheck den Behälter neu und machte die ganze Akte unerreichbar — wegen eines Teils, den ein Neustart nicht repariert. Fristen, Buchungen und Stammdaten funktionieren ohne Ablage weiter.
Geprüft
760 Unit-Tests,
tsc, Lint und ein vollständiger Produktions-Build. Gegen drei Mutationen:NotImplementedohne Textprüfung · alte Reihenfolge bei der Codeermittlung · Erklärung nicht benutzt — jede wird rot.Beim Testschreiben fiel ein eigener Fehler auf: Die Codeermittlung las
namevorcode, und bei einem Node-Netzwerkfehler steht dort'Error'— der echte Code wäre nie erreicht worden.