HydroRoll-Team / HydroRoll-Team/OneRoll

Extend roll traces to explode, reroll, and count operations

Open
#27 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

Extend the RFC-0003 graph primitives to generation chains and count provenance before strict-v2 reroll/explode syntax ships.

## Frozen contract

- A generated RollNode links to the value that caused or was replaced by the draw; its generation is parent generation plus one.
- `draw_index` remains monotonic for all accepted semantic draws from one source.
- Reroll and explode TraceNodes record `generated_roll_ids`; replaced or contributing ancestors remain reachable.
- Count returns Scalar while `related_roll_ids` and selection data retain every matching source node.
- No generation event mutates, overwrites, or deletes an existing RollNode.

## Acceptance criteria

- [ ] Reroll replacement, reroll-and-add contribution, and explosion chains preserve causal parents.
- [ ] Count results retain matching source identities after prior selection and generation.
- [ ] Combined current modifiers serialize as valid topological graphs in Rust and installed Python.
- [ ] Replay produces identical IDs, values, and trace order for one seed and request.
- [ ] Generated nodes and trace operations charge budgets before insertion.
- [ ] Exhaustion returns the atomic RFC-0003 error envelope with replay metadata and no graph prefix.

## Blocked by

- #21

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the RFC-0003 graph primitives and check blocked issue #21 before extending them to generation chains. Validate the frozen contract by exercising reroll, explode, count, replay, budget exhaustion, and combined modifiers in Rust and installed Python; done means causal graphs, identities, serialization, replay, budgets, and the atomic error envelope meet every acceptance criterion.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.