---
id: ADR-COM-FUL-002
title: Retain sale-time conditions until staff explicitly change them
product_area: commerce
module: fulfillment
revision: 1
status: proposed
design_intent: proposed
source_sha:
  services-commerce: c8b66a98e2490617aec38ba5c8165dd9bd0a8f9b
decision: >-
  Copy delivery conditions at placement and require a recorded staff override or
  policy application to alter an existing gate.
constrains:
  - DOM-COM-FUL-001
  - DOM-COM-FUL-002
  - WF-COM-FUL-001
  - WF-COM-FUL-008
origin: >-
  services-commerce:docs/migrations/obligation-register/README.md#D-P4-05,
  #D-P4-06 (build decisions)
alternatives:
  - option: Read today’s policy for every existing obligation.
    why_not: >-
      Live configuration would change existing sales after an administrative
      edit.
  - option: Allow policy application to remove frozen safeguards.
    why_not: >-
      Removing preparation safeguards would waive requirements without a
      specific intervention.
  - option: Run policy application as a retained data job.
    why_not: >-
      The present request is bounded and has no adopted tracked-job contract for
      policy application.
consequences:
  - Frozen gates let staff explain historical delivery conditions.
  - Repeated first-page policy application can leave later records unexamined.
  - A specific staff override can waive conditions with a retained reason.
supersedes: []
evidence:
  - >-
    services-commerce at c8b66a98:
    modules/fulfillment/services/policies/policy-resolution.ts,
    retroactive-policy.ts; services/persistence/obligations.ts:refreezeGate.
---

# Retain sale-time conditions until staff explicitly change them

## Context

Changing configuration should not silently reinterpret a sale already placed.

## Decision

Copy delivery conditions at placement and require a recorded staff override or policy application to alter an existing gate.

## Alternatives Considered

Read today’s policy for every existing obligation. Live configuration would change existing sales after an administrative edit.

Allow policy application to remove frozen safeguards. Removing preparation safeguards would waive requirements without a specific intervention.

Run policy application as a retained data job. The present request is bounded and has no adopted tracked-job contract for policy application.

## Consequences

Historical gates remain explainable. Large policy scopes require continuation beyond the current first-page behavior.
