You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit dd1e69c
Browse filesBrowse the repository at this point in the historyBrowse files
Add CHANGELOG entry for 4.5.0: local (per-rule) holdouts and Feature
Rollout support via the go-sdk v2.3.0 -> v2.5.0 upgrade, plus the
maintenance/dependency changes since 4.4.0.
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+31Lines changed: 31 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,6 +6,37 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
6
6
7
7
## [Unreleased]
8
8
9
+
## [4.5.0] - July 14, 2026
10
+
11
+
This release adds support for **local (per-rule) holdouts** and **Feature Rollouts**, delivered by upgrading the embedded go-sdk from v2.3.0 to v2.5.0. It builds on the global holdouts support introduced in 4.4.0.
12
+
13
+
### New Features
14
+
15
+
***Local Holdouts Support** ([#464](https://github.com/optimizely/agent/pull/464)): Agent now supports local (per-rule) holdouts in addition to global holdouts, via go-sdk v2.5.0. Local holdouts target specific rules and are evaluated per-rule, after forced decisions and before audience/traffic checks. Held-out decisions return `enabled: false`, `variationKey: "ho_off_key"`, and `ruleKey` set to the holdout identifier, with impression `rule_type: "holdout"`. As with global holdouts, all decision logic is handled by go-sdk — no Agent code changes are required beyond updating the `ProjectConfig` test mock.
16
+
***Feature Rollout Support** ([#463](https://github.com/optimizely/agent/pull/463)): Via go-sdk v2.4.0, Agent now supports Feature Rollouts — a rule type combining Targeted Delivery with A/B test measurement capabilities.
17
+
18
+
### Behavior Changes
19
+
20
+
These changes come from the go-sdk v2.4.0 → v2.5.0 upgrade:
21
+
22
+
***Decision event ID normalization**: decision event `campaign_id` and `entity_id` fall back to `experiment_id` when empty, and `variation_id` serializes as `null` when non-numeric, for cross-SDK consistency.
23
+
***ODP identify guard**: ODP identify events carrying only a single identifier are now blocked.
24
+
***Removed legacy flag-level holdout fields** from datafile parsing.
* Upgraded `github.com/optimizely/go-sdk/v2` from v2.3.0 to **v2.5.0**
39
+
9
40
## [4.4.0] - December 18, 2025
10
41
11
42
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.
0 commit comments