> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rotascale.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Conformance claims

> You cannot certify a non-deterministic actor. You can maintain a claim: a lower bound, a denominator, a window and an expiry, signed and verifiable off the system that issued it.

A certificate says an agent was checked. A **claim** says how often it actually
behaved as promised, over how much traffic, with how much confidence, and until
when.

> Conforms to the contract declared by [sarah@acme.example](mailto:sarah@acme.example) on 03 Aug 2026, over
> 12,400 decisions in this window, with a 95% lower bound of 0.9942 on the
> weakest clause. Expires 30 Aug 2026 without fresh evidence.

Every part of that sentence is load-bearing.

## A bound, not a rate

The conforming share of a sample is not the agent's conformance — it is what
this sample happened to show. The **lower end of the confidence interval** is
what can be stated without overclaiming, so that is the number in the sentence.

The interval is a [Wilson score
interval](https://en.wikipedia.org/wiki/Binomial_proportion_confidence_interval#Wilson_score_interval),
not the textbook normal approximation. The difference matters exactly where this
product lives: at a zero rate the normal approximation has **zero width**, which
would let the platform say *no refusals in 40 decisions, therefore the refusal
rate is exactly zero, with certainty*. That sentence would be printed on
something somebody signs.

## A denominator

0.994 over 12,400 decisions and 0.994 over 20 are different facts. A claim always
carries the count it was computed from.

<Tip>
  Demonstrating a ceiling takes more evidence than most people expect. To show a
  5% ceiling holds, with **no** violations at all, takes 73 decisions. At 72 the
  95% upper bound is 5.07% and the clause cannot be demonstrated however clean
  the traffic looks.
</Tip>

## The interval decides all three states

A clause is not assessed by comparing two numbers.

| Condition                        | State              |
| -------------------------------- | ------------------ |
| upper bound ≤ the limit          | `held`             |
| lower bound > the limit          | `breached`         |
| the interval straddles the limit | `not_demonstrated` |

The third row is the useful one. The evidence is consistent with both holding
and breaching, and no phrasing turns that into a verdict.

## No claim, rather than a weaker one

If any clause is `not_demonstrated`, **no claim is stated at all**.

A claim covering only the clauses that happened to be measurable would be a
claim about the window rather than about the contract. Averaging over the third
state quietly reintroduces the pass/fail that this whole design exists to avoid.

When a claim is stated, it is bounded by the **weakest** clause. A contract is a
conjunction and is only as demonstrated as its least demonstrated part; a mean
would let a strongly evidenced clause carry a thin one, which is how an average
hides the clause somebody should be looking at.

## An expiry

A claim lapses after 14 days without fresh evidence. Behaviour is not a property
an agent has once, and a claim that never expires is a certificate wearing a
different word.

## Checking one yourself

A claim is a sealed document. Download it from the console, or:

```bash theme={"system"}
curl https://your-deployment/v1/agents/$AGENT_ID/contract/claim \
  -H "x-api-key: $ROTASCALE_API_KEY" > claim.json
```

The signature is Ed25519 over the canonical JSON of the document with the `seal`
field removed, so any Ed25519 implementation can check it offline with the public
key the document carries.

Check it at [rotascale.com/verify](https://rotascale.com/verify/), which
verifies the signature **in your browser** — nothing is uploaded — or with any
Ed25519 implementation offline. See
[verifying an artefact](/guides/verify-an-artefact) for what a passing check does
and does not tell you.

The signature covers the document with the `seal` field removed, and the
disclaimer is **inside** the signed payload, so removing it invalidates the
signature.

<Note>
  A claim that could not be stated is sealed too. "This agent has no conformance
  claim, and here is why" is a more useful thing to hand an auditor than
  silence, and it is checkable.
</Note>
