DecisionManager

Webhooks

Governance events. At-least-once. Idempotent.

The Admin console fires webhooks on governance state transitions, deployment events, and execution anomalies. At-least-once delivery with exponential backoff. Every delivery carries X-DM-Delivery for idempotent deduplication on your receiver.

Event types

EventFires when
ruleset.publishedA version transitions to published state
ruleset.approvedA reviewer signs off on a version
ruleset.rejectedA reviewer rejects a promotion request
deployment.createdA version is deployed to an environment
deployment.rolled_backA blue/green rollback completes
experiment.promotedA challenger is promoted to champion
execution.budget_exceededAn execution hits the step budget limit
warehouse.lag_criticalWarehouse writer lag exceeds threshold

Delivery guarantee & deduplication

At-least-once

On retryable failures (5xx, timeout), the dispatcher retries up to 10 times over 24 hours with exponential backoff from 30 seconds. Non-retryable 4xx failures are not retried.

X-DM-Delivery

Every delivery carries X-DM-Delivery — a stable UUID for that (event, endpoint) pair. Re-deliveries always carry the same header. Store processed IDs and skip re-processing on match.

AI diagnosis panel

For endpoints with repeated failures, the Admin console shows the failure pattern and AI-generated diagnosis — informed by response codes and bodies. Raw evidence always visible.

Idempotent receiver pattern

@app.route("/dm-webhook", methods=["POST"])
def handle_dm_event():
    delivery_id = request.headers.get("X-DM-Delivery")
    if is_already_processed(delivery_id):
        return "", 200   # idempotent — already handled
    
    event = request.json
    process_event(event)
    mark_processed(delivery_id)
    return "", 200

Store processed delivery IDs in Redis, PostgreSQL, or any durable store. TTL to your retention window.

Webhooks in the Admin console

Configure endpoints, filter by event type, inspect delivery logs, and view AI-assisted diagnosis — all in the browser.