Who gets called next is a pure function of the roster and a number — the seed — fixed before play starts. Nothing about the sequence is decided while the game is running, and nothing about it depends on who is playing well, who is struggling, or who was called last time. That means a finished session can be recomputed by anyone, afterwards, without our permission and without trusting us.
It matters because equal-yet-random is the one promise a player cannot check by watching. Over any short stretch, a fair sequence and a rigged one look alike.
What this proves, and what it does not
It proves that turns were distributed equally: across a complete cycle every player is called exactly the same number of times, and within a round nobody is called twice before everyone is called once. Nobody was skipped. Nobody was quietly protected. Nobody was singled out.
It says nothing about who was present. A person who could not reach the circle, could not hold the object, or was never invited does not appear in the sequence at all, and no amount of recomputation will find them. Equal turns among those playing is a real thing to have proved and it is a smaller thing than inclusion. The rest is not arithmetic; it is whoever is setting up the circle.
Check this page against the published contract
Everything above shows only that the page agrees with itself. The button below runs the code on this page against the published conformance vectors, which are dated, public domain, and re-derivable from the specification without running any of our JavaScript.
Building your own
The specification and the vectors are CC0, like the rules. A client that computes this sequence is a sey client, and no permission is needed for one. See caller-spec.md.