Troubleshooting
No event after creating a watch
A change watch first establishes a baseline. Wait for a different successful observation. For an already completed job use a condition with fire_on_initial_match=true. Check the selector, last success, lifecycle, health, expiry, usage and origin cooldown. A missing field is an error, not null.
Checks are late
The interval is a minimum scheduling interval, not a delivery guarantee. Slow sources, worker load, backoff, quota, plan restrictions and Retry-After can delay checks. RerunLab does not replay every missed observation after downtime.
Source is disabled
Check for HTTP 401/403, unsafe target resolution or 20 consecutive failures. Rotate a credential when necessary and explicitly resume after fixing the source. Credentials must match the origin exactly; URLs may not point into private networks.
Destination verification fails
Respond to endpoint.verification with a 2xx JSON object echoing challenge within five seconds. Avoid redirects, HTML error pages and large response bodies. Check that DNS resolves entirely to public addresses. Verification is rate limited to once per destination per minute.
Duplicate events or failed delivery
At-least-once delivery can duplicate a delivery attempt, especially after a worker crash or acknowledgement loss. Deduplicate by event.id. Inspect the delivery’s attempt history and HTTP status. Fix the receiver before replaying; a replay still targets its original URL revision and requires 24 hours remaining retention.
Agent missed history
A 410 cursor_expired indicates a retention gap. Tell the user and intentionally choose where to restart. Never claim the agent was automatically woken: use a running receiver or run the agent later to read its inbox.