---
id: FAS-COM-CAT-01
title: 'Sale Configuration: Feature Acceptance Suite'
feature: FEAT-COM-CAT-01
product_area: commerce
module: catalog
revision: 1
status: proposed
product_intent: proposed
source_sha:
  services-commerce: c8b66a98e2490617aec38ba5c8165dd9bd0a8f9b
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
capabilities:
  - CAP-COM-CAT-001
  - CAP-COM-CAT-002
  - CAP-COM-CAT-003
  - CAP-COM-CAT-004
scenarios:
  - id: FAS-COM-CAT-01-01
    title: Prepared selling configuration supports a consistent quote
    kind: behaviour
    exercises:
      - CAP-COM-CAT-001
      - CAP-COM-CAT-002
      - CAP-COM-CAT-003
      - CAP-COM-CAT-004
    relies_on:
      - ATS-COM-CAT-001-01
      - ATS-COM-CAT-002-01
      - ATS-COM-CAT-003-01
      - ATS-COM-CAT-004-04
    preconditions: 'An administrator owns two active policies, a store, a published product and a postal tax zone.'
    steps:
      - do: >-
          Save the store’s policy, set application defaults, resolve the context and quote its
          product at the postal address.
        provenance: proposed
        source:
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-001-define-how-each-kind-of-sale-is-billed-and-paid.md#ATS-COM-CAT-001-01
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-002-decide-which-checkout-policy-a-sale-follows.md#ATS-COM-CAT-002-01
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-003-open-a-store-that-sells-a-chosen-assortment.md#ATS-COM-CAT-003-01
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-004-charge-tax-according-to-where-the-buyer-is.md#ATS-COM-CAT-004-04
    expected: >-
      The store and default choices are readable and the quote identifies the applicable tax
      components.
    negative: false
    data_needs: >-
      A run-owned workspace, named fixture products and independent caller grants; deterministic
      clock for dated cases.
    bound_to: []
    provenance: proposed
    source:
      - >-
        rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-001-define-how-each-kind-of-sale-is-billed-and-paid.md#ATS-COM-CAT-001-01
      - >-
        rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-002-decide-which-checkout-policy-a-sale-follows.md#ATS-COM-CAT-002-01
      - >-
        rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-003-open-a-store-that-sells-a-chosen-assortment.md#ATS-COM-CAT-003-01
      - >-
        rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-004-charge-tax-according-to-where-the-buyer-is.md#ATS-COM-CAT-004-04
    assertions:
      - expect: >-
          The store and default choices are readable and the quote identifies the applicable tax
          components.
        provenance: proposed
        source:
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-001-define-how-each-kind-of-sale-is-billed-and-paid.md#ATS-COM-CAT-001-01
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-002-decide-which-checkout-policy-a-sale-follows.md#ATS-COM-CAT-002-01
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-003-open-a-store-that-sells-a-chosen-assortment.md#ATS-COM-CAT-003-01
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-004-charge-tax-according-to-where-the-buyer-is.md#ATS-COM-CAT-004-04
  - id: FAS-COM-CAT-01-02
    title: A retained store prevents policy deletion
    kind: interaction
    exercises:
      - CAP-COM-CAT-001
      - CAP-COM-CAT-002
      - CAP-COM-CAT-003
    relies_on:
      - ATS-COM-CAT-001-07
      - ATS-COM-CAT-002-01
      - ATS-COM-CAT-003-01
    preconditions: A store retains an active policy that has no remaining default designation.
    steps:
      - do: >-
          Request policy deletion, move the store to another policy and delete again; resolve the
          fallback after the change.
        provenance: proposed
        source:
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-001-define-how-each-kind-of-sale-is-billed-and-paid.md#ATS-COM-CAT-001-07
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-002-decide-which-checkout-policy-a-sale-follows.md#ATS-COM-CAT-002-01
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-003-open-a-store-that-sells-a-chosen-assortment.md#ATS-COM-CAT-003-01
    expected: >-
      The first refusal identifies the store; the unreferenced policy can then be removed and
      resolution still returns the retained default.
    negative: false
    data_needs: >-
      A run-owned workspace, named fixture products and independent caller grants; deterministic
      clock for dated cases.
    bound_to: []
    provenance: proposed
    source:
      - >-
        rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-001-define-how-each-kind-of-sale-is-billed-and-paid.md#ATS-COM-CAT-001-07
      - >-
        rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-002-decide-which-checkout-policy-a-sale-follows.md#ATS-COM-CAT-002-01
      - >-
        rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-003-open-a-store-that-sells-a-chosen-assortment.md#ATS-COM-CAT-003-01
    assertions:
      - expect: >-
          The first refusal identifies the store; the unreferenced policy can then be removed and
          resolution still returns the retained default.
        provenance: proposed
        source:
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-001-define-how-each-kind-of-sale-is-billed-and-paid.md#ATS-COM-CAT-001-07
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-002-decide-which-checkout-policy-a-sale-follows.md#ATS-COM-CAT-002-01
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-003-open-a-store-that-sells-a-chosen-assortment.md#ATS-COM-CAT-003-01
  - id: FAS-COM-CAT-01-03
    title: Default transfer leaves the store’s policy retained
    kind: lifecycle
    exercises:
      - CAP-COM-CAT-001
      - CAP-COM-CAT-002
      - CAP-COM-CAT-003
    relies_on:
      - ATS-COM-CAT-001-06
      - ATS-COM-CAT-001-07
      - ATS-COM-CAT-002-01
      - ATS-COM-CAT-003-04
    preconditions: Two policies exist and a store uses the first.
    steps:
      - do: >-
          Transfer the default to the second, deactivate and delete the first while the store
          remains, then move the store and repeat permissible removal.
        provenance: proposed
        source:
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-001-define-how-each-kind-of-sale-is-billed-and-paid.md#ATS-COM-CAT-001-06
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-001-define-how-each-kind-of-sale-is-billed-and-paid.md#ATS-COM-CAT-001-07
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-002-decide-which-checkout-policy-a-sale-follows.md#ATS-COM-CAT-002-01
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-003-open-a-store-that-sells-a-chosen-assortment.md#ATS-COM-CAT-003-04
    expected: >-
      The workspace still has one active default; retained references prevent removal until the
      store moves.
    negative: true
    data_needs: >-
      A run-owned workspace, named fixture products and independent caller grants; deterministic
      clock for dated cases.
    bound_to: []
    provenance: proposed
    source:
      - >-
        rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-001-define-how-each-kind-of-sale-is-billed-and-paid.md#ATS-COM-CAT-001-06
      - >-
        rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-001-define-how-each-kind-of-sale-is-billed-and-paid.md#ATS-COM-CAT-001-07
      - >-
        rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-002-decide-which-checkout-policy-a-sale-follows.md#ATS-COM-CAT-002-01
      - >-
        rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-003-open-a-store-that-sells-a-chosen-assortment.md#ATS-COM-CAT-003-04
    assertions:
      - expect: >-
          The workspace still has one active default; retained references prevent removal until the
          store moves.
        provenance: proposed
        source:
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-001-define-how-each-kind-of-sale-is-billed-and-paid.md#ATS-COM-CAT-001-06
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-001-define-how-each-kind-of-sale-is-billed-and-paid.md#ATS-COM-CAT-001-07
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-002-decide-which-checkout-policy-a-sale-follows.md#ATS-COM-CAT-002-01
          - >-
            rhythm-v2-docs:specs/commerce/catalog/design/tests/ATS-COM-CAT-003-open-a-store-that-sells-a-chosen-assortment.md#ATS-COM-CAT-003-04
  - id: FAS-COM-CAT-01-04
    title: A configuration reader can inspect without changing records
    kind: permission
    exercises:
      - CAP-COM-CAT-001
      - CAP-COM-CAT-002
      - CAP-COM-CAT-003
      - CAP-COM-CAT-004
    relies_on:
      - ATS-COM-CAT-001-09
      - ATS-COM-CAT-002-04
      - ATS-COM-CAT-003-06
      - ATS-COM-CAT-004-06
    preconditions: 'A read-only caller and saved policies, defaults, stores and tax zones exist.'
    steps:
      - do: >-
          List and read each resource and resolve defaults; attempt creation, replacement and
          deletion of writable records.
        provenance: test
        source:
          - 'services-commerce:modules/configuration/tests/e2e/configuration-security.e2e.spec.js'
    expected: Reads succeed and all attempted writes refuse with the saved records unchanged.
    negative: true
    data_needs: >-
      A run-owned workspace, named fixture products and independent caller grants; deterministic
      clock for dated cases.
    bound_to:
      - TST-COM-CAT-028
    provenance: test
    source:
      - 'services-commerce:modules/configuration/tests/e2e/configuration-security.e2e.spec.js'
    assertions:
      - expect: Reads succeed and all attempted writes refuse with the saved records unchanged.
        provenance: test
        source:
          - 'services-commerce:modules/configuration/tests/e2e/configuration-security.e2e.spec.js'
  - id: FAS-COM-CAT-01-05
    title: The policy view reflects a saved card-range edit
    kind: regression
    exercises:
      - CAP-COM-CAT-001
    relies_on:
      - ATS-COM-CAT-001-10
    preconditions: The browser uses a fresh mock workspace.
    steps:
      - do: 'Create a policy, read its summary, edit its card range and save back to its view.'
        provenance: test
        source:
          - 'react-console:e2e/mock/commerce-checkout-policies.mock.spec.ts'
    expected: The returned view displays the revised range.
    negative: false
    data_needs: >-
      A run-owned workspace, named fixture products and independent caller grants; deterministic
      clock for dated cases.
    bound_to:
      - TST-COM-CAT-005
    provenance: test
    source:
      - 'react-console:e2e/mock/commerce-checkout-policies.mock.spec.ts'
    assertions:
      - expect: The returned view displays the revised range.
        provenance: test
        source:
          - 'react-console:e2e/mock/commerce-checkout-policies.mock.spec.ts'
evidence:
  - >-
    rhythm-v2-docs:specs/commerce/catalog/planning/capabilities/CAP-COM-CAT-001-define-how-each-kind-of-sale-is-billed-and-paid.md#CAP-COM-CAT-001
  - >-
    rhythm-v2-docs:specs/commerce/catalog/planning/capabilities/CAP-COM-CAT-002-decide-which-checkout-policy-a-sale-follows.md#CAP-COM-CAT-002
  - >-
    rhythm-v2-docs:specs/commerce/catalog/planning/capabilities/CAP-COM-CAT-003-open-a-store-that-sells-a-chosen-assortment.md#CAP-COM-CAT-003
  - >-
    rhythm-v2-docs:specs/commerce/catalog/planning/capabilities/CAP-COM-CAT-004-charge-tax-according-to-where-the-buyer-is.md#CAP-COM-CAT-004
---

# Sale Configuration: Feature Acceptance Suite

## What the Feature Must Do as a Whole

Prepared selling configuration supports a consistent quote. The suite follows changes through the feature’s saved configuration, assessments and retained outcomes. It combines the detailed capability scenarios into customer-visible checks and keeps unbound chains proposed.

## Interactions Between Capabilities

A retained store prevents policy deletion. Each interaction checks both the changed input and the dependent outcome; an isolated capability result alone is insufficient. Lifecycle and permission cases revisit the same boundary after a state or authority change.

## Regression Record

| Revision | Change | Scenario | Why |
|---|---|---|---|
| 1 | initial | all | Establish cumulative coverage from the landed feature and capability contracts. |
