Repository navigation
Conversation
Every UFC split has a stable per-org serialId used by downstream consumers (APM span enrichment, exposure caching, evaluation-metrics correlation) to identify the exact (allocation, variant) pair that was assigned. Today only the Node server SDK (openfeature-js-client#269) exposes this via flagMetadata["__dd_split_serial_id"]; this test generalizes the contract so every SDK can be validated the same way. Adds a dedicated fixture covering: a plain serialId, serialId=0 (a valid ID that must not be dropped by a truthiness check), a split with no serialId (must not fabricate one), and two allocations with different serialIds selected via targeting. All languages are marked missing_feature: verified directly against the Node.js and Go parametric weblog handlers that neither returns flagMetadata from POST /ffe/evaluate today. The new feature_flags_serial_id_metadata marker uses NOT_REPORTED_ID pending a real feature-parity page.
Exclude the UFC configuration from evaluation-case discovery, disable the new suite for Rust, and require successful evaluation before accepting an absent serial ID. Apply the repository formatter to the new test module. Environment: Datadog workspace
Fail evaluations that omit flagMetadata while allowing null or empty metadata when a split has no serial ID. Environment: Datadog workspace Co-Authored-By: Codex GPT-5 <noreply@localhost>
Tighten the missing-serial-ID test so an SDK cannot serialize an absent UFC serial ID as a null metadata entry. Environment: Datadog workspace Co-Authored-By: Codex GPT-5 <noreply@localhost>
Exercise serial-ID flag metadata under the required span-enrichment configuration for positive, zero, and missing UFC serial IDs. Environment: Datadog workspace Co-Authored-By: Codex GPT-5 <noreply@localhost>
Fix the import-policy failure when the PR is tested against current main. Environment: Datadog workspace Co-Authored-By: Codex GPT-6 <noreply@localhost>
Bring in the exact upstream facade so imports work on the PR head as well as merged main. Environment: Datadog workspace Co-Authored-By: Codex GPT-5 <noreply@localhost>
Forward provider metadata through public OpenFeature accessors; retain the serial ID test gate pending integer support. Environment: Datadog workspace Co-Authored-By: Codex GPT-5 <noreply@localhost>
Contributor
|
|
|
✅ All CI checks and tests passed. 🎉 All green!🧪 All tests passed 🔗 Commit SHA: 4e81241 | Docs | View more details | Give us feedback! |
Enable the verified .NET serial ID tests while preserving numeric expectations for other SDKs and key omission for missing IDs. Environment: Datadog workspace Co-Authored-By: Codex GPT-5 <noreply@localhost>
hhan2024
force-pushed
the
ffe-serial-id-metadata-system-test
branch
from
September 30, 2026 16:24
9547cef to
ea6ec3f
Compare
hhan2024
force-pushed
the
ffe-serial-id-metadata-system-test
branch
from
October 15, 2026 17:12
b59cca6 to
4352704
Compare
Start the provider without injecting the UFC fixture after Remote Config acknowledgement. Environment: Datadog workspace Co-Authored-By: Codex GPT-6 <noreply@localhost>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Stacked directly on #7820 (
ffe-serial-id-metadata-system-test)./ffe/startand/ffe/evaluateparametric endpoints using OpenFeature evaluation details.Why .NET uses strings
The .NET evaluator reads UFC serial IDs as nullable Int64 values and preserves them as decimal strings in flag metadata. Its span-enrichment hook reads
GetStringand parses the value back into an Int64. OpenFeature .NET metadata only exposes an Int32 integer getter, so this representation preserves the full serial-ID range without narrowing.The agreed contract accepts this existing .NET representation; no .NET SDK change is required. The test changes the expected value only, not the actual metadata returned by the SDK. It does not accept strings for other SDKs or normalize response values.
Validation
All 5 serial-ID tests pass without force/skip overrides against tracer 3.54.0, Datadog.FeatureFlags.OpenFeature 2.3.1, and OpenFeature 2.3.0:
Expectation-helper checks: 42 combinations across all seven SDK names and serial IDs including zero, values above Int32, and Int64 max. Only .NET produces string expectations.
./format.sh --check: passed.Prior Docker adapter build: passed.
Prior forced dynamic-evaluation regression suite: 22 passed, 2 failed. Both failures are the JSON-default/no-allocation fixtures, returning null instead of the caller's object default. Source inspection points to the existing provider conversion:
ConvertObjectdoes not recognize an already-wrapped OpenFeatureValue. This separate issue is not masked by the adapter, and dynamic-test activation remains unchanged.