--- type: wiki-page area: admin related: [] --- # Stillstandsprüfung Sucht Dinge, die **leise aufgehört haben zu funktionieren**. Beschlossen in der [Retro 2026-08-09](../../sources/protokolle/retro-2026-08-09.md). ## Warum es sie gibt In neun Augusttagen sind sechs Fehler aufgefallen, die alle dasselbe Merkmal hatten: Sie sahen erfolgreich aus, ohne es zu sein — eine grüne Pipeline, die nie ein Artefakt hochlud; ein veröffentlichtes npm-Paket ohne Inhalt; ein Blueprint, der bei jedem Lauf verworfen wurde, während Flux grün meldete. **Keiner davon wurde durch eine Überwachung gefunden.** Vier durch Zufall beim Suchen nach etwas anderem. Genau diese Lücke schließt das Skript. ## Was geprüft wird Jede Prüfung bildet einen **real passierten** Fall ab. Nichts steht hier auf Vorrat. | Prüfung | Der Fall dahinter | |---|---| | Repo ohne aktiven Push-Mirror | `game-operating` wurde angelegt und nie gespiegelt — auf Gitea existierte es nicht | | Mirror-Drift | MIRROR-01 (management#28): fällt der Mirror aus, liefert Flux still den letzten Stand weiter | | Pipeline mit null Jobs | ThreadNet-Web 203/204, threadnet-call 187 — rot, ohne dass etwas kaputt war | | Erfolgreicher Job ohne Artefakt | `build_embedded` lief seit jeher grün und lud **nichts** hoch | | npm-Paket zu klein | `0.19.2-threadnet.6`: 12,5 KB statt 12,8 MB, ohne `dist/` | | Authentik-Blueprint ≠ successful | `matrix-recovery-flow` wurde tagelang bei jedem Lauf verworfen | Die Projektliste wird **zur Laufzeit aus der Gruppe gelesen**, nicht im Code gepflegt — eine Liste im Quelltext wäre genau die Stelle, an der ein neues Repo jahrelang durchrutscht. (Beim ersten Lauf kamen so zwei Projekte zum Vorschein, die niemand auf dem Schirm hatte.) ## Wie sie läuft Geplanter CI-Job im management-Repo, zusätzlich von Hand über *Run pipeline* auslösbar. Befunde färben die Pipeline **rot** — das ist bei uns die Alarmanlage, nicht ein zusätzlicher Meldeweg (siehe `gitops/CLAUDE.md` zur TURN-Rotation). Lokal: ```bash export GITLAB_TOKEN=$(cat ~/.config/gitlab-lab/token) export GITEA_TOKEN=$(cat ~/.config/gitea-rohana/push-token) # fuer private Spiegel export LAB_CA=.../ci/lab-ca-chain.crt python3 scripts/stillstandspruefung.py ``` ## Zwei Regeln für diese Prüfung **Ein „kann nicht geprüft werden" ist ein Befund, kein Übersprungen.** Real aufgefallen am 2026-08-09: `game-operating` wurde auf Gitea privat gestellt, und die Prüfung übersprang den Mirror-Abgleich klaglos. Ein Repo, das gespiegelt wird, dessen Gegenseite aber unlesbar ist, ist **ungeprüft** — und das darf nicht wie „in Ordnung" aussehen. **Ein Befund wird zum Issue, nicht weggeklickt.** Sonst wird die Prüfung zu dem, was sie sucht: etwas, das läuft, ohne dass jemand hinsieht. ⚠️ **Fehlt ein Zugang, bricht sie ab — sie überspringt sich nicht still.** Eine Prüfung, die sich bei fehlendem Token selbst deaktiviert, ist wertlos: Sie meldet dann jahrelang nichts, und niemand merkt den Unterschied zu „alles in Ordnung". Ausnahme sind die klar benannten optionalen Teile (Authentik), die ihr Fehlen im Ergebnis ausweisen. ## Erweitern Neue Prüfungen kommen dazu, **wenn wieder etwas still ausgefallen ist** — mit einem Docstring, der den konkreten Fall nennt. Prüfungen auf Verdacht erzeugen Rauschen und kosten die Glaubwürdigkeit, die diese hier braucht.