Skip to content

v0.2.0

Choose a tag to compare

@fgn fgn released this 20 Jul 13:32

Scores are now delivered asynchronously with bounded retry, keeping the public API surface identical to v0.1.

Breaking

  • RecordScore now 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, honoring Retry-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

  • Flush and Shutdown drain the new bounded score queue (256 scores). Flush is a call-time barrier: scores recorded after it begins do not extend the wait.
  • Config.BlockOnQueueFull now 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.ID is 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.