feat: Add Storybook configuration and motion tokens implementation
- Introduced Storybook configuration files (`main.ts`, `preview.ts`, `tsconfig.json`) for Angular components. - Created motion tokens in `motion-tokens.ts` to define durations, easing functions, and transforms. - Developed a Storybook story for motion tokens showcasing their usage and reduced motion fallback. - Added SCSS variables for motion durations, easing, and transforms in `_motion.scss`. - Implemented accessibility smoke tests using Playwright and Axe for automated accessibility checks. - Created portable and sealed bundle structures with corresponding JSON files for evidence locker. - Added shell script for verifying notify kit determinism.
This commit is contained in:
27
docs/notifications/operations/alerts/notify-slo-alerts.yaml
Normal file
27
docs/notifications/operations/alerts/notify-slo-alerts.yaml
Normal file
@@ -0,0 +1,27 @@
|
||||
groups:
|
||||
- name: notify-slo
|
||||
rules:
|
||||
- alert: NotifyDeliverySuccessSLO
|
||||
expr: sum(rate(notify_delivery_success_total[5m])) / sum(rate(notify_delivery_total[5m])) < 0.98
|
||||
for: 10m
|
||||
labels:
|
||||
severity: page
|
||||
annotations:
|
||||
summary: "Notify delivery success below SLO"
|
||||
description: "Success ratio below 98% over 10m"
|
||||
- alert: NotifyBacklogDepthHigh
|
||||
expr: notify_backlog_depth > 5000
|
||||
for: 5m
|
||||
labels:
|
||||
severity: page
|
||||
annotations:
|
||||
summary: "Notify backlog too high"
|
||||
description: "Backlog depth exceeded 5000 messages"
|
||||
- alert: NotifyDlqGrowth
|
||||
expr: rate(notify_dlq_depth[10m]) > 50
|
||||
for: 10m
|
||||
labels:
|
||||
severity: ticket
|
||||
annotations:
|
||||
summary: "Notify DLQ growth"
|
||||
description: "Dead letter queue growing faster than threshold"
|
||||
9
docs/notifications/operations/dashboards/notify-slo.json
Normal file
9
docs/notifications/operations/dashboards/notify-slo.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"title": "Notify SLO",
|
||||
"panels": [
|
||||
{ "title": "Delivery success", "target": "sum(rate(notify_delivery_success_total[5m])) / sum(rate(notify_delivery_total[5m]))" },
|
||||
{ "title": "Backlog depth", "target": "notify_backlog_depth" },
|
||||
{ "title": "DLQ depth", "target": "notify_dlq_depth" },
|
||||
{ "title": "Latency p95", "target": "histogram_quantile(0.95, rate(notify_delivery_latency_seconds_bucket[5m]))" }
|
||||
]
|
||||
}
|
||||
7
docs/notifications/operations/quotas.md
Normal file
7
docs/notifications/operations/quotas.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# Quotas, backpressure, and DLQ (NR4)
|
||||
|
||||
- Per-tenant quotas: 500 deliveries/minute default; channel overrides: webhook 200/min, email 120/min, chat 240/min.
|
||||
- Burst budget: 2x quota for 60 seconds, then hard clamp.
|
||||
- Backpressure: reject enqueue when backlog > quota*10 or DLQ growth > 5%/min.
|
||||
- DLQ schema: `docs/notifications/schemas/dlq-notify.schema.json`; redrive requires idempotent `delivery_id`/`dedupe_key`.
|
||||
- Metrics to alert: backlog depth, DLQ depth, redrive success rate, enqueue reject count.
|
||||
7
docs/notifications/operations/retries.md
Normal file
7
docs/notifications/operations/retries.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# Retry and idempotency policy (NR5)
|
||||
|
||||
- `delivery_id`: UUIDv7; `dedupe_key`: hash(event_id + rule_id + channel_id).
|
||||
- Backoff: exponential with jitter; base 2s, factor 2, max 5 attempts, cap 5 minutes between attempts.
|
||||
- Connectors must be idempotent; retries reuse the same `dedupe_key` and must not duplicate sends.
|
||||
- Out-of-order acks ignored: only monotonic `attempt` accepted.
|
||||
- Record retry outcomes in receipts and include attempt count + reason.
|
||||
Reference in New Issue
Block a user