Skip to content

[FSSDK-11544] Parsing holdout configuration from datafile + project config holdout impl. #384

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

junaed-optimizely
Copy link
Contributor

@junaed-optimizely junaed-optimizely commented Aug 12, 2025

Summary

Datafile Parsing to support holdout + ProjectConfig holdout change

Test plan

Tests have been added to support the changes

Issues

FSSDK-11544
FSSDK-11545

@junaed-optimizely junaed-optimizely marked this pull request as ready for review August 13, 2025 18:02
@junaed-optimizely junaed-optimizely changed the title [FSSDK-11544] experiment core and holdout introduction [FSSDK-11544] Parsing holdout configuration from datafile + project config holdout impl. Aug 14, 2025
Copy link

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

Implements holdout functionality for the Optimizely SDK by adding datafile parsing support and project configuration integration. This enables holdout experiments that can be applied globally or targeted to specific feature flags.

  • Added comprehensive holdout entity model with flag inclusion/exclusion logic
  • Introduced holdout configuration manager for efficient flag-to-holdout relationship mapping
  • Extended project configuration interface to support holdout operations and queries

Reviewed Changes

Copilot reviewed 17 out of 17 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
OptimizelySDK/Utils/HoldoutConfig.cs Core holdout configuration manager with caching and flag relationship logic
OptimizelySDK/Entity/Holdout.cs Complete holdout entity implementation with audience and variation support
OptimizelySDK/Entity/IExperimentCore.cs Shared interface for common experiment/holdout functionality
OptimizelySDK/Entity/ExperimentCoreExtensions.cs Extension methods for shared experiment/holdout operations
OptimizelySDK/Entity/Experiment.cs Updated to implement IExperimentCore interface
OptimizelySDK/ProjectConfig.cs Added holdout-related interface methods
OptimizelySDK/Config/DatafileProjectConfig.cs Integrated holdout parsing and configuration management
Various project files Added new entity and utility files to compilation
Test files Comprehensive test coverage for holdout functionality

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Copy link
Contributor

@mikechu-optimizely mikechu-optimizely left a comment

Choose a reason for hiding this comment

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

I've reviewed and provided comments around performance and consistency. I do not see any security problems. I'm providing a non-blocking approval but suggest consideration of the comments from me and Copilot. Good work. Welcome to C#. 😁

Copy link

@muzahidul-opti muzahidul-opti left a comment

Choose a reason for hiding this comment

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

Updated architecture looks good to me.
Leave a comment to remove the duplicate logic.

@junaed-optimizely junaed-optimizely merged commit 150380f into master Aug 20, 2025
9 checks passed
@junaed-optimizely junaed-optimizely deleted the junaed/fssdk-11544-parsing-the-holdout-from-datafile branch August 20, 2025 12:52
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.

3 participants