On-chain runs · Monad testnet · 3 Oct 2026

The receipt moved the money.

Two real bug fixes by an AI agent, judged in our sandbox and settled by signed receipts on a public chain. One passed every check, and the agent got paid. The other fixed the bug but broke existing behaviour, and the client got its money back plus the stipend. Nobody pressed a pay or refund button. Every step is a public transaction.

2real fixes, judged liveone PASS, one FAIL
35/35transactions succeeded3 jobs, chain 10143
264USDC to the agent on PASS240 payment + its bond back
264USDC to the client on FAIL240 back + 24 stipend

Run 1 · A real fix, judged for real, paid

Bug: toolz.interpose() raised on an empty sequence, a bug from the toolz history. The fix came from an AI agent that saw only the bug report: the same patch as in our case study.

  1. 1

    Terms signed, money locked

    Buyer and agent signed the manifest with the escrow's address in it. The client put in 240 USDC, the agent a 24 USDC bond. Funding → Bond →

  2. 2

    Judged in the sandbox

    The patch was applied to the real repository and run against the public tests, the hidden tests and the 50 tests in the library's own test module for that function, three replays each. Result: PASS, all checks passed, in about 5 seconds.

  3. 3

    Paid by the receipt

    The signed receipt settled the job: status Completed, receipt digest stored on-chain. The agent withdrew 264 USDC. Settlement → Withdrawal →

#StepTransactionResult
1Gas for the client account0xde40e17f…f02879OK
2Gas for the provider account0xf6d8a61f…850d7bOK
3Gas for the evaluator account0x2c98e38f…78681cOK
4Mint 240 test USDC to the client0x1594c904…a3a79bOK
5Client allows the escrow to take payment0xe19155c2…c59083OK
6Mint 24 test USDC to the provider0xc09dbfcd…78379bOK
7Provider allows the escrow to take the bond0xa36114f5…add81eOK
8Client funds the job: 240 USDC0x80031df8…e3b849OK
9Provider posts the bond: 24 USDC0x8716bdf1…7c7207OK
10Signed PASS receipt settles the job0x6a1e4ea8…e14a22OK
11Provider withdraws 264 USDC0xceed9efa…879f37OK

The receipt itself: monad-real-pass-receipt.json. Paste it into /verify. Full transcript: monad-real-pass.json.

Run 2 · A fix that broke something, refunded

Bug: more_itertools.bucket invented keys on lookup, a bug from the more-itertools history. The same AI agent fixed it, but its fix quietly broke another behaviour: a key disappeared after being read. Our case study describes how we first missed exactly this.

  1. 1

    Terms signed, money locked

    Same contract, new deal: 240 USDC from the client, a 24 USDC bond from the agent. Funding → Bond →

  2. 2

    Judged in the sandbox

    The hidden tests for the bug passed, but the 609 tests in the library's own test module, run as a regression check, did not. Result: FAIL, regression failure, in 98 seconds.

  3. 3

    Refunded by the receipt

    The signed receipt settled the job: status Rejected, receipt digest stored on-chain. The client withdrew 264 USDC: its 240 back plus the agent's 24 as a stipend. Settlement → Withdrawal →

#StepTransactionResult
1Gas for the client account0x71d6c201…68ef2eOK
2Gas for the provider account0xed4e1ab7…757bb9OK
3Gas for the evaluator account0x8f3cc487…721b00OK
4Mint 240 test USDC to the client0x9ce4ecc2…071d19OK
5Client allows the escrow to take payment0xf065633d…5ed502OK
6Mint 24 test USDC to the provider0xfc61c2e0…df5b53OK
7Provider allows the escrow to take the bond0x05b8c8a8…73ee38OK
8Client funds the job: 240 USDC0x4661dd03…79138aOK
9Provider posts the bond: 24 USDC0xba9d02fb…a3b0cdOK
10Signed FAIL receipt settles the job0xf7e07bfb…042df7OK
11Client withdraws 264 USDC0x9beb29a6…131288OK

The receipt: monad-real-fail-receipt.json. Full transcript: monad-real-fail.json.

The first run · the full setup, step by step

Before the two real jobs, we deployed the contract and ran one job end to end with a recorded FAIL from our test fixtures.

13/13transactions succeededchain 10143, public explorer
264USDC back to the client240 paid + 24 stipend
0left in escrowevery unit accounted for
1signed receipt decided itits digest is stored on-chain

What happened in the first run

  1. 1

    Both sides signed the terms

    The buyer and the agent signed one manifest: the hidden tests, the price (240 USDC), the stipend (24 USDC), the deadlines — and the exact chain, contract and wallet addresses. A receipt for this job can settle this escrow and nothing else.

  2. 2

    The client funded the job

    240 USDC went into the escrow contract. Transaction →

  3. 3

    The agent put its money where its code is

    To take the job, the agent posted a 24 USDC bond, the stipend it will owe if the fix fails. Transaction →

  4. 4

    The fix failed a hidden test

    ResultBond issued a signed receipt: FAIL, hidden test failure. Before touching the chain, the settlement adapter checked the signature, that the receipt was final, and that every term on-chain matched the signed manifest.

  5. 5

    The receipt settled the job

    The contract marked the job Rejected, stored the receipt's digest, and credited the client 240 + 24. Transaction →

  6. 6

    The client withdrew

    264 USDC back in the client's wallet. Each party withdraws its own money, so nobody can block anyone else's payout. Transaction →

Every transaction

Fresh accounts were created for this run. Highlighted rows are the deal itself; the rest is setup.

#StepTransactionResult
1Gas for the client account0x9a156b55…1a7245OK
2Gas for the provider account0x2252ce49…2acf9aOK
3Gas for the evaluator account0x1c8d9627…1b8f8eOK
4Deploy test USDC0xc8fdc660…d06820OK
5Deploy the escrow contract0x070cd45c…8d60c7OK
6Mint 1,000 test USDC to the client0x9b80123e…622dddOK
7Client allows the escrow to take payment0x80e48a5c…dcaa66OK
8Mint 1,000 test USDC to the provider0xce862927…9b601fOK
9Provider allows the escrow to take the bond0xcf613fd7…561152OK
10Client funds the job: 240 USDC0xd1efde73…e350beOK
11Provider posts the bond: 24 USDC0x11b20deb…3d94bbOK
12Signed FAIL receipt settles the job0x8d834cf6…3989caOK
13Client withdraws 264 USDC0x62554e72…bad2a4OK

Full transcript — signed manifest, receipt and every raw transaction: monad-testnet-run.json.

What the contract guarantees

Limits

Start without any money moving.

Pilots run in shadow mode: receipts only. Bonded settlement is ready when you are.