Skip to content

feat(openfeature): add feature flag configuration settings - #6260

Draft
pavlokhrebto wants to merge 2 commits into
masterfrom
pavlo.khrebto/FFLSDK-10/agentless
Draft

feat(openfeature): add feature flag configuration settings#6260
pavlokhrebto wants to merge 2 commits into
masterfrom
pavlo.khrebto/FFLSDK-10/agentless

Conversation

@pavlokhrebto

@pavlokhrebto pavlokhrebto commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

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_ENABLED behavior 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?

docker compose run --no-deps --rm tracer-4.0 bundle exec rake local_config_map:generate
docker compose run --no-deps --rm -e STANDARDOPTS="lib/datadog/open_feature/configuration.rb spec/datadog/open_feature/configuration/settings_spec.rb" tracer-4.0 bundle exec rake standard
docker compose run --no-deps --rm tracer-4.0 bundle exec rake "steep:check[lib/datadog/open_feature/configuration.rb,spec/datadog/open_feature/configuration]"
docker compose run --no-deps --rm tracer-4.0 bundle exec rake rbs:missing rbs:stale
docker compose run --no-deps --rm tracer-3.1 bundle exec rake test:open_feature
docker compose run --no-deps --rm tracer-4.0 bundle exec rake test:open_feature

@pavlokhrebto
pavlokhrebto requested review from a team as code owners August 28, 2026 15:36
@linear-code

linear-code Bot commented Aug 28, 2026

Copy link
Copy Markdown

FFLSDK-10

@pavlokhrebto
pavlokhrebto marked this pull request as draft August 28, 2026 15:36
@dd-octo-sts

dd-octo-sts Bot commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

👋 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

@dd-octo-sts dd-octo-sts Bot added core Involves Datadog core libraries openfeature A new component that provider an ability to configure feature flags labels Aug 28, 2026
@pavlokhrebto pavlokhrebto changed the title feat(openfeature): add agentless configuration settings feat(openfeature): add feature flag configuration settings Aug 28, 2026

@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: 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".

Comment thread lib/datadog/open_feature/configuration.rb
@datadog-official

datadog-official Bot commented Aug 28, 2026

Copy link
Copy Markdown

Tests

🎉 All green!

🧪 All tests passed
❄️ No new flaky tests detected

🎯 Code Coverage (details)
Patch Coverage: 99.59%
Overall Coverage: 90.33% (+0.01%)

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

@pavlokhrebto

Copy link
Copy Markdown
Contributor Author

@codex review

@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: 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)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge 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 👍 / 👎.

Comment on lines +171 to +173
option :initialization_timeout_ms do |o|
o.type :int
o.env "DD_EXPERIMENTAL_FLAGGING_PROVIDER_INITIALIZATION_TIMEOUT_MS"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge 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 👍 / 👎.

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

Labels

core Involves Datadog core libraries openfeature A new component that provider an ability to configure feature flags

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant