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.