> The full index of these docs is at [llms.txt](https://u22a8.ai/llms.txt).

# Precedents

Precedents are the taught examples behind a verdict: how to ask for them, what each citation carries, recall and the permission they need.

A **precedent** is a taught example behind a verdict. Ask for them, and A8 cites the examples your organization taught that decided the verdict, the way a court cites past cases: what was asked, what the answer was and how close it is to the subject.

Precedents are the evidence the verdict rests on, so the same request against the same version cites the same precedents.

## 1 Asking for them

Ask for them in the request itself, in one of two ways.

**In the prompt.** Write “quote precedents”, or words to that effect, in the criterion. The precedents arrive in a top-level `precedents` field beside the verdict:

```json
{
  "model": "a8",
  "messages": [
    {
      "role": "system",
      "content": "Which queue does the ticket belong in? Quote precedents."
    },
    {"role": "user", "content": "It arrived crushed. I want a refund."}
  ]
}
```

**In the schema.** Reserve a property named `precedents`. The precedents arrive inside the verdict, where a typed client reads them with the rest of it:

```json
{
  "type": "object",
  "properties": {
    "queue": {"enum": ["billing", "shipping", "account"]},
    "precedents": {"type": "object"}
  }
}
```

With reasoning off, A8 reads the prompt as written, so the schema property is the way to ask: “quote precedents” in the criterion is part of the criterion. Each interface puts the top-level field where its responses carry extensions. See [Chat Completions](https://u22a8.ai/docs/a8-chat-completions.md), [Responses](https://u22a8.ai/docs/a8-responses.md), [Anthropic Messages](https://u22a8.ai/docs/a8-anthropic-messages.md) and [MCP](https://u22a8.ai/docs/a8-mcp.md).

## 2 What a citation carries

The verdict above, with its precedents:

```json
"precedents": {
  "cited": [
    {
      "input": [
        {"role": "system", "content": "Which queue does the ticket belong in?"},
        {"role": "user", "content": "The box came in pieces. Refund me."}
      ],
      "format": {
        "properties": {
          "queue": {"enum": ["billing", "shipping", "account"]}
        }
      },
      "answer": {"queue": "billing"},
      "weight": 0.31
    },
    {
      "input": [
        {"role": "system", "content": "Which queue does the ticket belong in?"},
        {"role": "user", "content": "My parcel is dented. Where is it now?"}
      ],
      "format": {
        "properties": {
          "queue": {"enum": ["billing", "shipping", "account"]}
        }
      },
      "answer": {"queue": "shipping"},
      "weight": 0.12
    }
  ],
  "reference_share": 0.38
}
```

Recorded from `a8-1-1@20260715t140322z` on 2026-10-22.

| Field             | Type               | Meaning                                                                                                                                               |
| ----------------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `cited`           | array              | The taught examples behind the verdict, strongest first                                                                                               |
| `input`           | string or messages | The taught request’s input, word for word                                                                                                             |
| `format`          | object or `null`   | The taught request’s JSON Schema, as taught                                                                                                           |
| `answer`          | the verdict’s type | The answer that was taught                                                                                                                            |
| `weight`          | number, `0` to `1` | How close the example is to the subject, as a share of the examples cited; an example whose answer differs from the verdict is a precedent against it |
| `reference_share` | number, `0` to `1` | How much of the verdict rests on the reference model, which is cited by this share alone                                                              |

*Table 1.* The fields of `precedents`; the strongest examples against the verdict are cited with those for it, so a close call shows both sides.

An abstention cites precedents too. A subject unlike anything taught cites a few examples with low weights. A case too close to call cites examples on both sides of the line.

## 3 Faithful by test

A test in A8’s suite checks that the citations decide the verdict: taking the cited examples out moves the verdict more than taking out as many others at random. A pinned version cites the same precedents for as long as it exists, including examples retracted since, because a retraction applies to the versions fitted after it.

## 4 Recall

**Recall** answers the question “what have I taught you about this?”. A message that names a criterion and asks what A8 was taught returns the taught examples most relevant to it, up to ten:

```json
{
  "model": "a8",
  "messages": [
    {"role": "user", "content": "What have I taught you about refunds?"}
  ]
}
```

The examples arrive in `precedents.cited`, in the same form as citations, with `weight` as how closely each matches the question. The answer text carries the same `precedents` object as JSON, so a client that reads only the answer sees the examples too. Each example comes back word for word, ready to [retract](https://u22a8.ai/docs/a8-teaching.md) or teach again. Recall lists the examples in the version that answers: a teach appears once its fit lands, and a retracted example leaves with the next fit.

Recall answers in a shape of its own. A request with a schema or a forced tool is answered in that shape, so a question about what was taught in one returns an abstention of kind `no_question`.

## 5 Permission

Precedents and recall need the `models:explain` permission, which grants both at once. A request for them from a key that lacks it returns `403`, as does fetching or continuing a stored response that holds them. See [API keys](https://u22a8.ai/docs/api-keys.md).

> **What they show.** Precedents quote your organization’s own examples, so anyone holding a key with `models:explain` reads what you taught. Grant it to the keys whose holders should read what you taught.

## 6 Related concepts

- [Teaching](https://u22a8.ai/docs/a8-teaching.md): how the examples a precedent cites are taught and retracted
- [Testing A8](https://u22a8.ai/docs/a8-testing.md): using precedents to find why a test failed
- [Horizons](https://u22a8.ai/docs/a8-horizons.md): the pinned versions whose citations stay fixed

## Next steps

- [Testing A8](https://u22a8.ai/docs/a8-testing.md): Test what A8 learned the way you would test a student, with new questions, known answers, accuracy and coverage, on a pinned version.
- [Teaching](https://u22a8.ai/docs/a8-teaching.md): How to teach and retract through MCP, when a teach lands in your organization’s model and what it changes.
- [API keys](https://u22a8.ai/docs/api-keys.md): Create an API key, grant its permissions, authenticate requests with it and revoke it.
