Skip to content

CAP-PFM-DJE-005Inspect job progress and account for its changes

Markdown

CAP-PFM-DJE-005

Inspect job progress and account for its changes

Markdown
  • DocumentDraft
  • Product intentConfirmed
  • ImplementationPartially observed

KindCapabilityProduct areaPlatformModuleData Job EngineRevision1

Read atmacroservice-libraries 54536a44services-crm a8d1364fservices-platform ad3f6a65react-console baf6dae3

The Formal Contract

The narrative above explains; the sections below are authoritative — the rules, scenarios and tests this document binds.

Outcomes
Authorized users can find jobs with their submitters and totals.Ordered result and refusal pages explain individual outcomes.Record history identifies the responsible job.
Surfaces
consoleapi
Intent sources
services-platform:docs/milestones/PLAT-M19-data-job-engine-foundations.md#D3services-platform:docs/milestones/PLAT-M19-data-job-engine-foundations.md#D4services-platform:docs/milestones/PLAT-M19-data-job-engine-foundations.md#D6services-platform:docs/milestones/plans/PLAT-M19-plan.md#S10services-platform:docs/milestones/plans/PLAT-M19-plan.md#S20services-platform:docs/milestones/PLAT-M19-data-job-engine-foundations.md#R3services-platform:docs/milestones/plans/PLAT-M21-plan.md#Added 2026-10-22 (from PLAT-M19 review R3): results at scale, server side

Controls

32 controls apply, from the corpus control catalogue.

TC-AVL-004 TC-AZ-001 TC-AZ-002 TC-AZ-003 TC-AZ-004 TC-DAT-001 TC-DAT-002 TC-DAT-003 TC-DAT-004 TC-DAT-005 TC-IAM-001 TC-IAM-002 TC-IAM-004 TC-IAM-005 TC-LOG-001 TC-LOG-002 TC-LOG-003 TC-LOG-004 TC-LOG-005 TC-PI-001 TC-PI-002 TC-PI-003 TC-PI-004 TC-PI-005 TC-PRV-001 TC-PRV-002 TC-TEN-001 TC-TEN-002 TC-TEN-003 TC-VEN-001 TC-VEN-002 TC-VEN-003

Permissions

KeyChecked atScope
crm.contacts.bulkapitenant
crm.organizations.bulkapitenant
platform.custom-fields.bulkapitenant
platform.custom-records.updateservicetenant
data.jobs.viewconsoletenant

Business Rules

10 rules, 7 to be proved before approval. A rule's product intent is derived from its origin: 10 confirmed by a product decision, the rest inheriting this capability's confirmed.

IdRuleKindEnforced atProvenance
01must prove
Confirmed
Workspace-wide access for a record kind permits viewing all of its jobs; without it, service-level visibility is limited to the caller’s submissions and conceals other jobs.
permissionservicetest
02must prove
Confirmed
Job lists use newest-first paging with at most 100 rows and strict filters for state, operation, mode, submitter and submission dates.
validationapitest
services-crm:modules/data-jobs/tests/e2e/data-jobs.e2e.spec.js#refuses a state no job can be in with 400, rather than a filter it quietly ignores
03must prove
Confirmed
Result and refusal pages retain input order, contain at most 100 rows and resume after the previous cursor; an outcome filter narrows the result set.
policyapi, servicetest
services-crm:modules/data-jobs/tests/integration/services/jobs/contact-data-jobs.integration.spec.js#answers the next page from the cursor the last one gave, so no item is read twice
04
Confirmed
Delivered job details identify the producer, delivery, referenced uploads and filenames, and selected conflict policy.
policyapidocumented
services-crm:docs/data-jobs.md#Listing a tenant's jobs
05must prove
Confirmed
Record revisions commit with job and batch attribution and the submitter’s identity; change events also identify their job.
invariantservice, databasetest
services-crm:modules/data-jobs/tests/integration/services/jobs/contact-data-jobs.integration.spec.js#stamps the job on the revision, so every record one job changed can be listed
06
Confirmed
An initial import records one history revision for each created record.
policyservicedocumented
07must prove
Confirmed
The product should keep jobs and their outcome evidence for 90 days after completion and allow rollback during that window; a retention sweep is still absent.
lifecycleservice, databasedocumented
08must prove
Confirmed
The daily workspace purge removes idempotency entries older than 30 days.
lifecycleservice, databasetest
macroservice-libraries:packages/data-jobs/src/tests/integration/submission-purge.integration.spec.ts#deletes the tenant's rows older than 30 days and keeps the rest, the row exactly 30 days old included
09must prove
Confirmed
The product should provide server-side searches by record, producer key or input position, refusal totals by code and server-built exports; these remain planned.
policyapi, consoledocumented
services-platform:docs/milestones/plans/PLAT-M21-plan.md#Added 2026-10-22 (from PLAT-M19 review R3): results at scale, server side
10
Confirmed
Job response timestamps use UTC with millisecond precision.
policyapitest
services-crm:modules/data-jobs/tests/integration/services/jobs/data-job-instants.integration.spec.js#answers a finished apply’s submission, queueing, start and finish in ISO 8601

Scenarios

IdGivenWhenThenProvenance
01An API import contains twelve contact rows, including one invalid e-mail address.The administrator inspects the job through Data Imports.List and detail agree on eleven applied and one refused; refusal detail identifies the row and field, and a created contact’s history identifies its job.test

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.