Worked example
Before
red
green
blueAfter
green
blue
redThis documented seeded example shows one valid permutation; a live run may use another order.
Exactly what this changes
- Production shuffling uses crypto.getRandomValues through a rejection-sampling integer adapter and an unbiased Fisher–Yates pass. Each position is exchanged with a uniformly selected eligible position in the remaining range.
- The output is a permutation: no line is added, removed, edited, or deduplicated. Blank lines and repeated values participate independently, while the source’s final-line-terminator state is retained after positions change.
- Shuffle is the one PlainSift operation whose output is intentionally not deterministic. Running the same input again may produce another ordering. Tests inject a seeded dependency so correctness and multiplicity remain repeatable during verification.
Options and edge cases
- There are no weighting, grouping, or selection controls. Every parsed line occupies one position in the shuffle, including identical lines that happen to display the same text.
- Use Reverse lines for a deterministic positional change or a sorting tool for repeatable ordering. The shuffle does not save a seed and cannot recreate a prior order after memory history is cleared.
Edge case: This list rearrangement is not described or tested for gambling, lotteries, security decisions, regulated selection, or other uses that require an audited randomness process.