#0099 geschlossen: Upstream-Anschluss vollzogen, v0.6.0 in Produktion

ThreadNet-Web:main auf 8ca03fe, Merge-Commit 88c4e15 mit beiden echten Eltern.
GHSA-wrcp-5v3v-3j6v ist mit dem Versionssprung erledigt.

Drei Anlaeufe: rc.1 erzeugte kein Image (.npmrc fehlte im Docker-Kontext, unter
pnpm 11 fatal), rc.2 ging live und brach die Raumliste, rc.3 bestand die Abnahme.

ADR-0022 um zwei Korrekturen ergaenzt, die erst die Ausfuehrung gezeigt hat:

Die stille Klasse verschwindet nicht ganz, sie dreht sich um. Der Merge meldet,
wenn Upstream eine Datei verschiebt - das hat gehalten. Er meldet nicht, wenn
beide Seiten die Aufloesung ueberleben und nur eine noch Sinn ergibt. Genau das
brach rc.2.

Und: ein gruener Build war nie eine Abnahme. Der web-Job baut nur, webpack
wirft Typen weg. tsc meldete den Fehler durchgehend, gefragt hatte ihn niemand.
Seit 8ca03fe fuehrt docker_web den Job typecheck als needs.

Daraus die stehende Regel fuer kuenftige Merges: nach der Konfliktaufloesung auf
ueberlebende Reste pruefen, nicht nur auf verlorene Zeilen. Wo Zeichenketten
statt Typen im Spiel sind, braucht es einen Abgleich gegen die Registry - fuer
Einstellungen einmalig gefahren, 135 abgefragte gegen 152 registrierte.
This commit is contained in:
Thore Cimbal
2026-08-19 12:00:00 +00:00
parent bae97e6ca6
commit 6652125ed3
3 changed files with 123 additions and 4 deletions
@@ -73,3 +73,31 @@ und ohne diese Messung wäre der Merge auf eine erfundene Grundlage gelaufen.
empfangen) ist der Merge nicht abgenommen.
- Schritt 4 aus #0099 — ein Verfahren zum Auftragen der Patches — wird damit
gegenstandslos.
## Nachtrag 2026-08-19: ausgeführt, und was die Ausführung korrigiert
Vollzogen. `ThreadNet-Web:main` steht auf `8ca03fe`, der Merge-Commit `88c4e15` trägt
beide echten Eltern. Produktion läuft auf `v0.6.0`. Zwei Annahmen dieser ADR haben sich
in der Praxis verschoben:
**Die stille Klasse verschwindet nicht ganz — sie dreht sich um.** Die Entscheidung
begründet sich damit, dass Git künftig meldet, wenn Upstream eine Datei verschiebt, die
wir angefasst haben. Das hat gehalten (`RoomListItemWrapper`-Umbenennung wurde als
Konflikt gemeldet). Was ein Drei-Wege-Merge **nicht** meldet, ist der umgekehrte Fall:
Beide Seiten überleben die Auflösung, aber nur eine ergibt noch Sinn. Genau das brach
`v0.6.0-rc.2` in Produktion — eine `getValue`-Zeile auf einen von Upstream entfernten
Einstellungsschlüssel, die niemand mehr liest und die trotzdem wirft.
**Ein grüner Build ist keine Abnahme, und war nie eine.** Diese ADR sagt richtig
„Abnahme ist kein Build, sondern ein Funktionstest" — gemeint war der ClamAV-Test. Der
rc.2-Vorfall zeigt die Lücke davor: Der CI-Job `web` **baut** nur, webpack entfernt
Typen ohne sie zu prüfen. `tsc` meldete den Fehler durchgehend, gefragt hatte ihn
niemand. Seit `8ca03fe` führt `docker_web` den Job `typecheck` als `needs`; kein Image
entsteht mehr ohne bestandene Typprüfung.
**Daraus die stehende Regel für künftige Upstream-Merges:** Nach der Konfliktauflösung
gehört eine Prüfung auf *überlebende* Reste — nicht nur auf verlorene Zeilen. Der
billigste Hebel ist die Typprüfung; sie fand beide Reste sofort. Wo Zeichenketten statt
Typen im Spiel sind (Einstellungsschlüssel, Feature-Namen, Übersetzungs-IDs), reicht sie
nicht, und es braucht einen Abgleich gegen die jeweilige Registry — für Einstellungen
wurde er einmalig gefahren: 135 abgefragte gegen 152 registrierte.