Receipt 001 · demo, runs in this tab
Two agents. One change. Exactly one commit.
Two coding agents try to ship at the same moment. Synthe checks each one at the moment of commit, lets exactly one through, and signs a receipt for both, so later you can prove what happened and why.
The race
Ready.
Ready.
Pick a scenario and start the race. The finish order is random, so either agent can win.
The receipt chain
Every push and every refusal at the barrier gets a receipt. Each one carries the hash of the receipt before it and an Ed25519 signature, made here with a demo key generated in this tab. Run a few races, then verify the whole chain.
How the barrier decides
Four rules. The first two run in the public checker today. The last two are the commit broker, in public beta.
-
One at a time
Claims and commits take a lock, so two agents can never both be first. The second always sees what the first did.
Public checker -
Same job, one claim
The first claim of an idempotency key wins. A second claim gets
Public checkeridempotency_key_reservedwhile the first is running, andduplicate_idempotency_keyonce it has completed, before the second agent does any work. -
Push only if nothing moved
Synthe pushes with compare-and-swap: only if the branch still points at the commit the agent built on. Otherwise it refuses with
Commit broker · betanon_fast_forwardand pushes nothing. The agent can rebase and propose again. -
A receipt either way
Every push and every refusal is written down, chained to the receipt before it and signed. Edit or delete one and verification shows exactly where the chain breaks.
Commit broker · beta
This page is a model of those rules running in your browser, with a demo key made in this tab. It isn't the product, and these receipts aren't real ones. For the real checker, see the three back-to-back runs on GitHub runners: one ACCEPT, then two duplicate_idempotency_key refusals.