Repository navigation
Conversation
Segment conditions can now read other flags via `$.flags.<name>`, resolved lazily with a cycle guard, mirroring flagsmith-engine. Flag results also carry a `variant` key. Bumps engine-test-data to v3.11.0. Generated with [Linear](https://linear.app/flagsmith/agent-session/d9c8ddc7-fa40-4842-80da-7e01be1b4f77) Co-authored-by: linear-code[bot] <222613912+linear-code[bot]@users.noreply.github.com>
|
Important Review skippedBot user detected. To trigger a single review, invoke the
|
Skip the lazy flags when there are no segments, and break the context/flags reference cycle so each evaluation is freed by reference counting rather than left to the cycle collector. Generated with [Linear](https://linear.app/flagsmith/agent-session/d9c8ddc7-fa40-4842-80da-7e01be1b4f77) Co-authored-by: linear-code[bot] <222613912+linear-code[bot]@users.noreply.github.com>
1649a50 to
744057b
Compare
# Conflicts: # .gitmodules
Bumps engine-test-data to v3.12.1, which expects it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Environment flags can now follow the flags they depend on, as in the Flagsmith API. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Merging this PR will improve performance by 37.47%
Performance Changes
Tip Curious why performance improved? Comment Comparing |
Conditions such as `$.identity.identifier` or `$.flags.<feature>.enabled` skip JSONPath evaluation. Other paths are still evaluated by softcreatr/jsonpath. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Environment flags no longer deep-clone the context and select its identity-free segments on every call. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The engine leaves the context it evaluates untouched. Identity override rules now map an empty list of sub-rules, which deep-cloning used to fill in. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Zaimwa9
left a comment
There was a problem hiding this comment.
One parser question to settle regarding jsonpath and just as in elixir, include the key in the mapper.
A request change one click away from an approval
Flagsmith writes the feature name of a flag dependency as JSON, which escapes non-ASCII characters. The JSONPath library looked those escapes up verbatim, so such a dependency never matched. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
A condition value not coercible to the trait value type, e.g. `95 > "90.5"`, no longer matches. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Concerns addressed while on opposite timezone. Thanks!
🤖 I have created a release *beep* *boop* --- ## [5.2.0](v5.1.2...v5.2.0) (2026-11-04) ### Features * **CI:** Set up CodSpeed ([#151](#151)) ([a0d835d](a0d835d)) * Evaluate flags that depend on other flags ([#150](#150)) ([190156a](190156a)) ### Bug Fixes * Mapping identity overrides with multiple features fails ([#143](#143)) ([fd4bcc9](fd4bcc9)) ### CI * Label Renovate's SDK spec bump PRs ([#148](#148)) ([351aeae](351aeae)) * Run the Flagsmith SDK behavioural spec ([#147](#147)) ([634470d](634470d)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
Local evaluation ignores segments that depend on other flags (
$.flags.<feature>.enabled), unlike flagsmith-engine and the Flagsmith API.Closes SDK-6. Tested by engine-test-data v3.12.1 and sdk-spec v0.7.0.
Changes
$.flags.<feature>.enabled,.valueand.variant) are now evaluated, including chains of dependencies; circular dependencies serve the default with reasonERROR; code=CIRCULAR_DEPENDENCY.variantthey were evaluated to.STATICinstead ofDEFAULT.🤖 Generated with Claude Code
Closes #140