Skip to content

CAP-PFM-DJE-006Preserve intervening edits during bulk changes

Markdown

CAP-PFM-DJE-006

Preserve intervening edits during bulk changes

Markdown
  • DocumentDraft
  • Product intentConfirmed
  • ImplementationObserved

KindCapabilityProduct areaPlatformModuleData Job EngineRevision1

Read atmacroservice-libraries 54536a44services-crm a8d1364freact-console baf6dae3

The Formal Contract

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

Outcomes
Intervening changes are preserved and identified for review.Conflicted input can be validated again against current records.Producer deliveries respect staff changes under the default policy.
Surfaces
consoleapi
Intent sources
services-crm:docs/milestones/CRM-M7-data-operations.md#D-37services-crm:docs/milestones/CRM-M7-data-operations.md#D-38services-platform:docs/milestones/plans/PLAT-M19-plan.md#A4services-platform:docs/milestones/plans/PLAT-M19-plan.md#S05

Controls

24 controls apply, from the corpus control catalogue.

TC-AVL-001 TC-AVL-004 TC-AZ-001 TC-AZ-002 TC-AZ-003 TC-AZ-004 TC-DAT-001 TC-DAT-003 TC-LOG-004 TC-LOG-005 TC-MON-001 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.contacts.updateservicerecord
crm.organizations.updateservicerecord

Business Rules

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

IdRuleKindEnforced atProvenance
01must prove
Confirmed
Validation captures versions for eligible identifier-based changes, omitting contact changes already satisfied by current values; application preserves intervening edits as conflicts and processes the remaining records.
policyserviceobserved
02must prove
Confirmed
An input record’s explicit expected version takes precedence over a captured version; a mismatch reports a version conflict with the last editor and time, without exposing values.
policyservicedocumented
services-crm:docs/data-jobs.md#What each contact's outcome can be
03must prove
Confirmed
A contact already holding the requested values reports applied and unchanged even when another edit advanced its version.
policyservicetest
services-crm:modules/data-jobs/tests/integration/services/jobs/contact-update-versions.integration.spec.js#applies the contact whose colleague made the very change the job asks for, rather than calling it a conflict
04must prove
Confirmed
Conflict revalidation creates a linked validation of just the conflicted input at current versions; unfinished jobs, jobs without conflicts, file jobs and rollbacks refuse it.
lifecycleservicetest
services-crm:modules/data-jobs/tests/integration/services/jobs/contact-update-versions.integration.spec.js#makes the revalidation a new validation of the one conflicted contact, linked to the job it corrects
05must prove
Confirmed
Under reject policy, a keyed update checks the version last written by its producer and preserves later staff edits as conflicts; overwrite policy permits replacement unless an explicit expected version prevents it.
policyservicetest
06must prove
Confirmed
A keyed patch below the applied producer revision is stale and skipped; a patch at the same revision can supply a further part of that revision.
policyserviceobserved
07
Confirmed
The crosswalk retains the version the producer actually wrote rather than adopting a later staff-edited version.
invariantservice, databasedocumented
macroservice-libraries:packages/data-jobs/README.md#Keyed writes and the ID crosswalk
08
Confirmed
File-job protection uses producer crosswalk versions and explicit expected versions instead of a validation snapshot.
invariantservicedocumented
macroservice-libraries:packages/data-jobs/README.md#Versions: captured at validation, verified at application

Scenarios

IdGivenWhenThenProvenance
01An administrator previews title changes for 35 contacts before a colleague edits one.They approve the job and then revalidate its conflict.Thirty-four contacts change initially; the conflict identifies the editor and time, and a separately approved revalidation can change the remaining contact.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.