Skip to content

CAP-PFM-NOT-006Remove notices that have become stale

Markdown

CAP-PFM-NOT-006

Remove notices that have become stale

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
Withdrawal stops applicable pending work and hides stale inbox items.Cancellation records the reason for ending the request.
Surfaces
jobapi
Intent sources
services-platform:docs/milestones/plans/PLAT-M23-plan.humanized.md#2. Scopeservices-platform:docs/milestones/plans/PLAT-M23-plan.humanized.md#4. Assumptionsservices-platform:docs/milestones/plans/PLAT-M23-plan.humanized.md#PLAT-M23-S05

Controls

31 controls apply, from the corpus control catalogue.

TC-AVL-004 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-IAM-006 TC-LOG-002 TC-LOG-003 TC-LOG-005 TC-MON-001 TC-PI-001 TC-PI-002 TC-PI-003 TC-PI-004 TC-PI-005 TC-PRV-001 TC-PRV-002 TC-TEN-001 TC-TEN-002 TC-TEN-003 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: 0 confirmed by a product decision, the rest inheriting this capability's proposed.

IdRuleKindEnforced atProvenance
01must prove
Proposed
A cancellation processed before its publication prevents notification and records cancellation, whether matched by publication key or replacement key and regardless of queue order; it does not cancel a publication submitted subsequently.
no proof recorded yet
lifecycleservicetest
services-platform:modules/notifications/tests/integration/services/orchestration/cancel-and-supersede.integration.spec.js#leaves nobody told and records the request cancelled when the cancel names the publish’s key
02must prove
Proposed
Cancellation after console delivery keeps the item readable but marks it no longer applicable and removes it from unread totals; Reprocessing is harmless; settled requests are unchanged.
no proof recorded yet
lifecycleservicetest
services-platform:modules/notifications/tests/integration/services/orchestration/cancel-and-supersede.integration.spec.js#marks the instance superseded, leaves it readable and takes it out of the unread count
03must prove
Proposed
Withdrawal cancels pending deliveries and removes their queued work; Messages already sent remain sent, although the console notice becomes superseded.
no proof recorded yet
lifecycleservicetest
services-platform:modules/notifications/tests/integration/services/orchestration/cancel-and-supersede.integration.spec.js#cancels the queued delivery and its work row, and does not recall one that already left
04must prove
Proposed
With occurrence replacement enabled, a valid later publication using the same replacement key supersedes the earlier open request and produces a new notice; Disabled replacement and rejected later requests leave the earlier request intact.
no proof recorded yet
lifecycleservicetest
services-platform:modules/notifications/tests/integration/services/orchestration/cancel-and-supersede.integration.spec.js#supersedes the earlier request of a definition whose scope is the occurrence, and tells the person the new one
05must prove
Proposed
Processing rejects expired requests without notification; Expiry uses the explicit deadline or the definition's age limit from publication, defaulting to seven days.
no proof recorded yet
lifecycleservicetest
services-platform:modules/notifications/tests/integration/services/orchestration/orchestrate-request.integration.spec.js#expires a request older than its definition’s expires_after from the instant the producer wrote it
06must prove
Proposed
Future-dated work returns to the queue until its not-before instant; processing cannot deliver it early.
no proof recorded yet
policyservicetest
services-platform:modules/notifications/tests/integration/services/orchestration/orchestrate-request.integration.spec.js#gives back a request that is not due yet, writing nothing, never processing it early
07must prove
Proposed
An accepted request remains open until expiry and outstanding delivery work end; Nightly reconciliation expires unsent deliveries, supersedes a notice when nothing else was sent, and settles the request; subsequent cancellation has no remaining effect.
no proof recorded yet
lifecycleservicetest
services-platform:modules/notifications/tests/integration/services/reconcile/reconcile-tenant.integration.spec.js#settles a request past its expiry whose notification was delivered, so a late cancel reaches nothing
08must prove
Proposed
Before sending queued work, superseded notices cause cancellation and expired requests cause expiry.
no proof recorded yet
lifecycleservicetest
services-platform:modules/notifications/tests/integration/services/dispatch/deliver-delivery.integration.spec.js#cancels, not sends, a delivery whose notification was superseded after it was queued

Scenarios

IdGivenWhenThenProvenance
01Jane's new assignment ends two minutes later, before its announcement is processed.Platform processes the announcement and withdrawal.No assignment item appears and its request becomes cancelled; an ending announcement remains a separate outcome.test
02Jane read an assignment announcement the previous day.The producer ends that assignment.The retained item becomes inapplicable and cannot contribute to unread totals.inferred

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.