BUG: Plugin-Lifecycle Runtime-Cleanup tot — was_already_active/inactive erst NACH registry-Aufruf berechnet #355
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Live gemessen 2026-08-27 (
tests/test_plugin_lifecycle_service.py, roter TDD-Lauf):P1: In
plugin_service.activate_plugin()/deactivate_plugin()wurdewas_already_active/was_already_inactiveaus dem Record berechnet, denregistry.activate()/deactivate()ZURÜCKGIBT — dieser spiegelt immer den NEUEN Zustand. Ergebnis: Beide Flags konstant falsch → der komplette Zweig für Runtime-Deregistrierung beim Deactivate war toter Code (stale_active_plugins-Gate-Eintrag + Phantom-Permissions + verwaiste ENTITY_MODELS nach jeder echten Deaktivierung).Realer Prod-Schaden heute: KI-Chat 403
plugin_inactivetrotz DB=active (Registry-Zustand divergierte von DB — dieselbe Diskrepanzklasse).P3:
registry.activate()riefsync_notification_types()VOR dem Statusupdate auf → Notification Types des frisch aktivierten Plugins wurden nie gesynct.Fix (b50a933-Nachfolger): Vorher-Status VOR dem Registry-Aufruf cachen; sync hinter den Flush verschoben. Beweis: neuer echter Integrationstest
tests/test_plugin_lifecycle_service.py(install→activate×2→deactivate×2→re-activate über PluginService) rot→grün; Regressionssuite 93 passed (nur bekannter #354-Vorbestand rot).Gefixt in Commit
385521e— deployed und live verifiziert (2026-08-27 13:38):Fix
activate_plugin()/deactivate_plugin()lesen den Record jetzt via_get_plugin_record()bevor sieregistry.activate()/deactivate()aufrufen. Die Flags waren vorher konstant falsch (Record nach Aufruf spiegelt immer den neuen Zustand).registry.activate()hinter DB-Statusupdate+Flush verschoben.Verifikation (Live-Messung)
tests/test_plugin_lifecycle_service.py: install → activate ×2 → deactivate ×2 → re-activate über PluginServicewas_already_active("Plugin is already active" statt "activated successfully")_active_plugins) gesetzt/entfernt, ENTITY_MODELS on/off, Notification-Type synced/entfernt, on_activate/on_deactivate je genau 1×