---
id: ATS-PFM-NOT-014
scope: CAP-PFM-NOT-014
product_area: platform
module: notifications
revision: 2
status: proposed
approved_by: null
approved_at: null
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
scenarios:
  - id: ATS-PFM-NOT-014-01
    title: Announce an explicit responsibility assignment
    level: api
    proves:
      - BR-CAP-PFM-NOT-014-01
    preconditions: Use a clerk account for Jane and a Northeast Batch posting responsibility.
    steps: Save an administrator-created assignment to Jane.
    expected: >-
      Within the acceptance polling interval Jane receives one unread item with
      content, subject record and a destination to My Responsibilities.
    negative: false
    data_needs: Use only records created and owned by this suite.
    bound_to:
      - >-
        react-console:acceptance/notifications/playwright/journeys/inbox/NT-ACC-0001.spec.ts#NT-ACC-0001
      - TST-PFM-NOT-005
    provenance: test
    source: >-
      react-console:acceptance/notifications/playwright/journeys/inbox/NT-ACC-0001.spec.ts#NT-ACC-0001
    category: rule
    binding_scope: >-
      Each binding supplies its own assertions; the aggregate references do not
      imply that one executable file proves every step.
  - id: ATS-PFM-NOT-014-02
    title: Notify both sides of a delegation
    level: api
    proves:
      - BR-CAP-PFM-NOT-014-02
    preconditions: Jane has Batch posting; Sam is a colleague.
    steps: Delegate Jane's responsibilities to Sam for seven days.
    expected: >-
      Sam receives one delegation item, Jane receives confirmation and other
      users receive no notice.
    negative: false
    data_needs: Use only records created and owned by this suite.
    bound_to: []
    provenance: proposed
    source: 'services-platform:docs/notifications.md#9. Producers'
    category: interaction
  - id: ATS-PFM-NOT-014-03
    title: Withdraw assignment wording and announce its end
    level: api
    proves:
      - BR-CAP-PFM-NOT-014-03
    preconditions: Jane's delivered assignment announcement is still unread.
    steps: Remove Jane's assignment using the administrator session.
    expected: >-
      The old item becomes inapplicable and leaves unread totals; the assignee
      receives an ending item.
    negative: false
    data_needs: Use only records created and owned by this suite.
    bound_to:
      - >-
        react-console:acceptance/notifications/playwright/journeys/inbox/NT-ACC-0004.spec.ts#NT-ACC-0004
      - TST-PFM-NOT-008
    provenance: test
    source: >-
      react-console:acceptance/notifications/playwright/journeys/inbox/NT-ACC-0004.spec.ts#NT-ACC-0004
    category: transition
    binding_scope: >-
      Each binding supplies its own assertions; the aggregate references do not
      imply that one executable file proves every step.
  - id: ATS-PFM-NOT-014-04
    title: Exclude the acting administrator
    level: api
    proves:
      - BR-CAP-PFM-NOT-014-04
    preconditions: Prepare a administrator who also has the use permission.
    steps: They assign and next end Jane's responsibility.
    expected: >-
      Jane receives the assignment and ending items while the administrator's
      inbox remains unchanged.
    negative: false
    data_needs: Use only records created and owned by this suite.
    bound_to: []
    provenance: proposed
    source: 'services-platform:docs/notifications.md#9. Producers'
    category: permission
  - id: ATS-PFM-NOT-014-05
    title: Publish nothing for a rolled-back assignment
    level: api
    proves:
      - BR-CAP-PFM-NOT-014-05
    preconditions: Prepare a assignment that will fail to save.
    steps: Try the assignment operation.
    expected: No notification request commits and no recipient receives an item.
    negative: false
    data_needs: Use only records created and owned by this suite.
    bound_to: []
    provenance: proposed
    source: 'services-platform:docs/notifications.md#9. Producers'
    category: invariant
  - id: ATS-PFM-NOT-014-06
    title: Preserve assignment on publication refusal
    level: api
    proves:
      - BR-CAP-PFM-NOT-014-08
    preconditions: Prepare a recipient whose display name looks like an e-mail address.
    steps: Save the responsibility assignment for those users.
    expected: >-
      The assignment persists; the rejected notice is logged and no notification
      is sent.
    negative: false
    data_needs: Use only records created and owned by this suite.
    bound_to: []
    provenance: proposed
    source: 'services-platform:docs/notifications.md#9. Producers'
    category: failure
  - id: ATS-PFM-NOT-014-07
    title: Responsibility announcements stay distinct across folding and withdrawal
    category: interaction
    level: api
    proves:
      - BR-CAP-PFM-NOT-014-03
    exercises:
      - CAP-PFM-NOT-014
      - CAP-PFM-NOT-009
      - CAP-PFM-NOT-005
    preconditions: >-
      Prepare Jane and Sam, two scopes and a delegation spanning several
      responsibilities.
    steps: >-
      Assign responsibilities, process notices, read each recipient inbox, fold
      same-scope repeats and end one assignment.
    expected: >-
      Recipients see their own assignment and delegation outcomes. Ending one
      scope leaves the other scope intact, and withdrawal removes the ended
      assignment from applicable unread results.
    negative: false
    data_needs: >-
      A suite-owned workspace, named staff accounts and unique occurrence keys;
      external adapters record attempts without shared writes.
    bound_to: []
    provenance: proposed
    source:
      - >-
        rhythm-v2-docs:specs/platform/notifications/planning/capabilities/CAP-PFM-NOT-014-tell-staff-about-changes-to-their-own-responsibilities.md#frontmatter
      - >-
        rhythm-v2-docs:specs/platform/notifications/planning/capabilities/CAP-PFM-NOT-009-work-through-my-own-notifications.md#frontmatter
      - >-
        rhythm-v2-docs:specs/platform/notifications/planning/capabilities/CAP-PFM-NOT-005-fold-quick-repeats-into-one-notice.md#frontmatter
    interaction_with:
      - CAP-PFM-NOT-009
      - CAP-PFM-NOT-005
evidence:
  - >-
    Pinned evidence inventory 1:
    react-console:acceptance/notifications/playwright/journeys/inbox/NT-ACC-0001.spec.ts;
    react-console:acceptance/notifications/playwright/journeys/inbox/NT-ACC-0004.spec.ts
  - 'Pinned evidence inventory 2: services-platform:docs/notifications.md'
coverage:
  rule: covered
  transition: covered
  validation: 'gap: FND-PFM-NOT-075'
  permission: covered
  edge: 'gap: FND-PFM-NOT-075'
  failure: covered
  boundary: 'gap: FND-PFM-NOT-075'
  concurrency: 'gap: FND-PFM-NOT-075'
  invariant: covered
  interaction: covered
coverage_notes:
  validation: Malformed input is not isolated in a dedicated category scenario.
  edge: Exceptional but valid input needs a dedicated expected-outcome case.
  boundary: >-
    The suite does not independently prove both sides of every size, time or
    workspace limit.
  concurrency: >-
    The suite lacks a complete race case with controlled interleaving and
    post-race assertions.
findings:
  - FND-PFM-NOT-075
transition_coverage: []
workflow_coverage:
  - workflow: WF-PFM-NOT-004
    capabilities:
      - CAP-PFM-NOT-006
      - CAP-PFM-NOT-005
      - CAP-PFM-NOT-014
    scenario_candidate: ATS-PFM-NOT-014-07
    coverage: 'gap: FND-PFM-NOT-084'
    reason: >-
      The proposed related-capability sequence does not independently isolate
      every workflow hop, failure seam and interleaving.
  - workflow: WF-PFM-NOT-009
    capabilities:
      - CAP-PFM-NOT-014
      - CAP-PFM-NOT-002
      - CAP-PFM-NOT-006
    scenario_candidate: ATS-PFM-NOT-014-07
    coverage: 'gap: FND-PFM-NOT-084'
    reason: >-
      The proposed related-capability sequence does not independently isolate
      every workflow hop, failure seam and interleaving.
domain_invariant_coverage: []
---

# Announce explicit responsibility changes: Capability Test Specification

## Coverage

Each scenario names the guarantee it proves. Category coverage describes specified cases; executable bindings retain their narrower assertion boundaries. Lifecycle coverage remains a gap wherever guards and effects lack independent verification.

| Rule | Proof |
|---|---|
| `BR-CAP-PFM-NOT-014-01` | `ATS-PFM-NOT-014-01`, `ATS-PFM-NOT-014-07` |
| `BR-CAP-PFM-NOT-014-02` | `ATS-PFM-NOT-014-02` |
| `BR-CAP-PFM-NOT-014-03` | `ATS-PFM-NOT-014-03` |
| `BR-CAP-PFM-NOT-014-04` | `ATS-PFM-NOT-014-04` |
| `BR-CAP-PFM-NOT-014-05` | `ATS-PFM-NOT-014-05` |
| `BR-CAP-PFM-NOT-014-08` | `ATS-PFM-NOT-014-06` |
| `BR-CAP-PFM-NOT-014-09` | `FND-PFM-NOT-075` |

## Interactions With Related Capabilities

Prepare Jane and Sam, two scopes and a delegation spanning several responsibilities. Assign responsibilities, process notices, read each recipient inbox, fold same-scope repeats and end one assignment.

The interaction case combines the producing, processing and reading outcomes named in its frontmatter. It remains proposed until an executable suite performs that complete sequence.
