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.
-
Local Holdouts Support (#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", andruleKeyset to the holdout identifier, with impressionrule_type: "holdout". As with global holdouts, all decision logic is handled by go-sdk — no Agent code changes are required beyond updating theProjectConfigtest mock. - Feature Rollout Support (#463): Via go-sdk v2.4.0, Agent now supports Feature Rollouts — a rule type combining Targeted Delivery with A/B test measurement capabilities.
These changes come from the go-sdk v2.4.0 → v2.5.0 upgrade:
-
Decision event ID normalization: decision event
campaign_idandentity_idfall back toexperiment_idwhen empty, andvariation_idserializes asnullwhen non-numeric, for cross-SDK consistency. - ODP identify guard: ODP identify events carrying only a single identifier are now blocked.
- Removed legacy flag-level holdout fields from datafile parsing.
- Upgrade go-sdk v2.3.0 → v2.5.0 (#459, #463, #464)
- Add Dependabot to auto-update the go-sdk dependency (#458)
- Remove Coveralls from CI checks (#462)
- Add Agent developer documentation (#461)
- Fix Arnica security vulnerabilities (#460)
- Synchronize linters between go-sdk and agent (#457)
- Fix Dependabot alerts (#455, #456)
- Upgraded `github.com/optimizely/go-sdk/v2` from v2.3.0 to v2.5.0
https://github.com/optimizely/agent/releases/tag/v4.5.0
Article is closed for comments.