---
id: TST-PFM-DJE-014
title: Data job states
kind: unit
product_area: platform
module: data-job-engine
revision: 1
status: draft
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  macroservice-libraries: 54536a441935c6e09fdb7f96f0bec71c52ba4e03
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
  services-membership: 5994c270e8a37a30f848e99ba5b5ee6b87c08893
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
repository: macroservice-libraries
files:
  - packages/data-jobs/src/data-job-states.spec.ts
implements:
  - ATS-PFM-DJE-004-01
environment: local
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 1
isolation: In-memory fixtures and restored dependency doubles.
evidence:
  - 'macroservice-libraries:packages/data-jobs/src/data-job-states.spec.ts'
assertion_inventory:
  - the data job state machine
  - 'names a transition for every state, so no state is a dead end by omission'
  - 'lets an accepted job validate, queue, cancel or fail'
  - 'lets a validated job be applied, cancelled or expired, and never run without an apply'
  - lets a running job pause and a paused job resume
  - 'never resumes a cancelled job, and never cancels a finished one'
  - 'leaves every final state with nowhere to go, but for the retry of blocked items the plan allows'
  - holds no transition into a state the machine does not declare
  - >-
    lets a batch work only for a queued, running or validating job, so a paused or cancelling one
    stops at the boundary
  - the final state of a finished data job
  - succeeded when every item applied
  - 'succeeded when the rest were skipped as already delivered, which is not a rejection'
  - 'completed with rejections when one item was rejected, blocked or in conflict'
  - 'failed when the engine stopped systemically, whatever the counters say'
  - >-
    failed when items were never attempted and nothing was rejected, because the job did not finish
    its work
  - >-
    reports rejections rather than the failure when both are true, so the caller sees what was
    refused
  - 'cancelled when the job was cancelling, with items not attempted or refused, and never failed'
registration_note: Registration describes existing source; the suite is not executed by this documentation job.
---

# Data job states

## Verification Boundary

The suite checks an isolated production calculation, declaration or adapter. The structured assertion inventory records the checks present at the pinned revision.

## What This Suite Proves

The existing checks exercise data job states. The specification bindings identify the narrower outcomes supported by those assertions.

## What It Does Not Prove

An isolated check does not establish a deployed workflow, database enforcement or complete feature acceptance.

## Real Dependencies and Test Doubles

The production function or declaration is exercised with in-memory inputs and dependency doubles. This boundary does not require a live database.

## Must Not Be Doubled

The production function under examination and its returned decisions remain real; replacing their answers defeats the check.
