Skip to content

Conversation

@jaeopt
Copy link
Owner

@jaeopt jaeopt commented Feb 9, 2026

Summary

This PR updates the Python SDK to exclude CMAB (Contextual Multi-Armed Bandit) experiments from UserProfileService (UPS) for sticky bucketing.

Reason: CMAB experiments require dynamic decisions based on real-time context and user attributes. UPS maintains decisions across the experiment lifetime without considering TTL or attribute changes, which contradicts CMAB's dynamic nature.

Changes

Core Changes

  • Skip UPS lookup for CMAB experiments - Decision service now checks if experiment is CMAB before looking up stored variation
  • Skip UPS update for CMAB experiments - Decision service now checks if experiment is CMAB before updating user profile
  • Add UPS exclusion to decision reasons - Decision reasons now include "Skipped UPS lookup/update for CMAB experiment as it requires dynamic decisions"

Test Coverage

  • Added comprehensive test test_get_variation_cmab_experiment_skips_user_profile_service to verify:
    • UPS lookup is skipped for CMAB experiments
    • UPS update is skipped for CMAB experiments
    • Decision reasons include UPS exclusion messages
    • User profile tracker methods are not called for CMAB

Testing

Run the test suite to verify:

python -m pytest tests/test_decision_service.py::DecisionServiceTest::test_get_variation_cmab_experiment_skips_user_profile_service -v

Related

  • Jira: FSSDK-12262
  • Product Decision: Product team has agreed to exclude CMAB from UPS across all SDKs

🤖 Generated with AI-FSSDK automation

- Skip UPS lookup for CMAB experiments to ensure dynamic decisions
- Skip UPS update for CMAB experiments to prevent sticky bucketing
- Add decision reason when UPS is excluded for CMAB
- Add comprehensive test to verify UPS exclusion for CMAB

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