Sub-issue of open-feature/flagd#1903. See the parent issue and ADR for full details.
Replace the current 100-bucket float-based fractional bucketing with integer arithmetic using MaxInt32 (2,147,483,647) as the max weight sum:
bucket = (uint64(hashValue) * uint64(totalWeight)) >> 32
Weights must be integers and sum to at most MaxInt32. Python: arbitrary precision integers handle this natively, use >> 32 for shift.
This is a behavioral breaking change (bucket assignments will shift), but the API surface is unchanged.
⚠️ Dependency: complete the nested fractional evaluation feature first: #359
@toddbaert will coordinate the release across providers.