v0.2.0
Scores are now delivered asynchronously with bounded retry, keeping the public API surface identical to v0.1.
Breaking
RecordScorenow validates synchronously and delivers asynchronously with bounded backoff retry instead of performing one blocking request. Returned errors are validation and lifecycle errors only; transport failures are retried (network errors and HTTP 408/429/5xx, honoringRetry-After, with the same backoff defaults as observation export) and, once the retry budget is exhausted, dropped with a payload-free diagnostic instead of returning to the caller.
Changed
FlushandShutdowndrain the new bounded score queue (256 scores).Flushis a call-time barrier: scores recorded after it begins do not extend the wait.Config.BlockOnQueueFullnow also applies to the score queue; by default a full queue drops the score with a diagnostic, matching the span pipeline.- The SDK generates the idempotent upsert ID when
Score.IDis empty, so retried deliveries cannot create duplicate scores. - Score delivery never runs application-pluggable OpenTelemetry error handlers on pipeline goroutines, diagnostics are built from static text and numeric status codes only, and the scores HTTP client never follows redirects.
See CHANGELOG.md and docs/reference.md for the full behavior reference.
Note: the documented live-gate and production-dogfood release gates were waived by the maintainer for this release; the tag was created directly on the CI-green main commit.