---
id: TST-PFM-DJE-167
title: Migration progression and repeat loading
kind: integration
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: services-platform
files:
  - modules/data-jobs/tests/integration/lifecycle/data-run-guarantees.integration.spec.js
implements:
  - ATS-PFM-DJE-016-05
  - ATS-PFM-DJE-016-06
environment: local
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 5
isolation: >-
  Suite-owned fixture records, job identifiers and workspace contexts; teardown removes the fixture
  data.
evidence:
  - >-
    services-platform:modules/data-jobs/tests/integration/lifecycle/data-run-guarantees.integration.spec.js
assertion_inventory:
  - 'data runs over a whole load: resume, re-run, and a step finished with rejections'
  - 'resume: a client that stops reading part way'
  - 'leaves the run where it stood while nobody reads it, though a dataset finished in its service'
  - submits nothing while nobody reads it
  - >-
    takes the run on from where it stood at the next read: the finished dataset recorded, the next
    one submitted
  - finishes the run succeeded once the reads resume
  - submits every dataset exactly once over the whole load
  - 'accounts for every record the package claimed, and finds the tenant ready'
  - 're-run: the same package registered again'
  - 'refuses the same package while its run is unfinished, naming the run that holds it'
  - submits nothing twice when Start is pressed again on the running run
  - finishes the first run succeeded (premise)
  - registers the same package again as a new run once the first has finished
  - 'submits each dataset of the new run once, after the first run’s three'
  - finishes the reload succeeded when its services report every record skipped
  - 'accounts for every record of the reload as skipped, with nothing missing and nothing applied'
  - a dataset another service finished with rejections
  - 'finishes its step succeeded, with the rejections counted'
  - goes on to the dataset that depends on it
  - keeps the run running rather than failing it
  - 'asked CRM over its own routes, with the staff caller’s own token'
  - 'names the rejections in the readiness verdict, so the tenant is not declared ready'
registration_note: Registration describes existing source; the suite is not executed by this documentation job.
---

# Migration progression and repeat loading

## Verification Boundary

The suite checks the production service or shared engine against its database fixture. The structured assertion inventory records the checks present at the pinned revision.

## What This Suite Proves

The existing checks exercise migration progression and repeat loading. The specification bindings identify the narrower outcomes supported by those assertions.

## What It Does Not Prove

Local execution does not establish deployed queue, storage or service behavior. Independent test cases do not establish a complete cross-feature process.

## Real Dependencies and Test Doubles

Run registration and progression use real Postgres. Child-job calls and uploaded input are supplied through test ports, so remote service deployment is outside this boundary.

## Must Not Be Doubled

The database effects, security context and production operation under examination remain real. Their outcomes cannot be replaced with canned success responses.
