Skip to content

Guard eager OpenFeature init and add detailed /ffe/evaluate for Go agentless configuration contract - #7580

Draft
pavlokhrebto wants to merge 1 commit into
mainfrom
pavlo.khrebto/FFL-2695/go-agentless-configuration
Draft

Guard eager OpenFeature init and add detailed /ffe/evaluate for Go agentless configuration contract#7580
pavlokhrebto wants to merge 1 commit into
mainfrom
pavlo.khrebto/FFL-2695/go-agentless-configuration

Conversation

@pavlokhrebto

@pavlokhrebto pavlokhrebto commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Motivation

FFL-2695 tracks the Go agentless configuration-source implementation in dd-trace-go. Until that lands, the parametric app's /ffe/start and /ffe/evaluate contract must match the one already implemented for Python (#7411), so tests/parametric/test_ffe/test_configuration_sources.py can run against a dev build of dd-trace-go and fail for the right reason.

Changes

  • main.go: skip eager OpenFeature provider init when any DD_FEATURE_FLAGS_* config env var is set. Leave setup to /ffe/start.
  • ffe.go: /ffe/start builds and sets the provider once, guarded by sync.Once. It returns 500 with an error body on failure. /ffe/evaluate uses the *ValueDetails APIs per variationType. It returns {value, reason, errorCode}. On error it falls back to {value: default, reason: "ERROR"}.

Workflow

  1. ⚠️ Create your PR as draft ⚠️
  2. Work on you PR until the CI passes
  3. Mark it as ready for review
    • Test logic is modified? -> Get a review from RFC owner.
    • Framework is modified, or non obvious usage of it -> get a review from R&P team

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

🛟 #apm-shared-testing 🛟

Reviewer checklist

  • Anything but tests/ or manifests/ is modified ? I have the approval from R&P team
  • A docker base image is modified?
    • the relevant build-XXX-image label is present
  • A scenario is added, removed or renamed?

@github-actions

Copy link
Copy Markdown
Contributor

CODEOWNERS have been resolved as:

utils/build/docker/golang/parametric/ffe.go                             @DataDog/system-tests-reviewers
utils/build/docker/golang/parametric/main.go                            @DataDog/system-tests-reviewers

@pavlokhrebto pavlokhrebto changed the title Guard eager OpenFeature init and add detailed /ffe/evaluate for Go ag… Guard eager OpenFeature init and add detailed /ffe/evaluate for Go agentless configuration contract Aug 25, 2026
gh-worker-dd-mergequeue-cf854d Bot pushed a commit to DataDog/dd-trace-go that referenced this pull request Sep 8, 2026
…e and endpoint (#5218)

### What does this PR do?

Lays the groundwork for Agentless Feature Flags delivery (polling configuration directly from
Datadog over HTTPS instead of via the Agent's Remote Config): five new `DD_FEATURE_FLAGS_*`
environment variables, `internal/config` fields/accessors for them, the source-precedence
resolution logic (`internal/openfeature.ResolveSettings`/`RemoteConfigSourceSelected`), and
Agentless endpoint URL resolution (`openfeature.buildAgentlessEndpoint`, managed vs. custom).

No behavior change yet — nothing is wired up to the provider or issues any network requests.
This is Phase 1 of a multi-PR rollout; the poll loop, JSON:API envelope parsing, and provider
wiring/activation follow in subsequent PRs.

### Stack

1. #5218 — settings, source precedence, endpoint (this PR)
2. #5222 — JSON:API parser, poll loop
3. #5223 — provider wiring, activation, lifecycle, RC gating
4. #5226 — init outcomes, provider events

### Motivation

dd-trace-go is one of the last server SDKs to support Agentless Feature Flags delivery (Python,
Node, and Java have shipped it; .NET is in review; Ruby is also pending). Agentless removes the
Agent as a dependency and becomes the default delivery mechanism. FFL-2695.

### Reviewer's Checklist

- [x] Changed code has unit tests for its functionality at or near 100% coverage.
- [x] [System-Tests](https://github.com/DataDog/system-tests/) covering this feature have been added and enabled with the va.b.c-dev version tag: DataDog/system-tests#7580
- [ ] There is a benchmark for any new code, or changes to existing code.
- [ ] If this interacts with the agent in a new way, a system test has been added.
- [x] New code is free of linting errors. You can check this by running `make lint` locally.
- [x] New code doesn't break existing tests. You can check this by running `make test` locally.
- [ ] Add an appropriate team label so this PR gets put in the right place for the release notes.
- [x] All generated files are up to date. You can check this by running `make generate` locally.
- [ ] Non-trivial go.mod changes, e.g. adding new modules, are reviewed by @DataDog/dd-trace-go-guild. Make sure all nested modules are up to date by running `make fix-modules` locally.

Unsure? Have a question? Request a review!



Co-authored-by: pavlo.khrebto <pavlo.khrebto@datadoghq.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant