# Backends


Backends translate a validated `BuildPlan` into an artifact for another
build substrate. Unlike the program interpreters they do not fold over
the operation alphabet — they consume the plan that `materialize`
produces, so the interpreter coverage grid does not apply. Each backend
declares the plans it cannot honor through `unsupportedReasons`; nothing
is miscompiled silently.

## `dockerfile`

_dockerfile backend: emits a Dockerfile from a substrate-neutral BuildPlan._

Translates a validated `BuildPlan` into a Dockerfile over a
parameterizable base image: tool preflight by name, local inputs
copied from the build context, and one RUN per rendered step. Plans
it cannot honor are rejected with explicit reasons.

## `shell`

_shell backend: emits a standalone bash script from a substrate-neutral BuildPlan._

Translates a validated `BuildPlan` into a standalone bash script:
tool preflight by name, pathMap exports, library-path export, and the
rendered step commands. Plans it cannot honor are rejected with
explicit reasons.

