---
id: ADR-PFM-DJE-006
title: Capture and recheck record versions
product_area: platform
module: data-job-engine
revision: 1
status: proposed
design_intent: confirmed
source_sha:
  macroservice-libraries: 54536a441935c6e09fdb7f96f0bec71c52ba4e03
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
decision: >-
  Interactive validation captures record versions for execution; keyed
  deliveries use producer-written versions under the reject policy, and
  conflicts can be validated as a new job.
constrains:
  - DOM-PFM-DJE-001
  - DOM-PFM-DJE-004
  - WF-PFM-DJE-003
  - WF-PFM-DJE-006
  - WF-PFM-DJE-007
origin: >-
  services-crm:docs/milestones/CRM-M7-data-operations.md D-37 and D-38;
  services-platform:docs/standards/record-write-contracts.md#W4
alternatives:
  - option: Accept last-writer-wins updates by default
    why_not: Unconditional writes can replace edits made after validation.
  - option: Retry a conflict using its old expected version
    why_not: >-
      The stale version would conflict again; removing it changes the protection
      policy.
consequences:
  - >-
    Captured or supplied expected versions protect intervening edits;
    overwrite-policy deliveries without an expected version can replace them.
  - >-
    A record already containing the requested values can finish as applied and
    unchanged.
  - The console does not expose the keyed overwrite policy.
supersedes: []
evidence:
  - >-
    macroservice-libraries at 54536a44: src/version-capture.ts,
    revalidate-data-job-conflicts.ts, keyed-item-decision.ts
---

# Capture And Recheck Record Versions

## Context

Other people can change records while a bulk job waits or executes.

## Decision and Origin

Interactive validation captures record versions for execution; keyed deliveries use producer-written versions under the reject policy, and conflicts can be validated as a new job. The origin recorded above supplies the authority for this choice; implementation evidence supplies the limits described here.

## Alternative Comparison

Accept last-writer-wins updates by default: Unconditional writes can replace edits made after validation.

Retry a conflict using its old expected version: The stale version would conflict again; removing it changes the protection policy.

## Consequences

Captured or supplied expected versions protect intervening edits; overwrite-policy deliveries without an expected version can replace them.

A record already containing the requested values can finish as applied and unchanged.

The console does not expose the keyed overwrite policy.
