Material Mutation and Transfer
Material mutation uses the << operator to move or merge material into a destination.
target << [source:5uL];The left side is the destination container. The source list on the right describes material sources and optional transfer quantities.
Quantified Transfer
The minimal public example uses quantified transfer.
target << [source:5uL];This mutates runtime material state and appears in the execution plan as a material operation.
The quantity must carry a physical unit. This is valid:
target << [source:5uL];This is not a quantified transfer:
target << [source:1];Full Transfer
A source item can also be unquantified:
target << [source];That expresses full-transfer or merge semantics for the source item.
Do not mix quantified and unquantified source items in one transfer statement:
target << [source_a:5uL, source_b]; // invalid style mixMultiple Sources
Multiple sources can be listed:
target << [sample:80uL, buffer:20uL];Ordinary source lists mean that multiple sources flow into the same target. They do not imply ordered mapping across a group.
Ordered Mapping with series
For group targets, ordered mapping uses series(...).
group_ref << [series(stock, [5uL, 10uL, 20uL])];The value list must match the target group size. series(...) is only a mutation source-list form; it is not a general-purpose list mapping expression.
Unit Collection
Culsma also allows collecting a unit back into a container:
keep_tube << [cell];This is used with stream/unit workflows and belongs to more advanced authoring.
Same-Container No-Op
If a source item resolves to the same container as the target, the item is legal and is treated as a no-op at material execution.
What Transfer Is Not
<< no longer carries a source-level program argument. Actions such as vortexing, shaking, or stirring belong to agit(...), not to transfer syntax.
