---
id: ADR-PFM-MTD-003
title: Permanent field identity and widening constraints
product_area: platform
module: metadata
revision: 1
status: proposed
design_intent: confirmed
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
decision: Custom field identity and value type are fixed, configuration changes preserve the existing value range,
  and archival retains both reserved keys and stored values.
constrains:
- DOM-PFM-MTD-002
- STATE-PFM-MTD-002
- SVC-PFM-MTD-metadata
- WF-PFM-MTD-002
origin: 'services-platform:docs/metadata.md#Custom fields: the rules (Andrew, 2026-10-08 and 2026-10-09); custom
  objects architecture D-03 and D-20 (approved 2026-10-18)'
alternatives:
- option: Retyping with automatic conversion
  why_not: Conversion can reinterpret existing information without an explicit migration contract.
- option: Narrowing after scanning values
  why_not: This needs a reliable check across every owning value store and is not implemented here.
- option: Deleting definitions
  why_not: Owner-held values would lose their definition, and reusing the key could give retained data another meaning.
consequences:
- Archival does not release a property key for another meaning.
- Stable option identities remain present through option archival.
- Dependent conditions must change before their referenced custom-object property can be archived.
supersedes: []
evidence:
- 'services-platform at ad3f6a65: modules/metadata/services/persistence/custom-fields.ts (definitionChangeProblems,
  archiveCustomField); docs/metadata.md'
---

# Permanent field identity and widening constraints

## Context

Field definitions govern information collected over time and stored by several owners. Definition changes must preserve that information’s interpretation.

## Decision

Custom field identity and value type are fixed, configuration changes preserve the existing value range, and archival retains both reserved keys and stored values.

## Alternatives Considered

Retyping with automatic conversion: Conversion can reinterpret existing information without an explicit migration contract. Narrowing after scanning values: This needs a reliable check across every owning value store and is not implemented here. Deleting definitions: Owner-held values would lose their definition, and reusing the key could give retained data another meaning.

## Consequences

Archival does not release a property key for another meaning. Stable option identities remain present through option archival. Dependent conditions must change before their referenced custom-object property can be archived.
