Delivery Credential Preflight

Produktiver Versand bleibt an Zielsystem-Gates gebunden

Delivery-Credential-Preflight: 1 von 7 Zielsystemtypen voll konfiguriert, 0 teilweise, native Runner-Ziele 1, Versandfreigabe nicht aktiv.

Dieser Preflight zeigt nur Credential-Referenzen, Gate-Status und Betriebsnachweise. Er veröffentlicht keine Webhook-URLs, API-Keys, Tokens, E-Mail-Empfänger, Slack-/Teams-Ziel-URLs oder privaten Rohpayloads.

blockedStatus 1/7Ziele ready 1nativ sendbar neinFreigabe 0Outbox 0gesendet passedSmoke 0Smoke-Fehler 0External Attempts 6Cred-Refs 8Controls 1blockiert 2Warnungen 5Konsolidierung 5Claim-Grenzen

Delivery-Verantwortungs-Handoff

Zielsysteme, Empfänger, Approval und Claims sauber trennen

Delivery-Handoff für Betreiber, Receiver-Verantwortung und Security: Zielsysteme, Empfänger, Approval, HMAC, Dry-run und Claims werden no-secret getrennt.

waiting_for_receiver_target_and_operator_approvalStatus 6Schritte 6private Inputs 7öffentliche Outputs 8verbotene Outputs 5Validierungschecks 7Evidence-Links
Receiver-Scope festlegen Betreiber/IT

Kanal, Eventtypen, Testempfänger, Zweck und Eskalationsfenster privat festlegen.

Abnahme: Scope nennt Zielsystemtyp, Rollenempfänger, Eventtypen, Testfenster und Rollback-Verantwortlichkeit. Grenze: Öffentlich erscheinen Rollen und Status, keine echten Empfänger oder Ziel-URLs.
Evidence
Zielsystem-Referenzen privat setzen Platform/Security

Webhook-, Slack-, Teams-, Jira-, SMTP- oder SendGrid-Refs nur in sicherer Server-Env oder Secret Manager setzen.

Abnahme: Preflight zeigt present/missing-Status; Public Exports enthalten keine Zielwerte. Grenze: Env-Template bleibt Placeholder; echte Werte dürfen nie committed oder publiziert werden.
Evidence
Receiver-Vertrag abnehmen Receiver-Verantwortung

HMAC, Idempotency-Key, Body-SHA-256, Retry, Fehlercodes und Dedupe im Testreceiver prüfen.

Abnahme: Receiver akzeptiert signierte Testpayloads, dedupliziert Wiederholungen und liefert definierte Fehlerantworten. Grenze: Payload-Fixture beweist Vertrag, aber keine erfolgreiche Produktivzustellung.
Evidence
No-Send-Dry-run ausführen Security/Platform

Alert-Dispatch-Dry-run und Readiness-Smoke ausführen, bevor Approval gesetzt wird.

Abnahme: sent_count=0, external_send_attempt_count=0, failed_check_count=0; erwartete Blocker bleiben sichtbar. Grenze: Dry-run ist keine Zustellung an Betreiberkanal.
Evidence
Dispatch-Gate signieren Betreiber/Security

SAFERPAGE_ALERT_DISPATCH_APPROVED erst nach Receiver-, Empfänger-, Datenschutz- und Stop-Bedingungsfreigabe aktivieren.

Abnahme: Approval-Record nennt Scope, Testrefs, Smoke-Refs, Rollback-Verantwortlichkeit und Review-Ablauf. Grenze: Freigabestatus darf öffentlich sein; Personen, Empfänger und interne Nachweis-URLs bleiben privat.
Evidence
Receiver-Canary kontrolliert starten Platform/Receiver-Verantwortung

Ersten produktionsnahen Test mit begrenztem Scope ausführen und Runner-State, Zielsystem-Dedupe und Fehlerquote prüfen.

Abnahme: sent_count steigt nur für freigegebenen Scope; error_count=0; Dedupe und Pausepfad sind belegt. Grenze: Canary ist begrenzter Test, kein pauschales Support-Ziel- oder Alert-Versprechen.
Evidence
Private Inputs

Webhook-/Slack-/Teams-/Jira-Ziel-URL

Nie öffentlich ausgeben; nur Zielsystemtyp und present/missing zeigen.

HMAC-/Webhook-Secret

Nur Signaturalgorithmus und Headernamen zeigen.

Empfänger-/Channel-Freigabe

Nur Rollen, Zweck und Freigabestatus zeigen.

Dispatch-Approval-Record

Nur Status, Scope-Klasse, Evidence-Refs und Reviewdatum öffentlich.

Privates Receiver-Testlog

Nur aggregierte Abnahme und Hash-/Request-ID-Referenzen zeigen.

Rollback-/Pause-Verantwortlichkeit

Nur Rolle und Stop-Bedingungen öffentlich zeigen.
Öffentlich erlaubte Outputs

Env-Referenzstatus

Preflight kann ready/missing zeigen, ohne Werte offenzulegen.

Receiver-Vertrag

HMAC, Idempotency und Body-SHA-256 sind prüfbare Integrationsanforderungen.

Dry-run-Zähler

No-Send-Guardrails sind messbar.

Runner-Statuszähler

sent/error/outbox zeigen Betriebszustand ohne Zielsystemdetails.

Stop-Bedingungen

Betreiber sehen, wann Versand pausiert werden muss.

Approval-Status

Go-live-Gate ist nachvollziehbar, ohne Empfänger zu nennen.

SaferPage-Evidence-URLs

Abnahme bleibt verlinkbar und maschinenlesbar.
Verbotene Outputs

Webhook-, Slack-, Teams-, Jira-, SMTP- oder SendGrid-Ziel-URLs

API-Keys, Tokens, HMAC-Secrets, SMTP-Passwörter oder Authorization-Header

E-Mail-Adressen, Slack-Channels, Teams-Channel-IDs oder echte Empfängerlisten

Private Alert-Payloads, Rohpayloads, Kundendokumente oder interne Nachweispositionstexte

Zielsystem-Testlogs mit Personen, Hostnamen, internen URLs oder Request-Body

Secret-Manager-Pfade, Environment-Dateien mit echten Werten oder Shell-History

Betreiberentscheidung mit Personennamen, privaten Nachweis-URLs oder internen Kommentaren

Behauptung erfolgreicher Produktivzustellung ohne Approval, Receiver-Abnahme und Runner-Evidence

Sanitisierte Validierungschecks

Delivery-Preflight zeigt blocked_gate_count > 0, solange Zielsystem oder Approval fehlt.

Alert-Delivery-Smoke zeigt dry_run_sent_count=0 und runner_sent_count=0 vor Approval.

Public Exports enthalten keine Webhook-/Slack-/Teams-URLs, Tokens, API-Keys oder Empfänger.

Receiver-Fixture enthält Idempotency-Key, Body-SHA-256 und HMAC-Vertrag.

Go-live-Center verlinkt Delivery-Phase, Rollback und Nachlaufbeobachtung.

Handoff-Abnahme

Mindestens ein natives Zielsystem ist privat konfiguriert oder bewusst blockiert dokumentiert.

Receiver prüft Idempotency-Key und optional HMAC-Signatur.

Dry-run-Smoke bleibt ohne externe Sendung grün.

Dispatch-Approval ist erst nach Zielsystem-, Empfänger-, Datenschutz- und Security-Freigabe aktiv.

Public Evidence enthält keine Ziel-URLs, Tokens, Empfänger, Secrets oder Rohpayloads.

Runner-State nach Canary zeigt begrenzten Scope, keine Fehler und nachvollziehbare Dedupe-Referenz.

Produktclaims bleiben auf vorbereitet/no-secret belegbar begrenzt, bis echte Zustellung belegt ist.

Delivery-Signoff-Receipt

Freigabeprotokoll ohne Zielwerte und Empfänger

Maschinenlesbares Betreiber-Receipt für Delivery-Go-live: private Zielsystemdaten bleiben privat; öffentlich werden nur Status, Evidence-Refs, Hash-/Dedupe-Referenzen und Stop-Bedingungen.

blocked_until_target_and_approval
7private Inputs 8Public Fields 7Evidence-URLs 6Checks 6No-Secret 5Stop
Öffentlich erlaubte Receipt-Felder

receipt_id

scope_class

approved_at

event_types

receiver_contract_status

dry_run_smoke_url

runner_state_url

go_live_board_url

No-Secret-Attestation

Keine Webhook-, Slack-, Teams-, Jira-, SMTP- oder SendGrid-Ziel-URL öffentlich.

Keine Tokens, API-Keys, HMAC-Secrets oder Authorization-Header öffentlich.

Keine E-Mail-Adressen, Channel-IDs oder Empfängerlisten öffentlich.

Keine privaten Payloads, Receiver-Testlogs oder internen Nachweispositionstexte öffentlich.

Keine Secret-Manager-Pfade oder Environment-Dateien mit echten Werten öffentlich.

Keine Behauptung erfolgreicher Produktivzustellung ohne Runner-Evidence.

Aktivierungsbedingungen

Mindestens ein natives Zielsystem ist privat konfiguriert.

SAFERPAGE_ALERT_DISPATCH_APPROVED=yes wurde nach Betreiberfreigabe gesetzt.

Receiver-Vertrag ist mit Testpayload abgenommen.

Dry-run- und Readiness-Smoke sind ohne Fehler.

Rollback, Pause Policy und Nachlaufbeobachtung sind dokumentiert.

Konsolidierung

Was vorbereitet ist, was noch nicht live ist

Diese Sicht trennt Delivery-Verträge und Dry-run-Evidence von echtem Betreiber-Versand. Das ist entscheidend für Wettbewerbsclaims zu automatischen Alerts.

Grenzen exportieren
Delivery-Verträge vorbereitet erreicht

8 Runtime-Controls, Receiver-Vertrag, Idempotency-Key und Body-SHA-256 sind öffentlich belegbar.

Grenze: Das ist ein Integrationsvertrag, keine echte Zustellung an Betreiberzielsysteme. Nächster Schritt: Receiver mit Testziel prüfen: HMAC, Idempotency, Dedupe, Retry und Fehlerantworten dokumentieren.
Produktive Alert-Zustellung blockiert

dispatch_approved=no, runner_sent_count=0, native_ready_channel_count=1.

Grenze: Nicht behaupten: Betreiber erhalten produktive Alerts, solange SAFERPAGE_ALERT_DISPATCH_APPROVED nicht aktiv ist. Nächster Schritt: Betreiberfreigabe, Zielsystem, Empfänger, Datenschutz-/Security-Abnahme und Monitoring signieren; erst danach Approval setzen.
Zielsysteme und Empfänger teilweise_erreicht

1/7 Zielsystemtypen sind voll konfiguriert; 1 sind nativ durch den Runner sendbar.

Grenze: Öffentliche Evidence zeigt nur Env-Referenzen und Status; echte Webhook-URLs, Tokens, Channels und Empfänger bleiben privat. Nächster Schritt: Mindestens ein natives Ziel mit Testempfänger einrichten und Zielsystem-Dedupe gegen Idempotency-Key prüfen.
Dry-run und No-Send-Grenzen erreicht

Letzter Smoke: dry_run_sent=0, runner_sent=0, failed_checks=0.

Grenze: Smokes und Preflight senden nicht, setzen keine Secrets und prüfen keine privaten Zielsysteme. Nächster Schritt: Nach jeder Zielsystem- oder Runner-Änderung zuerst Dry-run-Smoke, dann Go-live-Center und Alerting-Digest prüfen.
Wettbewerbs- und Betreiber-Claims begrenzt

6/9 Delivery-Gates passed; 1 Blocker und 2 Warnungen bleiben sichtbar.

Grenze: Nicht behaupten: automatische Alerts, Support-Ziel-Eskalation oder Nachweispositions-Zustellung sind live, solange Zielsystem- und Approval-Gates offen sind. Nächster Schritt: Vergleichs- und Betreibertexte nur mit Claim-Grenzen ausgeben; blockierte Gates im Go-live-Board offen lassen.

Claim-Grenzen

Keine Alert-Versprechen ohne Zielsystem-Freigabe

Diese Grenzen gelten für Kurzreports, Betreiberseiten, Vergleichsseiten und Integrationsunterlagen.

Go-live-Center
Keine produktiven Alerts behaupten Erlaubt: Alert-Delivery ist vorbereitet, no-secret dokumentiert und als Dry-run prüfbar.

Nicht behaupten: Betreiber erhalten produktive Alerts.

Produktiver Versand braucht Zielsystem, Empfängerfreigabe, SAFERPAGE_ALERT_DISPATCH_APPROVED=yes, Receiver-Abnahme und Nachlaufkontrolle.
Evidence
Keine Empfänger oder Webhook-URLs veröffentlichen Erlaubt: Public Exports zeigen Env-Referenzen, Status, Hashes und Idempotency-Keys.

Nicht behaupten: Webhook-URLs, Slack-/Teams-Ziele, E-Mail-Empfänger, Tokens oder API-Keys sind öffentliche Evidence.

Zielsystemdaten sind Secrets bzw. personenbezogene oder sicherheitsrelevante Betriebsdaten.
Evidence
Dry-run ist kein Versand Erlaubt: Dry-run belegt Payload, Routing, No-Secret-Regeln und Stop-Bedingungen.

Nicht behaupten: Dry-run beweist erfolgreiche Zustellung im Betreiberkanal.

Dry-run darf keine externen Sends, keine produktiven Sinks und keine privaten Zielsysteme auslösen.
Evidence
Receiver-Abnahme vor Go-live Erlaubt: Receiver-Vertrag nennt HMAC, Idempotency, Body-Hash, Retry und Stop-Bedingungen.

Nicht behaupten: Jedes Zielsystem ist automatisch kompatibel.

Zielsysteme müssen Signatur, Dedupe, Fehlercodes und Rate-Limits selbst validieren.
Evidence
Keine Support-Ziel-/Eskalationsclaims ohne Nachlauf Erlaubt: Alerting-Digest beschreibt Support-Ziele, Eskalations- und Incident-Drill-Blueprints.

Nicht behaupten: Support-Ziel-Eskalation ist produktiv garantiert.

Support-Ziel-Claims brauchen echten Versand, Monitoring, Fehlerbudget, Pausenpolicy und Betreiber-Nachlauf.
Evidence

Letzter Smoke-Lauf

Alert-Delivery-Readiness ohne Secret- oder Versandfreigabe

No-Secret-Smoke für Alert-Delivery-Preflight, Dispatch-Runner, Runtime-Kontrollen, Delivery-Fixture, Operator-Go-live und isolierten Dry-run.

passedStatus 7Ziele 0failed 1erwartete Blocker 0Dry-run gesendet 0Runner gesendet
No-Secret- und No-Send-Grenze Produktiver Versand bleibt an Betreiberfreigabe, Zielsystem und Receiver-Abnahme gebunden.

Dieser Smoke setzt keine Delivery-Secrets, konfiguriert keine Zielsysteme, versendet keine Alerts, schreibt keinen produktiven Sink und veröffentlicht keine Webhook-URLs, Tokens, Empfänger oder Rohpayloads.

Approval
blockiert
native Ziele
1
Evidence
öffnen

Approval-Paket

Env-Template, Smoke-Matrix und Abnahme für Betreiber

Dieses Paket exportiert nur Env-Referenzen, Placeholder, Smoke-Kommandos und Abnahmekriterien; keine echten URLs, Tokens, Empfänger oder Payload-Rohdaten.

Env-Datei/etc/saferpage/alert-dispatch.env sendetnein Secretskeine Werte Smokes4
SAFERPAGE_ALERT_DISPATCH_APPROVED Pflicht für Produktivversand

Finales Betreiber-Go-live-Gate; erst nach Dry-run, Empfänger- und Datenschutzfreigabe auf yes setzen.

Beispielwert: no
SAFERPAGE_WEBHOOK_URL Ziel-/Option-Referenz

Generisches Betreiber-Webhook-Ziel.

Beispielwert: __SET_IN_SECRET_MANAGER_OR_SECURE_SERVER_ENV__
SAFERPAGE_WEBHOOK_SECRET Ziel-/Option-Referenz

HMAC-SHA256-Secret für generische Webhook-Payloads.

Beispielwert: __SET_IN_SECRET_MANAGER_OR_SECURE_SERVER_ENV__
SAFERPAGE_SLACK_WEBHOOK_URL Ziel-/Option-Referenz

Slack Incoming Webhook für PrivacyOps-/Security-Alerts.

Beispielwert: __SET_IN_SECRET_MANAGER_OR_SECURE_SERVER_ENV__
SAFERPAGE_TEAMS_WEBHOOK_URL Ziel-/Option-Referenz

Microsoft Teams Incoming Webhook für Betreiber-Alerts.

Beispielwert: __SET_IN_SECRET_MANAGER_OR_SECURE_SERVER_ENV__
SAFERPAGE_LOCAL_FILE_SINK_PATH Ziel-/Option-Referenz

Optionaler lokaler Audit-Sink für sanitisierte Zustellnachweise.

Beispielwert: /var/www/saferpage.de/runtime/alert_delivery_sink.jsonl
dry_run_no_send

scripts/run-alert-dispatch-dry-run-smoke.sh

sent_count=0, external_send_attempt_count=0, local_file_sink_attempt_count=0.
execute_ready_without_approval

python3 scripts/run-alert-dispatch.py anrufer.info --base-url http://127.0.0.1 --max 1 --timeout 15 --execute-ready

Ohne SAFERPAGE_ALERT_DISPATCH_APPROVED=yes bleibt sent_count=0.
receiver_payload_fixture

curl -fsS https://saferpage.de/alarme/anrufer.info/delivery-json

Payload enthält Idempotency-Key, body_sha256 und HMAC-Receiver-Vertrag ohne Ziel-URL.
public_runner_state

curl -fsS https://saferpage.de/alarme/dispatch-runner-json

Public State enthält nur Env-Refs, Hashes und Status; keine Secrets, Ziel-URLs oder Empfänger.

Zielsysteme

Welche Credentials fehlen noch

Alle Angaben sind Referenznamen. Werte, URLs, Empfänger und Tokens werden nicht ausgegeben.

Integrationen
Lokaler Audit-File-Sink ready_for_approval · native_alert_dispatch_runner

Interne, secretfreie Zustell-Evidence als JSONL schreiben, ohne externe Ziel-URL, Empfänger oder Payload-Rohdaten zu veröffentlichen.

Verantwortlich
IT/Compliance
benötigt
fehlt
nichts
Events
monitoring.alert
Generischer Webhook missing_configuration · native_alert_dispatch_runner

Alerts, Nachweispositionen, Portfolio-Digests und Scan-Dispatches an eine eigene Orchestrierung senden.

Verantwortlich
IT/Platform
benötigt
SAFERPAGE_WEBHOOK_URL, SAFERPAGE_WEBHOOK_SECRET
fehlt
SAFERPAGE_WEBHOOK_URL, SAFERPAGE_WEBHOOK_SECRET
Events
monitoring.alert, operator.remediation.ticket_ready, saferpage.portfolio.digest, saferpage.portfolio.scan_dispatch
Slack missing_configuration · native_alert_dispatch_runner

PrivacyOps- und Security-Kanaele mit priorisierten Alerts, Verantwortlichkeiten und Support-Ziel-Kontext informieren.

Verantwortlich
PrivacyOps
benötigt
SAFERPAGE_SLACK_WEBHOOK_URL
fehlt
SAFERPAGE_SLACK_WEBHOOK_URL
Events
monitoring.alert, operator.remediation.ticket_ready, saferpage.portfolio.scan_dispatch
Microsoft Teams missing_configuration · native_alert_dispatch_runner

Adaptive Cards für Betreiber-, Datenschutz- oder Security-Teams vorbereiten.

Verantwortlich
Website-Betrieb
benötigt
SAFERPAGE_TEAMS_WEBHOOK_URL
fehlt
SAFERPAGE_TEAMS_WEBHOOK_URL
Events
monitoring.alert, operator.remediation.ticket_ready, saferpage.portfolio.scan_dispatch
Jira missing_configuration · delivery_payload_ready_in_exports

Nachweis- und Alert-Aufgaben mit External-ID, Labels, Prioritaet und Akzeptanzkriterien anlegen.

Verantwortlich
Projekt-/Nachweis-Verantwortung
benötigt
SAFERPAGE_JIRA_BASE_URL, SAFERPAGE_JIRA_EMAIL, SAFERPAGE_JIRA_API_TOKEN
fehlt
SAFERPAGE_JIRA_BASE_URL, SAFERPAGE_JIRA_EMAIL, SAFERPAGE_JIRA_API_TOKEN
Events
operator.remediation.ticket_ready, monitoring.alert
E-Mail/SMTP missing_configuration · delivery_payload_ready_in_exports

Portfolio-Digests und Eskalationen an Management, Datenschutz und Webbetrieb zustellen.

Verantwortlich
Programm-Verantwortung
benötigt
SAFERPAGE_MAIL_FROM, SAFERPAGE_MAIL_TO
fehlt
SAFERPAGE_MAIL_FROM, SAFERPAGE_MAIL_TO
Events
saferpage.portfolio.digest, monitoring.alert
SendGrid missing_configuration · delivery_payload_ready_in_exports

Wiederkehrende Portfolio-Digests über einen Mail-Provider ausliefern.

Verantwortlich
IT/Platform
benötigt
SENDGRID_API_KEY, SAFERPAGE_MAIL_FROM, SAFERPAGE_MAIL_TO
fehlt
SENDGRID_API_KEY, SAFERPAGE_MAIL_FROM, SAFERPAGE_MAIL_TO
Events
saferpage.portfolio.digest

Readiness-Gates

Warum produktiver Versand noch blockiert oder freigegeben ist

Wettbewerbsmatrix
Produktive Alert-Zustellung freigegeben blocked

SAFERPAGE_ALERT_DISPATCH_APPROVED ist nicht aktiv; Runner bleibt Dry-run/Outbox.

Gate
dispatch_approval
Aktion
Freigabe erst nach Zielsystem-Dry-run, Empfängerfreigabe, Datenschutz-/Security-Abnahme und Monitoring setzen.
Mindestens ein nativ sendbares Zielsystem konfiguriert passed

1 native(s) Zielsystem(e) sind voll konfiguriert: Webhook, Slack oder Teams.

Gate
native_target_available
Aktion
Mindestens SAFERPAGE_WEBHOOK_URL plus Secret oder SAFERPAGE_SLACK_WEBHOOK_URL/SAFERPAGE_TEAMS_WEBHOOK_URL serverseitig setzen.
HMAC-Signatur für Betreiber-Webhook verfügbar warning

Kein HMAC-Secret gesetzt; generische Webhooks können nicht signiert werden.

Gate
signed_delivery
Aktion
HMAC-Secret im Secret Manager oder in /etc/saferpage/alert-dispatch.env setzen.
Alert-Dispatch-Runner-State erreichbar passed

State alert_dispatch_runner_state.json ist lesbar; sent=0, deliverable=0, errors=50.

Gate
dispatch_runner_state
Aktion
Timer und Runner-State unter /alarme/dispatch-runner-json prüfen.
Dry-run/Outbox als Testnachweis vorhanden warning

0 Outbox-Einträge im letzten Runner-State.

Gate
dry_run_outbox
Aktion
Mit Beispiel-Domain einen Dry-run ausführen und Body-SHA-256, Idempotency-Key und Zielsystemstatus prüfen.
No-Secret-Export passed

Dieser Preflight zeigt nur Env-Referenzen und present/missing-Status, keine Werte, Ziel-URLs, Empfänger, Tokens oder API-Keys.

Gate
no_secret_export
Aktion
Neue Felder vor Veröffentlichung auf Secrets, URLs, Empfänger und Rohpayloads prüfen.
Runtime-Control-Manifest vorhanden passed

8 Delivery-Runtime-Kontrolle(n) im Evidence-Manifest dokumentiert.

Gate
runtime_controls_manifest
Aktion
Manifest und Smoke nach Runner-Änderungen erneut prüfen.
Idempotency- und Retry-Vertrag vorhanden passed

Delivery-Payloads und Runner-State nutzen Idempotency-Key, Body-SHA-256, Status und Stop-Bedingungen.

Gate
idempotency_contract
Aktion
Zielsysteme müssen Idempotency-Key als externe ID oder Dedupe-Key verwenden.
Zielsystem-Matrix abgedeckt passed

1 ready, 0 teilweise, 7 Zielsystemtypen im Preflight.

Gate
provider_matrix_complete
Aktion
Jira/E-Mail/SendGrid produktiv erst mit Connector-Code oder externem Orchestrator aktivieren.

Runner-Snapshot

Letzte Outbox ohne Zielsystem-Leaks

Dispatch-Runner
Statelesbar Start2026-08-05T02:13:30+00:00 Ende2026-08-05T02:13:31+00:00 execute-readyja approvednein sent0

Runtime Controls

Signatur, Idempotency und Dry-run-Grenzen

Diese Kontrollen beschreiben, wann der Runner senden darf und welche Receiver-Prüfung erwartet wird.

Evidence
0External Attempts 0File-Sink Attempts 0Dry-run Queue jaNo-Secret 0/6Cred-Refs 8Manifest Controls
Run-Policy Versandbedingung

--execute-ready was passed, SAFERPAGE_ALERT_DISPATCH_APPROVED=yes and the channel target is configured

File-Sink
Writes sanitized JSONL summary rows only when dispatch is approved and --execute-ready is passed.
Manifest
öffnen
Receiver-Vertrag POST · monitoring.alert

HMAC-SHA256 over the compact JSON request body, formatted as sha256=<hex>.

Pflicht-Header
X-SaferPage-Event, X-SaferPage-Domain, X-SaferPage-Idempotency-Key
Idempotency
Receivers must deduplicate on X-SaferPage-Idempotency-Key and may compare body_sha256 for replay diagnostics.
SAFERPAGE_ALERT_DISPATCH_APPROVED missing

Explicit approval gate for productive alert delivery.

Referenz
dispatch_approval
Policy
Only env_ref and present flags are exported; never secret values, webhook URLs, recipients, target URLs or raw payloads.
SAFERPAGE_WEBHOOK_URL missing

Generic operator webhook target.

Referenz
generic_webhook_url
Policy
Only env_ref and present flags are exported; never secret values, webhook URLs, recipients, target URLs or raw payloads.
SAFERPAGE_WEBHOOK_SECRET missing

HMAC-SHA256 signing secret for generic webhook deliveries.

Referenz
generic_webhook_secret
Policy
Only env_ref and present flags are exported; never secret values, webhook URLs, recipients, target URLs or raw payloads.
SAFERPAGE_SLACK_WEBHOOK_URL missing

Slack incoming webhook target.

Referenz
slack_webhook_url
Policy
Only env_ref and present flags are exported; never secret values, webhook URLs, recipients, target URLs or raw payloads.
SAFERPAGE_TEAMS_WEBHOOK_URL missing

Microsoft Teams incoming webhook target.

Referenz
teams_webhook_url
Policy
Only env_ref and present flags are exported; never secret values, webhook URLs, recipients, target URLs or raw payloads.
SAFERPAGE_LOCAL_FILE_SINK_PATH missing

Optional override for sanitized local JSONL audit sink; default path is used when absent.

Referenz
local_file_sink_path
Policy
Only env_ref and present flags are exported; never secret values, webhook URLs, recipients, target URLs or raw payloads.

Aktivierung

Kontrollierte Go-Live-Sequenz

Feed-Credentials
Preflight-Sequenz Produktive Betreiber-Zielsysteme kontrolliert aktivieren, ohne Secret-Werte oder Empfänger im öffentlichen Nachweis offenzulegen.

Produktiver Versand wird erst aktiviert, wenn Testempfänger, Signatur, Dedupe und Betreiberfreigabe dokumentiert sind.

Schritt 1
Zielsystem-Verantwortlichkeit, Empfänger, Kanaele und Zwecke festlegen.
Schritt 2
Secrets und Ziel-URLs in /etc/saferpage/alert-dispatch.env oder Secret Manager setzen.
Schritt 3
Ohne SAFERPAGE_ALERT_DISPATCH_APPROVED einen Dry-run ausführen und /alarme/dispatch-runner-json prüfen.
Schritt 4
HMAC-Signatur, Idempotency-Key, Body-SHA-256 und Zielsystem-Dedupe im Testempfänger verifizieren.
Schritt 5
SAFERPAGE_ALERT_DISPATCH_APPROVED=yes erst nach dokumentierter Betreiberfreigabe setzen.
Schritt 6
Nach erstem produktiven Lauf sent_count, error_count und Zielsystem-Logs prüfen.
Stop-Bedingungen Versand pausieren

Diese Signale blockieren oder stoppen die produktive Zustellung.

Stop 1
sent_count größer 0 ohne SAFERPAGE_ALERT_DISPATCH_APPROVED=yes und dokumentierte Betreiberfreigabe.
Stop 2
Öffentliche Exports enthalten Ziel-URLs, API-Keys, Tokens, E-Mail-Empfänger, Slack-/Teams-Webhook-URLs oder private Payloads.
Stop 3
Zielsystem meldet Duplikate trotz Idempotency-Key.
Stop 4
error_count größer 0 oder wiederholte HTTP-/TLS-/Rate-Limit-Fehler.
Stop 5
Empfänger oder Kanalzweck wurden ohne Datenschutz-/Security-Abnahme geändert.