> ## Documentation Index
> Fetch the complete documentation index at: https://contract-auditor.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# The verification gate

> A claim is confirmed only if the test asserting the spec fails.

<Card icon="shield-check">
  **A claim is CONFIRMED only if the test asserting the documented contract
  FAILS.**

  If the test passes, the spec is being honoured and the claim was wrong.
</Card>

## How a claim is judged

<Steps>
  <Step title="Synthesise a request">
    Built from the spec's schema. Field names matter: a BVN that is not 11 digits
    gets rejected by validation before the response shape is reached.
  </Step>

  <Step title="Generate a Go test asserting the documented behaviour">
    The test encodes what the spec promises, not what the code currently does,
    then runs against the real handler through `httptest`.
  </Step>

  <Step title="Run it">
    Failure means code and contract disagree.
  </Step>
</Steps>

## Verdicts

| Verdict       | Meaning                          | Reaches the report |
| ------------- | -------------------------------- | ------------------ |
| `confirmed`   | the test failed, real drift      | Yes                |
| `refuted`     | the test passed, claim was wrong | No                 |
| `unsupported` | claim kind is not executable     | No                 |
| `error`       | the test did not build or run    | No                 |

A claim the gate cannot execute is marked unverifiable. It is never let
through as though it had passed.

## Executable claim kinds

`response_field_mismatch` · `response_type_mismatch` · `status_code_mismatch` ·
`response_header_mismatch` · `auth_mismatch`

## Run it on one case

```bash theme={null}
python3 auditor/verify.py eval/cases/D01
```

No model is involved. A claim is judged the same way whether a rule, an agent or
a person raised it, so the same gate can score the baseline and the agent without
favouring either.
