What a valid draw means, precisely
No hand-waving. These are the rules the engine enforces, and the source code that enforces them ships with the site.
Guarantees
- One-to-one. Every person gives exactly once and receives exactly once; the assignment is a bijection over the names you entered.
- No self-draws. A person never draws themselves.
- Mutual exclusions. If you mark A and B, neither draws the other.
- Randomness. Shuffles use the browser’s cryptographic random source; the engine reshuffles with fresh randomness up to 250 times until the rules are satisfied.
- Honest failure. If no valid draw is found, you get an error — never a draw with a quietly dropped rule.
The receipt
At shuffle time the assignment is hashed into a SHA-256 Merkle root — the receipt. New links use independently salted proofs to protect other pairings. Compare your link with the receipt shared separately by the organizer on /verify/. Older links use an unsalted format and may reveal another pairing to someone who knows the group.
Limits (stated plainly)
- The receipt cannot prove who created it, when it was created, or that the organizer delivered every link.
- Links are obfuscated, not encrypted — hold the link, hold that one pairing.
- The organizer sees the full draw by design (someone has to hand out links).