Skip to content

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)

  1. recipe array is present — the definition must have a recipe array.

  2. No duplicate step IDs — every step id must be unique within the recipe.

  3. No duplicate output artifact names — two steps cannot produce artifacts with the same name.

  4. All executor types exist — every step type must match a registered executor in step_executor.

  5. Input slots match exactly — the keys in a step's inputs must exactly match the executor's accepts slots. No extra slots, no missing slots.

  6. Output slots match exactly — the keys in a step's outputs must exactly match the executor's produces slots.

  7. Artifact flow is valid — for each step: reference in a step's inputs, the referenced artifact must be produced by a step that comes before it in topological order.

  8. No cycles — the artifact dependency graph must be acyclic.

Job-level checks (run at job submission only)

  1. All required initial inputs are provided — every job: artifact referenced in the recipe's step inputs must be present in the job's inputs map. No extras allowed either.

  2. Output references are valid — every artifact named in the job's outputs must be producible by the recipe.

  3. All required params are present — every step that declares param_keys must have all those keys present under params.<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_epsg is a valid EPSG code) — validated by the executor at runtime, not by Ordo.