# Enact v0.1.0 - Table of Contents

> A thin, behaviour-based action layer for application write operations.

## Pages

- [Enact](readme.md)
- [Changelog](changelog.md)
- [Design Specification](spec.md)

- Guides
  - [Usage Rules](usage-rules.md)
  - [Change Detection](change-detection.md)
  - [Phoenix Integration](phoenix-integration.md)
  - [Recipes](recipes.md)
  - [Testing Host Applications](testing.md)

## Modules

- [Enact](Enact.md): A thin, behaviour-based action layer for application write operations.

- Behaviours &amp; protocols
  - [Enact.Action](Enact.Action.md): The behaviour every action module implements.
  - [Enact.Actor](Enact.Actor.md): Answers `anonymous?/1` for any actor term.
  - [Enact.InputSchema](Enact.InputSchema.md): The contract for top-level input-schema modules — plain Ecto embedded
schemas that adopt this behaviour via `use Enact.InputSchema`, which
sets `@behaviour` and imports `cast_input/4` and nothing more.
`use Ecto.Schema`, `import Ecto.Changeset`, and `@primary_key false`
stay explicit in the module. Plain `@behaviour` + `import` remains
equivalent.

- Data
  - [Enact.Context](Enact.Context.md): The per-invocation context threaded through every pipeline step.
  - [Enact.Error](Enact.Error.md): The closed error taxonomy for action results.
  - [Enact.Preview](Enact.Preview.md): The result of `Enact.dry_run/3` — a distinct struct so callers are
structurally unable to confuse "validated" with "executed".

- Pipeline support
  - [Enact.Guardrails](Enact.Guardrails.md): Mechanical enforcement of input-schema invariants — every "just don't
do X" rule that is detectable gets detected and raised, upgrading
conventions to invariants.
  - [Enact.Resolve](Enact.Resolve.md): Reference resolution — the pipeline step that turns payload references
(public-facing IDs like `usr_XXXX`) into loaded records.
  - [Enact.Validations](Enact.Validations.md): Changeset-pipeline combinators for action `validate/2` callbacks.

- Host helpers
  - [Enact.Delegates](Enact.Delegates.md): Opt-in helper that generates context one-liners for `Enact.run/3`,
`Enact.dry_run/3`, `Enact.subject/3`, and `Enact.authorized/3`.

- Testing
  - [Enact.Test](Enact.Test.md): Shared test helpers for host-app action tests (and Enact's own suite).

