HydroRoll-Team / HydroRoll-Team/OneRoll

Expose auditable traces for base, keep, and drop rolls

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

Description

## Parent

- #4

## What to build

Implement the normalized RFC-0003 RollNode pool and topological TraceNode graph for numeric/range/list sources plus base keep/drop selection.

## Frozen contract

- Every semantic draw is one immutable `rN` RollNode with atomic value, source descriptor, generation, optional parent, and cause trace.
- RollSet outputs reference nodes instead of copying them; selected and discarded nodes remain in the pool.
- Source and selection operations produce monotonic `tN` TraceNodes whose inputs always refer backward.
- Selection data records `selected_roll_ids` and `discarded_roll_ids`; final views preserve item order, multiplicity, annotations, and `item_kind`.
- Every serialized RollNode and TraceNode charges the shared RFC-0002 trace budget before insertion.

## Acceptance criteria

- [ ] Original numeric, range, and list draws have stable replay-deterministic identities.
- [ ] Kept and dropped nodes remain distinguishable without parsing display text.
- [ ] Instruction values equal their trace-root values and scalar projections.
- [ ] Rust and installed Python payloads validate against the RFC schema and graph invariants.
- [ ] Dangling, duplicate, cyclic, wrong-kind, and out-of-span graphs cannot be produced.
- [ ] Base trace charging respects exact limit boundaries and atomic failure.

## Blocked by

- #4
- #39

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the parent issue #4 and the blocked issue #39, then read the RFC-0003 RollNode and TraceNode contract together with the RFC-0002 trace-budget requirements. No files or test entry points are named; done means satisfying the listed schema, graph-invariant, replay, selection, scalar-projection, and exact-budget acceptance criteria in both Rust and installed Python payloads.

Written by the indexing model from the issue text.

Assessment

Tech stack
python, rust
Domain
testing-qa, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.