Skip to content

CAP-PFM-NOT-003Select eligible notification recipients

Markdown

CAP-PFM-NOT-003

Select eligible notification recipients

Markdown
  • DocumentDraft
  • Product intentProposed
  • ImplementationObserved

KindCapabilityProduct areaPlatformModuleStaff Notifications and Association CommunicationsRevision1

Read atservices-platform ad3f6a65react-console baf6dae3

The Formal Contract

The narrative above explains; the sections below are authoritative — the rules, scenarios and tests this document binds.

Outcomes
Audience selection identifies eligible staff and records why each person qualifies.Ineligible recipients receive no new delivery.
Surfaces
job
Intent sources
services-platform:docs/proposals/notifications/23-decisions.md#D-04services-platform:docs/milestones/plans/PLAT-M23-plan.humanized.md#PLAT-M23-S07services-platform:docs/milestones/plans/PLAT-M23-plan.humanized.md#PLAT-M23-S08services-platform:docs/milestones/plans/PLAT-M23-plan.humanized.md#PLAT-M23-S09

Controls

29 controls apply, from the corpus control catalogue.

TC-AVL-005 TC-AZ-001 TC-AZ-002 TC-AZ-003 TC-AZ-004 TC-DAT-001 TC-DAT-002 TC-DAT-003 TC-IAM-001 TC-IAM-002 TC-IAM-004 TC-IAM-005 TC-LOG-001 TC-LOG-002 TC-LOG-003 TC-LOG-004 TC-LOG-005 TC-PI-001 TC-PI-002 TC-PI-005 TC-PRV-001 TC-PRV-002 TC-TEN-001 TC-TEN-002 TC-TEN-003 TC-TEN-004 TC-VEN-001 TC-VEN-002 TC-VEN-003

Business Rules

8 rules, 8 to be proved before approval. A rule's product intent is derived from its origin: 2 confirmed by a product decision, the rest inheriting this capability's proposed.

IdRuleKindEnforced atProvenance
01must prove
Proposed
Audience entries select a user, several users, a scoped responsibility, a role or a permission; Definitions restrict accepted types; Empty audiences, unknown types and resource scopes without identifiers are rejected, with allowed types reported for a mismatch.
no proof recorded yet
validationservicetest
services-platform:modules/notifications/tests/unit/audience-planner.spec.js#refuses a kind the definition does not accept, naming the kinds it does
02must prove
Confirmed
Recipients are resolved during processing rather than publication; a responsibility transferred before dispatch therefore reaches its current holder.
no proof recorded yet
policyservicetest
services-platform:modules/notifications/tests/integration/services/orchestration/resolve-audience.integration.spec.js#changes the people when the responsibility is reassigned between the publish and the dispatch
03must prove
Proposed
Responsibility lookup supplies current holders, delegates and applicable fallback holders along the requested scope chain; Holding the responsibility in another unit does not qualify a person for this scope.
no proof recorded yet
calculationservicetest
04must prove
Proposed
Roles select their active workspace members; permissions select people with active roles granting the permission under authorizer matching; missing roles and ungranted permissions yield no recipients.
no proof recorded yet
calculationservicetest
05must prove
Proposed
Recipients form a deduplicated union sorted by user identifier; Producer exclusions and the actor are removed unless actor inclusion is requested.
no proof recorded yet
calculationservicetest
services-platform:modules/notifications/tests/unit/audience-planner.spec.js#leaves out the actor, who is not told of their own act
06must prove
Confirmed
After exclusions and actor removal, an audience over two hundred is rejected in full; an audience of exactly two hundred is allowed.
no proof recorded yet
validationservicetest
07must prove
Proposed
Eligible recipients are active console users belonging to the workspace's customer; other customers' users, pending invitees and portal users are removed and recorded as isolation refusals.
no proof recorded yet
invariantservicetest
services-platform:modules/notifications/tests/integration/services/orchestration/orchestrate-request.integration.spec.js#drops a user of another customer, an invited user and a portal user, recording isolation_refused
08must prove
Proposed
A resolved empty audience finishes as no recipients without producing notices, including when isolation removes every candidate.
no proof recorded yet
lifecycleservicetest
services-platform:modules/notifications/tests/integration/services/orchestration/orchestrate-request.integration.spec.js#notifies nobody when everyone named is outside the organization, recording no_recipients with the refusal

Scenarios

IdGivenWhenThenProvenance
01Jane holds Northeast Batch posting and has delegated cover to Sam for a week.The producer selects responsibility holders at Northeast.Jane qualifies as holder and Sam as delegate; another unit's holder is excluded.test
services-platform:modules/notifications/tests/integration/services/orchestration/resolve-audience.integration.spec.js#is the delegates of that unit’s holders too, worded as covering the responsibility
02An audience selects a user belonging to a different customer.Platform evaluates the request.No eligible recipient remains and History retains the isolation refusal.test

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.