- API_CLI_REFERENCE.md, INSTALL_GUIDE.md, quickstart.md, architecture/integrations.md, dev/DEV_ENVIRONMENT_SETUP.md, integrations/LOCAL_SERVICES.md: reflect real-service wiring. - docs/modules/**: module dossier updates across the modules touched by SPRINT_20260415_001..007 + SPRINT_20260416_003..017 + SPRINT_20260417_018..024 + SPRINT_20260418_025 + SPRINT_20260419_026. - docs/features/checked/web/**: update feature notes where UI changed. - docs/qa/feature-checks/runs/web/evidence-presentation-ux/: QA evidence artifacts. - docs/setup/**, docs/technical/**: align with setup wizard contracts. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
50 lines
3.1 KiB
Markdown
50 lines
3.1 KiB
Markdown
# Notifier (Notifications Studio Host)
|
|
|
|
**Status:** Implemented
|
|
**Source:** `src/Notifier/`
|
|
**Owner:** Notify Guild
|
|
|
|
> **Note:** Notifier is the **deployment host** for the Notifications Studio. For the underlying notification toolkit (engine, storage, queue, connectors), see [`../notify/`](../notify/).
|
|
|
|
## Purpose
|
|
|
|
Notifier provides the deployable WebService and Worker that compose the Notify libraries into the Notifications Studio experience. It's the entry point for notification delivery, rule management, and delivery history.
|
|
|
|
## Latest Updates
|
|
|
|
- `2026-04-15`: production `Notifier` runtime no longer shadows the shared Notify persistence/queue stack with in-memory repositories.
|
|
- `2026-04-15`: pack-approval ingestion persists durably in `notify.pack_approvals` and uses durable `notify.locks` idempotency coordination.
|
|
- `2026-04-15`: restart-survival proof now exists via `NotifierDurableRuntimeProofTests`, covering submit -> persist -> process -> readback on real Postgres + Redis.
|
|
- `2026-04-16`: `NullNotifyEventQueue` is no longer available in `Development`; only the `Testing` environment may use the null queue fallback.
|
|
- `2026-04-16`: non-testing throttle and operator-override admin APIs now persist through PostgreSQL-backed suppression services and legacy compat adapters; restart-survival proof is covered by `NotifierSuppressionDurableRuntimeTests`.
|
|
- `2026-04-16`: non-testing escalation-policy and on-call schedule APIs now persist through PostgreSQL-backed services and legacy compat adapters; restart-survival proof is covered by `NotifierEscalationOnCallDurableRuntimeTests`.
|
|
- `2026-04-16`: non-testing quiet-hours calendars and maintenance windows now persist through PostgreSQL-backed runtime services and legacy compat adapters; restart-survival proof is covered by `NotifierQuietHoursMaintenanceDurableRuntimeTests`.
|
|
- `2026-04-16`: non-testing webhook security, tenant isolation, dead-letter administration, and retention cleanup state now persist through PostgreSQL-backed runtime services and legacy compat adapters; restart-survival proof is covered by `NotifierSecurityDeadLetterDurableRuntimeTests`.
|
|
|
|
## Relationship to Notify
|
|
|
|
| Component | Path | Purpose |
|
|
|-----------|------|---------|
|
|
| **Notify** | `src/Notify/` | Reusable toolkit: engine, models, connectors, queue |
|
|
| **Notifier** | `src/Notifier/` | Host: WebService and Worker that compose Notify |
|
|
|
|
Per **2025-11-02 module boundary decision**: Maintain separation for packaging, offline kit parity, and cross-module governance.
|
|
|
|
## Components
|
|
|
|
**Deployables:**
|
|
- `StellaOps.Notifier.WebService` - REST API for rules/channels CRUD, test send, delivery browsing
|
|
- `StellaOps.Notifier.Worker` - Event consumers, evaluators, renderers, delivery workers
|
|
|
|
**Integration Points:**
|
|
- Uses `StellaOps.Notify.Models`, `StellaOps.Notify.Queue`
|
|
- Channels: Slack, Teams, Email, Webhook (via Notify connectors)
|
|
- Storage: PostgreSQL (notify schema)
|
|
- Queue: Valkey Streams / NATS JetStream
|
|
|
|
## Related Documentation
|
|
|
|
- Notify Architecture: `../notify/architecture.md`
|
|
- Authority: `../authority/` (OAuth clients)
|
|
- Scheduler: `../scheduler/` (event sources)
|