Validation Rules
Ordo validates recipes at two points: recipe creation and job submission. Both use the same core validation logic.
Recipe-level checks (run at creation and job submission)
recipearray is present — the definition must have arecipearray.No duplicate step IDs — every step
idmust be unique within the recipe.No duplicate output artifact names — two steps cannot produce artifacts with the same name.
All executor types exist — every step
typemust match a registered executor instep_executor.Input slots match exactly — the keys in a step's
inputsmust exactly match the executor'sacceptsslots. No extra slots, no missing slots.Output slots match exactly — the keys in a step's
outputsmust exactly match the executor'sproducesslots.Artifact flow is valid — for each
step:reference in a step'sinputs, the referenced artifact must be produced by a step that comes before it in topological order.No cycles — the artifact dependency graph must be acyclic.
Job-level checks (run at job submission only)
All required initial inputs are provided — every
job:artifact referenced in the recipe's step inputs must be present in the job'sinputsmap. No extras allowed either.Output references are valid — every artifact named in the job's
outputsmust be producible by the recipe.All required params are present — every step that declares
param_keysmust have all those keys present underparams.<step_id>in the job payload. Missing a required param is a 400 error.
What Ordo does NOT validate
- Artifact URIs — Ordo stores them but doesn't check that files exist in MinIO.
- Artifact hashes — stored but not verified.
- Param value formats (e.g. whether
source_epsgis a valid EPSG code) — validated by the executor at runtime, not by Ordo.