ADR 017: Plugin data ownership¶
Estado¶
Aceptado — 2026-07
Relacionado con ADR 007 y ADR 008.
Contexto¶
HIVE usa PostgreSQL por tenant. El framework resuelve URL y provisioning; los plugins de dominio deben poseer modelos, migraciones y convención de tablas sin acoplar el ORM al core.
Decisión¶
| Capa | Dueño de |
|---|---|
| core | SPI y tipos; sin SQLAlchemy |
| framework | tenant_database_url, get_async_session, TenantProvisioner, tabla cortex_migrations |
| plugin | Modelos, alembic.ini, alembic/versions/, prefijo de tablas (booking_*) |
Reglas:
- Una cadena Alembic independiente por plugin que persista.
- Tablas en
publiccon prefijo{plugin_id}_. - Provisioning ejecuta
alembic upgrade headsolo para plugins habilitados conalembic.ini. - Versión aplicada registrada en
cortex_migrations(porplugin_id). - Runtime: sesión async por request vía
get_async_session(tenant); sin estado global de ORM.
Consecuencias¶
- booking es el primer plugin con migración real (
001_initial:booking_resources,booking_bookings). - Fixtures en memoria se sustituyen gradualmente; producción sin
_STORE. - Más bases de datos por tenant; provisioning debe ser idempotente y observable.
Referencias¶
framework/cortex_framework/tenant/plugins/booking/alembic/