Concepts
Builds, jobs, steps
One execution, one unit of work, one DSL verb.
A build is one execution of a pipeline. The evaluator expands the pipeline into a DAG of jobs, and each job traces back to one step in the DSL. The API persists every level so the dashboard and CLI can present the same conceptual model.
What each level is
| Level | What it is | Persisted as |
|---|---|---|
| Build | One execution of a pipeline against a source bundle. | Build row, scoped per-pipeline by number. |
| Job | One unit of work handed to a runner. | Job row, with a state column. |
| Step | The DSL verb that produced the job. | Inlined in the pipeline's evaluated JSON. |
Job lifecycle
The state machine in api/src/Harmont/Executor/Engine.hs is the source
of truth. The canonical happy path:
pending → scheduled → running → passed
↘ failed
↘ canceledReal states include waiting, assigned, accepted, timed_out, and
broken; see JobState in api/src/Harmont/Model/Enums.hs for the
full set.
Source of truth
api/src/Harmont/Model.hs—BuildandJobPersistent models.api/src/Harmont/Executor/Engine.hs— legal state transitions.