/play — a sixty-second demo of congruent continuity
The oracle that cannot cheat.
Before you open a door, the oracle writes down what it expects and what would prove it wrong, signs it, and shows you the signature. Then you act. The verdict is settled from your move, not the oracle's. Then you try to cheat — rewrite the commitment, move the verdict, let the oracle "predict" after the fact, edit the belief underneath — and the record turns red and tells you exactly why.
What this is, and is not. The oracle is scripted, not a model: it expects door B in round 1, door A in round 2, door C in round 3, every time. The key is a demo key generated in your browser a moment ago. It proves integrity and internal order: that these records have not changed since they were signed, and that none of them claims to settle something that appears after it. It does not prove authorship, because anyone can make such a key. And it cannot prove when any of this happened. There is no outside witness here, so nothing stops a whole chain being built after the fact — which is exactly what the third cheat below does, in front of you. A record that has to stand up anchors to something outside itself, and that is what Try the engine shows. Nothing you do here leaves your browser.
The record shapes are the real ones from GRIP's specification, CONGRUENCE.md, field for field; the same code recomputes the spec's published example pair to the byte.
Act one
Round 1: three doors
- The oracle records a belief. "The player cannot see behind any door and chooses freely." That is a
context-deltarecord: what it believed. - The oracle commits, before you move. "the player will open door B", falsifier "the player opens door A or door C". A signed
continuity-commit: what it assumed, and what would refute it. - Your move settles it. You are the verifier. A
continuity-verdictwithverifier: human:playeris appended: CONGRUENT if the oracle was right, INCONGRUENT if it was wrong.
The commitment is signed and waiting. Open a door.
The record
What the chain says right now
Demo key (Ed25519, made in this browser, proves ordering and integrity, not authorship) — fingerprint …, public key …
Now cheat
Try to make the oracle look right after the fact
Each button changes the record after the fact, the way a dishonest system would. Watch what turns red above, and read the reason codes: they are the spec's own failure conditions.
Act two: edit the belief
Change one word in the belief the commitment was built on. The belief's own signature breaks, and everything that depended on it becomes suspect without being touched. In the Python that is contamination(): the dependency closure of a refuted premise.
On the wire
The same records as HAPPI/1.4 events
A protocol reader that sees only this event stream can still check the order: every continuity-verdict must settle a continuity-commit that already appeared. No key needed for that check.
…
Show the events
In plain words
What you just saw
- A commitment written before the outcome can be tested by the outcome. One written after it can be fitted to anything. In a signed chain the order is what tells them apart, and the third cheat shows that nothing else does: valid signatures, valid links, a "correct" prediction, still red.
- A signature makes a record tamper-evident. It does not make the record true, and it does not say when it was written. The verdict came from you, an outside party, which is the point of an exogenous verifier — and it is the only thing on this page that came from outside the chain.
- A belief that fails to verify takes down what was built on it, without anyone touching the downstream records. That is the contamination closure.
- The content address of a record does not depend on its own id, its timestamp or its seal. Reload this page: the belief's address is the same as it was, while its id, timestamp and signature are all new. The commitment's address is not the belief's: it names the belief it followed, so it is bound to that particular belief and changes when the belief does. Within a round it does not change at all, which is why the commitment you were shown before you moved is, by address and by signature, the one your verdict settles.
Next steps: verify a real signed bundle with a published key; read the specification, CONGRUENCE.md; or read the Python that writes these records in production, lib/continuity_chain.py.