feat(openfeature): add feature flag configuration settings - #6260
feat(openfeature): add feature flag configuration settings#6260pavlokhrebto wants to merge 2 commits into
Conversation
|
👋 Hey @DataDog/ruby-guild, please fill "Change log entry" section in the pull request description. If changes need to be present in CHANGELOG.md you can state it this way **Change log entry**
Yes. A brief summary to be placed into the CHANGELOG.md(possible answers Yes/Yep/Yeah) Or you can opt out like that **Change log entry**
None.(possible answers No/Nope/None) Visited at: 2026-08-28 15:37:55 UTC |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: be6f2c7701
ℹ️ About Codex in GitHub
Codex has been enabled to automatically 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 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
🎉 All green!🧪 All tests passed 🎯 Code Coverage (details) 🔗 Commit SHA: d12180d | Docs | View more details | Give us feedback! |
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d12180d552
ℹ️ About Codex in GitHub
Codex has been enabled to automatically 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 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| def self.build(settings, agent_settings, logger:, telemetry:) | ||
| return unless settings.respond_to?(:open_feature) && settings.open_feature.enabled | ||
| return unless settings.respond_to?(:open_feature) | ||
| return unless Configuration::Settings.remote_configuration?(settings.open_feature) |
There was a problem hiding this comment.
Start an agentless component for the default source
With the documented defaults (DD_FEATURE_FLAGS_ENABLED=true and source agentless), this guard still returns without building an evaluation engine, so adopting Datadog::OpenFeature::Provider produces only fatal/default evaluations. Fresh evidence after the prior review is that Component.build now explicitly accepts only remote_config, while a repo-wide search finds no runtime consumer for the new agentless URL, polling, or request-timeout settings; either wire an agentless component here or avoid exposing it as the working default.
AGENTS.md reference: lib/datadog/open_feature/AGENTS.md:L180-L180
Useful? React with 👍 / 👎.
| option :initialization_timeout_ms do |o| | ||
| o.type :int | ||
| o.env "DD_EXPERIMENTAL_FLAGGING_PROVIDER_INITIALIZATION_TIMEOUT_MS" |
There was a problem hiding this comment.
Apply the initialization timeout during provider startup
When a user changes DD_EXPERIMENTAL_FLAGGING_PROVIDER_INITIALIZATION_TIMEOUT_MS, the value cannot affect initialization: the only production reference is this option declaration, Component never reads it, and Provider#init remains a no-op. Consequently the newly documented promise to wait this long for the first configuration is silently ignored for every source.
AGENTS.md reference: lib/datadog/open_feature/AGENTS.md:L180-L180
Useful? React with 👍 / 👎.
What does this PR do?
Adds stable OpenFeature settings for Feature Flags enablement, configuration source selection, and agentless delivery timeouts. Implements cross-SDK precedence and validation while preserving the deprecated
DD_EXPERIMENTAL_FLAGGING_PROVIDER_ENABLEDbehavior for existing adopters.Motivation:
Establishes the shared configuration contract required for agentless Feature Flags delivery without moving existing adopters away from Remote Configuration.
Change log entry
Yes. Adds configuration options for selecting and tuning Feature Flags configuration delivery.
Additional Notes:
This is the first PR in a four-PR stack and contains the configuration groundwork. Agentless HTTP delivery and provider lifecycle wiring will follow in subsequent PRs.
How to test the change?