Skip to content

test(ffe): consume canonical fixture snapshot - #8139

Open
leoromanovsky wants to merge 10 commits into
mainfrom
leo/ffe-canonical-20261021
Open

leoromanovsky wants to merge 10 commits into
mainfrom
leo/ffe-canonical-20261021

Conversation

@leoromanovsky

@leoromanovsky leoromanovsky commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Motivation

Use the canonical FFE fixtures from DataDog/ffe-system-test-data in system-tests. The existing local fixture copies are maintained separately.

Changes

  • Check in 367 evaluation cases across 47 files and their UFC configuration at caa6d1a, with provenance in SOURCE.md.
  • Remove the previous local copies. The nine serial-ID and span-enrichment flag definitions were added upstream in ffe-system-test-data#53 (merged).
  • Use the snapshot for dynamic evaluation, configuration-source tests, and the mocked agentless backend. Serial-ID and span-enrichment suites select their flag definitions from the same snapshot.
  • Assert values, reasons, and explicit error codes. Forward Node.js error codes and Ruby evaluation details; convert Ruby numeric defaults to Float.
  • Add a weekly/manual updater that opens signed draft PRs when fixture contents change. Existing update PRs remain untouched.
  • Run baseline expectations for cases with optional capabilities; capability-specific provider options are not enabled.

Fixture integration options

Approach Existing example Version and updates Checkout / network requirements
Git submodule Go Consumer commits an upstream Git SHA; updates change the submodule pointer. Initialize the submodule before tests; fetching its objects requires network access.
Checked-in snapshot (this PR) .NET Consumer commits fixture files and source SHA; updates are reviewed as file diffs. Ordinary checkout contains the fixtures; only the updater fetches upstream.
Fresh checkout in CI Fixture compatibility CI CI selects the fixture revision for each run; an explicit SHA fixes the version. CI fetches fixtures before testing; requires network access during setup.

Known conformance mismatches

The snapshot carries upstream _skip/_include annotations, which the runner honors per SDK. These exclude Python object/array opt-out inputs and PHP disabled/empty flags and missing targeting keys while their known conformance gaps remain. The canonical expected results are unchanged; dd-trace-py#21172 tracks the Python fix.

The split-feature suite now compares canonical result.features with the public hook callback and actual exposure/evaluation payloads, including false, zero, empty strings, first-valid-key selection, and allocation isolation. It also checks selected metadata and suppressed exposure delivery for doLog=false. Java is activated from the validated 1.69.0-SNAPSHOT build; other SDKs retain baseline evaluation coverage and skip the slower destination test until their hook capture is implemented. FFLSDK-274 records the implementation and remaining SDK adapters.

Rust 0.5.4 reverted to OpenTelemetry 0.32 in dd-trace-rs#343. Its manifest now records the seven affected compression-fallback and scope-schema limitations for that release; the development build remains enabled.

Validation: formatting/type/import/manifest checks pass; 44 harness and manifest tests pass. Six Java parametric tests pass against 1.69.0-SNAPSHOT+e7584c7bca, covering all four canonical metadata cases plus RC and baseline evaluation. This validates callbacks and payload delivery to a local test agent; hosted CI remains separate.

Workflow

  1. ⚠️ Create your PR as draft ⚠️
  2. Work on you PR until the CI passes
  3. Mark it as ready for review
    • Tests, manifest, weblog are modified -> you'll need a review from system-tests-reviewers: ask to one of youre co-worker familiar with the tested feature.
    • Framework is modified, or non obvious usage of it -> get a review from system-tests-core (slack)

🚀 Once your PR is reviewed and the CI green, you can merge it!

🛟 #apm-shared-testing 🛟

FFE reviewer selection

Reviewers: @greghuels, @sameerank

Why: Global fallback — This PR moves FFE evaluation tests onto the canonical ffe-system-test-data snapshot. Global reviewers were selected because no project or SME pod matched.

🤖 Automated selection.

Selection details

Initiative: global / global

Why this match: This PR moves FFE evaluation tests onto the canonical ffe-system-test-data snapshot. It checks in the canonical evaluation cases and UFC config, and removes the old local copies. The dynamic-evaluation, configuration-source, serial-ID, span-enrichment and mocked-backend tests now read from that snapshot. It also adds a weekly updater workflow and script. The Node.js and Ruby parametric servers now forward evaluation reason, error code and metadata so the tests can check those conformance expectations. None of this fits a catalog project. It isn't bandits. It isn't EVP telemetry: the only change to tests/ffe/test_flag_eval_evp.py is a comment. And forwarding details to the test harness isn't onboarding diagnostics. The catalog has no fallback initiative, so this routes to global.

  • @greghuels — final owner (final-review-owners): Global pool filling a pod coverage gap. Existing review coverage preserved.
  • @sameerank — final owner (final-review-owners): Global pool filling a pod coverage gap. Existing review coverage preserved.

The PR author was excluded. Existing reviewers and teams were preserved.

Debug or fix a problem

Workflow run · Bits Code session

  • Wrong project or pod? Clarify this PR’s purpose, or correct the reviewer registry and publish the change. Sheet edits take effect after publication.
  • Need another reviewer now? Request them in GitHub. This workflow only adds requests and keeps existing reviewers.
  • Stuck beyond five minutes or failed? Inspect the run’s failed step and available Bits session. After fixing the cause, rerun the workflow with this PR URL and dry_run=false. Unchanged completed runs are skipped. If the receipt says needs_reconciliation or a write outcome is uncertain, ask the workflow owner to reconcile GitHub and the receipt before retrying; do not delete the lock blindly.
  • Report a problem: Comment on the reviewer-routing skill PR with this PR URL, the workflow run link, and the expected initiative or reviewer correction.
Evidence and run details

✅ Complete — reviewer coverage verified. The workflow checked pending requests or submitted reviews on the evaluated head.

Generated asynchronously by the FFE reviewer-routing workflow.

Changed paths: tests/parametric/test_ffe/ffe-system-test-data/SOURCE.md, tests/parametric/test_ffe/ffe-system-test-data/ufc-config.json, tests/parametric/test_ffe/test_dynamic_evaluation.py, tests/parametric/test_ffe/utils.py, utils/scripts/update_ffe_fixtures.py, .github/workflows/update-ffe-fixtures.yml, utils/build/docker/nodejs/parametric/server.js, utils/build/docker/ruby/parametric/server.rb, utils/mocked_backend/_backend_ffe.py

Evaluated head: 51867b13eca51097c73d418ee3b15b4b328d9101

Registry revision: revision:1946aa2a-530e-487a-84a7-83aff44a1089

Pinned skill source: d214cfc65ae154b97d39af5cf32caf48aaec9bf0

Instructions: workflow-injected snapshot (no plugin loaded)

Instruction snapshot SHA-256: f23b2a88c13c0da90e2dd58246a14f257af91e2195c555039bd555b52e6f3516

Replace local fixture copies with the shared corpus, preserve extracted metadata
and span inputs, and add a reviewed snapshot update workflow.

Environment: Datadog workspace
@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

CODEOWNERS have been resolved as:

.github/chainguard/self.update-ffe-fixtures.create-pr.sts.yaml          @DataDog/system-tests-core
.github/workflows/update-ffe-fixtures.yml                               @DataDog/feature-flagging-and-experimentation-sdk @DataDog/system-tests-core
tests/parametric/test_ffe/ffe-system-test-data/SOURCE.md                @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-disabled-flag.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-empty-flag.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-experimentation-opt-out-do-log.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-experimentation-opt-out-future.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-experimentation-opt-out.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-invalid-condition-operands.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-invalid-regex-isolation.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-invalid-shard-bounds-isolation.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-malformed-flag-isolation.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-microsecond-date-flag.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-missing-split-shards-isolation.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-null-shard-range-isolation.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-null-targeting-key.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-numeric-one-of-default.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-regex-flag.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-semver-comparison-flag.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-semver-invalid-comparand-categories.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-semver-invalid-comparand-waterfall.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-semver-precedence-flag.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-semver-validation-flag.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-semver-version-parts.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-serial-id-metadata.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-span-enrichment-inputs.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-split-features.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-unknown-fields-tolerance.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-unknown-operator-isolation.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-variant-type-mismatch.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-flag-that-does-not-exist.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/test_the_test/test_ffe_split_features.py                          @DataDog/system-tests-reviewers
tests/test_the_test/test_update_ffe_fixtures.py                         @DataDog/feature-flagging-and-experimentation-sdk
utils/scripts/update_ffe_fixtures.py                                    @DataDog/feature-flagging-and-experimentation-sdk @DataDog/system-tests-core
.github/CODEOWNERS                                                      @DataDog/system-tests-core
manifests/cpp.yml                                                       @DataDog/system-tests-reviewers
manifests/dotnet.yml                                                    @DataDog/system-tests-reviewers
manifests/golang.yml                                                    @DataDog/system-tests-reviewers
manifests/java.yml                                                      @DataDog/system-tests-reviewers
manifests/nodejs.yml                                                    @DataDog/system-tests-reviewers
manifests/php.yml                                                       @DataDog/system-tests-reviewers
manifests/python.yml                                                    @DataDog/system-tests-reviewers
manifests/ruby.yml                                                      @DataDog/system-tests-reviewers
manifests/rust.yml                                                      @DataDog/system-tests-reviewers
tests/ffe/README.md                                                     @DataDog/feature-flagging-and-experimentation-sdk
tests/ffe/test_flag_eval_evp.py                                         @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/test_configuration_sources.py                 @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/test_dynamic_evaluation.py                    @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/test_serial_id_metadata.py                    @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/test_span_enrichment.py                       @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/utils.py                                      @DataDog/feature-flagging-and-experimentation-sdk
tests/test_the_test/test_load_binary.py                                 @DataDog/system-tests-reviewers
utils/build/docker/java/parametric/src/main/java/com/datadoghq/trace/controller/FeatureFlagEvaluatorController.java  @DataDog/feature-flagging-and-experimentation-sdk @DataDog/system-tests-core
utils/build/docker/nodejs/parametric/server.js                          @DataDog/system-tests-reviewers
utils/build/docker/ruby/parametric/server.rb                            @DataDog/system-tests-reviewers
utils/docker_fixtures/_test_agent.py                                    @DataDog/system-tests-core
utils/docker_fixtures/_test_clients/_test_client_parametric.py          @DataDog/system-tests-core
utils/mocked_backend/_backend_ffe.py                                    @DataDog/feature-flagging-and-experimentation-sdk @DataDog/system-tests-core
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-boolean-false-assignment.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-boolean-one-of-matches.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-comparator-operator-flag.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-empty-string-variation.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-falsy-value-assignments.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-flag-with-empty-string.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-integer-flag.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-kill-switch-flag.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-new-user-onboarding-flag.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-no-allocations-flag.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-null-operator-flag.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-numeric-flag.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-numeric-one-of.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-of-7-empty-targeting-key.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-case-start-and-end-date-flag.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-json-config-flag.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-no-allocations-flag.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-special-characters.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/evaluation-cases/test-string-with-special-characters.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/ufc-config.json          @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/serial-id-metadata-flags.json                 @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/span-enrichment-flags.json                    @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/test-case-disabled-flag.json                  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/test-case-empty-flag.json                     @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/test-case-regex-flag.json                     @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/test-flag-that-does-not-exist.json            @DataDog/feature-flagging-and-experimentation-sdk

@datadog-datadog-prod-us1-2

datadog-datadog-prod-us1-2 Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Pipelines  Tests

✨ Unblock PR with BitsAI

❌ Errors

Your PR has failed checks. Please review the issues below and take necessary action before merging.

🚦 16 Pipeline jobs failed

Testing the test | System Tests (php, dev) / End-to-end #1 / apache-mod-7.2-zts 1 — ❌ 2 tests failed · 🔧 Needs a code fix, caused by this PR

View more details · View in GitHub Actions

❌ tests.debugger.test_debugger_expression_language.Test_Debugger_Expression_Language.test_expression_language_access_variables[apache-mod-7.2-zts] from system_tests_suite
AssertionError: assert 'Probes did not reach INSTALLED status' is None
 +  where 'Probes did not reach INSTALLED status' = <built-in method join of str object at 0x7fc802c2b720>(['Probes did not reach INSTALLED status'])
 +    where <built-in method join of str object at 0x7fc802c2b720> = '\n'.join
 +    and   ['Probes did not reach INSTALLED status'] = <tests.debugger.test_debugger_expression_language.Test_Debugger_Expression_Language object at 0x7fc7f89bb1a0>.setup_failures

self = <tests.debugger.test_debugger_expression_language.Test_Debugger_Expression_Language object at 0x7fc7f89bb1a0>

    def test_expression_language_access_variables(self):
>       self._assert(expected_response=200)

...
❌ tests.debugger.test_debugger_probe_snapshot.Test_Debugger_Method_Probe_Snaphots_With_SCM.test_log_method_snapshot[apache-mod-7.2-zts] from system_tests_suite
AssertionError: assert 'Probes did not reach INSTALLED status' is None
 +  where 'Probes did not reach INSTALLED status' = <built-in method join of str object at 0x7f07c402b720>(['Probes did not reach INSTALLED status'])
 +    where <built-in method join of str object at 0x7f07c402b720> = '\n'.join
 +    and   ['Probes did not reach INSTALLED status'] = <tests.debugger.test_debugger_probe_snapshot.Test_Debugger_Method_Probe_Snaphots_With_SCM object at 0x7f07b5590710>.setup_failures

self = <tests.debugger.test_debugger_probe_snapshot.Test_Debugger_Method_Probe_Snaphots_With_SCM object at 0x7f07b5590710>

    def test_log_method_snapshot(self):
>       self._assert()

...
Testing the test | System Tests (php, dev) / End-to-end #1 / apache-mod-7.3-zts 1 — ❌ 2 tests failed · 🔧 Needs a code fix, caused by this PR

View more details · View in GitHub Actions

❌ tests.debugger.test_debugger_expression_language.Test_Debugger_Expression_Language.test_expression_language_access_variables[apache-mod-7.3-zts] from system_tests_suite
AssertionError: assert 'Probes did not reach INSTALLED status' is None
 +  where 'Probes did not reach INSTALLED status' = <built-in method join of str object at 0x7f1a0242b720>(['Probes did not reach INSTALLED status'])
 +    where <built-in method join of str object at 0x7f1a0242b720> = '\n'.join
 +    and   ['Probes did not reach INSTALLED status'] = <tests.debugger.test_debugger_expression_language.Test_Debugger_Expression_Language object at 0x7f19f85d0bf0>.setup_failures

self = <tests.debugger.test_debugger_expression_language.Test_Debugger_Expression_Language object at 0x7f19f85d0bf0>

    def test_expression_language_access_variables(self):
>       self._assert(expected_response=200)

...
❌ tests.debugger.test_debugger_probe_snapshot.Test_Debugger_Method_Probe_Snaphots_With_SCM.test_log_method_snapshot[apache-mod-7.3-zts] from system_tests_suite
AssertionError: assert 'Probes did not reach INSTALLED status' is None
 +  where 'Probes did not reach INSTALLED status' = <built-in method join of str object at 0x7feca962b720>(['Probes did not reach INSTALLED status'])
 +    where <built-in method join of str object at 0x7feca962b720> = '\n'.join
 +    and   ['Probes did not reach INSTALLED status'] = <tests.debugger.test_debugger_probe_snapshot.Test_Debugger_Method_Probe_Snaphots_With_SCM object at 0x7feca0791940>.setup_failures

self = <tests.debugger.test_debugger_probe_snapshot.Test_Debugger_Method_Probe_Snaphots_With_SCM object at 0x7feca0791940>

    def test_log_method_snapshot(self):
>       self._assert()

...
Testing the test | System Tests (php, dev) / End-to-end #1 / apache-mod-7.4-zts 1 — ❌ 1 test failed · 🔧 Needs a code fix, caused by this PR

View more details · View in GitHub Actions

❌ tests.debugger.test_debugger_expression_language.Test_Debugger_Expression_Language.test_expression_language_access_variables[apache-mod-7.4-zts] from system_tests_suite
AssertionError: assert 'Probes did not reach INSTALLED status' is None
 +  where 'Probes did not reach INSTALLED status' = <built-in method join of str object at 0x7f5eb322b720>(['Probes did not reach INSTALLED status'])
 +    where <built-in method join of str object at 0x7f5eb322b720> = '\n'.join
 +    and   ['Probes did not reach INSTALLED status'] = <tests.debugger.test_debugger_expression_language.Test_Debugger_Expression_Language object at 0x7f5ea8c072c0>.setup_failures

self = <tests.debugger.test_debugger_expression_language.Test_Debugger_Expression_Language object at 0x7f5ea8c072c0>

    def test_expression_language_access_variables(self):
>       self._assert(expected_response=200)

...

View all 16 failed jobs.

ℹ️ Info

No other issues found (see more)

❄️ No new flaky tests detected

Useful? React with 👍 / 👎

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 4a9a868 | Docs | View more details | Give us feedback!

Expose Node.js error codes and Ruby resolution details to canonical assertions. Convert Ruby numeric defaults to Float before calling the OpenFeature client.

Environment: Datadog workspace
@leoromanovsky
leoromanovsky marked this pull request as ready for review October 21, 2026 20:19
@leoromanovsky
leoromanovsky requested review from a team as code owners October 21, 2026 20:19
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-21T20:25:35.775012Z 9e3ad6a Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9e3ad6aae6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread tests/parametric/test_ffe/test_dynamic_evaluation.py
typotter added a commit that referenced this pull request Oct 21, 2026
Stack #8049 on Leo's #8139 branch, source the UFC and root cases from ffe-system-test-data #45, and manifest-gate dependency cases by UFC structure.

Environment: Datadog workspace

Co-Authored-By: Codex GPT-5 <noreply@localhost>
Keep the unified FFE mock backend loading the canonical fixture snapshot and preserve updater ownership.

Environment: Datadog workspace
typotter and others added 3 commits October 26, 2026 13:20
Co-authored-by: Codex GPT-5 <noreply@localhost>
Preserve the canonical FFE fixture path through the mock backend container
refactor and retain the merged platform applicability filters.

Environment: Datadog workspace
Download dd-openfeature.jar from the selected Java snapshot branch so FFE
tests do not pair the development agent with an incompatible release provider.
Cover default and custom branches, Java Lambda, and missing providers.

Environment: Datadog workspace
Comment thread tests/parametric/test_ffe/test_dynamic_evaluation.py
Preserve canonical fixture discovery and platform filters. Keep the development OpenFeature provider out of Java Lambda builds, cover both loader paths, and document unasserted split-feature metadata.
@leoromanovsky
leoromanovsky enabled auto-merge (squash) October 27, 2026 17:31
@linear-code

linear-code Bot commented Oct 27, 2026

Copy link
Copy Markdown

FFLSDK-274

The 0.5.4 release moved back to OpenTelemetry 0.32, which lacks the compression fallback and scope schema URL behavior present in 0.33. Preserve the existing minimum versions and declare only the released 0.5.4 unsupported; keep the 0.5.4 development build enabled.

Environment: Datadog workspace

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants