# goal

> Talos next · Since 0.6

Use it in a scene entity's `components` list as `{ "type": "goal", … }`. The contract writes the fields flat and refuses unknown keys.

## Fields

| Field | Type | Required | Default | Allowed values | Description |
|---|---|---|---|---|---|
| `id` | `string` | yes |  |  |  |
| `labelKey` | `string` | yes |  |  |  |
| `order` | `number` | no |  |  |  |

## Rules that can refuse it

- `feel/camera-target-hidden`
- `goal-order`
- `play/bad-start`
- `play/drive-hits`
- `play/ended-early`
- `play/fell-out`
- `play/no-goals`
- `play/no-response`
- `play/respawned`
- `play/softlock`
- `play/stuck`
- `play/timeout`
- `play/unknown-goal`
- `play/untested-flows`
- `unreachable-goal`

## Example

From the contract's tested fixture `fixtures/contract/full20/scene.json#door`.

```json
{
  "type": "goal",
  "id": "door",
  "labelKey": "goal.door",
  "order": 2
}
```
