# eta v0.1.0 - Table of Contents

> Deterministic simulation testing for the BEAM: a serializing scheduler, a virtual clock, and a driver that turns a seed into a replayable run.

## Pages

- [README](readme.md)
- [LICENSE](license.md)

- Walkthrough
  - [What DST is](01-what-dst-is.md)
  - [Setting up a project](02-setting-up.md)
  - [Example: two-phase commit](03-two-phase-commit.md)
  - [Writing a system under test](04-writing-a-system-under-test.md)
  - [Gotchas and footguns](05-gotchas.md)
  - [A Journey Through DST](06-a-journey-through-dst.md)

- Design
  - [Design history](design.md)

## Modules

- [eta_harness](eta_harness.md): The contract between your system and `eta_run` — Phase 3 of the DST framework
(design: `docs/design.md`).
- [eta_log](eta_log.md): A deterministic event log, and the thing that makes a failing run readable.
- [eta_logger](eta_logger.md): `logger` for a system under simulation — the same API, routed into `eta_log`.
- [eta_net](eta_net.md): A simulated network: seeded message loss, delay and partitions between processes
in one VM.
- [eta_observe](eta_observe.md): Reading a process's state **without asking it** — the observability half of the DST
framework (design: `docs/design.md`).
- [eta_run](eta_run.md): The run driver — Phase 3 of the DST framework
(design: `docs/design.md`).
- [eta_sched](eta_sched.md): A serializing scheduler for BEAM processes — Phase 0 of the DST framework
(design: `docs/design.md`).
- [eta_shrink](eta_shrink.md): Delta-debugging a failing trace down to one a human can read — Phase 4 of the DST
framework (design: `docs/design.md`).
- [eta_statem](eta_statem.md): `gen_statem`'s own time-outs, on the virtual clock.
- [eta_time](eta_time.md): A virtual clock and timer wheel — Phase 1 of the DST framework
(design: `docs/design.md`).
- [eta_transform](eta_transform.md): A `parse_transform` that points a module's timer and clock calls at `eta_time` —
Phase 1 of the DST framework (design: `docs/design.md`).

