---
id: ADR-CRM-REG-009
title: Changes Are Made Against the Version Read
product_area: crm
module: regions
revision: 2
status: proposed
design_intent: proposed
source_sha:
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
decision: >-
  Regional and rule updates check supplied versions, but optional settings versions, unversioned deletion and
  version-advancing unchanged writes remain exceptions to the recorded version policy.
constrains:
  - DOM-CRM-REG-001
  - DOM-CRM-REG-002
  - STATE-CRM-REG-001
  - STATE-CRM-REG-002
  - SVC-CRM-REG-regions
origin: >-
  D-05 (Andrew, 2026-10-19), cited in services-crm:docs/milestones/CRM-M1-contacts-and-organizations.md#D-05
  and services-crm:modules/regions/aws/api/regions.routes.ts
alternatives:
  - option: Require a settings version for every save.
    why_not: >-
      Unsaved settings currently return no version, which explains the code exception but does not approve it
      permanently; an initial-version contract could resolve this.
  - option: Allow all writes without version checks.
    why_not: That would contradict the recorded shared concurrency policy and permit lost edits.
consequences:
  - An omitted settings version permits overwriting newer settings.
  - Unchanged accepted updates still advance versions and timestamps contrary to the no-op policy.
  - Unversioned deletion can remove a record changed since the caller last read it.
supersedes: []
evidence:
  - >-
    services-crm at a8d1364f: modules/regions/aws/api/regions.routes.ts (replaceRequest, requirePatchVersion,
    updateRegionAssignmentSettings); services/persistence/regions.ts;
    services/persistence/region-assignment-settings.ts.
---

# Changes Are Made Against the Version Read

## Context

The recorded shared version policy requires current versions for field-changing writes and preserves metadata on unchanged saves. Regional implementation meets only part of that policy.

## Decision

Replacement and patch of definitions or individual rules require versions. Settings accept omission, deletion has no version, and accepted updates increment versions even without a business change. These observed exceptions remain proposals or gaps, not additional approved choices.

## Alternatives Considered

Require a settings version for every save. Unsaved settings currently return no version, which explains the code exception but does not approve it permanently; an initial-version contract could resolve this.

Allow all writes without version checks. That would contradict the recorded shared concurrency policy and permit lost edits.

## Consequences

An omitted settings version permits overwriting newer settings. Unchanged accepted updates still advance versions and timestamps contrary to the no-op policy. Unversioned deletion can remove a record changed since the caller last read it.
