Transparent scheduling
The Fairness Receipt
“Fair” is not a magic label. Every generated round should be able to answer who played, who sat, what repeated, and why.
Hard constraints
Hard constraints protect the session’s basic integrity. Each active player appears exactly once in the round—as one of four players on a court or on the bye list. Games stay within one when the history and active roster permit. A player who sat last round gets priority among players with the same game count.
Soft preferences
Partner and opponent variety are optimization goals, not impossible promises. The deterministic search scores past partner encounters first. Among low-partner-cost options, it scores prior opposing encounters. Nonzero cost is shown, never disguised.
Example receipt
- ✓ Every player accounted for
Nine active players appear across two courts and one bye. - ✓ Games stay within one
The most- and least-used players differ by one game. - ✓ Avoid consecutive byes
The previous bye player was given a playing spot. - ! Minimize repeated partners
One prior partnership encounter was necessary after six completed rounds. - ✓ Minimize repeated opponents
No opposing pair in the selected court assignment had met before.
Player ledger and matrix
The player ledger shows total games, byes, repeat partner assignments, repeat opponent assignments, and consecutive-bye status. The matrix counts pair relationships across immutable completed rounds. This lets an organizer inspect the evidence instead of trusting a single score.
Reproducible seeds
The same roster identifiers, prior completed rounds, court labels and seed produce the same round. The seed is printed in organizer exports so a disputed fixture can be reproduced.