---
id: FAS-PFM-MTD-05
title: Keeping Custom Records Acceptance
feature: FEAT-PFM-MTD-05
product_area: platform
module: metadata
revision: 1
status: proposed
product_intent: proposed
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
capabilities:
  - CAP-PFM-MTD-012
  - CAP-PFM-MTD-013
  - CAP-PFM-MTD-014
  - CAP-PFM-MTD-015
  - CAP-PFM-MTD-016
scenarios:
  - id: FAS-PFM-MTD-05-01
    title: A registrar saves a numbered boat and reaches it from its owner
    kind: behaviour
    exercises:
      - CAP-PFM-MTD-012
    relies_on:
      - ATS-PFM-MTD-012-09
      - ATS-PFM-MTD-012-14
    preconditions: Boat is active and a contact can own it.
    steps:
      - do: Create a boat from the owning contact’s form and open the resulting list and card.
        provenance: test
        source: >-
          react-console:acceptance/custom-objects/playwright/journeys/PLAT-M5-S03.spec.ts#PLAT-M5-S03: a
          registrar creates a boat owned by a contact: numbered 1, listed, and on the contact's Boats card
    expected: 'The boat is numbered, listed and linked on the contact’s card.'
    negative: false
    data_needs: Boat is active and a contact can own it.
    bound_to:
      - TST-PFM-MTD-003
    provenance: test
    source: >-
      react-console:acceptance/custom-objects/playwright/journeys/PLAT-M5-S03.spec.ts#PLAT-M5-S03: a registrar
      creates a boat owned by a contact: numbered 1, listed, and on the contact's Boats card
    assertions:
      - expect: 'The boat is numbered, listed and linked on the contact’s card.'
        provenance: test
        source: >-
          react-console:acceptance/custom-objects/playwright/journeys/PLAT-M5-S03.spec.ts#PLAT-M5-S03: a
          registrar creates a boat owned by a contact: numbered 1, listed, and on the contact's Boats card
  - id: FAS-PFM-MTD-05-02
    title: A deletion cascade publishes dependent changes in order
    kind: interaction
    exercises:
      - CAP-PFM-MTD-012
      - CAP-PFM-MTD-013
      - CAP-PFM-MTD-015
    relies_on:
      - ATS-PFM-MTD-013-06
      - ATS-PFM-MTD-015-06
    preconditions: A custom root reaches a chain of cascading custom records.
    steps:
      - do: Delete the root and inspect the events recorded for the chain.
        provenance: proposed
        source: specs/platform/metadata/planning/features/FEAT-PFM-MTD-05-custom-records.md
    expected: Dependent link and record announcements precede the root announcement.
    negative: false
    data_needs: A custom root reaches a chain of cascading custom records.
    bound_to: []
    provenance: proposed
    source: specs/platform/metadata/planning/features/FEAT-PFM-MTD-05-custom-records.md
    assertions:
      - expect: Dependent link and record announcements precede the root announcement.
        provenance: proposed
        source: specs/platform/metadata/planning/features/FEAT-PFM-MTD-05-custom-records.md
  - id: FAS-PFM-MTD-05-03
    title: Record lifecycle remains visible in its history
    kind: lifecycle
    exercises:
      - CAP-PFM-MTD-012
      - CAP-PFM-MTD-013
      - CAP-PFM-MTD-014
    relies_on:
      - ATS-PFM-MTD-013-01
      - ATS-PFM-MTD-013-02
      - ATS-PFM-MTD-014-01
    preconditions: An administrator opens a publishable saved boat.
    steps:
      - do: 'Publish, archive and restore from the record page, then open History.'
        provenance: test
        source: >-
          react-console:acceptance/custom-objects/playwright/journeys/PLAT-M5-S07.spec.ts#PLAT-M5-S07:
          publish, archive and restore from the boat page; History names each revision and who made it
    expected: The retained boat reflects each action and the timeline names its revisions and authors.
    negative: false
    data_needs: An administrator opens a publishable saved boat.
    bound_to:
      - TST-PFM-MTD-007
    provenance: test
    source: >-
      react-console:acceptance/custom-objects/playwright/journeys/PLAT-M5-S07.spec.ts#PLAT-M5-S07: publish,
      archive and restore from the boat page; History names each revision and who made it
    assertions:
      - expect: The retained boat reflects each action and the timeline names its revisions and authors.
        provenance: test
        source: >-
          react-console:acceptance/custom-objects/playwright/journeys/PLAT-M5-S07.spec.ts#PLAT-M5-S07:
          publish, archive and restore from the boat page; History names each revision and who made it
  - id: FAS-PFM-MTD-05-04
    title: History access remains separate after deletion
    kind: permission
    exercises:
      - CAP-PFM-MTD-013
      - CAP-PFM-MTD-014
    relies_on:
      - ATS-PFM-MTD-013-03
      - ATS-PFM-MTD-014-03
    preconditions: A deleted boat retains revisions and callers differ in history permission.
    steps:
      - do: Request the deleted boat’s history under both callers.
        provenance: proposed
        source: specs/platform/metadata/planning/features/FEAT-PFM-MTD-05-custom-records.md
    expected: The history-authorized caller receives retained revisions and the other caller is refused.
    negative: true
    data_needs: A deleted boat retains revisions and callers differ in history permission.
    bound_to: []
    provenance: proposed
    source: specs/platform/metadata/planning/features/FEAT-PFM-MTD-05-custom-records.md
    assertions:
      - expect: The history-authorized caller receives retained revisions and the other caller is refused.
        provenance: proposed
        source: specs/platform/metadata/planning/features/FEAT-PFM-MTD-05-custom-records.md
  - id: FAS-PFM-MTD-05-05
    title: A repeated load preserves a manual correction
    kind: regression
    exercises:
      - CAP-PFM-MTD-012
      - CAP-PFM-MTD-016
    relies_on:
      - ATS-PFM-MTD-012-11
      - ATS-PFM-MTD-016-01
      - ATS-PFM-MTD-016-04
    preconditions: A feed-created boat receives a newer manual model correction.
    steps:
      - do: Reload the older feed under the default policy and inspect the boat.
        provenance: test
        source: >-
          services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0401.spec.js#step
          1: the migration lead loads the feed of four boats, each created at version 1
    expected: The line reports a conflict and the manual correction remains.
    negative: true
    data_needs: A feed-created boat receives a newer manual model correction.
    bound_to:
      - TST-PFM-MTD-135
    provenance: test
    source: >-
      services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0401.spec.js#step 1:
      the migration lead loads the feed of four boats, each created at version 1
    assertions:
      - expect: The line reports a conflict and the manual correction remains.
        provenance: test
        source: >-
          services-platform:tests/acceptance/custom-objects/journeys/data-operations/CO-ACC-0401.spec.js#step
          1: the migration lead loads the feed of four boats, each created at version 1
evidence:
  - specs/platform/metadata/planning/features/FEAT-PFM-MTD-05-custom-records.md
  - >-
    specs/platform/metadata/planning/capabilities/CAP-PFM-MTD-012-keep-the-records-of-a-custom-object-validated-by-its-properties.md
  - >-
    specs/platform/metadata/planning/capabilities/CAP-PFM-MTD-013-publish-archive-restore-and-delete-custom-records-deliberately.md
  - >-
    specs/platform/metadata/planning/capabilities/CAP-PFM-MTD-014-see-every-change-to-a-custom-record-and-who-made-it.md
  - >-
    specs/platform/metadata/planning/capabilities/CAP-PFM-MTD-015-announce-every-custom-record-and-link-change-to-the-rest-of.md
  - >-
    specs/platform/metadata/planning/capabilities/CAP-PFM-MTD-016-load-custom-records-and-their-links-from-a-file-again-and-again.md
---

# Keeping Custom Records: Feature Acceptance Suite

## What the Feature Must Do as a Whole

The suite follows keeping custom records through its customer outcomes, lifecycle actions, permission refusals and retained regression cases. Each scenario names the capabilities it exercises and the detailed outcomes it relies on. Existing executable bindings identify specific assertions, while unbound scenarios remain proposed acceptance work.

## Interactions Between Capabilities

A deletion cascade publishes dependent changes in order. The interaction case checks the joint outcome after configuration or record state changes, so separate capability checks cannot stand in for the complete feature result.

## Regression Record

| Revision | Change | Scenario | Why |
|---|---|---|---|
| 1 | initial | all | Establish cumulative feature acceptance from the landed capability and design obligations. |
