Skip to content

OpenTelemetry sink over the StoreTelemetry seam - #67

Draft
matt-ramotar wants to merge 13 commits into
store6from
matt-ramotar/opentelemetry-sink-c513
Draft

OpenTelemetry sink over the StoreTelemetry seam#67
matt-ramotar wants to merge 13 commits into
store6from
matt-ramotar/opentelemetry-sink-c513

Conversation

@matt-ramotar

Copy link
Copy Markdown
Owner

Ships the org.mobilenativefoundation.store:opentelemetry experimental artifact — an OpenTelemetry sink over the StoreTelemetry seam — per the approved design and implementation plan:

What ships

  • New KMP module :opentelemetry (androidTarget + jvm via the subset convention plugin, created jvmAndroidMain intermediate source set), publishing opentelemetry / opentelemetry-jvm / opentelemetry-android at 6.0.0-SNAPSHOT.
  • One public class OpenTelemetryStoreTelemetry mapping the six telemetry hooks to the five v0 instruments plus an opt-in synthesized store6.fetch span. Every public declaration is @ExperimentalStoreApi; hooks never throw after construction; StoreError messages/causes are never exported.
  • 19 jvmTest tests: metric vocabulary, all six error.type literals + no-diagnostics privacy sweep, span synthesis edges, three hostile-SDK robustness fixtures, concurrency, instrumentation-scope version drift guard, and two real-engine integration tests.
  • Runnable JVM sample :opentelemetry-sample that machine-checks its exported telemetry and exits on its own.
  • CI wiring in store6.yml: build + sample-run steps, core-internal-access and TD-8 gate coverage, and the klib-publication-check entries (two coupled edits).
  • opentelemetry/README.md + opentelemetry/SIGNALS.md (vocabulary v0), and the STABILITY.md §3 artifact row.

Descoped steps

None. All plan tasks 0–11 completed in full; the one [descope-allowed] test (aThrowingSetStatusStillEndsTheSpan) is implemented and green.

Execution notes (deviations from the plan text, each verified green)

  1. Steps 1.7/2.2's combined :opentelemetry:build :opentelemetry:apiDump single invocation trips Gradle 8.11's implicit-dependency validation (klibApiExtractForValidation reads the file klibApiDump writes when co-scheduled). The two goals run as separate sequential invocations; no file changes.
  2. Two map-equality assertions (metrics overflow test, concurrency test) need explicit mapOf<String?, Long>(…) type arguments — Kotlin cannot unify Map<String, V> with Map<String?, V> (invariant key parameter).
  3. The two robustness tracer fixtures additionally override TracerProvider.tracerBuilder: the interface's default implementation returns a no-op builder, which silently bypassed wrappers that override only get(...) (the sink acquires its tracer through tracerBuilder). Without the fix, the setStatus test fails and the throwing-tracer test passes vacuously.
  4. SpanBuilder.setAttribute override signature is value: T? per the compiler, as the plan's worker notes pre-authorize.

docs-sync

STABILITY.md is listed in .github/docs-sync-sources.txt, so this PR requires the docs-sync-ack label (applied) for the docs-sync-guard job.

Open in Web Open in Cursor 

cursoragent and others added 11 commits August 17, 2026 12:16
Co-authored-by: Matt Ramotar <matt-ramotar@users.noreply.github.com>
Co-authored-by: Matt Ramotar <matt-ramotar@users.noreply.github.com>
Co-authored-by: Matt Ramotar <matt-ramotar@users.noreply.github.com>
Co-authored-by: Matt Ramotar <matt-ramotar@users.noreply.github.com>
Co-authored-by: Matt Ramotar <matt-ramotar@users.noreply.github.com>
Co-authored-by: Matt Ramotar <matt-ramotar@users.noreply.github.com>
Co-authored-by: Matt Ramotar <matt-ramotar@users.noreply.github.com>
Co-authored-by: Matt Ramotar <matt-ramotar@users.noreply.github.com>
Co-authored-by: Matt Ramotar <matt-ramotar@users.noreply.github.com>
Co-authored-by: Matt Ramotar <matt-ramotar@users.noreply.github.com>
Co-authored-by: Matt Ramotar <matt-ramotar@users.noreply.github.com>
@matt-ramotar matt-ramotar added the docs-sync-ack Acknowledges that a PR changes Store Docs sync sources and requires a follow-up re-pin label Aug 17, 2026 — with Cursor
cursoragent and others added 2 commits August 17, 2026 13:26
Co-authored-by: Matt Ramotar <matt-ramotar@users.noreply.github.com>
Co-authored-by: Matt Ramotar <matt-ramotar@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs-sync-ack Acknowledges that a PR changes Store Docs sync sources and requires a follow-up re-pin

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants