HydroRoll-Team / HydroRoll-Team/OneRoll

Implement typed merge, bind, occurrences, paint, split, and group options

Open
#42 0 comments 0 reactions 0 assignees View on GitHub
area:engine area:language 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

- #7

## What to build

Implement typed collection transformations on RFC-0003 Values, RollSet references, immutable instruction history, and trace DAGs.

## Frozen contract

- `m(expr)` combines explicit compatible collections and produces a `merge` trace node; bare `m` is invalid.
- `b` reads compatible completed instruction values, records `source_instruction_ids`, and never mutates ProgramResult history.
- `o` / `o(N,S)` returns ordered nested `[value, count]` Values with occurrence provenance.
- `p[color:N,...]` changes RollSet-view annotations and emits paint assignments without mutating RollNodes.
- `y` flattens one Values level or spreads compound draws while keeping node IDs.
- `gN` creates consecutive width-N nested Values with a final short remainder.

## Acceptance criteria

- [ ] Every option matches RFC-0001 input/output and cardinality cases.
- [ ] Merge/bind preserve instruction IDs, trace inputs, and source-node identity.
- [ ] Occurrence order, selectors, paint normalization, split depth, and group remainder are deterministic.
- [ ] Empty RollSets retain `item_kind`; annotations do not alter scalar projection.
- [ ] Wrong-kind, zero, oversized, forward-bind, and incompatible requests return spanned RFC-0003 errors.
- [ ] Rust, installed Python, CLI JSON, and docs agree on schema-valid output.

## Blocked by

- #7
- #4
- #12
- #15
- #21
- #39
- #41

Contributor guide

No contributing guide indexed for this repository

Research direction

Read RFC-0001 and RFC-0003 first, then inspect the blocked issues #7, #4, #12, #15, #21, #39, and #41 for prerequisite behavior and schemas. Validate the implementation through the Rust, installed-Python, CLI JSON, and documentation paths; done means all listed options satisfy the frozen contract, deterministic cases, error handling, and schema agreement.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.