Gate 4, slice 3: verfahren/, hosts/, vision/ and shared/ moved via git mv - six AARs to docs/aar/ (four harvested by the 2026-08-09 retro, two open), procedures and host knowledge to docs/wiki/ (admin, deployment, architecture, new area vision), the retro protocol and the commit mapping table to docs/sources/ (protokolle/, migration/). New: the wiki index linking every page, and the mirror-topology page carrying the why-two-places reasoning verbatim from the old CLAUDE.md (F-013 preserved). All moved-path references retargeted; the link checker drove the sweep to zero. pruefe_prosa.py added (pattern C+D): SHA citations resolve via repo, mapping table, optional component clones or a curated exemption list (documented dead Gitea-force-push commits, a vendor-repo tag, an Authentik uid that is hex but no git SHA, the external neckbeard reference); wiki task prose without an issue reference errors, with a visible pragma for deliberate checklists; the dead-tracker denylist now covers every mirrored repo's retired Gitea tracker (F-005) - two links re-verified against live GitLab titles and retargeted, five defused into honest historical citations. Verified: validate 0/0, gen_status --check current, drift 0. Demo on the pre-migration state fires 6 findings (3 orphaned SHAs, 3 task blocks); on the current tree exactly the 3 F-004 task blocks remain - they turn green in slice 4 when the issues exist, which is why pruefe_prosa joins CI only then. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
108 lines
6.6 KiB
Markdown
108 lines
6.6 KiB
Markdown
---
|
||
type: aar
|
||
status: open
|
||
date: 2026-08-09
|
||
related: []
|
||
---
|
||
|
||
# AAR — Refinement, Betrieb voranbringen, Git-Historie anonymisiert
|
||
|
||
**Datum:** 2026-08-09 · **Host/Stack:** git.lab, Gitea, K3s-Cluster (Authentik,
|
||
Synapse, Element Web) · **Auftrag:** Backlog-Refinement, danach gezielt den
|
||
Betrieb von ThreadNet voranbringen statt weiter Befunde anzuhäufen
|
||
|
||
## 1. Ergebnis
|
||
|
||
**Live und verifiziert:**
|
||
- MFA-Pflicht für die Gruppe `authentik Admins` — Stage, Bindung und
|
||
Gruppenzuordnung in der Datenbank geprüft, Standard-Login für alle anderen
|
||
unverändert
|
||
- `matrix-recovery-flow`-Blueprint läuft erfolgreich — `SELECT … WHERE status
|
||
<> 'successful'` liefert 0 Zeilen
|
||
- Web-Client zeigt einen Fehlerbericht-Weg, der **lokal** bleibt
|
||
(`bug_report_endpoint_url: "local"`) — vorher unbemerkt an element.io
|
||
- 251 Commits über vier Repos auf 12:00-UTC-Zeitstempel umgeschrieben, Force-
|
||
gepusht, Mirrors und Flux verifiziert synchron
|
||
- Stillstandsprüfung läuft täglich per Zeitplan, fand beim ersten Lauf zwei
|
||
vorher unbekannte Repos ohne Push-Mirror
|
||
- `game-operating` gespiegelt und secret-frei verifiziert (Coolify-
|
||
Magievariablen, keine echten Werte)
|
||
- Call-Widget stempelt sich mit Paketversion + Commit statt „dev"
|
||
- `@concierge`-Bot für Gäste-Einladungen gebaut und deployt
|
||
|
||
**Bewusst nicht live:**
|
||
- Desktop-Client hat den lokalen Fehlerbericht-Weg erst mit dem nächsten Build
|
||
(Config geändert, kein Rebuild ausgelöst)
|
||
- `@concierge` läuft nicht — wartet auf Matrix-Konto, Authentik-Token,
|
||
Einladungsraum, zwei Gruppen, Secret (alles Zugangsdaten, sorbs Seite)
|
||
- Authentik-Teil der Stillstandsprüfung übersprungen ohne Token (Fehlen wird
|
||
ausgewiesen, nicht verschwiegen)
|
||
- `gameserver` weiterhin ohne Mirror — zwei Repos gleichen Namens mit
|
||
unterschiedlichem Stand, Klärung vor jedem Eingriff nötig
|
||
|
||
## 2. Befunde
|
||
|
||
| # | Befund | Schwere | Status |
|
||
|---|---|---|---|
|
||
| 1 | `matrix-recovery-flow`-Blueprint scheiterte seit Tagen bei jedem Lauf, während Flux grün meldete | HIGH | behoben |
|
||
| 2 | Ursache des Blueprint-Fehlers war zweifach verdeckt: `!KeyOf` löst beim Fehlschlag gegen ein leeres Blueprint auf und wirft dieselbe Ausnahme erneut — die echte Meldung ging im eigenen Logging unter | HIGH | behoben, `!Find` statt `!KeyOf` |
|
||
| 3 | Web-Client sendete Fehlerberichte an `rageshakes.element.io` — die Desktop-Bereinigung vom 2026-08-01 hatte den Web-Build nie erreicht, weil der beim Bauen Elements eigene `develop/config.json` kopiert | HIGH | behoben, `"local"` gesetzt |
|
||
| 4 | `game-operating` und `gameserver` ohne Push-Mirror; bei `gameserver` liegt auf Gitea ein anderer Stand als auf git.lab | MEDIUM | `game-operating` behoben, `gameserver` offen (management#32) |
|
||
| 5 | Nach dem Privat-Stellen von `game-operating` auf Gitea übersprang die Stillstandsprüfung den Mirror-Abgleich klaglos, statt es als Befund zu werten | MEDIUM | behoben |
|
||
| 6 | Header-Hilfsfunktion baute `Authorization: token: <wert>` (doppelter Doppelpunkt) — still ungültig, hätte beim Eintragen des Authentik-Tokens wie ein falscher Token ausgesehen | MEDIUM | behoben, vor dem ersten echten Einsatz gefunden |
|
||
| 7 | Gitops-Leitfaden 04 nannte 7 Themes mit teils erfundenen Namen (`Gruvbox Dark`, `Wal`); tatsächlich 17 | LOW | behoben |
|
||
| 8 | threadnet-call-Doku beschrieb einen manuellen npm-Publish, der seit 2026-08-06 automatisiert läuft | LOW | behoben |
|
||
| 9 | `overmind.md` nannte „sechs gespiegelte Repos" — nach dem Mirror für `game-operating` sind es sieben | LOW | behoben |
|
||
| 10 | Neu angelegter Deployment-Guide (`@concierge`) fehlte im eigenen Index | LOW | behoben |
|
||
| 11 | Tag-Push (Force, für die Historien-Anonymisierung) löste in ThreadNet-Web drei Release-Pipelines neu aus; nur weil die geschützten Registry-Variablen im Zeitfenster fehlten, wurde `v0.4.0` nicht mit heutigem Code überschrieben | HIGH | Sperre nachgezogen (ThreadNet-Web#14), Ursache war Zufall, nicht Schutz |
|
||
|
||
## 3. Verdachtsfälle mit Entwarnung
|
||
|
||
- **`game-operating` öffentlich auf Gitea** — Secret-Scan über alle fünf
|
||
öffentlich gewordenen Dateien: kein echter Credential-Wert, ausschließlich
|
||
Coolify-Magievariablen und ein leeres `api_key`-Feld. Erste Prüfung lieferte
|
||
fälschlich „sauber", weil der Rohpfad falsch war (5×11-Byte-„Not found"-
|
||
Antworten) — erst nach Gegenprobe der Dateigrößen als Fehlmessung erkannt und
|
||
mit korrektem Pfad wiederholt.
|
||
- **Meine erste Diagnose zu #60** („Passwort-Wiederherstellung vermutlich tot")
|
||
— falsch. Der Flow hatte durchgehend alle sechs Bindungen, der Blueprint-
|
||
Fehler betraf nur künftige Blueprint-Läufe, nicht die längst angelegten
|
||
Objekte.
|
||
|
||
## 4. Was die Befunde ermöglicht hat
|
||
|
||
- **Direktes Auslesen der Authentik-Datenbank statt Vertrauen auf den
|
||
Flux-Status.** Blueprint-Fehler #1/#2 waren nur so sichtbar — Flux, die
|
||
ConfigMap und der Cluster-Zustand insgesamt meldeten durchgehend grün.
|
||
- **`ak apply_blueprint` von Hand** hat den durch das eigene Logging
|
||
verdeckten Fehler #2 erst zugänglich gemacht — der reguläre Weg (Worker-Log)
|
||
zeigte nur die Folgeausnahme.
|
||
- **Den Ist-Zustand vor einer Änderung auslesen statt der Issue-Beschreibung
|
||
zu glauben** hat Befund #3 aufgedeckt — die Annahme im Issue betraf nur den
|
||
Desktop-Client, `config.json` auf dem Web-Server sagte etwas anderes.
|
||
- **Die Stillstandsprüfung selbst** (aus der gestrigen Retro gebaut) hat
|
||
Befund #4 im ersten Lauf gefunden — eine dynamische Projektliste statt einer
|
||
im Code gepflegten hat zwei Repos zutage gebracht, die niemand auf dem
|
||
Schirm hatte.
|
||
- **Content-Length-Gegenprobe nach dem Secret-Scan** hat die eigene
|
||
Fehlmessung beim `game-operating`-Check aufgedeckt, bevor sie als „sauber"
|
||
ins Protokoll ging.
|
||
- **Baumvergleich (Tree-Hash) vor und nach jedem Rewrite-Schritt** — 251 von
|
||
251 Paaren über Tree *und* Commit-Nachricht verifiziert, keine Annahme.
|
||
|
||
## 5. Offen
|
||
|
||
- **`@concierge` aktivieren** — fünf Zugangsdaten-Schritte, Checkliste in
|
||
gitops#48
|
||
- **`gameserver`-Mirror** — Standklärung nötig, management#32
|
||
- **Stillstandsprüfung Authentik-Teil** — `AUTHENTIK_URL`/`AUTHENTIK_TOKEN`,
|
||
management#31, bewusst aufgeschoben (sorb, 2026-08-09)
|
||
- **Rageshake vs. Zammad** — durch den lokalen Fix entschärft, aber nicht
|
||
entschieden, ThreadNet-Web#9
|
||
- **`report_event.admin_message_md`** nicht gesetzt — wer Inhalte meldet,
|
||
sieht keinen Kontaktweg; braucht nur eine Angabe (welcher Raum/Kontakt) von
|
||
sorb, dann eine Zeile Config
|
||
- **Desktop-Build** für den lokalen Fehlerbericht-Weg noch ausständig
|
||
- **ADR-0009** (Commit-Konventionen/Anonymisierung) nachträglich verfasst —
|
||
Lehre aus der Retro, in `decisions/` dokumentiert
|