Repository navigation
test(ffe): verify SDK identity through the Agent - #8153
Merged
Merged
Conversation
Assert producer headers at intake and reject event-level source while preserving existing payload checks and capability gates. Environment: Datadog workspace Co-Authored-By: Codex GPT-6 <noreply@localhost>
Contributor
|
|
🎉 All green!🧪 All tests passed 🔗 Commit SHA: ca2caa7 | Docs | View more details | Give us feedback! |
cbeauchesne
previously requested changes
Oct 23, 2026
Restore the existing self-test file following maintainer feedback. Environment: Datadog workspace Co-Authored-By: Codex GPT-6 <noreply@localhost>
Preserve SDK identity documentation alongside the new telemetry opt-out guide. Environment: Datadog workspace Co-Authored-By: Codex GPT-6 <noreply@localhost>
Enable the validated Python 4.16.0 release and name identity parameters source_name and source_version. Environment: Datadog workspace Co-Authored-By: Codex GPT-6 <noreply@localhost>
sameerank
approved these changes
Oct 23, 2026
aarsilv
approved these changes
Oct 23, 2026
aarsilv
left a comment
There was a problem hiding this comment.
Nice work! Approving with some lower-priority comments you can take or leave as you see fit 💪
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Use library_name and library_version consistently with existing EVP helpers and callers. Environment: Datadog workspace Co-Authored-By: Codex GPT-6 <noreply@localhost>
Integrate the current scenario and mocked-backend updates, and clarify independent Agent and SDK capability gates. Environment: Datadog workspace Co-Authored-By: Codex GPT-6 <noreply@localhost>
Include the matching Java development provider download from #8188 and current main updates. Environment: Datadog workspace Co-Authored-By: Codex GPT-6 <noreply@localhost>
Include the latest main changes while preserving SDK identity coverage. Environment: Datadog workspace Co-Authored-By: Codex GPT-6 <noreply@localhost>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
FFL-3020: evaluation payloads can reach intake while SDK identity is lost during Agent forwarding. Existing direct Agentless checks do not cover that path.
Changes
Add a dedicated Agent-backed test that checks the exact SDK producer and raw tracer version on Agent-to-intake captures while retaining the existing payload, variant/allocation, and evaluation-count assertions. Reject event-level
sourcein the shared flagevaluation contract.Reuse the identity helper for direct Agentless requests and include PHP in the producer mapping. Gate the new case at Agent 7.84.0+, Go 2.11.0+, and Python 4.16.0+. Enable the validated Python identity case in this PR; other language exclusions remain unchanged. Broader activation and #8093's harness repairs remain separate follow-ups.
Validation
The new identity case passed for every target below through Agent 7.84.2. The broader Agent-routed FFE suite was forced to execute disabled cases; the matrix does not establish Agentless coverage. This PR now enables the Python identity case at 4.16.0; other disabled cases remain excluded.
Java, .NET, and PHP used development builds, not the unreleased target release artifacts. Broader failures involve existing SDK behavior, a deliberately excluded Python case, Java/.NET weblog context conversion, and PHP context/stress behavior; the identity case is green throughout. Additional .NET #9511 and libdatadog #2716 builds also passed identity. Combined runs with #8093 validated the separate harness and SDK fixes; they are not results for this PR alone.
source.source, and missing captures. Split-batch checks reject a missing header on the second batch../format.sh --checkpassed. The SDK matrix predates the self-test removal and parameter rename. After the rename, the saved Python 4.16.0 live capture passes the identity test again; manifest checks confirm 4.16.0+ is enabled while earlier Python and Agent versions remain gated.CI investigation
The earlier Go dev uds-echo Sidecar failure exposes an existing teardown-wait race: a flagevaluation event from the exposure test satisfies the path-only wait before the flagevaluation test's own events arrive. The captured event belongs to
exposure-egress-user, while the failing test expectsevp-egress-user. Base and head both reject the same CI capture; the wait implementation is unchanged by this PR. This is capture replay and source analysis, not a fresh live base run. Waiting for the expected events/count is a separate harness fix; a retry alone does not fix the race.FFE reviewer selection
Reviewers: @leoromanovsky, @sameerank
Why: Flag evaluation on EVP — The PR adds system tests for flag evaluation telemetry sent over EVP through the Agent. Reviewers come from the matched pod.
🤖 Automated selection.
Selection details
Initiative: project / flag-evaluation-evp
Why this match: The PR adds system tests for flag evaluation telemetry sent over EVP through the Agent. A new test checks that SDK identity (the DD-EVP-ORIGIN producer and DD-EVP-ORIGIN-VERSION headers) survives Agent-to-intake forwarding, while keeping the existing payload, variant/allocation and evaluation-count assertions. The direct Agentless path now uses a shared identity helper, and the producer mapping gains PHP. The manifests gate the new case to Agent 7.84.0+, Go 2.11.0+ and Python 4.16.0+. This is about delivering EVP evaluation events and their SDK metadata, which fits flag-evaluation-evp. It is not generic deployment-mode transport or onboarding diagnostics. The catalog has no supplemental_review entries, so no additional review areas apply.
The PR author was excluded. Existing reviewers and teams were preserved.
Debug or fix a problem
Workflow run · Bits Code session
dry_run=false. Unchanged completed runs are skipped. If the receipt saysneeds_reconciliationor a write outcome is uncertain, ask the workflow owner to reconcile GitHub and the receipt before retrying; do not delete the lock blindly.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/ffe/test_flag_eval_evp.py,tests/ffe/utils/evp.py,tests/ffe/README.md,manifests/agent.yml,manifests/golang.yml,manifests/python.ymlEvaluated head:
9928edbb9276b209bfe2274d1df17b35092c55c3Registry revision:
revision:1946aa2a-530e-487a-84a7-83aff44a1089Pinned skill source:
d214cfc65ae154b97d39af5cf32caf48aaec9bf0Instructions: workflow-injected snapshot (no plugin loaded)
Instruction snapshot SHA-256:
f23b2a88c13c0da90e2dd58246a14f257af91e2195c555039bd555b52e6f3516