---
id: FAS-PFM-NOT-02
title: Staff Notification Processing
feature: FEAT-PFM-NOT-02
product_area: platform
module: notifications
revision: 1
status: proposed
product_intent: proposed
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
capabilities:
  - CAP-PFM-NOT-002
  - CAP-PFM-NOT-003
  - CAP-PFM-NOT-004
  - CAP-PFM-NOT-005
  - CAP-PFM-NOT-006
  - CAP-PFM-NOT-007
  - CAP-PFM-NOT-008
scenarios:
  - id: FAS-PFM-NOT-02-01
    title: A committed event reaches its eligible recipient
    kind: behaviour
    exercises:
      - CAP-PFM-NOT-002
      - CAP-PFM-NOT-003
      - CAP-PFM-NOT-004
      - CAP-PFM-NOT-007
    relies_on:
      - ATS-PFM-NOT-002-01
      - ATS-PFM-NOT-003-02
      - ATS-PFM-NOT-004-01
      - ATS-PFM-NOT-007-01
    preconditions: A current responsibility holder has a locale distinct from the producer.
    steps: >-
      Commit an occurrence, resolve the current holder and inspect the rendered
      console delivery.
    expected: >-
      The committed event reaches the current holder with localized wording and
      immediate console delivery.
    negative: false
    data_needs: >-
      Suite-owned records and repeat keys, named recipient identities and
      controlled provider outcomes.
    bound_to: []
    provenance: proposed
    source:
      - >-
        rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-002-tell-people-that-something-happened-with-one-call.md#ATS-PFM-NOT-002-01
      - >-
        rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-003-reach-the-right-people-and-only-people-of-the-organization.md#ATS-PFM-NOT-003-02
      - >-
        rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-004-word-each-notice-for-the-person-who-receives-it.md#ATS-PFM-NOT-004-01
      - >-
        rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-007-deliver-each-notice-on-the-channels-it-may-use.md#ATS-PFM-NOT-007-01
  - id: FAS-PFM-NOT-02-02
    title: Reading and withdrawal change folding eligibility
    kind: interaction
    exercises:
      - CAP-PFM-NOT-005
      - CAP-PFM-NOT-006
    relies_on:
      - ATS-PFM-NOT-005-02
      - ATS-PFM-NOT-005-06
      - ATS-PFM-NOT-006-02
    preconditions: Jane has a folded notice with two open contributions.
    steps: >-
      Read the notice, publish another contribution, withdraw the earlier
      contributions and inspect applicable unread items.
    expected: >-
      Later work has a fresh item; remaining contributions stay visible until
      their own withdrawal.
    negative: false
    data_needs: >-
      Suite-owned records and repeat keys, named recipient identities and
      controlled provider outcomes.
    bound_to: []
    provenance: proposed
    source:
      - >-
        rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-005-fold-quick-repeats-into-one-notice.md#ATS-PFM-NOT-005-02
      - >-
        rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-005-fold-quick-repeats-into-one-notice.md#ATS-PFM-NOT-005-06
      - >-
        rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-006-withdraw-or-expire-a-notice-that-no-longer-applies.md#ATS-PFM-NOT-006-02
  - id: FAS-PFM-NOT-02-03
    title: Withdrawal and expiry stop pending work across the pipeline
    kind: lifecycle
    exercises:
      - CAP-PFM-NOT-006
      - CAP-PFM-NOT-008
    relies_on:
      - ATS-PFM-NOT-006-01
      - ATS-PFM-NOT-006-03
      - ATS-PFM-NOT-006-07
      - ATS-PFM-NOT-008-04
    preconditions: >-
      Prepare delayed, accepted and stale requests with both unsent and sent
      channels.
    steps: >-
      Withdraw delayed work, withdraw accepted work and run expiry
      reconciliation.
    expected: >-
      No stopped work initiates a new send, while previously sent history stays
      available.
    negative: false
    data_needs: >-
      Suite-owned records and repeat keys, named recipient identities and
      controlled provider outcomes.
    bound_to: []
    provenance: proposed
    source:
      - >-
        rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-006-withdraw-or-expire-a-notice-that-no-longer-applies.md#ATS-PFM-NOT-006-01
      - >-
        rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-006-withdraw-or-expire-a-notice-that-no-longer-applies.md#ATS-PFM-NOT-006-03
      - >-
        rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-006-withdraw-or-expire-a-notice-that-no-longer-applies.md#ATS-PFM-NOT-006-07
      - >-
        rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-008-keep-notifications-whole-when-part-of-the-pipeline-fails.md#ATS-PFM-NOT-008-04
  - id: FAS-PFM-NOT-02-04
    title: Publication and audience selection enforce distinct boundaries
    kind: permission
    exercises:
      - CAP-PFM-NOT-002
      - CAP-PFM-NOT-003
    relies_on:
      - ATS-PFM-NOT-002-02
      - ATS-PFM-NOT-002-06
      - ATS-PFM-NOT-003-07
    preconditions: >-
      Use a console account, an authorized system caller and a foreign-customer
      audience entry.
    steps: >-
      Attempt publication with both callers, then process the authorized request
      containing the foreign candidate.
    expected: >-
      The console submission is refused; the foreign candidate receives no item
      and the processed request retains its exclusion.
    negative: true
    data_needs: >-
      Suite-owned records and repeat keys, named recipient identities and
      controlled provider outcomes.
    bound_to: []
    provenance: proposed
    source:
      - >-
        rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-002-tell-people-that-something-happened-with-one-call.md#ATS-PFM-NOT-002-02
      - >-
        rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-002-tell-people-that-something-happened-with-one-call.md#ATS-PFM-NOT-002-06
      - >-
        rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-003-reach-the-right-people-and-only-people-of-the-organization.md#ATS-PFM-NOT-003-07
  - id: FAS-PFM-NOT-02-05
    title: Lost acknowledgement does not duplicate recipient work
    kind: regression
    exercises:
      - CAP-PFM-NOT-002
      - CAP-PFM-NOT-008
      - CAP-PFM-NOT-005
    relies_on:
      - ATS-PFM-NOT-002-03
      - ATS-PFM-NOT-008-02
      - ATS-PFM-NOT-008-03
      - ATS-PFM-NOT-005-07
    preconditions: Retain a committed queue entry after its first acknowledgement is lost.
    steps: 'Recover dispatch, process both queue copies and repeat the occurrence.'
    expected: >-
      Recipient work remains unique through replay and the request identity
      remains stable.
    negative: false
    data_needs: >-
      Suite-owned records and repeat keys, named recipient identities and
      controlled provider outcomes.
    bound_to: []
    provenance: proposed
    source:
      - >-
        rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-002-tell-people-that-something-happened-with-one-call.md#ATS-PFM-NOT-002-03
      - >-
        rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-008-keep-notifications-whole-when-part-of-the-pipeline-fails.md#ATS-PFM-NOT-008-02
      - >-
        rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-008-keep-notifications-whole-when-part-of-the-pipeline-fails.md#ATS-PFM-NOT-008-03
      - >-
        rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-005-fold-quick-repeats-into-one-notice.md#ATS-PFM-NOT-005-07
evidence:
  - >-
    rhythm-v2-docs:specs/platform/notifications/planning/features/FEAT-PFM-NOT-02-notification-pipeline.md
  - >-
    rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-002-tell-people-that-something-happened-with-one-call.md#ATS-PFM-NOT-002-01
  - >-
    rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-003-reach-the-right-people-and-only-people-of-the-organization.md#ATS-PFM-NOT-003-02
  - >-
    rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-004-word-each-notice-for-the-person-who-receives-it.md#ATS-PFM-NOT-004-01
  - >-
    rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-007-deliver-each-notice-on-the-channels-it-may-use.md#ATS-PFM-NOT-007-01
  - >-
    rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-005-fold-quick-repeats-into-one-notice.md#ATS-PFM-NOT-005-02
  - >-
    rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-005-fold-quick-repeats-into-one-notice.md#ATS-PFM-NOT-005-06
  - >-
    rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-006-withdraw-or-expire-a-notice-that-no-longer-applies.md#ATS-PFM-NOT-006-02
  - >-
    rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-006-withdraw-or-expire-a-notice-that-no-longer-applies.md#ATS-PFM-NOT-006-01
  - >-
    rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-006-withdraw-or-expire-a-notice-that-no-longer-applies.md#ATS-PFM-NOT-006-03
  - >-
    rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-006-withdraw-or-expire-a-notice-that-no-longer-applies.md#ATS-PFM-NOT-006-07
  - >-
    rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-008-keep-notifications-whole-when-part-of-the-pipeline-fails.md#ATS-PFM-NOT-008-04
  - >-
    rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-002-tell-people-that-something-happened-with-one-call.md#ATS-PFM-NOT-002-02
  - >-
    rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-002-tell-people-that-something-happened-with-one-call.md#ATS-PFM-NOT-002-06
  - >-
    rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-003-reach-the-right-people-and-only-people-of-the-organization.md#ATS-PFM-NOT-003-07
  - >-
    rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-002-tell-people-that-something-happened-with-one-call.md#ATS-PFM-NOT-002-03
  - >-
    rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-008-keep-notifications-whole-when-part-of-the-pipeline-fails.md#ATS-PFM-NOT-008-02
  - >-
    rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-008-keep-notifications-whole-when-part-of-the-pipeline-fails.md#ATS-PFM-NOT-008-03
  - >-
    rhythm-v2-docs:specs/platform/notifications/design/tests/ATS-PFM-NOT-005-fold-quick-repeats-into-one-notice.md#ATS-PFM-NOT-005-07
regression_record:
  - revision: 1
    change: initial
    scenarios:
      - FAS-PFM-NOT-02-01
      - FAS-PFM-NOT-02-02
      - FAS-PFM-NOT-02-03
      - FAS-PFM-NOT-02-04
      - FAS-PFM-NOT-02-05
    reason: >-
      Initial cumulative feature acceptance coverage from the pinned planning
      and design layers.
---

# Staff Notification Processing: Feature Acceptance Suite

## What the Feature Must Do as a Whole

This suite follows the feature from its initial inputs through the outcomes people inspect. Its cases combine capability results so that a change at one stage is checked against the later stages that depend on it.

## Interactions Between Capabilities

Read the notice, publish another contribution, withdraw the earlier contributions and inspect applicable unread items. Later work has a fresh item; remaining contributions stay visible until their own withdrawal.

The feature cases retain their prerequisite scenario references. A component test alone does not establish execution of the complete feature chain.

## Regression Record

| Revision | Change | Scenario | Why |
|---|---|---|---|
| 1 | initial | All initial cases | Establish cumulative feature coverage and preserve its dependencies for later revisions. |
