Skip to content

Conversation

@jaeopt
Copy link
Owner

@jaeopt jaeopt commented Feb 9, 2026

Summary

Exclude CMAB (Contextual Multi-Armed Bandit) experiments from User Profile Service (UPS) to ensure dynamic decision-making that respects TTL and user attributes.

Related Ticket

FSSDK-12262

Changes

  • Skip UPS lookup for CMAB experiments: Modified get_variation() to check experiment.cmab before retrieving stored variations
  • Skip UPS save for CMAB experiments: Modified get_variation() to check experiment.cmab before saving new decisions
  • Add decision reason: When UPS is skipped for CMAB, add message "User Profile Service is not used for CMAB experiments" to decision reasons
  • Add test coverage: New test test_get_variation_cmab_experiment_skips_user_profile_service verifies UPS is bypassed for CMAB

Why This Change?

UPS maintains decisions across the experiment lifetime without considering TTL or user attributes, which contradicts CMAB's dynamic nature. CMAB experiments need to make fresh decisions on each call to respond to changing contexts.

Testing

  • ✅ All existing CMAB tests pass (5/5)
  • ✅ New test for UPS exclusion passes
  • ✅ All decision service tests pass (49/49)
  • ✅ All user profile tests pass (9/9)

Acceptance Criteria

  • ✅ Update SDK to exclude CMAB from UPS
  • ✅ Add UPS exclusion to decision reason

🤖 Generated with Claude Code

- Skip UPS lookup for CMAB experiments to ensure dynamic decisions
- Skip UPS save for CMAB experiments to prevent sticky bucketing
- Add decision reason explaining UPS exclusion for CMAB
- Add test to verify UPS is not used for CMAB experiments

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@jaeopt jaeopt closed this Feb 9, 2026
@jaeopt jaeopt deleted the ai/jaeopt/FSSDK-12262-cmab-ups-3 branch February 9, 2026 23:10
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