---
id: ADR-ACC-PRD-006
title: Replacement Omission Semantics Remain Unresolved
product_area: accounting
module: products
revision: 3
status: proposed
design_intent: open
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
decision: HTTP replacement clears omitted optional values except confirmation and replaces lists, while domain
  replacement keeps supported omitted scalars pending Product's choice of a common contract.
constrains:
- DOM-ACC-PRD-001
- SVC-ACC-PRD-products
- WF-ACC-PRD-001
- WF-ACC-PRD-004
- SCR-ACC-PRD-001
- SCR-ACC-PRD-003
origin: OQ-ACC-PRD-003
alternatives:
- option: Make domain saving a complete replacement.
  why_not: This is recommended in the open question but would change domain caller expectations.
- option: Preserve omissions in HTTP saving.
  why_not: Changing the replacement contract can hide incomplete requests and alter existing clients.
consequences:
- The editor must resend hidden values; quick status writes currently omit availability.
- Domain saving still requires identity, name, kind and business unit even where optional scalars can be omitted.
supersedes: []
evidence:
- 'services-accounting at f47cb263: docs/accounting/products.md (The domain write path, Features); modules/products/aws/api/products-api-mapper.ts;
  tests/integration/db/save-product-function.integration.spec.js.'
- 'react-console at baf6dae3: lib/accounting-config/product-form.ts (preservedProductFields); components/accounting-config/products/use-products.ts
  (productStatusWrite).'
---

# Replacement Omission Semantics Remain Unresolved

## Context

The two entry points update the same record with different omission behavior. The existing product question remains the authority for choosing whether to align them.

## Decision

HTTP replacement clears omitted optional values except confirmation and replaces lists, while domain replacement keeps supported omitted scalars pending Product's choice of a common contract.

## Alternatives Considered

Make domain saving a complete replacement. This is recommended in the open question but would change domain caller expectations.

Preserve omissions in HTTP saving. Changing the replacement contract can hide incomplete requests and alter existing clients.

## Consequences

Preparation must distinguish absent values from explicit clearing before adopting a shared write contract. This record keeps the disagreement open.
