From 5b1deb202112c91414ec1be459816cde53dc4828 Mon Sep 17 00:00:00 2001 From: Matjaz Pirnovar Date: Thu, 18 Dec 2025 11:20:24 -0800 Subject: [PATCH 1/2] changelog update for minor release of holdouts --- CHANGELOG.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 18b503eb..f0b67ad6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,34 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] +## [4.4.0] - December 18, 2025 + +This release adds support for Holdouts, allowing you to measure the incremental impact of feature flags and experiments by holding back a percentage of users from seeing any changes. + +### New Features + +* **Holdouts Support** ([#452](https://github.com/optimizely/agent/pull/452)): Agent now fully supports Optimizely's Holdouts feature for measuring incremental impact of flags and experiments. Features include: + - Full holdouts evaluation through go-sdk v2.3.0 + - Support for both global (project-level) and flag-specific holdouts + - Holdouts evaluated before experiments and rollouts in decision flow + - Holdout decisions return `enabled: false`, `variationKey: "off"`, and `ruleKey` containing the holdout identifier + - Forced decisions correctly override holdout bucketing + - Zero Agent code changes required - all holdout logic handled by go-sdk + - Comprehensive acceptance test coverage with real project datafile + + This enables accurate measurement of feature impact by comparing users held out from experiments against those receiving variations. + +* **CMAB Acceptance Tests** ([#451](https://github.com/optimizely/agent/pull/451)): Added comprehensive acceptance tests for Contextual Multi-Armed Bandit (CMAB) functionality to ensure reliable AI-powered experimentation + +### Changed + +* Updated to go-sdk v2.3.0 with holdouts support and CMAB improvements +* Updated CMAB API migration to use `CmabConfig.PredictionEndpointTemplate` field + +### Fixed + +* Fixed Prisma security scanning issues ([#450](https://github.com/optimizely/agent/pull/450)) + ## [4.3.0] - November 20, 2025 This release introduces production-ready support for Contextual Multi-Armed Bandit (CMAB), enabling AI-powered experimentation that learns and adapts in real-time based on user context. From 27ffe93e0a1a277ce23afedf4d4d7bf850b3850d Mon Sep 17 00:00:00 2001 From: Matjaz Pirnovar Date: Thu, 18 Dec 2025 14:26:56 -0800 Subject: [PATCH 2/2] update changelog - remove local HO support line --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f0b67ad6..7d6b1fed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ This release adds support for Holdouts, allowing you to measure the incremental * **Holdouts Support** ([#452](https://github.com/optimizely/agent/pull/452)): Agent now fully supports Optimizely's Holdouts feature for measuring incremental impact of flags and experiments. Features include: - Full holdouts evaluation through go-sdk v2.3.0 - - Support for both global (project-level) and flag-specific holdouts + - Support for global (project-level) holdouts - Holdouts evaluated before experiments and rollouts in decision flow - Holdout decisions return `enabled: false`, `variationKey: "off"`, and `ruleKey` containing the holdout identifier - Forced decisions correctly override holdout bucketing