<!-- DOCS_BRING_YOUR_OWN_JUDGE:external-evaluator-guide -->
# Bring your own judge

Canonical HTML: https://spoolis.com/docs/guides/bring-your-own-judge. This page is also available in machine-readable Markdown.

Keep your CI, evaluator, or reviewer as the judge. Spoolis turns that judgment into a signed, portable Outcome another system can act on.

## Why this exists

Most serious systems already know how they want to judge their own work. Spoolis is useful when that result needs to leave the system and be trusted somewhere else.

The flow: your evaluator -> signed or structured result -> Spoolis -> portable Outcome -> billing, runtime, deploy, marketplace, or another agent.

## Declare the judge

A condition judged outside Spoolis uses verification_method third_party with an external_judge declaration naming the evaluator, its kind (buyer_owned, marketplace_evaluator, external_service, ai_evaluator, zk_verifier, human_arbitration), and a proof requirement of signed, hashed_ref, or declared.

The evaluator result arrives as evidence with provenance external_tool_result. A signed proof requirement is verified over the canonical result payload; an unverified result degrades to uncertain, never to a silent pass.

## Consumers

Downstream systems gate with requireOutcome from @spoolis/receipt-verifier. A partial batch has result partial, so consumers that should act on partial batches gate on min_accepted_units or min_earned rather than minimum_status pass.

The sandbox scenario external_judge_two_consumers runs the marketplace example end to end: one judged Outcome consumed independently by billing and a retry workflow.

## Trust boundary

Spoolis proves which evaluator produced the result, what agreement and evidence it was bound to, what verdict was signed, and how earned value was derived. It does not prove the external judge was substantively correct or that every outside-world fact was true.
