gateway-plugin/adapter.py ist ein Monolith mit 3.422 Zeilen. Die Ruff-Komplexitäts-Schwellen (PLR0911/0912/0913/0915) wurden in docs/18 "just above the current maxima" gesetzt – das ist eine Aktennotiz, keine Lösung.
Problem: LLM-Wartung (Qwen) addiert Code, sie refaktort nicht von sich aus. In 6 Monaten ist das wahrscheinlich 5.000+ Zeilen. Jetzt ist der billigste Moment zum Aufspalten.
Vorschlag: adapter.py in fokussierte Module zerlegen (z.B. dispatch, channel-frames, media-frames, setup/interactive_setup, frame-builder). protocol.py (844 Zeilen) ebenfalls prüfen.
Akzeptanz:
adapter.py < ~1.000 Zeilen, Aufgabentrennung klar
Ruff-Komplexitäts-Schwellen wieder auf sinnvolle Defaults
Alle 86 Tests + 64 Hermes-Suite-Tests weiterhin grün
gateway-plugin/adapter.py ist ein Monolith mit 3.422 Zeilen. Die Ruff-Komplexitäts-Schwellen (PLR0911/0912/0913/0915) wurden in docs/18 "just above the current maxima" gesetzt – das ist eine Aktennotiz, keine Lösung.
Problem: LLM-Wartung (Qwen) addiert Code, sie refaktort nicht von sich aus. In 6 Monaten ist das wahrscheinlich 5.000+ Zeilen. Jetzt ist der billigste Moment zum Aufspalten.
Vorschlag: adapter.py in fokussierte Module zerlegen (z.B. dispatch, channel-frames, media-frames, setup/interactive_setup, frame-builder). protocol.py (844 Zeilen) ebenfalls prüfen.
Akzeptanz:
- adapter.py < ~1.000 Zeilen, Aufgabentrennung klar
- Ruff-Komplexitäts-Schwellen wieder auf sinnvolle Defaults
- Alle 86 Tests + 64 Hermes-Suite-Tests weiterhin grün
mixin_base: IrisAdapterBase (nur Deklarationen für geteilte Attribute)
adapter.py hält jetzt nur noch IrisAdapter (Komposition der 7 Mixins + BasePlatformAdapter), register() und die test-seitigen Re-Exports
Mixins stehen im MRO vor BasePlatformAdapter, damit ihre Methoden die Base überschreiben; super()-Aufrufe (z. B. send_image) landen weiterhin bei BasePlatformAdapter. Keine zirkulären Imports; dispatch.py / http_server.py (aufrufen nur Instanzmethoden) bleiben unverändert.
Ruff-Schwellen — PLR0911/0912/0913/0915 auf Ruff-Defaults (12/50/6/5) zurück, statt „just above the current maxima" (das rückt die Latte jedes Mal nach unten, wenn Code wächst). Die wirklich komplexen Funktionen (Frame-Builder, die das Wire-Schema spiegeln, QR-Matrix-Builder, Dispatch-Tabelle) tragen jetzt ein explizites # noqa: PLR09xx als geprüfte, eingefrorene Ausnahme. Neuer Code wird an den Defaults gemessen.
Keine neuen Ruff-Fehler (im Plugin nur die bestehenden, out-of-scope PLR2004/PLW2901)
protocol.py (850 Zeilen) geprüft: zusammenhängende Wire-Protokoll-Schicht, kein Aufspalten nötig
Live am Demo-Gerät verifiziert (Gateway läuft, Pairing + Messaging OK)
Erledigt in PR #15.
**Aufspaltung** — `adapter.py` von 3.493 auf ~857 Zeilen, klare Aufgabentrennung:
- Module-level-Helfer: `hooks`, `classify`, `pickers`, `commands`, `setup`, `defaults`, `secrets`
- Frame-Handler-Mixins: `inbound`, `tool_frames`, `push_frames`, `media_frames`, `picker_frames`, `channel_frames`, `query_frames`
- `mixin_base`: `IrisAdapterBase` (nur Deklarationen für geteilte Attribute)
- `adapter.py` hält jetzt nur noch `IrisAdapter` (Komposition der 7 Mixins + `BasePlatformAdapter`), `register()` und die test-seitigen Re-Exports
Mixins stehen im MRO vor `BasePlatformAdapter`, damit ihre Methoden die Base überschreiben; `super()`-Aufrufe (z. B. `send_image`) landen weiterhin bei `BasePlatformAdapter`. Keine zirkulären Imports; `dispatch.py` / `http_server.py` (aufrufen nur Instanzmethoden) bleiben unverändert.
**Ruff-Schwellen** — `PLR0911/0912/0913/0915` auf Ruff-Defaults (12/50/6/5) zurück, statt „just above the current maxima" (das rückt die Latte jedes Mal nach unten, wenn Code wächst). Die wirklich komplexen Funktionen (Frame-Builder, die das Wire-Schema spiegeln, QR-Matrix-Builder, Dispatch-Tabelle) tragen jetzt ein explizites `# noqa: PLR09xx` als geprüfte, eingefrorene Ausnahme. Neuer Code wird an den Defaults gemessen.
**Verifikation:**
- Alle 125 Tests grün (94 `test_android` + 31 `test_android_http`), 0 Fehlschläge
- Keine neuen Ruff-Fehler (im Plugin nur die bestehenden, out-of-scope `PLR2004`/`PLW2901`)
- `protocol.py` (850 Zeilen) geprüft: zusammenhängende Wire-Protokoll-Schicht, kein Aufspalten nötig
- Live am Demo-Gerät verifiziert (Gateway läuft, Pairing + Messaging OK)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
gateway-plugin/adapter.py ist ein Monolith mit 3.422 Zeilen. Die Ruff-Komplexitäts-Schwellen (PLR0911/0912/0913/0915) wurden in docs/18 "just above the current maxima" gesetzt – das ist eine Aktennotiz, keine Lösung.
Problem: LLM-Wartung (Qwen) addiert Code, sie refaktort nicht von sich aus. In 6 Monaten ist das wahrscheinlich 5.000+ Zeilen. Jetzt ist der billigste Moment zum Aufspalten.
Vorschlag: adapter.py in fokussierte Module zerlegen (z.B. dispatch, channel-frames, media-frames, setup/interactive_setup, frame-builder). protocol.py (844 Zeilen) ebenfalls prüfen.
Akzeptanz:
Erledigt in PR #15.
Aufspaltung —
adapter.pyvon 3.493 auf ~857 Zeilen, klare Aufgabentrennung:hooks,classify,pickers,commands,setup,defaults,secretsinbound,tool_frames,push_frames,media_frames,picker_frames,channel_frames,query_framesmixin_base:IrisAdapterBase(nur Deklarationen für geteilte Attribute)adapter.pyhält jetzt nur nochIrisAdapter(Komposition der 7 Mixins +BasePlatformAdapter),register()und die test-seitigen Re-ExportsMixins stehen im MRO vor
BasePlatformAdapter, damit ihre Methoden die Base überschreiben;super()-Aufrufe (z. B.send_image) landen weiterhin beiBasePlatformAdapter. Keine zirkulären Imports;dispatch.py/http_server.py(aufrufen nur Instanzmethoden) bleiben unverändert.Ruff-Schwellen —
PLR0911/0912/0913/0915auf Ruff-Defaults (12/50/6/5) zurück, statt „just above the current maxima" (das rückt die Latte jedes Mal nach unten, wenn Code wächst). Die wirklich komplexen Funktionen (Frame-Builder, die das Wire-Schema spiegeln, QR-Matrix-Builder, Dispatch-Tabelle) tragen jetzt ein explizites# noqa: PLR09xxals geprüfte, eingefrorene Ausnahme. Neuer Code wird an den Defaults gemessen.Verifikation:
test_android+ 31test_android_http), 0 FehlschlägePLR2004/PLW2901)protocol.py(850 Zeilen) geprüft: zusammenhängende Wire-Protokoll-Schicht, kein Aufspalten nötig