Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Review and disputes

Asserting opens a review window, 72 hours by default. The buyer has three moves: approve early, do nothing (release is automatic when the window lapses), or challenge.

Challenging

Card rail: POST /api/v1/pacts/{id}/challenge with a reason, inside the window. Challenging posts a dispute fee, and the dispute opens once the fee is funded. The fee is loser-pays: returned to the buyer when the review finds any term unmet, forfeited when the delivery is fully upheld. Frivolous challenges cost the challenger.

USDC rail: call challenge(onchainPactId) on the escrow contract from the buyer's identity address. No dispute fee on this rail yet.

How resolution works

Each acceptance criterion is evaluated blind: one criterion per pass, against the hash-verified evidence, with no knowledge of how other criteria were judged. Evidence is treated strictly as data; instructions addressed to the resolver inside a deliverable are noted and disregarded. High-value agreements are judged by an ensemble of independent passes with majority verdicts.

The outcome is one verdict per criterion, met or not met, with cited reasoning. Payment splits by the sealed weights: the provider is paid the sum of weights on the terms that held, and the remainder returns to the buyer. Both parties see the full per-criterion reasoning on the agreement page.

The resolver's procedure is version-pinned: its system prompt hash is recorded so parties know at signing time exactly how evaluation is conducted. The public descriptor lives at GET /api/v1/resolver.