# `StatifierPersistence`
[🔗](https://github.com/riddler/statifier_persistence/blob/v0.25.1/lib/statifier_persistence.ex#L1)

Durable stepper and storage adapters for Statifier.

This module itself carries only `version/0`. The package's surface is four
modules, and the worked example in `docs/guides/persist-and-resume.md`
drives all of them in order:

- `StatifierPersistence.Storage` - the identity-guarded facade over charts,
  positions, and execution records. Every load is guarded against the chart
  revision that wrote it; there is no unguarded path.
- `StatifierPersistence.Storage.Adapter` - the behaviour a backing store
  implements. `StatifierPersistence.Storage.InMemory` is the reference
  implementation, `StatifierPersistence.Storage.Ecto` the Postgres one, and
  `StatifierPersistence.Testing.StorageConformance` holds any third to the
  same bar.
- `StatifierPersistence.Executions` - the lifecycle: `create/4`, `step/5`,
  `fail/4`, each running load -> step -> execute effects -> persist in
  ADR-0004 decision 3's fixed order, with no live Session process.
- `StatifierPersistence.Executor` - the seam every effect crosses on its way
  to the host, as a module or a bare arity-2 fun.

`StatifierPersistence.Serialization` is the fifth, and usually invisible:
it orders concurrent deliveries to one execution, defaulting to the adapter's own
`lock_execution/3`.

# `version`

```elixir
@spec version() :: String.t()
```

The running version of this package.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
