Immutable instance boundary for the versioned composite-index registry.
Providers publish one bounded snapshot per LMDB writer expansion batch. Building and validating indexes remain in the projection set for online migration. Retiring indexes leave the projection set before their writer fence and physical cleanup, while only active indexes are visible to queries.
Summary
Callbacks
@callback child_specs(FerricStore.Instance.t() | map()) :: [Supervisor.child_spec()]
@callback snapshot(FerricStore.Instance.t() | map(), non_neg_integer()) :: {:ok, Ferricstore.Flow.Query.RegistrySnapshot.t()} | {:error, term()}
Functions
@spec active_indexes(FerricStore.Instance.t() | map(), non_neg_integer()) :: {:ok, [Ferricstore.Flow.Query.RegisteredIndex.t()]} | {:error, atom()}
@spec child_specs(FerricStore.Instance.t() | map()) :: {:ok, [Supervisor.child_spec()]} | {:error, :query_index_provider_failure}
@spec enabled?(FerricStore.Instance.t() | map()) :: boolean()
@spec projection_definitions(FerricStore.Instance.t() | map(), non_neg_integer()) :: {:ok, [Ferricstore.Flow.Query.IndexDefinition.t()]} | {:error, atom()}
@spec snapshot(FerricStore.Instance.t() | map(), non_neg_integer()) :: {:ok, Ferricstore.Flow.Query.RegistrySnapshot.t()} | {:error, atom()}