feat(openfeature): add agentless configuration and source resolution - #6291
Conversation
|
Thank you for updating Change log entry section 👏 Visited at: 2026-09-08 10:36:52 UTC |
🎉 All green!🧪 All tests passed 🎯 Code Coverage (details) 🔗 Commit SHA: 66c6f77 | Docs | View more details | Give us feedback! |
There was a problem hiding this comment.
🟡 Changes recommended
The new RBS signatures don’t currently match Ruby method visibility (private class methods) and need small convention/formatting adjustments to align with existing sig patterns.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Introduces the stable OpenFeature Feature Flags configuration surface for agentless delivery, including source selection/resolution and validated derivation of the agentless configuration endpoint, plus the associated registry, RBS, docs, and unit specs.
Changes:
- Add stable Feature Flags settings (enablement, configuration source, agentless endpoint controls) with validation and legacy-switch deprecation logging.
- Implement configuration-source resolution (
agentless/remote_config/offline) and validated agentless endpoint building. - Register new environment variables in the supported-configurations registry and document the new configuration surface.
File summaries
| File | Description |
|---|---|
| supported-configurations.json | Registers new Feature Flags/OpenFeature-related environment variables and defaults. |
| lib/datadog/core/configuration/supported_configurations.rb | Adds the new env var names to the supported configuration allowlist. |
| lib/datadog/open_feature/configuration.rb | Defines stable OpenFeature Feature Flags settings, validation, and legacy deprecation warning behavior. |
| lib/datadog/open_feature/configuration/source.rb | Adds source-selection resolution logic and fail-closed handling for invalid sources. |
| lib/datadog/open_feature/configuration/source/resolution.rb | Adds a small value object to carry resolved source + enablement. |
| lib/datadog/open_feature/configuration/agentless_endpoint.rb | Implements validated construction of managed/custom agentless delivery endpoints. |
| docs/GettingStarted.md | Documents the new Feature Flags configuration knobs and deprecation notes. |
| spec/datadog/open_feature/configuration/settings_spec.rb | Adds unit coverage for new OpenFeature settings parsing, validation, and precedence. |
| spec/datadog/open_feature/configuration/source_spec.rb | Adds unit coverage for source resolution precedence and invalid-value behavior. |
| spec/datadog/open_feature/configuration/source/resolution_spec.rb | Adds basic unit coverage for the Resolution value object. |
| spec/datadog/open_feature/configuration/agentless_endpoint_spec.rb | Adds unit coverage for managed/custom endpoint derivation and validation. |
| sig/datadog/open_feature/configuration.rbs | Extends signatures to include new settings constants and helper method. |
| sig/datadog/open_feature/configuration/source.rbs | Adds signatures for source resolution and its settings interface. |
| sig/datadog/open_feature/configuration/source/resolution.rbs | Adds signatures for the Resolution value object. |
| sig/datadog/open_feature/configuration/agentless_endpoint.rbs | Adds signatures for AgentlessEndpoint construction/shape. |
| sig/datadog/core/configuration/settings.rbs | Extends the OpenFeature settings interface with the new settings accessors. |
Review details
- Files reviewed: 16/16 changed files
- Comments generated: 3
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 38037229a2
ℹ️ 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".
TonyCTHsu
left a comment
There was a problem hiding this comment.
Approve. Naming/layout feedback all addressed; the polymorphism thread is closed with a follow-up tracked in the replies. One non-blocking note inline on the initialization timeout env var.
|
Now that the settings namespace moved to Question: is the module name dictated by cross-SDK convention, or is a rename on the table? If it's open for discussion, the target I'd propose is the flat Datadog::FeatureFlags::OpenFeatureProvidermatching the Compatibility cost is two shims: alias If the stack-before-merge moment is the only cheap window for the new code, it's now; if the name is fixed by the cross-SDK spec, happy to close this and keep |
|
On the |
BenchmarksBenchmark execution time: 2026-09-23 10:10:29 Comparing candidate commit ec3aa99 in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 52 metrics, 0 unstable metrics.
|
ec3aa99 to
14037f2
Compare
14037f2 to
66c6f77
Compare
What does this PR do?
Adds the stable Feature Flags configuration surface, source resolution, and validated agentless endpoint derivation. It includes the configuration registry entries, RBS signatures, documentation, and focused unit coverage.
Motivation:
This is PR 1 of a four-PR stack that splits agentless Feature Flags delivery into focused changes for easier review. This PR intentionally contains dead code and must not be merged without its child PRs; the complete stack will be merged atomically.
Change log entry
Yes. Adds configuration options for agentless Feature Flags delivery.
Additional Notes:
Important
WE WILL NOT MERGE THIS PR WITHOUT ITS CHILD PRS.
The configuration and source-resolution code introduced here has no production caller until the child PRs are applied.
PR 1 targets
master, and each subsequent PR targets the preceding PR's branch. We will merge PR 4 → PR 3 → PR 2 → PR 1 →master, so only the complete stack reachesmaster.How to test the change?
Run
bundle exec rake local_config_map:generate, targeted StandardRB and Steep checks forlib/datadog/open_feature/configurationandspec/datadog/open_feature/configuration, thenbundle exec rake compile && bundle exec rake test:open_featureon Ruby 3.1 and Ruby 4.0.