Skip to content

[AI-FSSDK] [FSSDK-12369] Add local holdouts support#628

Open
Mat001 wants to merge 3 commits into
masterfrom
ai/jaeopt/FSSDK-12369-local-holdouts
Open

[AI-FSSDK] [FSSDK-12369] Add local holdouts support#628
Mat001 wants to merge 3 commits into
masterfrom
ai/jaeopt/FSSDK-12369-local-holdouts

Conversation

@Mat001
Copy link
Copy Markdown
Contributor

@Mat001 Mat001 commented May 15, 2026

Summary

Adds local holdouts support to the Java SDK.

Jira ticket: FSSDK-12369

Changes

  • Implemented local holdouts logic following cross-SDK functional requirements
  • Added unit tests for holdout decision scenarios

Test plan

  • All existing unit tests pass
  • New holdout-specific tests pass
  • Verified functional parity with spec in FSSDK-12369

🤖 Generated with Claude Code via AI-FSSDK

@Mat001 Mat001 requested review from jaeopt and raju-opti May 18, 2026 17:13
Copy link
Copy Markdown
Contributor

@jaeopt jaeopt left a comment

Choose a reason for hiding this comment

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

LGTM - a couple of comments to confirm

Comment thread core-api/src/main/java/com/optimizely/ab/bucketing/DecisionService.java Outdated
Copy link
Copy Markdown
Contributor

@jaeopt jaeopt left a comment

Choose a reason for hiding this comment

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

Found ForcedDecision repeated 2 times for each rule.

Comment thread core-api/src/main/java/com/optimizely/ab/bucketing/DecisionService.java Outdated
jaeopt and others added 2 commits May 19, 2026 15:32
… in DecisionService

Move validatedForcedDecision and localHoldout checks from
getVariationFromExperiment and getVariationForFeatureInRollout into
getVariationFromExperimentRule and getVariationFromDeliveryRule,
eliminating redundant evaluation. Extract shared local holdout logic
into evaluateLocalHoldouts() and add unit tests.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add a local holdout with includedRules to the JSON fixture and expected
config so Json, Gson, Jackson, and JsonSimple parsers all verify local
holdout parsing. Also add includedRules/isGlobal assertions to
verifyHoldouts.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy link
Copy Markdown
Contributor

@jaeopt jaeopt left a comment

Choose a reason for hiding this comment

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

LGTM

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.

2 participants