Behaviour for a pipeline stage: token in, token out.
Stages must be deterministic (ADR 0005) — no wall-clock time, no randomness, no map-ordering leaking into output. Site-local modules will implement this same behaviour to hook the pipeline.
Summary
Callbacks
@callback run(Cherry.Build.t()) :: {:ok, Cherry.Build.t()} | {:error, String.t()}
Transforms the build token.