---
id: WF-PFM-NOT-006
title: Alert Rhythm HQ in Slack
trigger: Provisioning completion, settled failure or another Platform system event requests an HQ alert.
product_area: platform
module: notifications
revision: 1
status: draft
design_intent: confirmed
origin: PLAT-M23 D1, Andrew 2026-10-21 18:05 ET ("a built in Slack integration that receives alerts to
  channels ... a hardcoded system-level motion and can't be configured. It's code"), services-platform:docs/milestones/PLAT-M23-notifications-core-and-in-app.md#Decisions
implementation_evidence: observed
inference: []
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
implements:
- CAP-PFM-NOT-013
- CAP-PFM-NOT-003
- CAP-PFM-NOT-007
moves:
- STATE-PFM-NOT-002
- STATE-PFM-NOT-003
- STATE-PFM-NOT-005
crosses:
- SVC-PFM-NOT-notifications
hops:
- n: 1
  actor_or_service: Workspace provisioning (Security and workspace lifecycle)
  action: Publish the job-specific HQ provisioning alert at completion or settled failure alongside requester
    communication.
  anchor: FND-PFM-NOT-049
  seam: sync
  on_failure: Log publication failure without failing the provisioning job.
  left_inconsistent: The job may finish without an HQ alert.
  observer: Job notice failure logs and publish-failure metric.
  provenance: unknown
  source: FND-PFM-NOT-049
- n: 2
  actor_or_service: System publication
  action: Validate the system envelope, derive its identity, commit work in the reserved system workspace
    and nudge dispatch without throwing to the caller.
  anchor: services-platform:modules/notifications/services/requests/publish-system-notification.ts:publishSystemNotification
  seam: sync
  on_failure: Return unsuccessful publication and log the error.
  left_inconsistent: The alert may be absent.
  observer: System publication failure logs.
  provenance: observed
  source: services-platform:modules/notifications/services/requests/publish-system-notification.ts:publishSystemNotification
- n: 3
  actor_or_service: Request consumer
  action: Restrict system audience handling to the reserved workspace and create a recipient-free notice
    and queued Slack payload for each mapped channel.
  anchor: services-platform:modules/notifications/services/channels/slack-system/hq-channels.ts:hqChannelsOf
  seam: queue
  on_failure: Retry processing; reject system audiences submitted in a customer workspace.
  left_inconsistent: No partially committed system notice set.
  observer: System-workspace request history.
  provenance: test
  source: services-platform:modules/notifications/tests/integration/services/system/system-audience.integration.spec.js#writes
    one instance and one delivery for each channel of the map
- n: 4
  actor_or_service: Chat delivery consumer and the Slack system adapter
  action: Read the configured bot and channel mapping, post to Slack, and retain its message reference.
  anchor: services-platform:modules/notifications/services/channels/slack-system/slack-system-adapter.ts
  seam: queue
  on_failure: Retry rate limits and temporary failures; fail permanent authorization or channel errors;
    skip missing configuration.
  left_inconsistent: Terminally failed alerts require eligible operator action rather than automatic resend.
  observer: System Slack terminal-failure alarm.
  provenance: test
  source: services-platform:modules/notifications/tests/unit/slack-system-adapter.spec.js#never puts the
    token in a log line, an outcome or the payload it stored
idempotency: Job occurrence identity deduplicates repeated publication for each definition and channel.
concurrency: Completion and failure use separate definitions; reconciler-settled failure reuses the job
  occurrence.
branches:
- Personal Slack remains unavailable despite the installed system adapter.
- Migration creates the reserved demonstration system workspace without a live licence.
waits: []
evidence:
- 'services-platform at ad3f6a65: modules/notifications/services/requests/publish-system-notification.ts;
  services/channels/slack-system/*.ts; services/system-scope/ensure-system-scope.ts; docs/notifications.md
  §9 and §10; docs/debt/notifications-system-audience-in-the-producer-library.md.'
controls: [TC-AVL-001, TC-AVL-004, TC-AVL-005, TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-AZ-005, TC-CHG-001, TC-CHG-002, TC-CHG-003, TC-CHG-004, TC-CHG-005, TC-CHG-006, TC-CHG-007, TC-CRY-001, TC-CRY-002, TC-CRY-003, TC-CRY-004, TC-DAT-001, TC-DAT-002, TC-DAT-003, TC-DAT-006, TC-IAM-001, TC-IAM-002, TC-IAM-003, TC-IAM-004, TC-IAM-005, TC-IAM-006, TC-LOG-001, TC-LOG-002, TC-LOG-003, TC-LOG-004, TC-LOG-005, TC-MON-001, TC-MON-002, TC-MON-003, TC-PI-001, TC-PI-002, TC-PI-003, TC-PI-004, TC-PI-005, TC-PRV-001, TC-PRV-002, TC-PRV-004, TC-SEC-001, TC-SEC-002, TC-SEC-003, TC-SEC-004, TC-TEN-001, TC-TEN-002, TC-TEN-003, TC-TEN-004, TC-VEN-001, TC-VEN-002, TC-VEN-003]
---
# Alert Rhythm HQ in Slack

## What It Does

Provisioning completion, settled failure or another Platform system event requests an HQ alert.

## The Flow

```mermaid
flowchart TD
    h0["Publish the job-specific HQ provisioning alert at completion or settled failure alongside requester communication"]
    h1["Validate the system envelope, derive its identity, commit work in the reserved system workspace and nudge dispatch "]
    h0 --> h1
    h2["Restrict system audience handling to the reserved workspace and create a recipient-free notice and queued Slack pay"]
    h1 --> h2
    h3["Read the configured bot and channel mapping, post to Slack, and retain its message reference"]
    h2 --> h3
```

## When Something Fails

The hop rows identify each retry boundary, any state left behind and the available observer. Job occurrence identity deduplicates repeated publication for each definition and channel. Completion and failure use separate definitions; reconciler-settled failure reuses the job occurrence.

## Open Design Questions

Personal Slack remains unavailable despite the installed system adapter. Migration creates the reserved demonstration system workspace without a live licence.
