Parent
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
[RFC-0001] OneRoll Program Language v2 #7
[RFC-0003] Typed Program Result, Roll Trace, and Error Contract #4
Return structured parse, validation, and evaluation errors with spans #12
Implement v2 keep, filter, sort, count, and unique option semantics #15
Expose auditable traces for base, keep, and drop rolls #21
Introduce typed values, inclusive ranges, and immutable variables #39
Evaluate scoped validator expressions across filters and roll options #41
Parent
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 amergetrace node; baremis invalid.breads compatible completed instruction values, recordssource_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.yflattens one Values level or spreads compound draws while keeping node IDs.gNcreates consecutive width-N nested Values with a final short remainder.Acceptance criteria
item_kind; annotations do not alter scalar projection.Blocked by