Synthe

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

Scenario
Barrier

Agent A coding agent

Ready.

Agent B coding agent

Ready.

Synthe

The commit barrier. It holds the GitHub token.

Branch
agent/docs at a1f3c9e
Lock
open

    Pick a scenario and start the race. The finish order is random, so either agent can win.

    No races yet.

    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.

      1. 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
      2. Same job, one claim

        The first claim of an idempotency key wins. A second claim gets idempotency_key_reserved while the first is running, and duplicate_idempotency_key once it has completed, before the second agent does any work.

        Public checker
      3. 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 non_fast_forward and pushes nothing. The agent can rebase and propose again.

        Commit broker · beta
      4. 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.