Hydra ETL
Build your first job
Get startedHydra CLILesson 3
Lesson 3 of 11 · Validate the manifests

Check the manifests before touching data

Validate syntax, Pydantic models, and pipeline references before Hydra opens a source or writes a destination.

hdrctl validateabout 8 minutesfirst-job scaffolded

1. Objective

Goal

Run hdrctl validate first-job and use its report to prove that every required manifest is present, each DSL model is valid, and both pipeline endpoint IDs resolve.

Course project

Keep working from the cli-course folder. The job is named first-job; every command and terminal excerpt in this lesson was run against that same project.

Prerequisites

  • Lesson 2 completed and its checklist confirmed.
  • The repository clone and hdrctl entry point from lesson 1.
  • A terminal opened in the parent folder that contains first-job.

2. Steps

01Review the validation surface

Objective

Confirm the supported path and strictness options before running the command.

Actions

  1. Ask the subcommand for help.
  2. Verify that the job path is positional and that --strict is optional.
hdrctl validate --help
What you should see

The help lists the path argument plus strict and explicit-manifest options.

Usage: hdrctl validate [OPTIONS] [PATH]

Options:
  --strict
  -s, --sources FILE
  -d, --destinations FILE
  -p, --pipeline FILE
  -t, --transformations FILE

02Validate the cumulative job

Objective

Check all generated manifests and their cross-file references in one pass.

Actions

  1. Stay in the folder that contains first-job.
  2. Run hdrctl validate against that job directory.
hdrctl validate first-job
What you should see

Every manifest is present, every Pydantic model is valid, and both endpoint IDs resolve.

🔍 DSL Validation  first-job

ok  pipeline.yaml                        — present
ok  sources.yaml                         — Pydantic valid
ok  destinations.yaml                    — Pydantic valid
ok  transformations.yaml                 — Pydantic valid
ok  pipeline.from                        — resolved: src_csv
ok  pipeline.to                          — resolved: dest_csv

✅ DSL valid — no errors detected.

03Trace the resolved IDs

Objective

Connect the validator verdict to the exact declarations it checked.

Actions

  1. Open pipeline.yaml and note src_csv and dest_csv.
  2. Find those IDs under sources and destinations.
Get-Content first-job\sources.yaml
Get-Content first-job\destinations.yaml
What you should see

The IDs named by the pipeline exist once in their respective manifests.

sources:
  src_csv:
    type: csv

destinations:
  dest_csv:
    type: csv

04Record the validation boundary

Objective

Distinguish a DSL verdict from a connector test.

Actions

  1. Confirm that no output file was created by validation.
  2. Keep the successful verdict as the baseline for the next lesson.
Get-ChildItem first-job\data
What you should see

Only the scaffolded input is required at this stage; validation does not write data.

input.csv
Tips and traps

Keep the command beside its result. A verdict alone proves nothing a week later.

The Valid badge means the manifest parses. Only a run proves the job works.

Hydra resolves relative paths from the job folder, not from where you typed.

Trust the exit code, not the wording. A reassuring message can follow a failure.

When a command writes a file, open the file. Output can be stale or partial.

Durations and row counts change between runs. Never quote them as thresholds.

3. Checklist

VerificationExpected result
Final validator lineDSL valid — no errors detected.
Source modelsources.yaml — Pydantic valid
Destination modeldestinations.yaml — Pydantic valid
Pipeline referencesBoth src_csv and dest_csv resolve

4. Troubleshooting

SymptomCauseFix
A manifest is reported missingThe command targets the wrong folderRun from the parent folder and pass first-job
A pipeline ID does not resolveThe ID differs across filesMake pipeline.from and pipeline.to match the manifest keys exactly
YAML parsing failsIndentation or quoting changed the structureRestore spaces and compare with the scaffolded shape

5. Next lesson

The declarations are internally consistent, but that does not yet prove that the local CSV paths can be used. The next lesson runs hdrctl test to check sources, destinations, transformations, and environment resolution without producing rows.

Close by

0 / 0 on this page