> ## 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.

# シーケンスメタデータスキーマ

> すべてのシーケンスの結果ラベル、技術的妥当性の報告方法、両者の読み取り・書き込み・エクスポート方法

すべてのシーケンスには、別々の 2 種類のメタデータがあります：

* **技術的妥当性。** レコーディングは使用可能か。Avala は承認基準と品質目標をもとにこれを報告します。後述の「技術的妥当性」の節をご覧ください。
* **行動結果。** 人またはロボットは何をしたか、そしてタスクは成功したか。Avala はこれをシーケンスの**結果ラベル**として保存します。

シーケンスは技術的に妥当であっても、失敗を示すことがあります。失敗したシーケンスは、多くの場合最も役に立ちます。2 つの軸を分けておくことで、クリーンなデータ用のフィルターが有用な失敗を落とすことはなく、成功用のフィルターが壊れたセンサーを隠すこともありません。

## 結果ラベル

各シーケンスが持つ現在の結果ラベルは最大 1 つです。書き込みのたびに新しいバージョンが記録されます。以前のバージョンはラベル履歴で引き続き読み取れます。

### 例

次は、滑りとリカバリーを含む人間によるデモンストレーションのラベルを、`GET .../sequences/<sequence-uid>/outcome/` が返す形で示したものです：

```json theme={null}
{
  "uid": "<outcome-uid>",
  "sequence_uid": "<sequence-uid>",
  "version": 2,
  "is_current": true,
  "outcome": "mistake_and_recovery",
  "progress": 1.0,
  "quality": 4,
  "speed": 3,
  "subtasks": [
    { "label": "Load the plate into the lower rack", "start_ts": 0.0, "end_ts": 19.8, "outcome": "mistake_and_recovery" },
    { "label": "Pull out the lower rack", "start_ts": 0.0, "end_ts": 6.2, "outcome": "expert_success" },
    { "label": "Place the wet plate in a free slot", "start_ts": 6.2, "end_ts": 19.8, "outcome": "mistake_and_recovery" }
  ],
  "hand_actions": {
    "left": [
      { "start_ts": 0.0, "end_ts": 6.2, "action": "pulling the lower rack out by its front edge", "object": "dishwasher rack", "verb": "pull", "contact": true },
      { "start_ts": 6.2, "end_ts": 19.8, "action": "holding the rack steady", "object": "dishwasher rack", "verb": "hold", "contact": true }
    ],
    "right": [
      { "start_ts": 6.2, "end_ts": 9.1, "action": "carrying the wet plate to the rack", "object": "plate", "verb": "carry", "contact": true },
      { "start_ts": 9.1, "end_ts": 10.4, "action": "the plate slips out of the grasp", "object": "plate", "verb": null, "contact": false },
      { "start_ts": 10.4, "end_ts": 14.7, "action": "regrasping the plate by its rim", "object": "plate", "verb": "grasp", "contact": true },
      { "start_ts": 14.7, "end_ts": 19.8, "action": "placing the plate in a free slot", "object": "plate", "verb": "place", "contact": true }
    ]
  },
  "mistake_type": "slip_during_place",
  "recovery_type": "regrasp",
  "failure_stage": "place",
  "autonomy_level": "human_demonstration",
  "model_version": "",
  "evaluation_membership": "train",
  "leakage_groups": {
    "location": "loc_8f2a",
    "object": "obj_set_31",
    "mechanism": "dishwasher_pull_rack_v2",
    "operator": "op_5c1e",
    "environment_family": "kitchen_galley"
  },
  "source": "human",
  "source_metadata": {},
  "labeled_by": "<user-uid>",
  "confidence": null,
  "created_at": "2026-09-30T17:42:11.204000Z",
  "updated_at": "2026-09-30T17:42:11.204000Z"
}
```

上の値はラベルの形を示すためのものです。実際の納品を表すものではありません。

### フィールド

タイムスタンプはすべて、シーケンス開始からの秒数です。

| フィールド | 型 | 意味 |
| - | - | - |
| `uid` | string | このラベルバージョンの ID です。読み取り専用です。 |
| `sequence_uid` | string | ラベルが属するシーケンスです。読み取り専用です。 |
| `version` | integer | ラベルのバージョンです。1 から始まり、書き込みごとに 1 増えます。読み取り専用です。 |
| `is_current` | boolean | 現在のバージョンでは `true` です。読み取り専用です。 |
| `outcome` | string | 行動結果です。必須です。後述の「結果の値」をご覧ください。 |
| `progress` | number または null | 0 から 1 までのタスクの進捗です。 |
| `quality` | integer または null | 1 から 5 までの実行の質です。 |
| `speed` | integer または null | 1 から 5 までの実行の速さです。 |
| `subtasks` | list | ラベル付きの時間範囲です。後述の「サブタスク」をご覧ください。 |
| `hand_actions` | object | 手ごとのアクションのストリームで、`left` と `right` があります。後述の「手のアクション」をご覧ください。 |
| `mistake_type` | string | ミスの種類を示すお客様のタグです。最大 128 文字です。未設定の場合は空です。 |
| `recovery_type` | string | リカバリーの種類を示すお客様のタグです。最大 128 文字です。未設定の場合は空です。 |
| `failure_stage` | string | 失敗が起きた段階を示すお客様のタグです。最大 128 文字です。未設定の場合は空です。 |
| `autonomy_level` | string | 誰が制御していたかです。後述の「自律レベル」をご覧ください。未設定の場合は空です。 |
| `model_version` | string | ロボットを動かしたポリシーまたはモデルのバージョンです。最大 255 文字です。人間によるデモンストレーションでは空です。 |
| `evaluation_membership` | string | `train`、`held_out_eval`、`none` のいずれかです。未設定の場合は空です。後述の「評価への所属」をご覧ください。 |
| `leakage_groups` | object | 分割を健全に保つためのグループ ID です。後述の「リーケージグループ」をご覧ください。 |
| `source` | string | ラベルを書いたのは誰かです。`human`、`model`、`imported` のいずれかです。デフォルトは `human` です。 |
| `source_metadata` | object | インポートの来歴です。後述の「ソースメタデータ」をご覧ください。 |
| `labeled_by` | string または null | そのバージョンを書いたユーザーの UID です。データセットを編集できる呼び出し元にのみ返されます。読み取り専用です。 |
| `confidence` | number または null | 0 から 1 までのモデルの確信度です。`source` が `model` の場合にのみ受け付けます。 |
| `created_at`, `updated_at` | string | バージョンのタイムスタンプです。読み取り専用です。 |

`mistake_type`、`recovery_type`、`failure_stage` は自由記述のテキストです。シーケンスがきれいにグループ化されるよう、プログラムの失敗タクソノミーのタグを使ってください。

### 結果の値

| 結果 | 意味 |
| - | - |
| `expert_success` | タスクが完了しています。実行は滑らかで、エキスパートのペースです。 |
| `slow_success` | タスクが完了しています。実行は正確で、エキスパートのペースより明らかに遅いです。 |
| `partial_success` | タスクの一部が完了しています。最終的な目標状態には達していません。 |
| `mistake_and_recovery` | 滑り、取り損ない、誤った配置などのエラーが起きます。動作主体が外部の助けなしにリカバリーし、タスクを完了します。 |
| `intervention` | 人間が介入してタスクを修正または完了します。 |
| `unsafe` | シーケンスに安全でない動作または状態が含まれます。 |
| `aborted` | タスクの完了前に試行が止まり、リカバリーもありません。 |
| `failure` | 試行が終わり、タスクは達成されていません。 |
| `novel_strategy` | 通常の戦略とは異なる、妥当な方法でタスクが解決されます。 |
| `inefficient_strategy` | 避けられる余分な動作、繰り返しの試行、遠回りを伴ってタスクが解決されます。 |

各サブタスクは、同じ一覧から独自の結果を持てます。

### 自律レベル

| 値 | 意味 |
| - | - |
| `human_demonstration` | 人がタスクを行います。 |
| `teleoperation` | 人がロボットを遠隔で操作します。 |
| `autonomous` | ロボットがポリシーで動作します。 |
| `shared_autonomy` | ポリシーと人が制御を分担します。 |
| `intervention` | シーケンスの途中で、人がポリシーから制御を引き継ぎます。 |

### サブタスク

各サブタスクは `{label, start_ts, end_ts, outcome}` です。

| フィールド | ルール |
| - | - |
| `label` | サブタスクの自然言語による説明です。必須です。1 から 500 文字です。 |
| `start_ts`, `end_ts` | 0 以上の有限の数値です。`end_ts` は `start_ts` 以上です。 |
| `outcome` | 結果の値、または `null` です。 |

1 つのラベルが持てるサブタスクは最大 256 個です。リストは `start_ts` の順に並べる必要があります。任意の 2 つのサブタスクは、互いに重ならないか、フェーズとそのステップのように一方が他方を完全に含むかのどちらかです。端が接している場合は重ならないものとして扱います。部分的な重なりは拒否されます。2 つのサブタスクが同時に始まる場合は、含む側を先に並べてください。

### 手のアクション

`hand_actions` は、`left` と `right` という独立した 2 つのストリームを持ちます。各アイテムは、ある時間範囲で片方の手が何をするかを記述します。

| フィールド | ルール |
| - | - |
| `start_ts`, `end_ts` | 0 以上の有限の数値です。`end_ts` は `start_ts` 以上です。 |
| `action` | アクションの自然言語による説明です。必須です。1 から 500 文字です。 |
| `object` | 手が扱う物体です。任意です。最大 255 文字です。 |
| `verb` | アクションを表す短い動詞です。任意です。最大 64 文字です。 |
| `contact` | 手が物体に触れている場合は `true`、触れていない場合は `false`、不明な場合は `null` です。JSON のブール値のみを受け付けます。 |

* 片方の手の中では、アイテムは `start_ts` の順に並び、重なってはいけません。アイテムは前のアイテムの終了時刻以降に始まります。端が接するのは問題ありません。
* 2 つの手は自由に重なれます。
* 各手が持てるアイテムは最大 3,600 個です。これは 1 秒に 1 ラベルで 1 時間分にあたります。
* キーは `left` と `right` のみです。どちらかを省略できます。省略した手は空のリストとして保存されます。
* 空の `object` または `verb` は `null` として保存されます。保存されるすべてのアイテムは 6 つのフィールドをすべて持ちます。

### シーケンスの長さ

Avala がシーケンスの長さを把握している場合、すべてのサブタスクの `end_ts` とすべての手のアクションの `end_ts` は、長さに 1 秒を足した値以下である必要があります。この 1 秒の余裕は、1 秒に 1 つ書かれるラベルのためのものです。Avala が長さを把握しているのは、記録された長さを持つ抽出済み MCAP ファイルがシーケンスにちょうど 1 つある場合です。それ以外のシーケンスでは、このチェックは行われません。

### 評価への所属

`evaluation_membership` は、シーケンスを分割のいずれかに置きます：

| 値 | 意味 |
| - | - |
| `train` | シーケンスを訓練に使えます。 |
| `held_out_eval` | シーケンスはホールドアウトされた評価セットに属します。訓練から除外してください。 |
| `none` | シーケンスはどちらの分割にも属しません。 |

Avala は、すべての評価コホートのシーケンスに `held_out_eval` を設定します。これらのシーケンスはトレーニングリリースに含まれることはありません。[評価](/docs/ja/fleet-learning/evaluation.md)をご覧ください。

### リーケージグループ

リーケージグループは、ほぼ重複したデータが訓練と評価の分割の両側に入ることを防ぎます。`leakage_groups` は次のキーを受け付け、それぞれ最大 255 文字のグループ ID を持ちます：

| キー | 次を共有するシーケンスをまとめます |
| - | - |
| `location` | 同じ家、拠点、部屋です。 |
| `object` | 同じ物理的な物体セットです。 |
| `mechanism` | 同じ家電または機構のユニットです。 |
| `operator` | 同じ収集者またはテレオペレーターです。 |
| `environment_family` | ギャレーキッチンなど、同じ種類の環境とレイアウトです。 |

その他のキーは拒否されます。各キーは任意です。

Avala は、コホート内のどのグループ値もトレーニングリリースに現れないように評価コホートを構築します。お客様自身のデータも同じ方法で分割できます。ホールドアウトはグループ単位で行い、ランダムなシーケンス単位では行いません。Avala のグループ ID は仮名なので、誰がどこで記録したかを知ることなく、グループ化して分割できます。

### ソースメタデータ

`source_metadata` は、インポートされたラベルの出どころを記録します。たとえば `{"importer": "...", "run_id": "...", "task": "...", "log_path": "..."}` です。

* 最大 20 個のキーを持つフラットなオブジェクトです。
* 各キーは 1 から 64 文字です。
* 各値は、最大 512 文字の文字列、有限の数値、またはブール値です。
* ネストしたオブジェクト、リスト、`null` 値は拒否されます。

### 書き込みの仕組み

* 書き込みは現在のラベル全体を置き換え、新しいバージョンを記録します。省略した任意のフィールドは未設定として保存されます。前のバージョンからはコピーされません。
* 書き込みには、データセットの編集権限が必要です。読み取りには、公開データセットを含め、シーケンスの読み取りと同じ権限が必要です。
* `confidence` は、`source` が `model` でない限り拒否されます。
* ラベルのないシーケンスを読み取ると `404` が返ります。

## 技術的妥当性

技術的妥当性は結果ラベルの一部ではありません。Avala は承認エンジンと品質目標からこれを報告します。技術的妥当性に独自の JSON スキーマはありません。

**承認基準。** キャプチャキャンペーンのすべてのキャプチャに、機械による判定が付きます。判定は `accept`、`quarantine`、`reject` のいずれかで、次の基準から決まります：

| 基準 | チェック内容 |
| - | - |
| `capture_health` | MCAP ファイルが検証を通り、キャンペーンが求めるチャンネルが揃っています。 |
| `frame_rate` | カメラのフレームレートがクリップ全体で保たれ、持続的な低下がありません。 |
| `completeness` | 長さがキャンペーンの求めた長さに近いです。 |
| `framing` | 検出器が監視した時間のうち、十分な割合で手が見えています。 |
| `shake` | クリップの大部分でカメラが揺れていません。 |

各基準は `pass`、`fail`、`insufficient_evidence`、`skipped` のいずれかを報告します。不合格の基準は、`acceptance_frame_rate_drop` や `hands_not_visible` などの理由コードを記録します。その後、レビュアーが判定を確認または覆します。理由コードは[承認済み時間](/docs/ja/fleet-learning/accepted-hour.md)に一覧があります。

承認は、1 つのキャプチャには MCP ツール `get_result_acceptance` で、キャンペーンには `get_campaign_acceptance_summary` で読み取ります。`list_capture_submissions` には、各キャプチャの機械承認の概要が含まれます。

**品質目標。** プロジェクトは、承認率、却下率、問題発生率などの品質メトリクスにしきい値を設定できます。メトリクスがしきい値を超えると、Avala がアラートを出します。品質目標は MCP ツール `list_quality_targets` で読み取ります。

キャリブレーション、同意、タイムスタンプの同期など、機械による基準ではないプログラムのチェックは、[カバレッジレポート](/docs/ja/fleet-learning/coverage.md)で却下理由として報告されます。[承認済み時間](/docs/ja/fleet-learning/accepted-hour.md)をご覧ください。

## 結果ラベルの読み取りと書き込み

REST エンドポイントは `https://api.avala.ai/api/v1` の下にあります：

| メソッドとパス | 内容 |
| - | - |
| `GET /datasets/{owner}/{slug}/sequences/{sequence_uid}/outcome/` | 1 つのシーケンスの現在のラベルです。ラベルがない場合は `404` です。 |
| `PUT /datasets/{owner}/{slug}/sequences/{sequence_uid}/outcome/` | 新しい現在のラベルを記録します。 |
| `GET /datasets/{owner}/{slug}/sequences/{sequence_uid}/outcome/history/` | ラベルのすべてのバージョンです。新しい順に並びます。 |
| `GET /datasets/{owner}/{slug}/sequence-outcomes/` | データセット内の現在のラベルです。ページ分割されます。 |

データセットの一覧は、`outcome`、`evaluation_membership`、`source`、`autonomy_level` のフィルターを受け付けます。それぞれ 1 つの値またはカンマ区切りのリストを取り、シーケンスはリスト内のいずれかの値に一致すれば該当します。`model_version` は 1 つのバージョンに完全一致します。不明なフィルター値は `400` を返します。

シーケンスの一覧 `GET /datasets/{owner}/{slug}/sequences/` は、`outcome` と `evaluation_membership` を同じ形式で受け付けます。現在のラベルが一致するシーケンスを返します。

### ラベルを書き込む

```bash cURL theme={null}
curl -X PUT \
  "https://api.avala.ai/api/v1/datasets/your-org/kitchen-rollouts/sequences/<sequence-uid>/outcome/" \
  -H "X-Avala-Api-Key: $AVALA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "outcome": "failure",
    "progress": 0.4,
    "subtasks": [
      { "label": "Place the plate in the lower rack", "start_ts": 0.0, "end_ts": 21.5, "outcome": "failure" }
    ],
    "mistake_type": "slip_during_place",
    "failure_stage": "place",
    "autonomy_level": "autonomous",
    "model_version": "your-policy@2026-09-20",
    "evaluation_membership": "held_out_eval",
    "source": "imported",
    "source_metadata": { "importer": "your-eval-harness", "run_id": "r42", "task": "load_dishwasher" }
  }'
```

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

client = Client()  # reads AVALA_API_KEY

label = client.sequence_outcomes.set(
    "your-org",
    "kitchen-rollouts",
    "<sequence-uid>",
    outcome="failure",
    progress=0.4,
    subtasks=[
        {"label": "Place the plate in the lower rack", "start_ts": 0.0, "end_ts": 21.5, "outcome": "failure"},
    ],
    mistake_type="slip_during_place",
    failure_stage="place",
    autonomy_level="autonomous",
    model_version="your-policy@2026-09-20",
    evaluation_membership="held_out_eval",
    source="imported",
    source_metadata={"importer": "your-eval-harness", "run_id": "r42", "task": "load_dishwasher"},
)
print(label.version, label.outcome)
```

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

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

const label = await avala.sequenceOutcomes.set("your-org", "kitchen-rollouts", "<sequence-uid>", {
  outcome: "failure",
  progress: 0.4,
  subtasks: [{ label: "Place the plate in the lower rack", startTs: 0.0, endTs: 21.5, outcome: "failure" }],
  mistakeType: "slip_during_place",
  failureStage: "place",
  autonomyLevel: "autonomous",
  modelVersion: "your-policy@2026-09-20",
  evaluationMembership: "held_out_eval",
  source: "imported",
  sourceMetadata: { importer: "your-eval-harness", run_id: "r42", task: "load_dishwasher" },
});
console.log(label.version, label.outcome);
```

```bash CLI theme={null}
avala sequence-outcomes set your-org kitchen-rollouts <sequence-uid> \
  --outcome failure \
  --progress 0.4 \
  --subtasks-file subtasks.json \
  --mistake-type slip_during_place \
  --failure-stage place \
  --autonomy-level autonomous \
  --model-version your-policy@2026-09-20 \
  --evaluation-membership held_out_eval \
  --source imported \
  --source-metadata '{"importer": "your-eval-harness", "run_id": "r42", "task": "load_dishwasher"}'
```

TypeScript SDK は camelCase のオプション名を受け取り、API の snake\_case のフィールドとして送信します。`sourceMetadata` 内のキーは書いたとおりに送信されます。CLI では、`--hand-actions-file` が `{"left": [...], "right": [...]}` の JSON ファイルを受け取り、`--leakage-group KEY=ID` は繰り返し指定できます。

### ラベルを読み取る

```bash cURL theme={null}
# Current label of one sequence
curl "https://api.avala.ai/api/v1/datasets/your-org/kitchen-rollouts/sequences/<sequence-uid>/outcome/" \
  -H "X-Avala-Api-Key: $AVALA_API_KEY"

# Every version, newest first
curl "https://api.avala.ai/api/v1/datasets/your-org/kitchen-rollouts/sequences/<sequence-uid>/outcome/history/" \
  -H "X-Avala-Api-Key: $AVALA_API_KEY"

# Failed or aborted held-out sequences
curl "https://api.avala.ai/api/v1/datasets/your-org/kitchen-rollouts/sequence-outcomes/?outcome=failure,aborted&evaluation_membership=held_out_eval" \
  -H "X-Avala-Api-Key: $AVALA_API_KEY"

# The sequences themselves, filtered by their current label
curl "https://api.avala.ai/api/v1/datasets/your-org/kitchen-rollouts/sequences/?outcome=mistake_and_recovery,intervention" \
  -H "X-Avala-Api-Key: $AVALA_API_KEY"
```

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

client = Client()

label = client.sequence_outcomes.get("your-org", "kitchen-rollouts", "<sequence-uid>")
versions = client.sequence_outcomes.history("your-org", "kitchen-rollouts", "<sequence-uid>")

page = client.sequence_outcomes.list(
    "your-org",
    "kitchen-rollouts",
    outcome=["failure", "aborted"],
    evaluation_membership="held_out_eval",
    model_version="your-policy@2026-09-20",
)
for item in page:
    print(item.sequence_uid, item.outcome, item.progress)
```

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

const avala = new Avala();

const label = await avala.sequenceOutcomes.get("your-org", "kitchen-rollouts", "<sequence-uid>");
const versions = await avala.sequenceOutcomes.history("your-org", "kitchen-rollouts", "<sequence-uid>");

const page = await avala.sequenceOutcomes.list("your-org", "kitchen-rollouts", {
  outcome: ["failure", "aborted"],
  evaluationMembership: "held_out_eval",
  modelVersion: "your-policy@2026-09-20",
});
for (const item of page.items) {
  console.log(item.sequenceUid, item.outcome, item.progress);
}
```

```bash CLI theme={null}
avala sequence-outcomes get your-org kitchen-rollouts <sequence-uid>
avala sequence-outcomes history your-org kitchen-rollouts <sequence-uid>
avala sequence-outcomes list your-org kitchen-rollouts \
  --outcome failure,aborted \
  --evaluation-membership held_out_eval
```

データセットの一覧は、1 ページあたり最大 100 件のラベルを返します。続きを取得するには、前のページの `cursor` を渡します。

### MCP サーバーでラベルを読み取る

MCP サーバーは結果ラベルを読み取ります。書き込みは行いません。

* `get_sequence_outcome` は `owner`、`slug`、`sequenceUid` を受け取り、現在のラベルを返します。
* `list_sequence_outcomes` は `owner` と `slug` に加え、フィルター `outcome`、`evaluationMembership`、`source`、`autonomyLevel`、`modelVersion`、および `limit` と `cursor` を受け取ります。

どちらのツールも、デフォルトでは短い形式を返します。サブタスク、手のアクション、ミスとリカバリーのタグ、リーケージグループ、ソースメタデータ、ラベル作成者を含めるには、`detail: "full"` を渡します。接続方法は[AI で Avala を使う](/docs/ja/getting-started/mcp.md)をご覧ください。

## LeRobot で結果ラベルをエクスポートする

LeRobot エクスポーターは、各シーケンスの現在の結果ラベルをデータセットの隣に書き出せます。1 つの Avala シーケンスが 1 つの LeRobot エピソードになります。

```bash CLI theme={null}
avala lerobot export your-org/kitchen-rollouts \
  --repo-id your-hf-user/kitchen-rollouts \
  --output ./lerobot-out \
  --include-outcomes
```

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

export_dataset(
    Client(),
    "your-org",
    "kitchen-rollouts",
    repo_id="your-hf-user/kitchen-rollouts",
    output_dir="./lerobot-out",
    include_outcomes=True,
)
```

ラベルは `meta/avala_sequence_outcomes.jsonl` に書き出されます。1 行に 1 つの JSON オブジェクトで、保存された LeRobot エピソードごとに 1 行です。LeRobot 自体のエピソードテーブルにはこのメタデータを置く場所がないため、別ファイルになっています。各行には次のキーがあります：

| キー | 値 |
| - | - |
| `episode_index` | LeRobot のエピソードインデックスです。 |
| `avala_sequence_uid` | エピソードの元になった Avala シーケンスです。 |
| `outcome` | 結果の値です。シーケンスにラベルがない場合は `null` です。 |
| `outcome_version` | エクスポートされたラベルのバージョンです。 |
| `progress`, `quality`, `speed` | ラベルと同じです。 |
| `subtasks`, `hand_actions` | ラベルと同じです。タイムスタンプはエピソード開始からの秒数です。 |
| `mistake_type`, `recovery_type`, `failure_stage`, `autonomy_level`, `model_version`, `evaluation_membership` | ラベルと同じです。ただし空の値の代わりに `null` が入ります。 |
| `leakage_groups` | ラベルと同じです。 |
| `outcome_source`, `outcome_source_metadata`, `outcome_confidence` | ラベルの `source`、`source_metadata`、`confidence` です。 |

ラベルのないシーケンスには、`episode_index`、`avala_sequence_uid`、`"outcome": null` だけを持つ行が書き出されます。

## 失敗とリカバリーのレーン

リカバリー可能な失敗は、独立したレーンとして納品されます。結果が `mistake_and_recovery` または `intervention` のシーケンスです。各シーケンスのサブタスクと手のアクションが、失敗とリカバリーの起きた箇所を示します。

このレーンは、リリース内の独立したスライスとして納品されます。訓練に使うことも、重み付けすることも、除外することもできます。`?outcome=mistake_and_recovery,intervention` を使って、同じセットをお客様自身で作ることもできます。安全でないシーケンスはこのレーンに含まれません。
