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

# Deprecations

The lifecycle status of each A8 version, how much notice a retirement gets and how to watch for one.

Every A8 version carries a **lifecycle status**. It says whether the version serves, whether its interface can change and when it retires. This page defines each status, states the notice a retirement gets and lists every version with its status.

## 1 Lifecycle statuses

| Status     | Means                                                         |
| ---------- | ------------------------------------------------------------- |
| Preview    | Available, with an interface that can change between versions |
| Beta       | A feature available to use, with an interface that can change |
| Deprecated | Available, with a retirement date set                         |
| Retired    | Past its retirement date and out of service                   |

*Table 1.* The lifecycle statuses. Every page that names a status means it as defined here.

A status shows as a badge beside a page title or a sidebar entry, with one sentence on what it means for you. A8 is in preview: a pinned version holds what it learned, and a new version can change how a request is read.

A horizon belongs to the version that fitted it, so it shares that version’s status and retires with it. See [Model identifiers](https://u22a8.ai/docs/a8-model-identifiers.md).

## 2 Notice

We announce a deprecation at least TBD (notice period) before the retirement date. Each announcement appears in three places on the same day:

- [Release notes](https://u22a8.ai/docs/release-notes.md), as a Deprecation entry
- The history on this page
- `GET /models`, on every entry of the deprecated version

From the announcement to the retirement date, the version answers as it did, pinned horizons included.

## 3 Versions

| Version | Status  | Released          | Retirement date | Replacement |
| ------- | ------- | ----------------- | --------------- | ----------- |
| `a8-1`  | Preview | TBD (launch date) | None set        | n/a         |

*Table 2.* Every A8 version and its lifecycle status.

## 4 History

Each deprecation is an entry here, newest first. An entry is a heading with its date and title, one sentence that names the version, its retirement date and its replacement, and a table:

```text
### 2027-01-15: a8-1 deprecated

On 2027-01-15 we deprecated `a8-1`. It retires on 2027-07-15. Use `a8-2`.

| Retirement date | Model | Replacement |
| --- | --- | --- |
| 2027-07-15 | `a8-1` | `a8-2` |
```

The dates in this template are examples. The history starts with the first deprecation.

## 5 Watching for a retirement

`GET /models` carries each version’s lifecycle on every one of its entries, so a script reads the same status this page shows:

**curl**

```bash
curl https://api.u22a8.ai/eval/v1/models \
  -H "Authorization: Bearer $U22A8_API_KEY"
```

**Python**

```python
import os

from openai import OpenAI

client = OpenAI(
    base_url="https://api.u22a8.ai/eval/v1",
    api_key=os.environ["U22A8_API_KEY"],
)

for model in client.models.list():
    extra = model.model_extra or {}
    if extra.get("shutdown_date"):
        print(model.id, "retires on", extra["shutdown_date"])
```

**TypeScript**

```typescript
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.u22a8.ai/eval/v1",
  apiKey: process.env.U22A8_API_KEY,
});

for await (const model of client.models.list()) {
  const { shutdown_date } = model as typeof model & {
    shutdown_date: string | null;
  };
  if (shutdown_date) console.log(model.id, "retires on", shutdown_date);
}
```

```jsonc
// annotated, trimmed: one entry of the list
{
  "id": "a8-1-1@20260715t140322z",
  "object": "model",
  "status": "ready",
  "active": true,
  "lifecycle": "preview", // a status from Table 1, lowercase
  "shutdown_date": null // an ISO date once the version is deprecated
}
```

| Field           | Type                                                 | Meaning                                                                 |
| --------------- | ---------------------------------------------------- | ----------------------------------------------------------------------- |
| `lifecycle`     | `"preview"`, `"beta"`, `"deprecated"` or `"retired"` | The version’s lifecycle status                                          |
| `shutdown_date` | `string` or `null`                                   | The retirement date as `YYYY-MM-DD`, set when the version is deprecated |

*Table 3.* The lifecycle fields on each `GET /models` entry.

See [Horizons](https://u22a8.ai/docs/a8-horizons.md) for `status` and `active`, the fields that say which horizon is in service.

## Next steps

- [Model identifiers](https://u22a8.ai/docs/a8-model-identifiers.md): A model identifier names a family, a version, a minimum accuracy and a horizon, and each part moves for its own reason.
- [Horizons](https://u22a8.ai/docs/a8-horizons.md): A horizon is the timestamp that names a fitted version of your model, and pinning one holds its verdicts still.
- [Release notes](https://u22a8.ai/docs/release-notes.md): Every change to A8 and its interfaces, newest first, each with the page that describes it.
