---
id: TST-PFM-DJE-142
title: Bulk admission
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: services-crm
files:
  - modules/data-jobs/tests/unit/services/jobs/bulk-admission.spec.js
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:
  - 'services-crm:modules/data-jobs/tests/unit/services/jobs/bulk-admission.spec.js'
assertion_inventory:
  - a tenant’s bulk batches from its workload policy
  - is the standard profile’s for a tenant with no policy
  - is the sandbox profile’s for a sandbox tenant with no policy
  - is the assigned profile’s while the assignment is unexpired
  - is the default profile’s once the assignment has expired
  - is the sandbox default once a sandbox tenant’s assignment has expired
  - is the default profile’s for an assignment the catalogue does not have
  - 'is the override’s value while the override is unexpired, raising the profile’s'
  - 'is the override’s value lowering the profile’s, with no expiry at all'
  - is the profile’s again once the override has expired
  - is the profile’s when the override sets another figure and not the bulk batches
  - 'refuses a default profile the catalogue does not have, as Platform’s merge does'
  - the profile port
  - answers the merged policy of the tenant it is asked about
  - 'answers the budget’s default per tenant, 4, when the read fails'
  - counts every fallback as policy.fallback.count
  - logs the first fallback of the container and not the next
  - 'reads a tenant once a minute, answering the cached figure in between'
  - the capacity a round is planned over
  - >-
    lists the other jobs with batches waiting as contenders, each with its tenant, submission, wait
    and counts
  - 'lists no contenders, and nothing in flight, when the job admitting is the only one'
  - the reconciler passes that purge the submission ledger
  - 'purges in the passes of 04:00 to 04:59 UTC'
  - skips every other pass of the day
  - judges the hour in UTC whatever zone the instant is held in
registration_note: Registration describes existing source; the suite is not executed by this documentation job.
---

# Bulk admission

## 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 admission. 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.
