---
id: TST-PFM-DJE-007
title: Bulk data job workflow
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/bulk-data-job-workflow.spec.ts
implements: []
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/bulk-data-job-workflow.spec.ts'
assertion_inventory:
  - '@rhythmsoftware/macroservice-data-jobs: a bulk task Lambda throttles waits instead of failing'
  - >-
    retries every Lambda task, the publication and the failure task included, on the four errors of
    a Lambda that never ran
  - 'backs off exponentially with full jitter, up to eight minutes for one invocation'
  - keeps the standard retry for every other error of the domain tasks
  - fits a throttled invocation many times over inside the execution timeout it derives
  - 'waits for its batches between two admissions in the workflow, not in the task, and nowhere else'
  - >-
    lets admission choose a longer wait while a full ceiling holds its batches back, and the reading
    and planning loops wait only while the job is paused
  - continues each of its three loops as a new execution before the history limit ends it
  - 'walks admission locally through the waits it asks for, past the continuation count, to the end'
  - honours a throttle retry the service passes
  - '@rhythmsoftware/macroservice-data-jobs: a bulk workflow that fails goes to the failure task'
  - names the jobs package failure operation as its failure task
  - rides out a throttle shorter than its throttle retry and never reaches the failure task
  - goes to the failure task with the caught error once the throttle outlasts its retries
  - 'goes to the failure task from the publication as well, before any data job task has run'
registration_note: Registration describes existing source; the suite is not executed by this documentation job.
---

# Bulk data job workflow

## 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 bulk data job workflow. 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.
