Skip to content

Conversation

@muzahidul-opti
Copy link
Contributor

@muzahidul-opti muzahidul-opti commented Feb 3, 2026

Summary

  • Added experiments field to Holdout data model with default empty array
  • Added experiment-to-holdout mapping functionality
  • Added get_holdouts_for_experiment method to retrieve holdouts for specific experiments
  • Added local_holdout? helper method to identify local holdouts

Changes Made

  1. Data Model: Added experiments field parsing with default empty array for backward compatibility
  2. Mapping: Built experiment_holdouts_map hash to enable experiment-to-holdout lookups
  3. Methods:
    • get_holdouts_for_experiment(experiment_id) - Returns holdouts targeting a specific experiment
    • local_holdout?(holdout) - Returns true if holdout targets specific experiments
  4. Tests: Added comprehensive unit tests covering all scenarios

Test Coverage

  • ✅ Experiments field parsing and defaults
  • ✅ Experiment-to-holdout mapping functionality
  • ✅ get_holdouts_for_experiment method
  • ✅ local_holdout? helper method
  • ✅ Backward compatibility with legacy datafiles
  • ✅ Edge cases and multiple holdout scenarios
  • ✅ All 1042 existing tests pass

Backward Compatibility

  • Experiments field defaults to empty array if not present in datafile
  • Fully compatible with existing datafiles without experiments field
  • No breaking changes to existing functionality

Related

  • Based on Swift SDK implementation
  • Ticket: FSSDK-12265

Generated with Claude Code

- Added experiments field to holdout hash with default empty array
- Added experiment_holdouts_map to build experiment-to-holdout mappings
- Added get_holdouts_for_experiment(experiment_id) method
- Added local_holdout?(holdout) helper method
- Added comprehensive unit tests covering:
  * Experiments field parsing and defaults
  * Experiment-to-holdout mapping functionality
  * local_holdout? helper method
  * Backward compatibility with legacy datafiles
  * Edge cases and multiple holdout scenarios
- Ensured backward compatibility (experiments field defaults to empty array)
- All 1042 tests pass successfully
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