> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo/gym/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo/gym/_mcp/server.

# nemo_gym.environment.manifest

Typed contract for an environment `manifest.yaml`.

## Module Contents

### Classes

| Name                                                                        | Description                                                                |
| --------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| [`AdoptedFrom`](#nemo_gym-environment-manifest-AdoptedFrom)                 | -                                                                          |
| [`DatasetKind`](#nemo_gym-environment-manifest-DatasetKind)                 | -                                                                          |
| [`Determinism`](#nemo_gym-environment-manifest-Determinism)                 | -                                                                          |
| [`EnvironmentKind`](#nemo_gym-environment-manifest-EnvironmentKind)         | -                                                                          |
| [`EnvironmentManifest`](#nemo_gym-environment-manifest-EnvironmentManifest) | Authored metadata plus a read-only mirror of the resolved Gym composition. |
| [`EnvironmentState`](#nemo_gym-environment-manifest-EnvironmentState)       | -                                                                          |
| [`IntegrationProfile`](#nemo_gym-environment-manifest-IntegrationProfile)   | -                                                                          |
| [`Lifecycle`](#nemo_gym-environment-manifest-Lifecycle)                     | -                                                                          |
| [`ManifestDataset`](#nemo_gym-environment-manifest-ManifestDataset)         | -                                                                          |
| [`ManifestError`](#nemo_gym-environment-manifest-ManifestError)             | A manifest could not be read, parsed, or validated.                        |
| [`Reward`](#nemo_gym-environment-manifest-Reward)                           | -                                                                          |
| [`SessionModel`](#nemo_gym-environment-manifest-SessionModel)               | -                                                                          |
| [`_ManifestModel`](#nemo_gym-environment-manifest-_ManifestModel)           | -                                                                          |

### Functions

| Name                                                                                      | Description |
| ----------------------------------------------------------------------------------------- | ----------- |
| [`_profile_schema_conditions`](#nemo_gym-environment-manifest-_profile_schema_conditions) | -           |
| [`_validation_error`](#nemo_gym-environment-manifest-_validation_error)                   | -           |
| [`dump_manifest`](#nemo_gym-environment-manifest-dump_manifest)                           | -           |
| [`load_manifest`](#nemo_gym-environment-manifest-load_manifest)                           | -           |
| [`manifest_json_schema`](#nemo_gym-environment-manifest-manifest_json_schema)             | -           |

### Data

[`CALLABLE_PATTERN`](#nemo_gym-environment-manifest-CALLABLE_PATTERN)

[`GitRef`](#nemo_gym-environment-manifest-GitRef)

[`JSON_SCHEMA_DIALECT`](#nemo_gym-environment-manifest-JSON_SCHEMA_DIALECT)

[`License`](#nemo_gym-environment-manifest-License)

[`MANIFEST_SCHEMA_ID`](#nemo_gym-environment-manifest-MANIFEST_SCHEMA_ID)

[`NonEmptyString`](#nemo_gym-environment-manifest-NonEmptyString)

[`PythonCallable`](#nemo_gym-environment-manifest-PythonCallable)

[`SOURCE_PATTERN`](#nemo_gym-environment-manifest-SOURCE_PATTERN)

[`Source`](#nemo_gym-environment-manifest-Source)

[`_BENCHMARK_REQUIRED_FIELDS`](#nemo_gym-environment-manifest-_BENCHMARK_REQUIRED_FIELDS)

[`_PRIVATE_LICENSE_VALUES`](#nemo_gym-environment-manifest-_PRIVATE_LICENSE_VALUES)

[`_PROFILE_REQUIRED_FIELDS`](#nemo_gym-environment-manifest-_PROFILE_REQUIRED_FIELDS)

### API

```python
class nemo_gym.environment.manifest.AdoptedFrom()
```

**Bases:** [\_ManifestModel](#nemo_gym-environment-manifest-_ManifestModel)

**`reconciled`** `date`

---

**`ref`** `GitRef`

---

**`source`** `Source`

---

```python
class nemo_gym.environment.manifest.DatasetKind
```

**Bases:** `enum.Enum`

**`BENCHMARK`** `= 'benchmark'`

---

**`EXAMPLE`** `= 'example'`

---

**`TRAIN`** `= 'train'`

---

**`VALIDATION`** `= 'validation'`

---

```python
class nemo_gym.environment.manifest.Determinism
```

**Bases:** `enum.Enum`

**`SEEDED`** `= 'seeded'`

---

**`STOCHASTIC`** `= 'stochastic'`

---

**`UNKNOWN`** `= 'unknown'`

---

```python
class nemo_gym.environment.manifest.EnvironmentKind
```

**Bases:** `enum.Enum`

**`BENCHMARK`** `= 'benchmark'`

---

**`ENVIRONMENT`** `= 'environment'`

---

```python
class nemo_gym.environment.manifest.EnvironmentManifest()
```

**Bases:** [\_ManifestModel](#nemo_gym-environment-manifest-_ManifestModel)

Authored metadata plus a read-only mirror of the resolved Gym composition.

**`adopted_from`** `AdoptedFrom | None = None`

---

**`agent_server`** `NonEmptyString`

---

**`authors`** `list[NonEmptyString]`

---

**`canonical_split`** `NonEmptyString | None = None`

---

**`datasets`** `list[ManifestDataset] = Field(min_length=1)`

---

**`description`** `NonEmptyString`

---

**`determinism`** `Determinism = Determinism.UNKNOWN`

---

**`domain`** `Domain`

---

**`grading_mode`** `NonEmptyString | None = None`

---

**`integration_profile`** `IntegrationProfile`

---

**`kind`** `EnvironmentKind`

---

**`licensing`** `License`

---

**`lifecycle`** `Lifecycle = Lifecycle.ACTIVE`

---

**`modality`** `NonEmptyString`

---

**`model_config`**

---

**`model_server`** `NonEmptyString | None = None`

---

**`name`** `NonEmptyString`

---

**`resources_server`** `NonEmptyString`

---

**`reward`** `Reward`

---

**`rollout_driver`** `PythonCallable | None = None`

---

**`sandbox`** `NonEmptyString | None = None`

---

**`session_model`** `SessionModel | None = None`

---

**`standard_prompt_config`** `NonEmptyString | None = None`

---

**`state`** `EnvironmentState | None = None`

---

**`version`** `NonEmptyString`

---

```python
nemo_gym.environment.manifest.EnvironmentManifest.validate_contract() -> 'EnvironmentManifest'
```

```python
nemo_gym.environment.manifest.EnvironmentManifest.validate_licensing(
    value: str
) -> str
```

classmethod

```python
nemo_gym.environment.manifest.EnvironmentManifest.validate_unique_authors(
    value: list[str]
) -> list[str]
```

classmethod

```python
class nemo_gym.environment.manifest.EnvironmentState
```

**Bases:** `enum.Enum`

**`NONE`** `= 'none'`

---

**`PER_SESSION`** `= 'per_session'`

---

```python
class nemo_gym.environment.manifest.IntegrationProfile
```

**Bases:** `enum.Enum`

**`CUSTOM_GYM_AGENT_LOOP`** `= 'custom-gym-agent-loop'`

---

**`CUSTOM_GYM_VERIFIER`** `= 'custom-gym-verifier'`

---

**`EXTERNAL_AGENT_LOOP`** `= 'external-agent-loop'`

---

**`EXTERNAL_ROLLOUT_DRIVER`** `= 'external-rollout-driver'`

---

```python
class nemo_gym.environment.manifest.Lifecycle
```

**Bases:** `enum.Enum`

**`ACTIVE`** `= 'active'`

---

**`DEPRECATED`** `= 'deprecated'`

---

```python
class nemo_gym.environment.manifest.ManifestDataset()
```

**Bases:** [\_ManifestModel](#nemo_gym-environment-manifest-_ManifestModel)

**`jsonl_fpath`** `NonEmptyString`

---

**`model_config`**

---

**`name`** `NonEmptyString`

---

**`num_repeats`** `int = Field(default=1, ge=1)`

---

**`prepare_script`** `NonEmptyString | None = None`

---

**`prompt_config`** `NonEmptyString | None = None`

---

**`type`** `DatasetKind`

---

```python
nemo_gym.environment.manifest.ManifestDataset.validate_benchmark_dataset() -> 'ManifestDataset'
```

```python
class nemo_gym.environment.manifest.ManifestError()
```

**Bases:** [ConfigError](/nemo-gym/nemo_gym/config_types#nemo_gym-config_types-ConfigError)

A manifest could not be read, parsed, or validated.

```python
class nemo_gym.environment.manifest.Reward()
```

**Bases:** [\_ManifestModel](#nemo_gym-environment-manifest-_ManifestModel)

**`higher_is_better`** `bool`

---

**`range`** `tuple[FiniteFloat, FiniteFloat]`

---

```python
nemo_gym.environment.manifest.Reward.validate_range() -> 'Reward'
```

```python
class nemo_gym.environment.manifest.SessionModel
```

**Bases:** `enum.Enum`

**`EPISODE`** `= 'episode'`

---

**`STEP`** `= 'step'`

---

```python
class nemo_gym.environment.manifest._ManifestModel()
```

**Bases:** `BaseModel`

**`model_config`**

---

```python
nemo_gym.environment.manifest._profile_schema_conditions() -> list[dict[str, typing.Any]]
```

```python
nemo_gym.environment.manifest._validation_error(
    path: pathlib.Path,
    error: pydantic.ValidationError
) -> nemo_gym.environment.manifest.ManifestError
```

```python
nemo_gym.environment.manifest.dump_manifest(
    manifest: nemo_gym.environment.manifest.EnvironmentManifest | typing.Mapping[str, typing.Any]
) -> str
```

```python
nemo_gym.environment.manifest.load_manifest(
    path: str | pathlib.Path
) -> nemo_gym.environment.manifest.EnvironmentManifest
```

```python
nemo_gym.environment.manifest.manifest_json_schema() -> dict[str, typing.Any]
```

```python
nemo_gym.environment.manifest.CALLABLE_PATTERN = '^[A-Za-z_][A-Za-z0-9_]*(?:\\.[A-Za-z_][A-Za-z0-9_]*)*:[A-Za-z_][A-Za-z0-9_]*$'
```

```python
nemo_gym.environment.manifest.GitRef = Annotated[str, StringConstraints(strip_whitespace=True, min_length=1, pattern='^...
```

```python
nemo_gym.environment.manifest.JSON_SCHEMA_DIALECT = 'https://json-schema.org/draft/2020-12/schema'
```

```python
nemo_gym.environment.manifest.License = Annotated[str, StringConstraints(strip_whitespace=True, min_length=1)]
```

```python
nemo_gym.environment.manifest.MANIFEST_SCHEMA_ID = 'environment-manifest.schema.json'
```

```python
nemo_gym.environment.manifest.NonEmptyString = Annotated[str, StringConstraints(strip_whitespace=True, min_length=1)]
```

```python
nemo_gym.environment.manifest.PythonCallable = Annotated[str, StringConstraints(strip_whitespace=True, pattern=CALLABLE_PATTERN...
```

```python
nemo_gym.environment.manifest.SOURCE_PATTERN = '^(?:(?:https?|ssh|git|file)://\\S+|[^@\\s]+@[^:\\s]+:\\S+)$'
```

```python
nemo_gym.environment.manifest.Source = Annotated[str, StringConstraints(strip_whitespace=True, pattern=SOURCE_PATTERN)]
```

```python
nemo_gym.environment.manifest._BENCHMARK_REQUIRED_FIELDS = ('canonical_split', 'standard_prompt_config')
```

```python
nemo_gym.environment.manifest._PRIVATE_LICENSE_VALUES = frozenset({'internal', 'proprietary', 'unknown'})
```

```python
nemo_gym.environment.manifest._PROFILE_REQUIRED_FIELDS = {IntegrationProfile.CUSTOM_GYM_VERIFIER: ('model_server',), IntegrationProfile.C...
```