From 880dd6408c903a0a28095a15a1337833d908b966 Mon Sep 17 00:00:00 2001 From: Agent Zero Date: Sat, 22 Aug 2026 22:40:21 +0200 Subject: [PATCH] docs: 127 Architektur-Fehler (ARCH-001 bis ARCH-127) durch systematisches Code-Review dokumentiert --- docs/test-bugs.md | 60 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/docs/test-bugs.md b/docs/test-bugs.md index 57af48c..a5a9405 100644 --- a/docs/test-bugs.md +++ b/docs/test-bugs.md @@ -1514,3 +1514,63 @@ Playwright E2E: 10 passed, 24 failed (BUG-011/012/013 — Mock-Daten und data-te - **Problem:** authenticate_ws authentifiziert User aber prüft nicht ob das Plugin (kommunikation) aktiv ist. WebSocket bleibt offen auch wenn Plugin deaktiviert ist. - **Schweregrad:** Medium - **Status:** ⏳ Nicht gefixt + +### ARCH-118: ai/agent_tools.py — _user_has_permission dupliziert check_permission +- **Datei:** app/ai/agent_tools.py:22-40 +- **Problem:** _user_has_permission() dupliziert die Logik aus app/core/permissions.py:check_permission(). Zwei Implementierungen desselben Checks. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt + +### ARCH-119: ai/data_policy.py — _CATEGORY_ENTITY_MAP statisch +- **Datei:** app/ai/data_policy.py:24-28 +- **Problem:** _CATEGORY_ENTITY_MAP ist statisch. Neue Plugin-Entities werden nicht erfasst. +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-120: ai/oversight.py — DecisionRecord als @dataclass statt Model +- **Datei:** app/ai/oversight.py:30 +- **Problem:** DecisionRecord ist ein @dataclass, nicht in models/. Inkonsistent mit anderen Models. Wird nicht in DB gespeichert. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt + +### ARCH-121: ai/action_mapper.py — _PATTERNS hardcoded Regex +- **Datei:** app/ai/action_mapper.py:12-25 +- **Problem:** _PATTERNS und _NAME_PATTERNS sind hardcoded Regex. Nicht konfigurierbar, nicht erweiterbar durch Plugins. +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-122: workflows/decision_guard.py — HIGH_RISK_ACTIONS statisch +- **Datei:** app/workflows/decision_guard.py:25 +- **Problem:** HIGH_RISK_ACTIONS ist statisch. Neue Actions können nicht dynamisch hinzugefügt werden. +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-123: workflows/engine.py — importiert post_system_message (Core→Plugin Kette) +- **Datei:** app/workflows/engine.py:13 +- **Problem:** `from app.core.notifications import post_system_message` — notifications.py importiert wiederum von plugins.builtins.contracts. Indirekte Core→Plugin Abhängigkeit. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt + +### ARCH-124: workflows/step_handlers.py — StepResult ohne __slots__ +- **Datei:** app/workflows/step_handlers.py:22 +- **Problem:** StepResult ist eine Klasse ohne __slots__. Memory-Verschwendung bei vielen Instanzen. +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-125: ai/skill_registry.py — SkillRegistry nicht thread-safe +- **Datei:** app/ai/skill_registry.py:40 +- **Problem:** SkillRegistry hat ein globales _skills dict ohne Locks. Bei gleichzeitiger Registrierung kann es zu Race Conditions kommen. +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-126: ai/ai_use_case.py — KNOWN_DATA_CATEGORIES statisch +- **Datei:** app/ai/ai_use_case.py:18 +- **Problem:** KNOWN_DATA_CATEGORIES ist statisch. Neue Plugin-Kategorien werden nicht erfasst. +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-127: ai/transparency.py — AI_PARTICIPANT_TYPES statisch +- **Datei:** app/ai/transparency.py:14 +- **Problem:** AI_PARTICIPANT_TYPES ist statisch. Neue AI-Participant-Types können nicht dynamisch hinzugefügt werden. +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt