Read the hand.Read the mind.
NO TAKE-BACKS
Every throw counts.
| Round | Your throw | Jev's throw | Result | Mode | Proof |
|---|
Round one starts with a little curiosity.
Local record · up to 500 rounds per series · a new series relearns
How do I know Jev can't take it back?Fairness notes
Throws first, then you choose.The server calls the real TypeSafe API and uses Jev's returned choice as-is. If the call fails, the round stops — no random stand-in. Your move this round is never sent to Jev.
Seal first, verify later.On open, move, model, round number, history digest, and a random salt become a SHA-256 commitment. The browser saves that hash before buttons unlock. Reveal or settle only unseals the original choice — no second AI call. The browser recomputes the hash and records the round only if it matches.
Want to lift the lid? You can.The lid is a real div. An unrevealed move stays inside the sealed blob and is never written into the page early. Clicking returns the original move, lifts the lid, and marks the round peeked. Peeked rounds still enter Jev's context.
This is a personal match log.The commitment proves the sealed move didn't change; signed records deter casual edits. It is not an official TypeSafe attestation. Local storage has no cross-device sync and cannot stop developer-tool rollbacks, request replays, or peek-flag bypass, so this is not a competitive leaderboard. Clearing browser data wipes local history — export when you need it.