docs: block a progress - arch-043/052/008/009 fixed and verified
This commit is contained in:
+6
-1
@@ -33,7 +33,12 @@
|
|||||||
| HC-A Backend | action_mapper feste Regex-Intents | ✅ Contribution-API | 4994906 |
|
| HC-A Backend | action_mapper feste Regex-Intents | ✅ Contribution-API | 4994906 |
|
||||||
| Gate H | Plugin-Contribution ohne Core-Änderung beweisen | ✅ BESTANDEN (2/2) | 801743b |
|
| Gate H | Plugin-Contribution ohne Core-Änderung beweisen | ✅ BESTANDEN (2/2) | 801743b |
|
||||||
|
|
||||||
**Offen Block A:** ARCH-043, ARCH-052, ARCH-008/009 (Permission-Wildcards), A2-Deactivation-Cleanup (ARCH-012/013/015/033–037/044) → dann Gate A.
|
| ARCH-043 | automation Tenant.limit(1) statt System-Tenant | ✅ get_system_tenant() + system_tenant_slug Setting | 17516d2 |
|
||||||
|
| ARCH-052 | storage get_file_metadata Event-Loop im async Kontext | ✅ get_file_metadata_async() + Fail-Fast-Guard | 17516d2 |
|
||||||
|
| ARCH-008 | Permission-Namensschema inkonsistent | ✅ Kanon modul:aktion festgelegt, Manifest-Validator erzwingt es | 7953077 |
|
||||||
|
| ARCH-009 | Tote 3-Segment-Rollen-Patterns (core:*:X) + 14 Route-Literals | ✅ Migration 0141 + Route-Fix, Roundtrip bewiesen | 7953077 |
|
||||||
|
|
||||||
|
**Offen Block A:** A2-Deactivation-Cleanup (ARCH-012/013/015/033–037/044) → dann Gate A.
|
||||||
**Offen gesamt:** B (Contacts-Entkopplung als Kernstück), C (Frontend-Routen/Workspace/Settings/Dashboard), D (pytest-Massen + Security-Triage), E (Production-Härtung), F3 (Guide-Updates), G (DSGVO).
|
**Offen gesamt:** B (Contacts-Entkopplung als Kernstück), C (Frontend-Routen/Workspace/Settings/Dashboard), D (pytest-Massen + Security-Triage), E (Production-Härtung), F3 (Guide-Updates), G (DSGVO).
|
||||||
**Bekannte Vorbestände:** BUG-099 (workstream.py gelöscht in 7d86592, Tests importieren es noch — 7 Failures). test_trigger_core besteht isoliert.
|
**Bekannte Vorbestände:** BUG-099 (workstream.py gelöscht in 7d86592, Tests importieren es noch — 7 Failures). test_trigger_core besteht isoliert.
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -843,13 +843,13 @@ Playwright E2E: 10 passed, 24 failed (BUG-011/012/013 — Mock-Daten und data-te
|
|||||||
- **Datei:** app/plugins/builtins/kommunikation/plugin.py:44, app/routes/dashboard.py:23
|
- **Datei:** app/plugins/builtins/kommunikation/plugin.py:44, app/routes/dashboard.py:23
|
||||||
- **Problem:** kommunikation verwendet 'comm:read', dashboard verwendet 'dashboard:read'. Andere Plugins verwenden 'pluginname:read'.
|
- **Problem:** kommunikation verwendet 'comm:read', dashboard verwendet 'dashboard:read'. Andere Plugins verwenden 'pluginname:read'.
|
||||||
- **Schweregrad:** Medium
|
- **Schweregrad:** Medium
|
||||||
- **Status:** ⏳ Nicht gefixt
|
- **Status:** ✅ Gefixt 2026-08-23 (Block A): Kanon-Schema modul:aktion festgelegt (docs/permissions.md), Manifest-Validator erzwingt es bei Load-Time, Quellvertragstest verhindert 3-Segment-Literals in app/routes
|
||||||
|
|
||||||
### ARCH-009: Default-Rollen core:*:read matcht nicht Plugin-Permissions
|
### ARCH-009: Default-Rollen core:*:read matcht nicht Plugin-Permissions
|
||||||
- **Datei:** alembic/versions/0019_rbac_groups.py:80, app/core/permissions.py:46-50
|
- **Datei:** alembic/versions/0019_rbac_groups.py:80, app/core/permissions.py:46-50
|
||||||
- **Problem:** `core:*:read` (3 Segmente) matcht nicht `contacts:read` (2 Segmente) wegen `len(g_parts) != len(r_parts)` Prüfung.
|
- **Problem:** `core:*:read` (3 Segmente) matcht nicht `contacts:read` (2 Segmente) wegen `len(g_parts) != len(r_parts)` Prüfung.
|
||||||
- **Schweregrad:** High
|
- **Schweregrad:** High
|
||||||
- **Status:** ⏳ Nicht gefixt
|
- **Status:** ✅ Gefixt 2026-08-23 (Block A): Migration 0141 konvertiert Bestandsrollen core:*:X → *:X (Roundtrip per psql bewiesen); 14 Route-Literals delegations/policies/templates auf 2-Segment korrigiert; Hash-Gate unverändert grün
|
||||||
|
|
||||||
### ARCH-010: Cross-Plugin-Checker scannt nur builtins standardmäßig
|
### ARCH-010: Cross-Plugin-Checker scannt nur builtins standardmäßig
|
||||||
- **Datei:** scripts/check_cross_plugin_imports.py:233
|
- **Datei:** scripts/check_cross_plugin_imports.py:233
|
||||||
@@ -1069,7 +1069,7 @@ Playwright E2E: 10 passed, 24 failed (BUG-011/012/013 — Mock-Daten und data-te
|
|||||||
- **Datei:** app/plugins/builtins/automation/plugin.py:register_plugin_contributions
|
- **Datei:** app/plugins/builtins/automation/plugin.py:register_plugin_contributions
|
||||||
- **Problem:** `select(Tenant).limit(1)` nimmt den ersten Tenant in der DB, nicht den aktuellen Tenant. In Multi-Tenant-Setups werden Contributed Agents/Automations im falschen Tenant erstellt.
|
- **Problem:** `select(Tenant).limit(1)` nimmt den ersten Tenant in der DB, nicht den aktuellen Tenant. In Multi-Tenant-Setups werden Contributed Agents/Automations im falschen Tenant erstellt.
|
||||||
- **Schweregrad:** High
|
- **Schweregrad:** High
|
||||||
- **Status:** ⏳ Nicht gefixt
|
- **Status:** ✅ Gefixt 2026-08-23 (Block A): Konfigurierbarer system_tenant_slug (Default 'default', wie seed_admin) in Settings; wiederverwendbarer Helper get_system_tenant() im Core-Layer (app/core/db); beide automation-Stellen nutzen ihn; Test beweist Slug-Lookup gegen Decoy-Ersteintrag
|
||||||
|
|
||||||
### ARCH-044: ai_ui_control/plugin.py — on_deactivate ruft super().on_deactivate() VOR service_container.remove()
|
### ARCH-044: ai_ui_control/plugin.py — on_deactivate ruft super().on_deactivate() VOR service_container.remove()
|
||||||
- **Datei:** app/plugins/builtins/ai_ui_control/plugin.py:on_deactivate
|
- **Datei:** app/plugins/builtins/ai_ui_control/plugin.py:on_deactivate
|
||||||
@@ -1123,7 +1123,7 @@ Playwright E2E: 10 passed, 24 failed (BUG-011/012/013 — Mock-Daten und data-te
|
|||||||
- **Datei:** app/core/storage.py:get_file_metadata
|
- **Datei:** app/core/storage.py:get_file_metadata
|
||||||
- **Problem:** `loop = asyncio.new_event_loop()` für S3 fallback — erstellt einen neuen Event Loop in einem async Kontext. Kann zu Deadlocks führen wenn bereits ein Loop läuft.
|
- **Problem:** `loop = asyncio.new_event_loop()` für S3 fallback — erstellt einen neuen Event Loop in einem async Kontext. Kann zu Deadlocks führen wenn bereits ein Loop läuft.
|
||||||
- **Schweregrad:** Medium
|
- **Schweregrad:** Medium
|
||||||
- **Status:** ⏳ Nicht gefixt
|
- **Status:** ✅ Gefixt 2026-08-23 (Block A): Neue get_file_metadata_async() awaited backend.exists() direkt; Sync-Funktion ist Wrapper mit Fail-Fast-Guard gegen verschachtelte Loops im laufenden Loop; bestehende Sync-Tests unverändert grün
|
||||||
|
|
||||||
### ARCH-053: audit.py — datetime.utcnow() naive datetime in retention cleanup
|
### ARCH-053: audit.py — datetime.utcnow() naive datetime in retention cleanup
|
||||||
- **Datei:** app/routes/audit.py:179
|
- **Datei:** app/routes/audit.py:179
|
||||||
|
|||||||
Reference in New Issue
Block a user