HydroRoll-Team / HydroRoll-Team/OneRoll
Roll numeric ranges and weighted list dice with unique draws
- Dominant language
- Python
- Stars
- 3
- Forks
- 1
- Avg merge
- 3d 4h
- Merged PRs (30d)
- 2
Description
## Parent
- #7
## What to build
Deliver typed numeric, inclusive-range, quoted-list, weighted-list, and without-replacement dice sources using the injected RFC-0002 random protocol and shared execution context.
## Frozen contract
- Numeric count defaults to one and must be positive.
- Ranges are inclusive with checked cardinality.
- List sources use exactly one mode: uniform, integer weights, or exact percentages totaling 100.
- Equal text items combine weights before sampling.
- Source `u` samples without replacement by resulting value; postfix `u` only deduplicates after sampling.
## Random foundation
The `uniform_below` rejection sampler, seed normalization, entropy behavior, word accounting, and replay descriptor from #18 are delivered in `79a3793`. This issue owns real weighted-list and without-replacement integration and reports that evidence back to #18; it no longer waits for the #18 roll-up issue to close.
## Acceptance criteria
- [ ] `2d6`, `2d[1..6]`, and `2L["heads", "tails"]` match RFC case IDs.
- [ ] Integer weights and exact percentages sample without floating point or modulo bias.
- [ ] Unique draws reject counts above distinct finite source cardinality.
- [ ] Invalid counts/ranges, empty list sources, mixed weight modes, and zero totals return stable spanned errors.
- [ ] Seeded Rust and Python runs produce identical draws and trace shape.
- [ ] Every draw charges source, RNG, generated-value, collection, trace, output, and work limits.
## Blocked by
- #7
- #12
- #39
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reading the RFC-0002 random protocol, commit 79a3793, and blocked issues #7, #12, and #39 to understand the required interfaces. Done means the listed dice sources, weighted and unique draws, stable errors, cross-language seeded results, trace shape, and work-limit accounting satisfy the acceptance criteria.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python, rust
- Domain
- backend, testing
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100