---
id: TST-PFM-NOT-111
title: registration manifest
kind: unit
product_area: platform
module: notifications
revision: 1
status: draft
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
repository: services-platform
files:
  - modules/notifications/tests/unit/registration-manifest.spec.js
implements:
  - ATS-PFM-NOT-001-01
  - ATS-PFM-NOT-001-02
  - ATS-PFM-NOT-001-03
  - ATS-PFM-NOT-001-04
  - ATS-PFM-NOT-001-06
environment: mock
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 1
isolation: Per-process test inputs and installed doubles.
assertion_bindings:
  - scenario: ATS-PFM-NOT-001-01
    suite: TST-PFM-NOT-111
    assertions:
      - >-
        services-platform:modules/notifications/tests/unit/registration-manifest.spec.js#refuses
        a key that is not three lowercase words
  - scenario: ATS-PFM-NOT-001-02
    suite: TST-PFM-NOT-111
    assertions:
      - >-
        services-platform:modules/notifications/tests/unit/registration-manifest.spec.js#refuses
        a category outside its closed list
      - >-
        services-platform:modules/notifications/tests/unit/registration-manifest.spec.js#refuses
        a severity outside its closed list
      - >-
        services-platform:modules/notifications/tests/unit/registration-manifest.spec.js#refuses
        a preference mode outside its closed list
      - >-
        services-platform:modules/notifications/tests/unit/registration-manifest.spec.js#refuses
        a delivery requirement outside its closed list
      - >-
        services-platform:modules/notifications/tests/unit/registration-manifest.spec.js#refuses
        a supersede scope outside its closed list
      - >-
        services-platform:modules/notifications/tests/unit/registration-manifest.spec.js#refuses
        an audience kind outside the closed list
      - >-
        services-platform:modules/notifications/tests/unit/registration-manifest.spec.js#refuses
        no audience kind at all
  - scenario: ATS-PFM-NOT-001-03
    suite: TST-PFM-NOT-111
    assertions:
      - >-
        services-platform:modules/notifications/tests/unit/registration-manifest.spec.js#refuses
        supported channels without the console
      - >-
        services-platform:modules/notifications/tests/unit/registration-manifest.spec.js#refuses
        default channels the definition does not support
      - >-
        services-platform:modules/notifications/tests/unit/registration-manifest.spec.js#refuses
        a mandatory definition whose defaults leave out e-mail where e-mail is
        supported
      - >-
        services-platform:modules/notifications/tests/unit/registration-manifest.spec.js#refuses
        a mandatory definition whose defaults leave out the console
      - >-
        services-platform:modules/notifications/tests/unit/registration-manifest.spec.js#accepts
        a mandatory definition without e-mail among its channels, the console
        alone being required
  - scenario: ATS-PFM-NOT-001-04
    suite: TST-PFM-NOT-111
    assertions:
      - >-
        services-platform:modules/notifications/tests/unit/registration-manifest.spec.js#refuses
        no examples
      - >-
        services-platform:modules/notifications/tests/unit/registration-manifest.spec.js#refuses
        more than ten examples
  - scenario: ATS-PFM-NOT-001-06
    suite: TST-PFM-NOT-111
    assertions:
      - >-
        services-platform:modules/notifications/tests/unit/registration-manifest.spec.js#refuses
        a placeholder the parameters do not declare
      - >-
        services-platform:modules/notifications/tests/unit/registration-manifest.spec.js#refuses
        more than ten actions
evidence:
  - >-
    services-platform:modules/notifications/tests/unit/registration-manifest.spec.js
  - The file and referenced assertion titles exist at the pinned commit.
dependency_evidence:
  - 'Real: the zod schema. Doubled: nothing. Never doubled: the schema.'
---

# registration manifest

## Verification Boundary

This suite checks isolated calculations, validation or presentation with process-local inputs. It does not establish a deployed workflow.

## What This Suite Proves

Its cases exercise reject foreign, duplicate and invalid keys; reject unsupported declaration values; preserve required channel defaults; validate the closed request-data contract; validate navigation and operation references.

The registered scenario bindings identify the assertions this executable file contributes. They retain individual test references so that a composite scenario does not become a claim of complete execution by one file.

## What It Does Not Prove

Local outcomes do not prove deployed queues, external provider acceptance, production credentials or complete browser behavior. No fresh execution or conformance result is claimed.

## Real Dependencies and Test Doubles

The test file identifies its pure inputs or presentation doubles. Console component suites use recorded request handlers; pure validation suites require no external provider.

## Must Not Be Doubled

The calculation, validator or component under test must execute its real implementation. Doubles supply inputs and external responses without replacing the behavior being proved.
