Skip to content

Conversation

@saas817
Copy link
Contributor

@saas817 saas817 commented Dec 4, 2025

Fixes #3

Changes

Coverage Parameter

  • Implement coverage parameter for progressive feature rollouts
  • Enables gradual releases (10% → 50% → 100% of users)
  • Consistent user bucketing ensures stable rollouts

Array Intersection for $in/$nin Operators

  • Add array-to-array intersection matching for tag-based targeting
  • Example: User tags ["premium", "beta"] matches condition ["beta", "qa"]
  • Backward compatible with single-value attributes

Bucket Range Functions

  • Add _getBucketRanges, _chooseVariation, _inRange for precise variation assignment
  • Refactor _evaluateExperiment to use bucket range system

JavaScript Validator Enhancements

  • Implement hash, getBucketRange, and chooseVariation test categories
  • Test coverage: 72.3% → 79.5% (245/308 tests passing)

Documentation

  • Update CHANGELOG with v1.1.0 features
  • Add array intersection documentation to API.md

Working Examples

  • Add coverage_rollout.brs for progressive feature releases
  • Add array_targeting.brs for tag-based targeting with arrays

Testing

  • ✅ Syntax validated (no linter errors)
  • ✅ hash tests: 15/15 (100%)
  • ✅ getBucketRange tests: 13/13 (100%)
  • ✅ chooseVariation tests: 13/13 (100%)
  • ✅ evalCondition tests: 204/221 (92.3%)
  • ✅ Cross-SDK parity confirmed

Checklist

  • Follows code style guidelines
  • Clear commit messages
  • All features complete
  • Working examples complete
  • Documentation complete
  • Cross-SDK parity verified

@saas817 saas817 force-pushed the feature/experiment-enhancements branch from 814adc2 to 43e0c86 Compare December 5, 2025 01:12
@saas817 saas817 force-pushed the feature/experiment-enhancements branch from 1d1e6b6 to 9b38dde Compare December 5, 2025 20:45
@madhuchavva
Copy link
Collaborator

The current _loadFeaturesFromAPI implementation uses http.GetToString() which is synchronous and blocks the execution thread.

Please refactor to an asynchronous pattern using roUrlTransfer with an roMessagePort and AsyncGetToString(), allowing the SDK to be non-blocking

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Missing coverage parameter, bucket ranges, and array intersection for targeting

2 participants