- SLACK (Incoming Webhook, Block Kit), TEAMS (Workflows webhook, Adaptive
Card), WEBHOOK (Standard Webhooks signature via a stand-in for core's
WebhookSigner, QRun-IO/qqq#1109), PAGERDUTY (Events API v2 trigger /
acknowledge / resolve, dedup_key = type:key), ALERTMANAGER sink
(/api/v2/alerts, qqq_* labels, qqq_origin guard, endsAt on resolve)
- shared HTTP rules: https only unless allowInsecureHttp, 10 s timeout,
2xx sent, 408/425/429/5xx retry, other 4xx permanent; URLs (secrets for
Slack and Teams) never appear in errors
- AlertMessage carries one structured, redacted entry per alert
- POST /qqq/v1/alerts/ingest/alertmanager: bearer token by secret
reference (off without one), firing/resolved to raise/resolve, EXTERNAL
prometheus.* types with notifications off, loop guard
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>