-
Notifications
You must be signed in to change notification settings - Fork 1
Add pluggable data backplane for experimentation telemetry with OpenTelemetry support #14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
|
@copilot OpenTelemetry support should be added in this PR |
Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
OpenTelemetry support has been added in commit f931c86. What was added:
Key features:
All 9 tests pass (3 original + 6 new OpenTelemetry tests). |
...ExperimentFramework.DataPlane.Abstractions/ExperimentFramework.DataPlane.Abstractions.csproj
Outdated
Show resolved
Hide resolved
src/ExperimentFramework.DataPlane/ExperimentFramework.DataPlane.csproj
Outdated
Show resolved
Hide resolved
src/ExperimentFramework.DataPlane/ExperimentFramework.DataPlane.csproj
Outdated
Show resolved
Hide resolved
src/ExperimentFramework.DataPlane/ExperimentFramework.DataPlane.csproj
Outdated
Show resolved
Hide resolved
src/ExperimentFramework.DataPlane/ExperimentFramework.DataPlane.csproj
Outdated
Show resolved
Hide resolved
...ExperimentFramework.DataPlane.Abstractions/ExperimentFramework.DataPlane.Abstractions.csproj
Outdated
Show resolved
Hide resolved
...ExperimentFramework.DataPlane.Abstractions/ExperimentFramework.DataPlane.Abstractions.csproj
Outdated
Show resolved
Hide resolved
Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
Code Coverage |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #14 +/- ##
=======================================
Coverage ? 91.82%
=======================================
Files ? 157
Lines ? 5379
Branches ? 793
=======================================
Hits ? 4939
Misses ? 440
Partials ? 0
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Implementation Plan: Pluggable Data Backplane for Telemetry, State, and Experimentation Data
Phase 1: Core Abstractions ✅
ExperimentFramework.DataPlane.AbstractionsprojectIDataBackplaneinterface with PublishAsync, FlushAsync, HealthAsyncDataPlaneEnvelopefor wrapping eventsBackplaneHealthmodelDataPlaneOptionsconfiguration modelPhase 2: Reference Implementation ✅
InMemoryDataBackplane)LoggingDataBackplane)OpenTelemetryDataBackplane) ⭐CompositeDataBackplane)Phase 3: Integration with Framework ✅
Phase 4: Testing ✅
Phase 5: Sample & Documentation ✅
Phase 6: Code Quality ✅
Summary
This PR implements a pluggable data backplane for ExperimentFramework with OpenTelemetry support:
Features:
System.Diagnostics.ActivitySourcewith semantic taggingFiles Changed:
Original prompt
This section details on the original issue you should resolve
<issue_title>[Feature] [Data-plane] Pluggable Data Backplane for Telemetry, State, and Experimentation Data</issue_title>
<issue_description>#### Summary
Introduce a pluggable data-plane abstraction that standardizes how experimentation-related data is emitted while allowing consumers to integrate with their existing observability, analytics, and data pipelines.
Consumers often desire a clear separation between experiment decisioning and durable data capture, with consistent schemas, well-defined semantics, and flexible backplane implementations.
Problem
ExperimentFramework already supports experimentation, rollout, audit, and science features, but data capture is currently spread across multiple packages without a single unifying contract.
Consumers often want:
Goals
Proposed Solution
1) Data backplane abstraction
Introduce a shared abstraction (e.g.
ExperimentFramework.DataPlane.Abstractions) that allows publishing structured experimentation events.2) Standardized exposure logging
Define a canonical ExposureEvent that answers:
Exposure should be defined as serving a variant, not merely evaluating it.
Support configurable exposure semantics:
3) Join-friendly schemas and connectors
All events should:
Reference backplane implementations may include:
4) Experiment assignment consistency guarantees
Expose explicit assignment policies:
Define:
Emit assignment-change events when guarantees are violated.
5) Sample Ratio Mismatch (SRM) detection and alerting
Provide an optional SRM detection module that:
SRM detection should run outside the request path and publish results through the data plane.
6) Sequential testing and peeking guardrails
Support optional analysis metadata:
Emit warnings or science signals when:
Non-goals
Configuration
Expose
DataPlaneOptions:Acceptance Criteria
</issue_description>
Comments on the Issue (you are @copilot in this section)
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.