Diagnostics
Diagnostics returns one coherent snapshot of current resource use and saturating counters:
The snapshot contains no event payload, customer ID, idempotency key, URL, header value, or credential.
Lifecycle observers
Pass anObserver when constructing the generated client:
Events contain stable outcomes, error codes, delivery states, HTTP status classes, durations, attempt numbers, and bounded attempt summaries. They contain no request or response bodies, headers, credentials, customer IDs, idempotency keys, or URLs.
The queue holds at most 1,024 events. Callbacks run serially on a dedicated goroutine outside send and transport paths. When the queue is full, new events are dropped and counted instead of blocking a send. A callback panic increments
ObserverFailures without changing the operation result.
Keep callbacks fast. Send events to your own bounded metrics or logging layer if processing needs more time.
OpenTelemetry
The OpenTelemetry bridge is a separate Go module so applications that do not use OpenTelemetry do not inherit its dependencies. Install it with:Traces
The bridge creates onerepost.send span and one repost.send.attempt child for each attempt. Passing an inbound request context to a generated send keeps the inbound span as the parent of repost.send.
Attempt spans use http.request.method, repost.retry.attempt, network.protocol.name, http.response.status_code, and error.type. The bridge propagates only W3C traceparent and tracestate headers supplied by the tracing context.
Metrics
Metrics use only
outcome, error.code, delivery.state, and http.status.class. The bridge does not accept arbitrary customer labels.
Continue
Testing
Record and await lifecycle events deterministically.
Frameworks
Preserve inbound tracing context and own provider shutdown.
Reliability
Interpret the codes and states in these signals.