Authoring Custom Pipelines#
The orchestrator treats pipelines as declarative DAGs of
Step objects. Adding a new protocol therefore boils
down to composing steps and teaching batter.orchestrate how to select them.
Write a factory (see
batter.pipeline.factory). Build a list ofStepinstances using the helper_stepso each node receives aStepPayload.Expose selection logic via
batter.orchestrate.pipeline_utils.select_pipeline(). Add a branch that calls your factory whenprotocol == "<name>".(Optional) Register an :class:`~batter.orchestrate.protocols.FEProtocol` if you need protocol-specific validation or metadata. Look at
batter.orchestrate.protocol_implfor reference.Update :class:`batter.config.run.RunConfig` so the new protocol string is accepted and
fe_simis coerced into the appropriate Pydantic model.Test and document – add a lightweight unit test that asserts the ordered step names and capture any new YAML options in Configuration Overview.
Once these pieces are in place, batter.orchestrate.run.run_from_yaml() will
automatically schedule the new pipeline when the user selects your protocol.