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

# Приём сбоев

> Как отправлять прогоны и сбои в Avala и как Avala превращает их в таксономию сбоев и отчёт о пробелах

Цикл начинается с того, что ваши роботы делают на самом деле. Вы отправляете прогоны, включая сбои и вмешательства. Avala читает их, находит закономерности и сообщает, каких данных не хватает.

## Форматы

| Формат | Как поступает |
| - | - |
| MCAP | Загрузка записи флота или `avala import folder --data-type mcap` |
| ROS bags (`.bag`, `.db3`) | `avala import rosbag` или конвертация в MCAP и загрузка как записи флота |
| Наборы данных LeRobot | `avala import lerobot` из Hugging Face Hub или локальной директории |
| Видео с логами | Видео через `avala import folder --data-type video`. Avala выравнивает логи по видео в рамках программы. |
| Логи оценки Inspect Robots | `avala import inspect-robots`. См. раздел «Импорт логов оценки» ниже. |

MCAP сохраняет все топики, поэтому даёт самую полную картину. Импортёр ROS bag конвертирует топики камер (`sensor_msgs/Image` и `sensor_msgs/CompressedImage`) и сохраняет состояния суставов и другие числовые или текстовые топики. Облака точек и другие двоичные данные пропускаются. Отправляйте MCAP, когда нужно сохранить все топики.

## Отправка прогонов как записей флота

Каждая загрузка попадает в существующую запись флота. Avala создаёт записи для ваших зарегистрированных устройств в начале программы. Получите их список, чтобы найти UID записи.

```python Python theme={null}
from avala import Client

client = Client()  # reads AVALA_API_KEY

page = client.fleet.recordings.list(device_id="<device-uid>", limit=20)
for recording in page:
    print(recording.uid, recording.status, recording.started_at)

# Upload a local directory of rollout files into one recording.
session = client.fleet.uploads.upload_recording(
    "<recording-uid>",
    "./rollouts/2026-09-29",
)
print(session.uid, session.status)
```

```bash CLI theme={null}
# Preview what will be uploaded
avala fleet recordings upload \
  --source ./rollouts/2026-09-29 \
  --recording <recording-uid> \
  --dry-run

# Upload and wait for server-side processing
avala fleet recordings upload \
  --source ./rollouts/2026-09-29 \
  --recording <recording-uid> \
  --wait
```

`upload_recording` возобновляет прерванную загрузку того же источника. Завершённый вызов означает, что обработка поставлена в очередь. Проверяйте `client.fleet.recordings.get(uid).status`, пока значение не станет `ready`.

## Отметка сбоев и вмешательств как событий

События флота ставят метку на момент в записи. Отмечайте каждый сбой и каждое вмешательство, чтобы Avala быстро их находила. Используйте `type` для класса события и `metadata` для всего, что логирует ваш стек, например версии модели и задачи.

```python Python theme={null}
from avala import Client

client = Client()

event = client.fleet.events.create(
    recording="<recording-uid>",
    device="<device-uid>",
    type="anomaly",
    label="Plate slipped during placement",
    timestamp="2026-09-29T14:03:12Z",
    severity="warning",
    duration_ms=1800,
    tags=["failure", "regrasp"],
    metadata={"model_version": "your-policy@2026-09-20", "task": "load_dishwasher"},
)
print(event.uid)

# Many events at once
created = client.fleet.events.create_batch(
    events=[
        {
            "recording": "<recording-uid>",
            "device": "<device-uid>",
            "type": "state_change",
            "label": "Operator took over",
            "timestamp": "2026-09-29T14:03:15Z",
            "tags": ["intervention"],
        },
    ]
)
print(created)
```

```typescript TypeScript theme={null}
import Avala from "@avala-ai/sdk";

const avala = new Avala(); // reads AVALA_API_KEY

const event = await avala.fleet.events.create({
  recording: "<recording-uid>",
  device: "<device-uid>",
  type: "anomaly",
  label: "Plate slipped during placement",
  timestamp: "2026-09-29T14:03:12Z",
  severity: "warning",
  durationMs: 1800,
  tags: ["failure", "regrasp"],
  metadata: { model_version: "your-policy@2026-09-20", task: "load_dishwasher" },
});
console.log(event.uid);
```

```bash CLI theme={null}
avala fleet events create \
  --recording <recording-uid> \
  --device <device-uid> \
  --type anomaly \
  --label "Plate slipped during placement" \
  --timestamp 2026-09-29T14:03:12Z \
  --severity warning
```

`type` события принимает одно из значений `error`, `warning`, `info`, `state_change`, `anomaly` или `custom`. `severity` принимает одно из значений `info`, `warning`, `error` или `critical`. События также можно создавать автоматически с помощью [правил записи](/docs/visualization/fleet/recording-rules.md).

## Импорт ROS bags и наборов данных LeRobot

Когда прогоны хранятся вне флота, импортируйте их как набор данных. Сначала установите дополнение для нужного формата.

```bash theme={null}
pip install "avala[rosbag]"
avala import rosbag ./rollout_0412.bag --name "Rollouts 0412" --slug rollouts-0412 --wait

pip install "avala[lerobot]"
avala import lerobot --repo-id your-hf-user/your-rollouts --name "Rollouts" --slug rollouts --wait
```

Импортёр LeRobot подробно описан в разделе [Экспорты](/docs/ru/fleet-learning/exports.md).

## Импорт логов оценки

Если вы оцениваете свою политику с помощью [Inspect Robots](https://github.com/robocurve/inspect-robots), инструмента оценки с открытым исходным кодом, импортируйте его JSON-лог оценки. Каждое испытание, то есть одна сцена в одной эпохе, размечает одну последовательность [меткой результата](/docs/ru/fleet-learning/sequence-metadata.md). Неудачные испытания становятся последовательностями, которые можно фильтровать, проверять и превращать в задачи сбора.

```bash theme={null}
pip install "avala[inspect]"

# Preview the trial-to-outcome mapping. Reads the log only.
avala import inspect-robots logs/load-dishwasher_1a2b3c4d.json --dataset your-org/dishwasher-eval --dry-run

# Label the sequences that already exist in the dataset, one per trial
avala import inspect-robots logs/load-dishwasher_1a2b3c4d.json --dataset your-org/dishwasher-eval

# Or create the dataset from each trial's recorded actions, plus camera frames if the run stored them
avala import inspect-robots logs/load-dishwasher_1a2b3c4d.json --dataset your-org/dishwasher-eval --create
```

| Испытание Inspect Robots | Результат |
| - | - |
| Оценка успеха не ниже `--success-threshold`, оценка качества не ниже `--expert-threshold` | `expert_success` |
| Оценка успеха не ниже `--success-threshold`, оценка качества ниже `--expert-threshold` | `partial_success` |
| Оценка успеха ниже `--success-threshold` | `failure` |
| Испытание завершилось ошибкой или было отменено | `aborted` |
| Оценщик успеха не выдал значения | Не размечается |

У каждой импортированной метки `source` равен `imported`, `evaluation_membership` равен `held_out_eval`, а `autonomy_level` равен `autonomous`. `model_version` соответствует политике запуска. Задача запуска становится одной подзадачей, охватывающей всё испытание. Метки, записанные человеком или моделью, сохраняются, если вы не передадите `--overwrite`. Полный список параметров приведён в [справочнике CLI](/docs/sdks/cli.md#inspect-robots-evaluation-logs).

## Просмотр записей и событий через MCP-сервер

MCP-сервер читает данные флота. Спросите своего ассистента о недавних сбоях или вызывайте инструменты напрямую:

* `fleet_list_recordings` и `fleet_get_recording` для записей
* `fleet_list_events` с фильтром по `recording`, `device`, `type` или `severity`
* `get_fleet_health` для сводки по всему флоту

Загрузки и создание событий выполняются через SDK или CLI. См. [Использование Avala с ИИ](/docs/ru/getting-started/mcp.md), чтобы подключиться.

## Что Avala делает с прогонами

Шаги ниже Avala выполняет как услугу в рамках программы. Для них нет API, который нужно вызывать.

1. **Сегментация.** Avala делит каждый прогон на последовательности и подзадачи в точках смены состояния. Ваши события привязывают моменты сбоя.
2. **Разметка.** Каждая последовательность получает обе оси своих [метаданных последовательности](/docs/ru/fleet-learning/sequence-metadata.md): проверку технической валидности и метку результата.
3. **Кластеризация.** Avala группирует сбои по тому, что пошло не так и в каких условиях. Кластеры соотносятся с версионированной таксономией сбоев вашей программы. Новые кластеры расширяют таксономию.
4. **Анализ пробелов.** Avala сравнивает кластеры сбоев с покрытием ваших существующих обучающих данных и оценочных когорт.

## Отчёт о пробелах

Avala поставляет отчёт о пробелах для каждого пакета прогонов.

| Раздел | Содержание |
| - | - |
| Область | Записи, временной диапазон, версии модели и версия таксономии. |
| Таксономия сбоев | Каждый режим сбоя, его определение и примеры последовательностей. |
| Распределение | Число и частота сбоев по режимам, по версиям модели и по ячейкам покрытия. |
| Недостающее покрытие | [Ячейки покрытия](/docs/ru/fleet-learning/coverage.md) за каждым режимом сбоя, которых в ваших обучающих данных нет или слишком мало. |
| Предлагаемые эксперименты | Один черновой [эксперимент по возможностям](/docs/ru/fleet-learning/capability-experiments.md) на каждое приоритетное условие сбоя, с гипотезой и целевыми ячейками. |

Вы изучаете отчёт о пробелах и выбираете приоритеты. Утверждённые эксперименты становятся следующим брифом на сбор данных.
