0004 · The workflow is a validated file, not code
- Status: Accepted
- Date: 2026-08-10
Context
The sequence a data product is built in — phases, gates, who is accountable — is what an organisation argues about and settles. Settling it should not need a deploy, and an edited process that is subtly wrong should not render as if it were right.
Decision
dpf/workflow.yaml defines phases, steps, gates and RACI. It is loaded and validated
at import: a step that does not exist, a dependency after the step that needs it, or a
phase without an outcome or a document fails start-up with the list of problems.
DPF_WORKFLOW points at another file.
Consequences
A different process is a different file and python -m dpf workflow FILE checks it.
Step state is derived from what each step produced, so the code still names the
artefacts; a step that produces something new needs code as well as YAML.