49a9493ca0
Vorher: alembic/env.py importierte nur from app.models import * — das laedt im frischen Prozess nur die 48 CORE-Modelle. Contact und ~80 weitere Tabellen liegen physikalisch in Plugins (lazy __getattr__ feuert bei Wildcard-Import nie). Metadatensortierung scheiterte an contact_merge_history -> contacts (NoReferencedTableError, Astra-Repro); alembic check haette gegen ein unvollstaendiges Schema verglichen. Fix: deterministische Plugin-Model-Discovery in env.py — gleiches Muster wie tests/conftest.py: Registry discover_builtins, dann pro Plugin das models-Modul importieren (ImportError = kein models-Modul, bewusst uebersprungen). Side-effect-frei (nur Modell-Registrierung, kein DB-Zugriff). Beweis: frischer Prozess laedt jetzt 129 Tabellen, Sortierung OK (Vorher: 48 + NoReferencedTableError). Bekannt und separat offen: der contacts/contactpersons-FK-Zyklus (SAWarning, dokumentiert) und der entity_attachments.dms_file_id-FK auf die DMS-Tabelle (R3). Verifikation: Syntax OK, ruff clean.