# Types


Build types for effects-powered builders.

`BuildStep` and `BuildPlan` describe build pipelines at the type level,
enabling validation before materialization into derivations.

## `BuildPlan`

_BuildPlan: open-record type for a complete build pipeline; requires non-empty `name` and a `[BuildStep]` list, permits `sources` and `context`._

Build plan: a complete build pipeline.

Required: `name` (non-empty), `steps` (list of `BuildStep`).
Optional (open record): `sources`, `context`.

## `BuildStep`

_BuildStep: open-record type for a single shell step in a build pipeline; requires non-empty `name` and `run`, permits `tools`/`env`/`when`/etc._

Build step: a single step in a build pipeline.

Required: `name` (non-empty), `run` (shell fragment).
Optional (open record): `description`, `tools`, `env`, `inputType`,
`outputType`, `when`.

