From 755aa3f2b531fc8c6c81456163bcd67dd43582b5 Mon Sep 17 00:00:00 2001 From: Thore Cimbal Date: Sun, 16 Aug 2026 12:00:00 +0000 Subject: [PATCH] =?UTF-8?q?docs(issues):=20#0054=20=E2=80=94=20v0.5.0=20un?= =?UTF-8?q?mute=20incident,=20fixed=20and=20accepted=20in=20v0.5.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The first production image carrying the filter broke unmuting for everyone. Records both causes (missing AudioContext on the on-path, a stray processor: undefined leaking into getUserMedia constraints on the off-path), the fix with its deliberately-red-first regression tests, the passed two-person acceptance call, and the standing lesson: for changes in the microphone path, a real-call acceptance is a rollout precondition, not an afterthought. The filter stays gated off until the webAudioMix decision - that follow-up is what makes ADR-0018 implementable or refutes it. Co-Authored-By: Claude Opus 4.8 --- ...ki-geraeuschunterdrueckung-element-call.md | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/docs/issues/0054-ki-geraeuschunterdrueckung-element-call.md b/docs/issues/0054-ki-geraeuschunterdrueckung-element-call.md index c4cb91d..e76a7ed 100644 --- a/docs/issues/0054-ki-geraeuschunterdrueckung-element-call.md +++ b/docs/issues/0054-ki-geraeuschunterdrueckung-element-call.md @@ -252,3 +252,47 @@ relative Aufschlag ist also +60 %, nicht das Zwölffache. 2. **Danach ThreadNet-Web:** Abhängigkeit auf `0.19.2-threadnet.8` anheben, bauen, Image in die Registry, Tag im gitops-Repo anheben. 3. **Abnahme im echten Call zu zweit** steht weiterhin aus. + +## Vorfall 2026-08-16: v0.5.0 brach das Entmuten — behoben in v0.5.1, Filter stillgelegt + +⚠️ **Das erste Produktivimage mit dem Filter (v0.5.0, embedded `.8`) hat das Entmuten fuer +ALLE gebrochen** — nicht nur fuer Nutzer, die den Filter eingeschaltet hatten. Rueckrollung +auf v0.4.3 stellte den Dienst wieder her; die Ursache wurde ueber ein von sorb angefordertes +Diagnosefenster (v0.5.0 gezielt wieder ausgerollt, Browser-Konsole gesichert) festgenagelt. + +**Zwei getrennte Fehler derselben Aenderung:** + +1. **Filter an:** `LocalAudioTrack.setProcessor()` verlangt einen AudioContext auf dem Track. + Den gibt es nur mit `webAudioMix` beim Raum-Bau — und das steht in Element Call als + unerprobtes Upstream-TODO auskommentiert. Konsole: *"Audio context needs to be set on + LocalAudioTrack in order to enable processors"*; im SFU-Log erschien nie ein Track-Publish. + **ADR-0018 hat die Integrationstiefe unterschaetzt:** der Prototyp verdrahtete seinen + Audio-Graphen selbst und hat LiveKits Prozessor-Anbindung nie mitgeprueft. +2. **Filter aus:** Der Optionen-Bau setzte `processor: undefined` und schrieb + `noiseSuppression` um. LiveKit kopiert **jeden** Schluessel der `audioCaptureDefaults` bis + in die getUserMedia-Constraints durch, `undefined` eingeschlossen — in Safari brach damit + das Entmuten trotz publiziertem Track. In Chromium unauffaellig; die fruehe Entlastung + dieses Verdachts war ein Browser-uebergreifender Fehlschluss aus einem Chromium-Test. + +**Fix (threadnet-call `dcc8643`, embedded `.9`, ThreadNet-Web v0.5.1):** +- Aus-Pfad als bedingtes Spread — identisch mit Upstream, kein `processor`-Schluessel. +- Feature-Tor `AI_NOISE_SUPPRESSION_AVAILABLE = false`: neutralisiert auch Clients mit noch + aktivierter Einstellung im localStorage (real existierender Fall), UI dahinter versteckt. +- Zwei Regressionstests, **auf dem alten Stand nachweislich rot** — erst dadurch beweisen sie + etwas. + +**Abnahme bestanden 2026-08-16:** Call sorb+frank auf v0.5.1, Muten/Entmuten beidseitig, +sorbs Client mit unveraendertem localStorage. Konsolen-Fehlerbild identisch mit dem +funktionierenden v0.4.3-Stand (bekanntes Rauschen, als eigene Beobachtung notiert: +einmaliger 401 auf ein m.call-State-Event, einmaliger LiveKit-Connect-Fehlversuch mit +erfolgreichem Folgeversuch). + +**Lehre (Wiederholung des Sitzungsmusters):** Die Auslieferungskette war penibel verifiziert +— npm, node_modules, webpack, CI-Artefakt, Container, ausgelieferte URL. Geprueft wurde, ob +die *Dateien ankommen*, nicht, ob die *Funktion im Zielsystem tut*. Der Call-Test zu zweit +stand als „danach" auf der Liste statt als Voraussetzung. Fuer Aenderungen im Mikrofon-Pfad +gilt ab jetzt: **Abnahme im echten Call ist Rollout-Voraussetzung, nicht Nacharbeit.** + +**Offen (Folge-Entscheidung, nicht Teil dieses Issues):** Der Filter bleibt stillgelegt, bis +`webAudioMix` entschieden ist — Upstream-TODO mit Nebenwirkungen auf Echo-Unterdrueckung und +Ausgabegeraete-Wahl. Erst diese Entscheidung macht ADR-0018 umsetzbar oder widerlegt ihn.