---
id: ADR-COM-CAT-015
title: Shared Configuration Protection
product_area: commerce
module: catalog
revision: 1
status: proposed
design_intent: proposed
source_sha:
  services-commerce: c8b66a98e2490617aec38ba5c8165dd9bd0a8f9b
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
decision: >-
  Configuration protection uses the shared lock level to block updates, deletion or both according to the
  retained level.
constrains:
  - DOM-COM-CAT-001
  - DOM-COM-CAT-002
  - DOM-COM-CAT-003
  - DOM-COM-CAT-004
  - SVC-COM-CAT-configuration
  - SVC-COM-CAT-catalog
  - SVC-COM-CAT-merchandise
  - SVC-COM-CAT-pricing
origin: none (the shared records library's system columns)
alternatives:
  - option: Add a separate Commerce protection flag
    why_not: Shared system metadata already supplies the level and write checks.
consequences:
  - 'A client can set protection, but a full lock blocks the route that would remove it.'
  - Built configuration screens do not expose protection controls or state.
supersedes: []
evidence:
  - >-
    services-commerce at c8b66a98: db/system-values.ts (clientSystemColumnsFromWire);
    modules/configuration/services/persistence/ordering-profiles.ts (the locked checks);
    modules/configuration/db/*.table.ts (lockedCheck).
---

# Shared Configuration Protection

## Context

System or migrated configuration can require protection. The current wire and persistence paths expose protection without a complete staff management experience.

## Decision

Configuration protection uses the shared lock level to block updates, deletion or both according to the retained level.

## Alternatives Considered

Add a separate Commerce protection flag. Shared system metadata already supplies the level and write checks.

## Consequences

A client can set protection, but a full lock blocks the route that would remove it. Built configuration screens do not expose protection controls or state.
