# StatifierPersistence v0.18.0 - Table of Contents > Durable stepper and storage adapters for Statifier ## Pages - [StatifierPersistence](readme.md) - [Changelog](changelog.md) - Guides - [Surviving a restart: the demo host](restart-demo.md) - [Running the Ecto adapter on a backend that is not Postgres](non-postgres-backends.md) - [Telemetry and the OpenTelemetry bridge half](telemetry.md) - [What a finished execution leaves behind](retention.md) ## Modules - [StatifierPersistence](StatifierPersistence.md): Durable stepper and storage adapters for Statifier. - [StatifierPersistence.Driver](StatifierPersistence.Driver.md): Run-to-quiescence over `StatifierPersistence.Executions`: the loop that answers the chart's `` calls and keeps stepping until it stops asking. - [StatifierPersistence.Ecto](StatifierPersistence.Ecto.md): Compile-time Ecto configuration on the host's own module (ADR-0002). - [StatifierPersistence.Ecto.Config](StatifierPersistence.Ecto.Config.md): The resolved configuration behind `use StatifierPersistence.Ecto`. - [StatifierPersistence.Ecto.KeyGenerator](StatifierPersistence.Ecto.KeyGenerator.md): Behaviour a surrogate-key scheme implements for the Ecto layer. - [StatifierPersistence.Ecto.KeyGenerator.Bigserial](StatifierPersistence.Ecto.KeyGenerator.Bigserial.md): Database-assigned auto-increment keys (ADR-0002 decision 2). - [StatifierPersistence.Ecto.KeyGenerator.UUIDv7](StatifierPersistence.Ecto.KeyGenerator.UUIDv7.md): RFC 9562 UUIDv7 keys (ADR-0002 decision 2). - [StatifierPersistence.Ecto.KeyGenerator.UXID](StatifierPersistence.Ecto.KeyGenerator.UXID.md): The default key generator: k-sortable UXID strings (ADR-0002 decision 2). - [StatifierPersistence.Ecto.Migrations](StatifierPersistence.Ecto.Migrations.md): Versioned migrations for this package's tables, in the `Oban.Migration` mold: the host writes one ordinary migration that delegates here, and later package versions ship higher-numbered migration modules the same call picks up. - [StatifierPersistence.Ecto.Migrations.V01](StatifierPersistence.Ecto.Migrations.V01.md): V01 of the package DDL: the `charts`, `positions`, and `executions` tables per ADR-0002 (as amended) and the storage contract's field set (ADR-0003 decision 3). - [StatifierPersistence.Ecto.Migrations.V02](StatifierPersistence.Ecto.Migrations.V02.md): V02 of the package DDL: the nullable `metadata` `jsonb` column on the executions table (ADR-0006 decision 3, decision 4's migration shape). - [StatifierPersistence.Ecto.Migrations.V03](StatifierPersistence.Ecto.Migrations.V03.md): V03 of the package DDL: the executions table's nullable `outcome_blob` column, and a GIN index on `metadata`. - [StatifierPersistence.Ecto.Migrations.V04](StatifierPersistence.Ecto.Migrations.V04.md): V04 of the package DDL: rebuilds V03's `metadata` GIN index with `CREATE INDEX CONCURRENTLY`. - [StatifierPersistence.Ecto.Migrations.V05](StatifierPersistence.Ecto.Migrations.V05.md): V05 of the package DDL: the per-execution input log table (ADR-0010 decision 9). - [StatifierPersistence.Ecto.Migrations.V06](StatifierPersistence.Ecto.Migrations.V06.md): V06 of the package DDL: the conditional, in-place rename of the durable noun (ADR-0011 decision 3). - [StatifierPersistence.Ecto.Migrations.V07](StatifierPersistence.Ecto.Migrations.V07.md): V07 of the package DDL: what retention and retirement need in the schema (ADR-0012). - [StatifierPersistence.Ecto.Migrations.V08](StatifierPersistence.Ecto.Migrations.V08.md): V08 of the package DDL: when an execution ended. - [StatifierPersistence.Execution](StatifierPersistence.Execution.md): The host-facing view of a durable execution: what state is this execution in - never what its bytes are. The position blob stays on the stored record (ADR-0004 decision 1), loaded only through the guarded `StatifierPersistence.Storage.load_execution_position/3` path; this struct carries the fields a host reads to decide what to do with an execution. - [StatifierPersistence.Execution.Linkage](StatifierPersistence.Execution.Linkage.md): A durable subchart child's parent linkage: the reserved, package-owned namespace inside an execution's `metadata` (ADR-0008 decision 2). - [StatifierPersistence.Executions](StatifierPersistence.Executions.md): The execution lifecycle: create and step durable executions with no live Session process, the loop this package exists to package. - [StatifierPersistence.Executor](StatifierPersistence.Executor.md): The seam through which a stepped execution's effects reach the host (ADR-0004 decision 4). - [StatifierPersistence.Migration](StatifierPersistence.Migration.md): Moving a waiting execution from one chart onto another, on purpose. - [StatifierPersistence.Migration.Plan](StatifierPersistence.Migration.Plan.md): A migration plan: how one execution's position crosses from one chart to another, as data. - [StatifierPersistence.PinSource](StatifierPersistence.PinSource.md): The behaviour a host implements so a pin this package cannot see still refuses a retirement. - [StatifierPersistence.Retention](StatifierPersistence.Retention.md): Clearing what a finished execution leaves behind (ADR-0016). - [StatifierPersistence.Serialization](StatifierPersistence.Serialization.md): The per-execution serialization strategy behaviour (ADR-0004 decision 5): the seam through which concurrent deliveries to one execution are ordered. - [StatifierPersistence.Serialization.AdapterLock](StatifierPersistence.Serialization.AdapterLock.md): The default `StatifierPersistence.Serialization` strategy (ADR-0004 decision 5): per-execution ordering as the storage adapter's own lock. - [StatifierPersistence.Storage](StatifierPersistence.Storage.md): The guarded entry point from a storage adapter to a `Statifier.MachineState.t()`. - [StatifierPersistence.Storage.Adapter](StatifierPersistence.Storage.Adapter.md): The storage contract: opaque blobs keyed by engine identities. - [StatifierPersistence.Storage.Ecto](StatifierPersistence.Storage.Ecto.md): The Ecto `StatifierPersistence.Storage.Adapter`: the storage contract over the schemas a host generates with `use StatifierPersistence.Ecto` (ADR-0002), against the tables the versioned migrations helper creates. Requires the optional `ecto_sql` dependency (ADR-0005). - [StatifierPersistence.Storage.InMemory](StatifierPersistence.Storage.InMemory.md): The reference `StatifierPersistence.Storage.Adapter`: an Agent holding three maps - charts keyed by content hash, positions keyed by session id, and executions keyed by execution id. - [StatifierPersistence.Telemetry](StatifierPersistence.Telemetry.md): The `:telemetry` surface for this package's storage-phase seams (ADR-0009) - the single definition site for every `[:statifier_persistence, ...]` event name, and the one module in `lib/` that calls `:telemetry.execute/3`. - [StatifierPersistence.Testing.Charts](StatifierPersistence.Testing.Charts.md): Tiny compiled charts for this package's own tests and for the conformance template (ADR-0003 decision 5). - [StatifierPersistence.Testing.StorageConformance](StatifierPersistence.Testing.StorageConformance.md): The conformance suite every `StatifierPersistence.Storage.Adapter` must pass. Ships in `lib/` (ADR-0003 decision 5, st-ADR-0053's shape) so an adapter in another package runs the identical suite