Repository navigation
[Feature Flags] Preserve 256 attributes alongside targeting key - #9511
Conversation
Exclude the root targeting key before bounding snapshot attributes so 256 valid fields are retained. Environment: Datadog workspace Co-Authored-By: Codex GPT-6 <noreply@localhost>
Execution-Time Benchmarks Report ⏱️Execution-time results for samples comparing This PR (9511) and master. ✅ No regressions detected |
BenchmarksBenchmark execution time: 2026-10-27 23:51:30 Comparing candidate commit e02e248 in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 71 metrics, 1 unstable metrics, 6 known flaky benchmarks, 120 flaky benchmarks without significant changes.
|
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. |
There was a problem hiding this comment.
More details
Excluding the root targetingKey from attribute and visit budgets preserves all 256 valid attributes while retaining nested-field handling and traversal limits.
🤖 Bits Code Review · Commit 927d3c8
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 927d3c895d
ℹ️ About Codex in GitHub
Your team has set up Codex to 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 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Generate the Boolean dimension combinatorially and preserve string typing in the fixture. Environment: Datadog workspace Co-Authored-By: Codex GPT-6 <noreply@localhost>
aarsilv
left a comment
There was a problem hiding this comment.
Nice! Approving with some pedantic Claude comments you can take or leave as you see fit 🤓
Align root overflow telemetry and protect identity and rejected-key traversal budgets. Environment: Datadog workspace Co-Authored-By: Codex GPT-6 <noreply@localhost>
|
/code blockers |
|
View all feedbacks in Devflow UI.
Checking merge blockers for #9511...
Detected 16 merge blocker(s) to address: 🔴 Blocking
🟠 Pending
|
Integrate master at 5769328. Environment: Datadog workspace Co-Authored-By: Codex GPT-6 <noreply@localhost>
Summary of changes
Preserve all 256 valid evaluation-context attributes when an OpenFeature context also contains the root
targetingKey.Reason for change
The snapshot previously counted the reserved identity as one of the 256 inspected map entries before omitting it. Depending on map iteration order, this retained only 255 attributes and incorrectly reported
MaxStructurePropertiesfor an otherwise valid 256-attribute context.Implementation details
Exclude only the root identity from the container count and visit budget. Enumeration remains bounded to 256 attributes plus the single reserved entry; nested
targetingKeyfields and the existing field, depth, and traversal caps retain their semantics. Root overflow reportsMaxContextFields, while nested map overflow retainsMaxStructureProperties. A shared reserved-key constant and a remaining-entry counter keep the count and skip logic aligned.Test coverage
netcoreapp3.1, 755 fornet8.0, and 755 fornet9.0(2,255 total, zero skipped). Thenetcoreapp3.1target consumes the provider'snetstandard2.0asset. All used the repository-pinned .NET 11 RC SDK/runtime withDOTNET_ROLL_FORWARD=Major.git diff --checkpassed; build analyzers passed.Other details
Addresses the SDK boundary failure found while validating the shared FFE system tests. The shared 256-field assertion remains strict.
FFE reviewer selection
Reviewers: @leoromanovsky, @sameerank
Why: Flag evaluation on EVP — Fixes the attribute budget in FlagEvaluationContextSnapshot so the root targetingKey no longer counts against the 256-attribute cap. Reviewers come from the matched pod.
🤖 Automated selection.
Selection details
Initiative: project / flag-evaluation-evp
Why this match: Fixes the attribute budget in FlagEvaluationContextSnapshot so the root targetingKey no longer counts against the 256-attribute cap. A valid 256-attribute context now keeps every attribute instead of dropping one and reporting MaxStructureProperties. The snapshot's only caller is FlagEvalEVPHook, so this changes the evaluation-context content of the EVP flag evaluation event payload. Tests cover 255, 256 and 257 attributes with and without root identity.
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:
tracer/src/Datadog.FeatureFlags.OpenFeature/FlagEvaluationContextSnapshot.cs,tracer/test/Datadog.FeatureFlags.OpenFeature.Tests/FlagEvaluationContextSnapshotTests.csEvaluated head:
20fb76f879385dc5a0ce0c1d07dc28422950ae5dRegistry revision:
revision:1946aa2a-530e-487a-84a7-83aff44a1089Pinned skill source:
d214cfc65ae154b97d39af5cf32caf48aaec9bf0Instructions: workflow-injected snapshot (no plugin loaded)
Instruction snapshot SHA-256:
f23b2a88c13c0da90e2dd58246a14f257af91e2195c555039bd555b52e6f3516