Docs navigation

DocsShared referenceManifest format

Manifest format

weev generate scans your code and writes .weev/build/manifest.json — the workflow definition that weev push deploys. Version numbers and the content hash are assigned server-side; the manifest document itself carries neither.

Shape

The document

manifest.jsonjson
{
  "batches": [
    {
      "name": "monthlyBillingRun",
      "jobs": [
        { "name": "loadActiveSubscriptions", "config": {} },
        { "name": "generateInvoices", "config": {} }
      ],
      "dag": [
        { "from": "loadActiveSubscriptions", "to": "generateInvoices" }
      ] // omitted entirely when a batch has no edges
    }
  ]
}

ManifestContent

{ batches: BatchDefinition[] } — the only top-level field.

BatchDefinition

{ name, description?, jobs: JobDefinition[], dag?: DagEdgeDefinition[] }. The dag key is omitted (not []) when a batch has no edges.

JobDefinition

{ name, description?, config? }. config is currently unconstrained and emitted as {} by the scanner.

DagEdgeDefinition

{ from, to } — from is the predecessor job name, to the dependent job. Both must be jobs in the same batch.

Validation

What fails the push

Both generate and push run the same validator and collect every error rather than stopping at the first. A manifest is rejected for:
  • Duplicate job name anywhere in the manifest — job names are unique across the whole manifest, not just within a batch.
  • A batch with zero jobs.
  • An edge whose from or to is not a job in the same batch — cross-batch dependencies are impossible.
  • A self-dependency (from === to).
  • A duplicate edge (same from → to) within a batch.
  • A cycle within a batch's DAG.

Identity

Hashing and versions

The content hash is a SHA-256 over a deep key-sorted serialization of the manifest (array order preserved) — a stable public contract pinned by golden-hash tests. generate records it in .weev/build/manifest.meta.json alongside scan warnings and per-job source locations; the server computes the same hash and assigns the monotonically increasing version on weev push. See the CLI reference for the push and deploy flow.