Skip to content

Release 4.5.0

Latest

Choose a tag to compare

@Mat001 Mat001 released this 14 Jul 20:14
dd1e69c

[4.5.0] - July 14, 2026

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.

New Features

  • 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", 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.
  • 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.

Behavior Changes

These changes come from the go-sdk v2.4.0 → v2.5.0 upgrade:

  • 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.
  • ODP identify guard: ODP identify events carrying only a single identifier are now blocked.
  • Removed legacy flag-level holdout fields from datafile parsing.

Maintenance

  • 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)

Dependencies

  • Upgraded `github.com/optimizely/go-sdk/v2` from v2.3.0 to v2.5.0