From f7f8a302f89987f3e88f3d35353324217a1c8909 Mon Sep 17 00:00:00 2001 From: Agent Zero Date: Sat, 22 Aug 2026 22:34:39 +0200 Subject: [PATCH] docs: 64 Architektur-Fehler (ARCH-001 bis ARCH-064) durch systematisches Code-Review dokumentiert --- docs/test-bugs.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/docs/test-bugs.md b/docs/test-bugs.md index 989eca8..140b17d 100644 --- a/docs/test-bugs.md +++ b/docs/test-bugs.md @@ -1166,3 +1166,33 @@ Playwright E2E: 10 passed, 24 failed (BUG-011/012/013 — Mock-Daten und data-te - **Problem:** `const visibleModuleKeys = useWorkspaceStore(s => s.visibleModuleKeys())` — bei jedem Render wird ein neues Set erstellt. Sollte useMemo verwenden. - **Schweregrad:** Low - **Status:** ⏳ Nicht gefixt + +### ARCH-060: step_handlers.py — MailContract.get_function() existiert nicht +- **Datei:** app/workflows/step_handlers.py:221,261,306,351,394 +- **Problem:** `MailContract.get_function("send_email")` — MailContract hat keine get_function() Methode. Es hat nur `Mail = Mail`. Alle 5 Step-Handler (mail, calendar, dms, search, automation) sind kaputt. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-061: unified_search/contracts.py — get_contract() umgeht Registry +- **Datei:** app/plugins/builtins/unified_search/contracts.py:38-43 +- **Problem:** `get_contract()` erstellt eine NEUE Instanz statt die registrierte aus der Registry zu verwenden. Umgeht die Contract Registry und Plugin-Aktivierungsstatus-Prüfung. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt + +### ARCH-062: mail/contracts.py — MailContract hat keine send_email Funktion +- **Datei:** app/plugins/builtins/mail/contracts.py +- **Problem:** MailContract hat nur `Mail = Mail` aber step_handlers.py erwartet `get_function("send_email")`. Contract ist unvollständig. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-063: cache.py — Cache und Session-Store verwenden dieselbe Redis-Instanz +- **Datei:** app/core/cache.py:12 +- **Problem:** `get_cache()` delegiert an `get_redis()` — Cache und Session-Store verwenden dieselbe Redis-Instanz. Keine Trennung, kein Namespace-Prefix. +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-064: middleware.py — CSP erlaubt WebSocket zu jedem Server +- **Datei:** app/core/middleware.py:33 +- **Problem:** `connect-src 'self' wss: ws:` — WebSocket-Verbindungen zu jedem wss/ws Server erlaubt, nicht nur zum eigenen Server. Sollte `connect-src 'self'` sein. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt