HydroRoll-Team / HydroRoll-Team/OneRoll

Implement bounded seeded Monte Carlo statistics

Open
#31 0 comments 0 reactions 0 assignees View on GitHub
area:engine area:python area:statistics blocked priority:p2 type:feature workflow:afk
Dominant language
Python
Stars
3
Forks
1
Avg merge
3d 4h
Merged PRs (30d)
2

Description

## Parent

- #3

## What to build

Replace the Python sampling loop with a bounded seeded engine operation that returns a stable statistical summary suitable for SDK, CLI, and later TUI consumers.

## RFC-0006 contract

- Implement `Engine.sample`; do not add an exact-mode flag or result union.
- Execute complete Programs through `Engine.run_batch`.
- Use `oneroll-chacha12-v1` and `oneroll-sha256-batch-v1`; preserve sample-index order.
- Return an atomic `SampleResult` with canonical AnalysisValue histogram keys.
- Provide count, min, max, mean, unbiased sample variance, standard error, nearest-rank quantiles at 5/25/50/75/95%, and Wilson 95% histogram intervals.
- Preserve one shared budget, deadline, and cancellation token. Never return partial samples.
- Optional typed child ProgramResults are charged to output limits.

## Acceptance criteria

- [ ] Results match `docs/rfcs/0006-analysis-contract.json`.
- [ ] The same seed and configuration reproduce byte-equivalent normative summaries.
- [ ] Sampling observes shared workload/output budgets, deadline, and cancellation.
- [ ] Scalar summaries are null for multi-instruction or non-scalar outcomes.
- [ ] Rust and installed-Python conformance cases cover success and stable failures.
- [ ] Rust and Python benchmarks cover representative dice expressions.

## Blocked by

- #3 — Draft contract delivered; final review remains.
- #22
- #18

Contributor guide

No contributing guide indexed for this repository

Research direction

Read docs/rfcs/0006-analysis-contract.json first, then inspect Engine.sample and Engine.run_batch to understand the existing execution path. Review the Rust and installed-Python conformance cases and benchmarks mentioned in the acceptance criteria. Done means contract-matching, reproducible summaries with shared limits and cancellation, stable failures, and coverage in both language suites.

Written by the indexing model from the issue text.

Assessment

Tech stack
python, rust
Domain
api, backend, cli
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
32/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.