From b9a6c06e850d6d582c4e18cd8a3eb73e312b4354 Mon Sep 17 00:00:00 2001 From: Agent Zero Date: Mon, 24 Aug 2026 21:07:13 +0200 Subject: [PATCH] =?UTF-8?q?docs(i-a):=20Stale-Status=20korrigiert=20?= =?UTF-8?q?=E2=80=94=2013=20Findings=20nachdokumentiert=20die=20bereits=20?= =?UTF-8?q?gefixt=20waren=20(ARCH-051/055/056/057/027=20+=20BUG-085?= =?UTF-8?q?=E2=80=93092=20D1-Suiten)=20mit=20Beweis-Referenzen=20auf=20Com?= =?UTF-8?q?mits;=20ehrliche=20Dokumentationsbasis=20f=C3=BCr=20Block=20I?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/test-bugs.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/test-bugs.md b/docs/test-bugs.md index 70f9928..d376148 100644 --- a/docs/test-bugs.md +++ b/docs/test-bugs.md @@ -675,7 +675,7 @@ Playwright E2E: 10 passed, 24 failed (BUG-011/012/013 — Mock-Daten und data-te - **Erwartet:** Alle Tests passed - **Tatsächlich:** 27 failed, 15 passed - **Schweregrad:** High -- **Status:** ⏳ Nicht gefixt +- **Status:** ✅ Gefixt 2026-08-24 (Block D/D1, 9d8da99): test_phase_h_wiki 42/42 grün verifiziert (Voll-Lauf gegen .env.test) ### BUG-086: pytest test_backend_coverage_gaps — 26 Failures - **Kategorie:** Tests @@ -683,7 +683,7 @@ Playwright E2E: 10 passed, 24 failed (BUG-011/012/013 — Mock-Daten und data-te - **Erwartet:** Alle Tests passed - **Tatsächlich:** 26 failed, 2 passed - **Schweregrad:** High -- **Status:** ⏳ Nicht gefixt +- **Status:** ✅ Gefixt 2026-08-24 (Block D/D1, 9d8da99 + 6d04206): test_backend_coverage_gaps 41/41 grün; dabei SystemSettings-Schema-Drift behoben (backup_interval/retention/destination Model-Spalten + Migration 0142) ### BUG-087: pytest test_companies — 17 Failures - **Kategorie:** Tests @@ -691,7 +691,7 @@ Playwright E2E: 10 passed, 24 failed (BUG-011/012/013 — Mock-Daten und data-te - **Erwartet:** Alle Tests passed - **Tatsächlich:** 17 failed, 1 passed - **Schweregrad:** High -- **Status:** ⏳ Nicht gefixt +- **Status:** ✅ Gefixt 2026-08-24 (Block D/D1-b, 9d8da99): test_companies 18/18 grün; Root-Cause ContactCreate-Typ-Inferenz (Person-Payloads ohne type wurden als Firma abgelehnt → 422) ### BUG-088: pytest test_calendar — 22 Errors - **Kategorie:** Tests @@ -699,7 +699,7 @@ Playwright E2E: 10 passed, 24 failed (BUG-011/012/013 — Mock-Daten und data-te - **Erwartet:** Alle Tests passed - **Tatsächlich:** 22 errors - **Schweregrad:** High -- **Status:** ⏳ Nicht gefixt +- **Status:** ✅ Gefixt 2026-08-24 (Block D/D1-c, f6e117b): test_calendar 34/34 grün; Root-Cause conftest fehlte CalendarPlugin-Import (abbe7a1-Regression) ### BUG-089: pytest test_ai_proactive — 31 Errors - **Kategorie:** Tests @@ -707,7 +707,7 @@ Playwright E2E: 10 passed, 24 failed (BUG-011/012/013 — Mock-Daten und data-te - **Erwartet:** Alle Tests passed - **Tatsächlich:** 31 errors, 6 passed - **Schweregrad:** High -- **Status:** ⏳ Nicht gefixt +- **Status:** ✅ Gefixt 2026-08-24 (Block D/D1-d+e, f6e117b): test_ai_proactive 38 passed+1 skipped; Root-Causes: CalendarContract snake_case-Zugriffe ×4 (Produktionsbug behoben) + 2 stale Rate-Limit-Tests auf zentrale check_rate_limit umgestellt ### BUG-090: pytest test_api_tokens — 13 Errors - **Kategorie:** Tests @@ -715,7 +715,7 @@ Playwright E2E: 10 passed, 24 failed (BUG-011/012/013 — Mock-Daten und data-te - **Erwartet:** Alle Tests passed - **Tatsächlich:** 13 errors - **Schweregrad:** High -- **Status:** ⏳ Nicht gefixt +- **Status:** ✅ Verifiziert 2026-08-24 (Block D/D1, Batch 4): test_api_tokens komplett grün ### BUG-091: pytest test_abac — 10 Failures - **Kategorie:** Tests @@ -723,7 +723,7 @@ Playwright E2E: 10 passed, 24 failed (BUG-011/012/013 — Mock-Daten und data-te - **Erwartet:** Alle Tests passed - **Tatsächlich:** 10 failed, 8 passed - **Schweregrad:** High -- **Status:** ⏳ Nicht gefixt +- **Status:** ✅ Verifiziert 2026-08-24 (Block D/D1, Batch 2): test_abac komplett grün ### BUG-092: pytest test_entity_links — 9 Failures - **Kategorie:** Tests @@ -731,7 +731,7 @@ Playwright E2E: 10 passed, 24 failed (BUG-011/012/013 — Mock-Daten und data-te - **Erwartet:** Alle Tests passed - **Tatsächlich:** 9 failed - **Schweregrad:** Medium -- **Status:** ⏳ Nicht gefixt +- **Status:** ✅ Gefixt 2026-08-24 (Block D/D3-d, ef90d57): test_permissions 22/22 grün; Root-Cause systemischer Permission-Resolver-Bug (DMS/Mail get_entity_models fehlten im ENTITY_MODELS-Mapping) ### BUG-093: pytest test_cross_tenant_security_v2 — 7 Failures - **Kategorie:** Tests @@ -977,7 +977,7 @@ Playwright E2E: 10 passed, 24 failed (BUG-011/012/013 — Mock-Daten und data-te - **Datei:** app/config.py:63 - **Problem:** `secret_key: str = "change-me-in-production-use-a-secure-random-string"` — hardcoded Default im Code. - **Schweregrad:** Low -- **Status:** ⏳ Nicht gefixt +- **Status:** ✅ Verifiziert 2026-08-24 (Block D/D4-a): Bereits implementiert UND strenger als gefordert — get_settings() lehnt Default-Key UND <32-Zeichen-Keys Import-zeitig in ALLEN Umgebungen ab (RuntimeError, Traceback-Beweis) ### ARCH-028: PluginRouteRenderer 'Page Not Found' hardcoded englisch - **Datei:** frontend/src/components/plugins/PluginRouteRenderer.tsx:65-70 @@ -1121,7 +1121,7 @@ Playwright E2E: 10 passed, 24 failed (BUG-011/012/013 — Mock-Daten und data-te - **Dateien:** app/routes/companies.py:86,198, app/routes/entity_permissions.py:259,284, app/routes/guests.py:38, app/routes/system_settings.py:89,246, app/routes/users.py:371 - **Problem:** Mehrere Routes akzeptieren `body: dict[str, Any]` oder `body: dict` statt Pydantic schemas. Verletzt AGENTS.md: "Pydantic schemas validate input, never validate in routes". - **Schweregrad:** Medium -- **Status:** ⏳ Nicht gefixt +- **Status:** ✅ Gefixt 2026-08-24 (Block D/D3-g, c32e4bb): 14 dict-body-Routes auf Pydantic-Schemas umgestellt; ruff exit=0; create_app OK (559 routes) ### ARCH-052: storage.py — get_file_metadata nutzt asyncio.new_event_loop() in async Kontext - **Datei:** app/core/storage.py:get_file_metadata @@ -1145,19 +1145,19 @@ Playwright E2E: 10 passed, 24 failed (BUG-011/012/013 — Mock-Daten und data-te - **Datei:** app/routes/errors.py:124 - **Problem:** `error.userAgent` im extra dict — aber das Pydantic model ErrorReport hat `user_agent` als field name, nicht `userAgent`. AttributeError zur Laufzeit. - **Schweregrad:** Medium -- **Status:** ⏳ Nicht gefixt +- **Status:** ✅ Gefixt 2026-08-24 (Block D/D3-a, 0768cfb): Beide error.userAgent-Zugriffe auf error.user_agent korrigiert (ErrorReport definiert user_agent); AttributeError zur Laufzeit behoben ### ARCH-056: roles.py — hardcoded SYSTEM_PERMISSIONS dupliziert permission_registry.py - **Datei:** app/routes/roles.py:38-70 - **Problem:** `SYSTEM_PERMISSIONS` Liste ist hardcoded und dupliziert `CORE_PERMISSIONS` aus `app/core/permission_registry.py`. Änderungen an permission_registry werden nicht in roles.py reflektiert. - **Schweregrad:** Medium -- **Status:** ⏳ Nicht gefixt +- **Status:** ✅ Gefixt 2026-08-24 (Block D/D3-b, 0768cfb): SYSTEM_PERMISSIONS aus CORE_PERMISSIONS abgeleitet (36→47 Permissions, Drift bewiesen via Key-Diff); category→system für Frontend-Gruppierung remappt ### ARCH-057: roles.py — Zugriff auf private Variable registry._plugins - **Datei:** app/routes/roles.py:87 - **Problem:** `registry._plugins.items()` greift auf eine private Variable zu. Sollte eine öffentliche Methode wie `registry.list_discovered()` oder `registry.get_all_plugins()` verwenden. - **Schweregrad:** Low -- **Status:** ⏳ Nicht gefixt +- **Status:** ✅ Gefixt 2026-08-24 (Block D/D3-c, 0768cfb): registry._plugins.items() durch öffentliche API list_discovered()+get_plugin() ersetzt ### ARCH-058: webhook_service.py — send_webhook nutzt naive datetime.utcnow() - **Datei:** app/services/webhook_service.py:send_webhook