revision=a24ece9cf797f7ea647e33bf846b115208ed1ba5
=== public activation-capable constructors ===
--- dev.caskeleton.adapter.outbound.persistence.experimental.database.TenantDataSourceRegistry
  public dev.caskeleton.adapter.outbound.persistence.experimental.database.TenantDataSourceRegistry(java.util.function.Function<dev.caskeleton.adapter.outbound.persistence.experimental.tenant.TenantId, javax.sql.DataSource>, java.util.function.ToIntFunction<javax.sql.DataSource>, dev.caskeleton.adapter.outbound.persistence.experimental.database.TenantPoolBudget);
  public synchronized javax.sql.DataSource require(dev.caskeleton.adapter.outbound.persistence.experimental.tenant.TenantId);
  public synchronized void openTenants(int);
  public synchronized void evict(dev.caskeleton.adapter.outbound.persistence.experimental.tenant.TenantId);
  public synchronized int openPools();
  public synchronized int allocatedConnections();
  public synchronized java.util.Set<dev.caskeleton.adapter.outbound.persistence.experimental.tenant.TenantId> openTenantIds();
  public synchronized void close();
--- dev.caskeleton.adapter.outbound.persistence.experimental.database.TenantEntityManagerFactoryRegistry
  public dev.caskeleton.adapter.outbound.persistence.experimental.database.TenantEntityManagerFactoryRegistry(java.util.function.Function<dev.caskeleton.adapter.outbound.persistence.experimental.tenant.TenantId, jakarta.persistence.EntityManagerFactory>, dev.caskeleton.adapter.outbound.persistence.experimental.database.TenantDataSourceRegistry);
  public synchronized jakarta.persistence.EntityManagerFactory require(dev.caskeleton.adapter.outbound.persistence.experimental.tenant.TenantId);
  public synchronized void evict(dev.caskeleton.adapter.outbound.persistence.experimental.tenant.TenantId);
  public synchronized java.util.Set<dev.caskeleton.adapter.outbound.persistence.experimental.tenant.TenantId> openTenants();
  public synchronized void close();
--- dev.caskeleton.adapter.outbound.persistence.experimental.schema.SchemaMultiTenantConnectionProvider
  public dev.caskeleton.adapter.outbound.persistence.experimental.schema.SchemaMultiTenantConnectionProvider(javax.sql.DataSource, dev.caskeleton.adapter.outbound.persistence.experimental.schema.SchemaTenantRegistry);
  public java.sql.Connection getConnection(dev.caskeleton.adapter.outbound.persistence.experimental.tenant.TenantId) throws java.sql.SQLException;
  public void releaseConnection(java.sql.Connection) throws java.sql.SQLException;
--- dev.caskeleton.adapter.outbound.persistence.experimental.tenant.TenantEntityListenerGuard
  public dev.caskeleton.adapter.outbound.persistence.experimental.tenant.TenantEntityListenerGuard(java.util.function.Function<T, dev.caskeleton.adapter.outbound.persistence.experimental.tenant.TenantId>, java.util.function.BiConsumer<T, dev.caskeleton.adapter.outbound.persistence.experimental.tenant.TenantId>);
  public void stampOnInsert(T);
  public void verifyOnUpdate(T);
=== consent test ENTRY_POINTS ===
  /** The behaviour-bearing entry points; the surrounding value types are not activations. */
  private static final List<Class<?>> ENTRY_POINTS =
      List.of(
          ConsistencyAwareDataSourceRouter.class,
          RlsTenantSessionBinder.class,
          SchemaTenantMigrationOrchestrator.class);

=== production references outside experimental package ===
--- TenantDataSourceRegistry
--- TenantEntityManagerFactoryRegistry
--- SchemaMultiTenantConnectionProvider
--- TenantEntityListenerGuard
=== feature properties production config readers ===
src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/experimental/ExperimentalFeature.java:14:  MULTITENANCY_COLUMN("backend.jpa.experimental.multitenancy-column"),
src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/experimental/ExperimentalFeature.java:17:  MULTITENANCY_RLS("backend.jpa.experimental.multitenancy-rls"),
src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/experimental/ExperimentalFeature.java:20:  MULTITENANCY_SCHEMA("backend.jpa.experimental.multitenancy-schema"),
src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/experimental/ExperimentalFeature.java:23:  MULTITENANCY_DATABASE("backend.jpa.experimental.multitenancy-database"),
src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/experimental/ExperimentalFeature.java:26:  READ_REPLICA("backend.jpa.experimental.read-replica"),
src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/experimental/ExperimentalFeature.java:29:  JAKARTA_PERSISTENCE_4("backend.jpa.experimental.jakarta-persistence-4"),
src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/experimental/ExperimentalFeature.java:32:  HIBERNATE_8("backend.jpa.experimental.hibernate-8"),
src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/experimental/ExperimentalFeature.java:35:  POSTGRESQL_19("backend.jpa.experimental.postgresql-19");
src/adapter/outbound/persistence-jpa/src/main/java/dev/caskeleton/adapter/outbound/persistence/api/capability/SupportLevel.java:17:  /** Behind a {@code backend.jpa.experimental.*} flag; never part of the Stable composition. */
