---
id: TST-PFM-MTD-130
title: effective capabilities
kind: unit
product_area: platform
module: metadata
revision: 1
status: draft
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
repository: services-platform
files:
  - modules/metadata/tests/unit/effective-capabilities.spec.js
implements:
  - ATS-PFM-MTD-003-01
environment: local
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 1
isolation: >-
  Prepared integration database and the suite fixture records; fixture teardown restores or removes its own
  rows.
evidence:
  - 'services-platform:modules/metadata/tests/unit/effective-capabilities.spec.js'
  - >-
    services-platform:modules/metadata/tests/unit/effective-capabilities.spec.js#stores what an approved
    object declares, with no warning
  - >-
    services-platform:modules/metadata/tests/unit/effective-capabilities.spec.js#stores no capability for an
    unapproved object that declares none, exactly as before
  - >-
    services-platform:modules/metadata/tests/unit/effective-capabilities.spec.js#treats an approved object
    that declares nothing as declared, and warns naming the object
  - >-
    services-platform:modules/metadata/tests/unit/effective-capabilities.spec.js#refuses custom fields
    declared on an object Andrew did not approve, naming the object and R2-ARCH-001
  - >-
    services-platform:modules/metadata/tests/unit/effective-capabilities.spec.js#stores configurable forms and
    layouts declared without custom fields on an unapproved object
  - >-
    services-platform:modules/metadata/tests/unit/effective-capabilities.spec.js#accepts custom fields
    declared on a custom object
  - >-
    services-platform:modules/metadata/tests/unit/effective-capabilities.spec.js#reports a custom field
    capability on an object outside the approved list
  - >-
    services-platform:modules/metadata/tests/unit/effective-capabilities.spec.js#reports an approved object
    registered without the capability
  - >-
    services-platform:modules/metadata/tests/unit/effective-capabilities.spec.js#reports an approved object
    that is not registered
  - >-
    services-platform:modules/metadata/tests/unit/effective-capabilities.spec.js#reports no difference for a
    database that matches the list
fixture_imports:
  - 'node:assert/strict'
  - ../../capabilities/effective-capabilities
  - ../../tools/capabilities-report
  - ../../capabilities/approved-custom-field-objects
test_doubles: []
limitations: []
unmatched_specification: null
binding_assertions:
  - scenario: ATS-PFM-MTD-003-01
    provenance: test
    source:
      - >-
        services-platform:modules/metadata/tests/unit/effective-capabilities.spec.js#refuses custom fields
        declared on an object Andrew did not approve, naming the object and R2-ARCH-001
    note: >-
      These references identify the assertions this suite contributes; bindings to additional suites remain
      part of the scenario’s proof.
---

# Effective capabilities

## Verification Boundary

This unit suite checks record descriptions and field configuration within the local test harness. The registered file and pinned revision define its boundary.

## What This Suite Proves

The bindings identify the detailed or feature scenarios whose outcomes have assertions in this suite. Original case references remain attached to the detailed scenarios so a reviewer can inspect the exact assertion. Assertions are evidence of implemented checks; no execution result is claimed.

## What It Does Not Prove

The register does not establish a current passing run or full specification conformance. Behavior outside the suite’s fixtures and assertions remains unverified.

## Real Dependencies and Test Doubles

The imported contract and validation code runs locally. The fixture imports identify the setup seams; this register makes no broader claim that dependencies are undoubled.

## Must Not Be Doubled

The contract or validation function under examination must run directly; expected outputs cannot replace it.
