---
id: TST-ACC-PRD-027
title: Selling configuration API lifecycle
kind: api-lifecycle
product_area: accounting
module: products
revision: 1
status: draft
product_intent: proposed
implementation_evidence: observed
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
repository: services-accounting
files:
  - modules/products/tests/e2e/product-features.e2e.spec.js
implements:
  - ATS-ACC-PRD-009-02
  - ATS-ACC-PRD-010-02
  - ATS-ACC-PRD-010-03
  - ATS-ACC-PRD-012-01
  - ATS-ACC-PRD-013-02
environment: local
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 5
estimation_note: Planning estimate; no runtime measurement is claimed.
isolation: 'Suite-named local workspaces, isolated fixture records and explicit cleanup or rollback.'
evidence:
  - 'services-accounting:modules/products/tests/e2e/product-features.e2e.spec.js'
assertion_bindings:
  - scenario: ATS-ACC-PRD-009-02
    assertions:
      - >-
        services-accounting:modules/products/tests/e2e/product-features.e2e.spec.js#refuses a list of special
        prices, naming where the feature went (A12)
      - >-
        services-accounting:modules/products/tests/e2e/product-features.e2e.spec.js#accepts special_prices as
        null (the old wire’s switched-off), which the record no longer answers
    provenance: test
    source: 'services-accounting:modules/products/tests/e2e/product-features.e2e.spec.js'
  - scenario: ATS-ACC-PRD-010-02
    assertions:
      - >-
        services-accounting:modules/products/tests/e2e/product-features.e2e.spec.js#refuses overlapping bulk
        pricing ranges by the service’s rule, naming the rows
    provenance: test
    source: 'services-accounting:modules/products/tests/e2e/product-features.e2e.spec.js'
  - scenario: ATS-ACC-PRD-010-03
    assertions:
      - >-
        services-accounting:modules/products/tests/e2e/product-features.e2e.spec.js#switches every feature off
        with null
    provenance: test
    source: 'services-accounting:modules/products/tests/e2e/product-features.e2e.spec.js'
  - scenario: ATS-ACC-PRD-012-01
    assertions:
      - >-
        services-accounting:modules/products/tests/e2e/product-features.e2e.spec.js#refuses a rolling purchase
        limit without its window
    provenance: test
    source: 'services-accounting:modules/products/tests/e2e/product-features.e2e.spec.js'
  - scenario: ATS-ACC-PRD-013-02
    assertions:
      - >-
        services-accounting:modules/products/tests/e2e/product-features.e2e.spec.js#refuses an assignee that
        is not a Platform user id
    provenance: test
    source: 'services-accounting:modules/products/tests/e2e/product-features.e2e.spec.js'
coverage_note: Scenario references name existing assertion evidence; broader unexecuted variants remain findings.
---

# Selling configuration API lifecycle

## Verification Boundary

Requests pass through the local enforcing Accounting dispatcher, request mapping and persistence to PostgreSQL. This is local API evidence rather than a deployed network run.

## What This Suite Proves

The enforcing API tests supported selling settings, refusal sentences, clearing and confirmation selections against local dependencies.

## What It Does Not Prove

Local execution does not prove deployed infrastructure, downstream purchase behavior, real domain extension completion or atomic remote-template recovery.

## Real Dependencies and Test Doubles

The composed handler, permission evaluation and Accounting database are real. Local signing keys and Platform workspace registration stand in for external infrastructure. Platform communications or shared-template tables use local stand-ins; CRM reference tables are local test fixtures.

## Must Not Be Doubled

Do not double PostgreSQL, row-level security, transaction boundaries, constraints or the persistence implementation when claiming these local guarantees.
