---
id: ADR-PFM-MTD-012
title: Explicit boundaries for partial saves
product_area: platform
module: metadata
revision: 1
status: proposed
design_intent: proposed
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
decision: Composite client saves retain successful earlier calls when a later step fails and report partial outcomes
  rather than attempting compensating browser writes.
constrains:
- WF-PFM-MTD-001
- WF-PFM-MTD-002
- WF-PFM-MTD-003
- WF-PFM-MTD-004
- WF-PFM-MTD-006
- WF-PFM-MTD-012
- SCR-PFM-MTD-003
- SCR-PFM-MTD-011
- SCR-PFM-MTD-017
origin: 'none: observed across the console and service code; the data job engine''s no-rollback rule is documented
  (services-platform:docs/data-jobs/platform-data-operations.md#There is no /rollback)'
alternatives:
- option: Browser compensation after partial saves
  why_not: A compensating request can fail or overwrite intervening work, so it cannot provide transaction guarantees.
- option: Composite server operations
  why_not: Combining record and owner, field and rules or object and owner requires a new operation contract and
    a product decision.
- option: Suppressing later-step errors
  why_not: The person would mistake partial completion for a complete save.
consequences:
- Record content, field definitions and activation can survive failed ownership or rule steps.
- Search follow-ups can lag completed definition changes.
- Cancellation does not reverse load batches that already committed.
supersedes: []
evidence:
- 'react-console at baf6dae3: lib/forms/custom-objects/owner.ts; lib/configuration/fields/field-rules.ts; lib/custom-objects/designer/save.ts.
  services-platform at ad3f6a65: modules/metadata/services/registration/register-application.ts; services/field-lifecycle/archive-field.ts'
---

# Explicit boundaries for partial saves

## Context

Several console actions compose individually committed resources. A later failure can leave real earlier work behind.

## Decision

Composite client saves retain successful earlier calls when a later step fails and report partial outcomes rather than attempting compensating browser writes.

## Alternatives Considered

Browser compensation after partial saves: A compensating request can fail or overwrite intervening work, so it cannot provide transaction guarantees. Composite server operations: Combining record and owner, field and rules or object and owner requires a new operation contract and a product decision. Suppressing later-step errors: The person would mistake partial completion for a complete save.

## Consequences

Record content, field definitions and activation can survive failed ownership or rule steps. Search follow-ups can lag completed definition changes. Cancellation does not reverse load batches that already committed.
