Skip to content

CAP-PFM-NOT-008Recover notification processing and retain its history

Markdown

CAP-PFM-NOT-008

Recover notification processing and retain its history

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
Expired leases become eligible for recovery.Reconciliation and retention process stored notification history, with alarms for missing dispatcher and reconciliation activity.
Surfaces
job
Intent sources
services-platform:docs/milestones/plans/PLAT-M23-plan.humanized.md#2. Scopeservices-platform:docs/milestones/plans/PLAT-M23-plan.humanized.md#PLAT-M23-S15services-platform:docs/milestones/plans/PLAT-M23-plan.humanized.md#PLAT-M23-S16

Controls

41 controls apply, from the corpus control catalogue.

TC-AVL-001 TC-AVL-004 TC-AVL-005 TC-AZ-001 TC-AZ-002 TC-AZ-003 TC-AZ-004 TC-CHG-001 TC-CHG-002 TC-CHG-003 TC-CHG-004 TC-CHG-005 TC-CHG-006 TC-DAT-001 TC-DAT-002 TC-DAT-003 TC-DAT-004 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-MON-002 TC-PI-001 TC-PI-002 TC-PI-004 TC-PI-005 TC-PRV-001 TC-PRV-002 TC-PRV-004 TC-TEN-001 TC-TEN-002 TC-TEN-003 TC-TEN-004 TC-VEN-001 TC-VEN-002 TC-VEN-003

Business Rules

11 rules, 10 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
Dispatch briefly claims workspace entries, publishes batches of ten outside a transaction and deletes only acknowledged entries; Rejected entries await another run; claimed entries are left alone; Scheduled dispatch visits all workspaces, while a nudge targets one.
no proof recorded yet
policyservice, databasetest
02must prove
Proposed
A crash after publication but before deletion leaves the entry available for recovery; repeated processing avoids duplicate records.
no proof recorded yet
invariantservicetest
services-platform:modules/notifications/tests/integration/services/dispatch/dispatch-notifications.integration.spec.js#leaves work for the next run when a run died between the publish and the delete, and the repeat makes nothing twice
03must prove
Proposed
A redelivered item whose request already exists makes no further records and only nudges dispatch.
no proof recorded yet
invariantservice, databasetest
services-platform:modules/notifications/tests/integration/services/orchestration/orchestrate-request.integration.spec.js#recognizes a redelivered item by its record, writes nothing more and nudges the dispatcher
04
Proposed
The request consumer acknowledges recorded and unreadable items; future work receives visibility until due, or a new delayed copy when another receive would exhaust it; Item exceptions are reported independently so other batch items proceed.
policyservicetest
services-platform:modules/notifications/tests/integration/services/dispatch/process-request-batch.integration.spec.js#replaces a request that is not due with a fresh delayed copy when the next receive would be the last
05must prove
Proposed
Nightly reconciliation at 03:40 UTC runs per operational workspace; Sending deliveries ambiguous for fifteen minutes fail without resending; chat or text work lost for over an hour is requeued; unprocessed queue entries past expiry become expired requests.
no proof recorded yet
lifecycleservicetest
services-platform:modules/notifications/tests/integration/services/reconcile/reconcile-tenant.integration.spec.js#settles a delivery left sending past the ambiguity window failed ambiguous, and the instance with it, never resending
06must prove
Proposed
Retention removes requests, deliveries, events and notice keys older than thirteen calendar months in batches; Text challenges disappear one day after expiry; Notice partitions retain thirteen months and prepare two ahead; inserts without a partition fail.
no proof recorded yet
lifecycleservice, databasetest
services-platform:modules/notifications/tests/integration/services/reconcile/reconcile-tenant.integration.spec.js#deletes requests, deliveries, events, instance keys and challenges past it and keeps what is younger
07must prove
Proposed
Workspace deletion purges notification data; reset clears notices and delivery work but preserves configuration, personal preferences and text-usage accounting.
no proof recorded yet
lifecycleservicetest
services-platform:modules/notifications/tests/integration/services/persistence/tenant-purges.integration.spec.js#removes the operational records and leaves the configuration and the metering as they were
08must prove
Proposed
The approved restriction excludes message bodies, addresses and tokens from logs and metrics.
no proof recorded yet
invariantservicedocumented
09must prove
Proposed
Workspace tables apply row-level security; Recorded exceptions cover the shared definition registry and reconciliation job root; steps and events inherit job ownership instead of separate workspace identifiers.
no proof recorded yet
invariantdatabasetest
services-platform:modules/notifications/tests/unit/registry-tables.spec.js#exempts exactly the catalog among the module’s tables as a tenantless registry, with a reason
10must prove
Proposed
Deployment defines an operations-paging alarm when the notification dispatcher records no run in a fifteen-minute interval, treating missing metric data as a breach.
no proof recorded yet
policyserviceobserved
11must prove
Proposed
Deployment defines an operations-paging alarm when nightly notification reconciliation records no scheduled run for two consecutive days, treating missing metric data as a breach.
no proof recorded yet
policyserviceobserved

Scenarios

IdGivenWhenThenProvenance
01Dispatch publishes work but exits before deleting its queue entry.A recovery run processes the surviving entry.Repeated publication produces no second recipient notice for Jane.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.