Merged
Conversation
AI-Session-Id: 095253e8-7e1c-4578-9779-bf96395021cf AI-Tool: claude-code AI-Model: unknown
AI-Session-Id: 095253e8-7e1c-4578-9779-bf96395021cf AI-Tool: claude-code AI-Model: unknown
AI-Session-Id: 7d0b171a-a576-4317-965f-99fb98c11ba8 AI-Tool: claude-code AI-Model: unknown
AI-Session-Id: 7d0b171a-a576-4317-965f-99fb98c11ba8 AI-Tool: claude-code AI-Model: unknown
- Create TargetingRuleFactory with static buildTargetingRule() method - Eliminate FQNs for io.split.rules.model types - Add comprehensive tests for factory methods - Update ParsedSplit to delegate to factory This improves testability and separation of concerns by isolating the mapping logic from SDK domain objects to targeting-engine objects. AI-Session-Id: 7d0b171a-a576-4317-965f-99fb98c11ba8 AI-Tool: claude-code AI-Model: unknown
AI-Session-Id: 490d81f4-6832-4178-9c38-e45460ab97de AI-Tool: claude-code AI-Model: unknown
Guards for userDefinedSegmentMatcherData, whitelistMatcherData, unaryNumericMatcherData, and betweenMatcherData were dropped as an unintended side effect of the DataType import refactor in ed86b23. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> AI-Session-Id: 588a98fd-ba49-4318-8286-5fb79f9efaca AI-Tool: claude-code AI-Model: unknown
Restores original behavior: reads matcherGroup.combiner and maps it to CombiningMatcher.Combiner via valueOf, consistent with how DataType is already mapped across the DTO/domain boundary. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> AI-Session-Id: 588a98fd-ba49-4318-8286-5fb79f9efaca AI-Tool: claude-code AI-Model: unknown
Guards for STARTS_WITH, ENDS_WITH, CONTAINS_STRING, MATCHES_STRING, EQUAL_TO_SEMVER, GREATER_THAN_OR_EQUAL_TO_SEMVER, LESS_THAN_OR_EQUAL_TO_SEMVER, IN_LIST_SEMVER, BETWEEN_SEMVER, IN_RULE_BASED_SEGMENT, and the final delegate null check were lost when matchers were migrated from io.split.engine.matchers to io.split.rules.matchers. Also restores checkNotNull with message for IN_SPLIT_TREATMENT and EQUAL_TO_BOOLEAN (previously replaced with manual NPE throws). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> AI-Session-Id: 588a98fd-ba49-4318-8286-5fb79f9efaca AI-Tool: claude-code AI-Model: unknown
TargetingRule now holds only evaluation fields (seed, killed, defaultTreatment, conditions, trafficAllocation, trafficAllocationSeed, algo, prerequisites). Metadata (name, changeNumber, trafficTypeName, configurations, flagSets, impressionsDisabled) lives exclusively in ParsedSplit. EvaluationResult carries only (treatment, label). EvaluatorImp.getTreatment() enriches changeNumber, config, and impressionsDisabled from ParsedSplit after the engine returns. VersionedExceptionWrapper no longer carries a version field; the caller uses parsedSplit.changeNumber() in the catch block instead. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> AI-Session-Id: 724b08af-bcdd-4f98-b354-b4a62fbb2489 AI-Tool: claude-code AI-Model: unknown
EmilianoSanchez
approved these changes
Apr 17, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Extracted evaluation module.