Saltar a contenido

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:

  1. Una cadena Alembic independiente por plugin que persista.
  2. Tablas en public con prefijo {plugin_id}_.
  3. Provisioning ejecuta alembic upgrade head solo para plugins habilitados con alembic.ini.
  4. Versión aplicada registrada en cortex_migrations (por plugin_id).
  5. 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/