---
id: ADR-CRM-REG-005
title: 'First Enabled Match Wins, With the Fallback Last'
product_area: crm
module: regions
revision: 2
status: proposed
design_intent: confirmed
source_sha:
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
decision: >-
  Matching evaluates enabled geographic rules in saved order, defers fallback to the last enabled fallback,
  and preserves lexical postal, exact state and case-insensitive country comparison across preview and
  placement.
constrains:
  - DOM-CRM-REG-002
  - DOM-CRM-REG-003
  - WF-CRM-REG-001
  - WF-CRM-REG-003
  - SCR-CRM-REG-002
origin: >-
  Andrew, 2026-10-08 (behaviour kept as Rhythm 1.0 did) and the port requirement to replace or remove stale
  calculated assignments, cited in services-crm:docs/migrations/crm-regions/README.md#Behaviour changes
alternatives:
  - option: Interpret postal endpoints numerically or by national format.
    why_not: This changes retained comparison behavior and needs its own product decision.
  - option: Require one fallback or use the first enabled fallback.
    why_not: >-
      Retained behavior selects the last enabled fallback; browser warnings identify repeated fallback
      coverage instead of changing that result.
consequences:
  - Coverage authors should put specific geographic rules before broader matches.
  - A reversed lexical postal interval is accepted but contributes no matches.
  - Absent recognized address input prevents fallback matching.
  - The shared matcher keeps saved-policy preview aligned with the geographic calculation used in placement.
supersedes: []
evidence:
  - >-
    services-crm at a8d1364f: modules/regions/services/region-assignment/region-matching.ts (matchRegionRule,
    criteriaOf); lib/geography/criteria.ts.
---

# First Enabled Match Wins, With the Fallback Last

## Context

Customers depend on retained geographic comparison semantics. Changing those comparisons can move records without a coverage edit.

## Decision

One matcher supplies preview, ordinary placement and forced recalculation. Disabled rules are skipped. Absent deciding input and addresses outside all enabled coverage produce no calculated region; missing country compares as the United States.

## Alternatives Considered

Interpret postal endpoints numerically or by national format. This changes retained comparison behavior and needs its own product decision.

Require one fallback or use the first enabled fallback. Retained behavior selects the last enabled fallback; browser warnings identify repeated fallback coverage instead of changing that result.

## Consequences

Coverage authors should put specific geographic rules before broader matches. A reversed lexical postal interval is accepted but contributes no matches. Absent recognized address input prevents fallback matching. The shared matcher keeps saved-policy preview aligned with the geographic calculation used in placement.
