feat(experimentation): default to control when rollout segment is created#7905
feat(experimentation): default to control when rollout segment is created#7905gagantrivedi wants to merge 1 commit into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. 3 Skipped Deployments
|
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #7905 +/- ##
==========================================
- Coverage 98.63% 98.57% -0.07%
==========================================
Files 1497 1497
Lines 59261 59276 +15
==========================================
- Hits 58455 58434 -21
- Misses 806 842 +36 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
8451662 to
8275f6d
Compare
…ated When a feature is first added to an experiment's rollout, zero every variant's allocation on the feature's environment-default feature state so control (the unallocated remainder) receives 100% of out-of-rollout traffic. The rollout segment override keeps the experiment's own split. This only runs when the rollout segment is first created; tuning the rollout of a running experiment leaves the default allocations alone.
8275f6d to
cf19595
Compare
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
Thanks for submitting a PR! Please check the boxes below:
docs/if required so people know about the feature.Changes
Contributes to experiment rollout work.
Warning
WIP / draft.
When a feature is first added to an experiment's rollout — i.e. the moment the rollout system segment is created — we now zero every variant's allocation on the feature's environment-default feature state. Control is the implicit unallocated remainder, so this gives control 100% of out-of-rollout traffic while the experiment runs.
spec.multivariate_values).update_flagpath (v1/v2) rather than mutating allocations in place.How did you test this code?
Added unit tests (
make test):test_services.py):test_apply_experiment_rollout__first_rollout__zeroes_default_allocations— default allocations zeroed, override split preserved.test_apply_experiment_rollout__existing_segment__leaves_default_allocations— a later manual edit to the default survives a rollout update.test_experiment_views.py):test_post__with_experiment_rollout__zeroes_default_allocations— end-to-end create-with-rollout zeroes the default and preserves the override split (bothuserandmaster_api_key).mypy,ruff, andflagsmith-lint-testsall clean.