Files
management/docs/aar/2026-08-09-refinement-und-betrieb.md
T
Thore CimbalandClaude Opus 5 6fb3cb7fed docs: relevance pass over the backlog - close #0055, retire four stale issues
#0055 is done: ThreadNet-Web be323ed checks in an .npmrc binding @sorb to rohana.
The bump that mattered was not the file but what upstream's .gitignore does with
it - it ignores /.npmrc, so the naive fix would have stayed local while CI kept
resolving against npmjs. Measured in an isolated tree: without the file pnpm goes
to npmjs and fails, with it the scope resolves to rohana at the integrity hash
the lockfile already carries, and with rohana unreachable the install fails
instead of falling back. threadnet-call only publishes and already sets the scope
in its own CI; gitops never touches it. ThreadNet-Web was the only consumer.

Four issues no longer describe reality, each verified rather than assumed:

- #0091 (gitops#61) was fixed when it was written - on_conflict: fail shipped in
  ef04d86 and the MAS pod has run that config since 2026-08-11T14:08:41Z. Its one
  deliberate remainder became #0043, which is closed and verified live.
- #0079 (gitops#46) asked for the Gitea migration and a central view. The
  migration ran; the central view was decided the other way round - repo canonical,
  GitLab mirrored (ADR-0012/0019) - which also answers the reachability trade-off
  it left open, and better than its three options did.
- #0075 (gitops#40) is rejected, not done: it wanted new issues to appear in the
  Gitea kanban automatically. Issues no longer live in Gitea and the board is
  script-written. Nothing was accomplished; the question dissolved.
- #0098 is a rollout record whose only remainder, the macOS build, is #0022.

Three AARs move to harvested - every open item in them is tracked as an issue.

Checked and still accurate, so left alone: the wiki branch still exists on both
remotes (#0019), docs/TASKS.md and oldwiki/ are still there (#0085),
element-web-docs still names live resources (#0086), res/themes/element persists
(#0100), only WIKI_CANONIZE_TOKEN is set so TURN rotation still lacks its token
(#0084), gameserver still has zero push mirrors (#0032), the broken .6 package is
still published (#0101), and options.ts still builds simulcast layers regardless
of codec, which is what blocks VP9 (#0057).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 12:00:00 +00:00

108 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
type: aar
status: harvested
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