feat: serial-id-on-exposure precomputed assignment fixture - #36
Open
typotter wants to merge 27 commits into
Open
feat: serial-id-on-exposure precomputed assignment fixture#36typotter wants to merge 27 commits into
typotter wants to merge 27 commits into
Conversation
Cover edge cases: empty response, all-silent (doLog=false), multiple reasons, deep nested objects, type mismatch for all types, duplicate evaluation dedup, falsy values, large flag sets, special chars in keys, and null variation values.
Mark duplicate-evaluation, null-variation-value, and type-mismatch-all-types as skip for web SDK due to aggregator dedup, null handling, and numeric type differences.
- integer-precision-native-only: validates native SDKs preserve integers outside JS safe integer range; skipForSdks=["web"] - context-switch-toggles-flag: sequence fixture verifying re-fetch on context change between pro (all-types) and free (defaults) configs
…rding on exposure events
…r yet, will re-add when test_precomputed_sequence is implemented
… names - precomputed/ → precomputed-assignments/ (all cases + README) - result.variant → result.variantKey in all evaluation entries - result.error → result.errorCode in all evaluation entries - skipForSdksReason → skipReason at case, evaluation, and matcher levels - README: update path refs + add precomputed-assignments schema table
- defaults-and-emission-gates: flutter.fixture.unknown errorCode flagNotFound → typeMismatch. The flag key exists; the variationType is unrecognized. flagNotFound is semantically wrong and masks SDK bugs that distinguish the two failure modes. - precomputed-assignments/README.md: document expectedEvents subset-match contract. Each entry must match at least one event; unmatched events are allowed. Clarify skipForSdks on matchers relaxes assertions, not counts. - type-mismatch-all-types: note in description that int-as-float is SDK-implementation-dependent. SDKs with implicit int→float promotion (Java, Swift, Dart) will not return typeMismatch. Evaluation-level skips for those platforms should be added after verification. - large-flag-set: expand from 20 to 50 flags and update description. The fixture's stated purpose is truncation/parser stress testing; 20 flags did not stress-test parsers meaningfully.
…loat Web-incompatible evaluation (integer-as-float) now uses evaluation-level skipForSdks instead of skipping the whole fixture. The other 4 type-mismatch evaluations now run on web. Count override reduces flagevaluationEvents from 5 to 4 for web.
… fix example value
Updated README to clarify the structure and content of precomputed assignment fixtures, including details on expected emissions and evaluation context.
Keep both precomputed-assignments/ and regex-conformance/ directory sections. Keep both the Precomputed Assignment Fixtures and Targeting Regex Conformance file format sections.
…ures' into typo/additional-precomputed-fixtures
…rialId The DatadogProvider/openfeature-browser does not include serialId from the precomputed assignment in the /api/v2/exposures payload. The exposure count assertion (2 events) still holds; only the serial_id field check is relaxed for web via skipForSdks.
…for successful evaluations
…nteger-precision skipReason
- Remove flagevaluationRequests from expectedEmissions (un-assertable due to batching)
- Rename result → expected_result in evaluations
- Restructure skipForSdks+skipReason → skip array of {sdk, reason} objects
- Rename large-flag-set → multi-flag-set
- Add null object evaluation to falsy-values fixture
- Add expectedEvents bullet and skip/field-naming docs to precomputed README
- Update main README schema table
typeMismatch → TYPE_MISMATCH flagNotFound → FLAG_NOT_FOUND Aligns fixture error codes with the OpenFeature specification canonical form. IPC services should normalize SDK-internal casing before returning results to the test runner.
Remove serial-id-on-exposure.json from this PR. It will be submitted as a standalone demonstration fixture in a follow-up PR.
Validates that the serialId field from the precomputed assignment response is forwarded as serial_id on the exposure event payload. One flag carries serialId, one does not. The expectedEvents matcher asserts that at least one of the two exposures carries serial_id: 340132 (subset match).
typotter
requested review from
dd-oleksii and
greghuels
and removed request for
a team
August 25, 2026 22:37
dd-oleksii
approved these changes
Aug 26, 2026
| "variationValue": true, | ||
| "reason": "TARGETING_MATCH", | ||
| "doLog": true, | ||
| "serialId": 340132 |
Member
There was a problem hiding this comment.
minor: we should add a test with serialId: 0 to make sure it's not treated as absent one
typotter
force-pushed
the
typo/additional-precomputed-fixtures
branch
from
September 9, 2026 05:35
b49847a to
c364bfe
Compare
Base automatically changed from
typo/additional-precomputed-fixtures
to
main
September 9, 2026 05:37
Validates serialId forwarding on exposure events. Covers present serialId, absent serialId, serialId of 0 (must not be treated as absent), and null serialId. Updated to FLEX schema conventions. Moved to emissions/ subdirectory. Removes stale flat fixture files superseded by PR 33's directory restructure.
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
Adds a standalone precomputed fixture that validates
serialIdforwardingon exposure events. Intended as a demonstration piece for contributors to
the FLEX integration test suite.
What it tests
serialId: 340132, one does notTARGETING_MATCHexpectedEmissions.exposures: 2expectedEventssubset matcher asserts at least one exposure carriesserial_id: 340132Stacked on
Depends on PR #33 (precomputed fixture corpus + schema conventions).