# Ambient v0.2.0 - Table of Contents

> Per-process Application.get_env overrides, so config-dependent tests can stay async: true – plus the same machinery for any ambient value of your own. Overrides cross process boundaries, never leak between concurrent tests, and compile out of production builds.

## Pages

- [Ambient](readme.md)
- [Changelog](changelog.md)

## Modules

- Core
  - [Ambient](Ambient.md): Ambient – process-scoped value overrides for Elixir, with built-ins.
  - [Ambient.Error](Ambient.Error.md): The exception every Ambient misuse raises, carrying a machine-readable
`:reason` alongside the human-readable message.
  - [Ambient.Facade](Ambient.Facade.md): Re-export another module's public functions under the using module's name.
  - [Ambient.ProcessOverride](Ambient.ProcessOverride.md): ETS-backed process-local override store with cross-process inheritance –
the shared engine behind `Ambient.Clock` and `Ambient.Config`, and behind
any value module you build with `Ambient.Value`.
  - [Ambient.ProcessOverride.Server](Ambient.ProcessOverride.Server.md): Owns one ETS table for `Ambient.ProcessOverride` and monitors every PID that
writes an override into it. On `:DOWN`, the owning rows and any `{:allow, …}`
rows pointing at the dead PID are cleared.
  - [Ambient.Supervisor](Ambient.Supervisor.md): Supervises the per-table `Ambient.ProcessOverride.Server` processes.
  - [Ambient.Value](Ambient.Value.md): Build your own overridable value on top of `Ambient.ProcessOverride`.

- Built-in values
  - [Ambient.Clock](Ambient.Clock.md): An overridable wall clock.
  - [Ambient.Config](Ambient.Config.md): An app-config accessor with a per-process override layer for test isolation.

- Credo checks
  - [Ambient.Credo.NoDirectClock](Ambient.Credo.NoDirectClock.md): ## Basics
  - [Ambient.Credo.NoDirectConfig](Ambient.Credo.NoDirectConfig.md): ## Basics

