2.3.1 (2026-06-18)
What's Changed
- SDK Conformance Audit - Cases.json, evalCondition operator audit and partial feature-eval / experiment-assignment by @madhuchavva in #122
Fixes & Enhancements
- Align condition equality with JavaScript strict equality semantics:
$eqand direct equality no longer coerce across types, so values like5and"5"ortrueand1no longer match. (7f9d2d2)$nenow returns the inverse of strict equality for these cases.- Array and object operands follow JavaScript reference-identity semantics, so separately parsed but structurally equal arrays/objects do not match with
$eq. (a8ff302, 7f9d2d)
- Fix
NaNcomparison handling soNaNdoes not compare equal to itself and ordered comparisons involvingNaNevaluate as false. (672136a) - Preserve JavaScript-compatible Unicode lowercasing behavior for case-insensitive operators such as
$ini,$nini, and$alli. (5f45087)
Tests and CI
- Expanded SDK conformance coverage for condition operators, prerequisite/parent-condition cases, force-rule
hashVersion: 2, and sticky-bucket bucket-version boundaries.
(505c8e1, a95ce02, 076eab8) - Added a corpus freshness check against the JavaScript SDK cases corpus to catch missing or drifted cases.
(e428acb, 460f581, a030b66)
Compatibility note
There are no API changes, but this release can change feature targeting results for customers whose conditions relied on Python’s previous coercive equality behavior.
Full Changelog: v2.3.0...v2.3.1