# Ambient v0.1.0 - Table of Contents

> Process-scoped value overrides for Elixir – a per-test config layer, a frozen clock, a seeded RNG and overridable env vars that survive across process boundaries, never leak between async 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`, `Ambient.Random`, `Ambient.Env`
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.
  - [Ambient.Env](Ambient.Env.md): Overridable OS environment variables.
  - [Ambient.Random](Ambient.Random.md): A process-overridable, seedable pseudo-random number generator.

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

