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

Static manifest validation for manifest-backed workloads.

## Module Contents

### Classes

| Name                                                                                          | Description                                                   |
| --------------------------------------------------------------------------------------------- | ------------------------------------------------------------- |
| [`DatasetValidation`](#nemo_gym-environment-validation-DatasetValidation)                     | -                                                             |
| [`EnvironmentValidationError`](#nemo_gym-environment-validation-EnvironmentValidationError)   | A manifest-backed workload failed static manifest validation. |
| [`EnvironmentValidationReport`](#nemo_gym-environment-validation-EnvironmentValidationReport) | -                                                             |
| [`ResolvedComponent`](#nemo_gym-environment-validation-ResolvedComponent)                     | -                                                             |
| [`ResolvedComposition`](#nemo_gym-environment-validation-ResolvedComposition)                 | -                                                             |

### Functions

| Name                                                                                                          | Description                                                                |
| ------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| [`_base_name`](#nemo_gym-environment-validation-_base_name)                                                   | -                                                                          |
| [`_catalog_directory`](#nemo_gym-environment-validation-_catalog_directory)                                   | -                                                                          |
| [`_component_root`](#nemo_gym-environment-validation-_component_root)                                         | -                                                                          |
| [`_contains_not_implemented_raise`](#nemo_gym-environment-validation-_contains_not_implemented_raise)         | -                                                                          |
| [`_implementation_name`](#nemo_gym-environment-validation-_implementation_name)                               | -                                                                          |
| [`_infer_profile`](#nemo_gym-environment-validation-_infer_profile)                                           | -                                                                          |
| [`_iter_dataset_rows`](#nemo_gym-environment-validation-_iter_dataset_rows)                                   | -                                                                          |
| [`_json_value`](#nemo_gym-environment-validation-_json_value)                                                 | -                                                                          |
| [`_manifest_dataset`](#nemo_gym-environment-validation-_manifest_dataset)                                     | -                                                                          |
| [`_mirror_differences`](#nemo_gym-environment-validation-_mirror_differences)                                 | -                                                                          |
| [`_mirror_values`](#nemo_gym-environment-validation-_mirror_values)                                           | -                                                                          |
| [`_only_delegates_to_super`](#nemo_gym-environment-validation-_only_delegates_to_super)                       | -                                                                          |
| [`_only_raises_not_implemented`](#nemo_gym-environment-validation-_only_raises_not_implemented)               | -                                                                          |
| [`_parse_python_file`](#nemo_gym-environment-validation-_parse_python_file)                                   | -                                                                          |
| [`_profile_warnings`](#nemo_gym-environment-validation-_profile_warnings)                                     | -                                                                          |
| [`_render_value`](#nemo_gym-environment-validation-_render_value)                                             | -                                                                          |
| [`_resolve_manifest_composition`](#nemo_gym-environment-validation-_resolve_manifest_composition)             | Resolve manifest wiring without probing or materializing runtime services. |
| [`_select_dataset_agent`](#nemo_gym-environment-validation-_select_dataset_agent)                             | -                                                                          |
| [`_server_class`](#nemo_gym-environment-validation-_server_class)                                             | -                                                                          |
| [`_validate_benchmark_prompt_contract`](#nemo_gym-environment-validation-_validate_benchmark_prompt_contract) | -                                                                          |
| [`_validate_dataset`](#nemo_gym-environment-validation-_validate_dataset)                                     | -                                                                          |
| [`_validate_manifest_location`](#nemo_gym-environment-validation-_validate_manifest_location)                 | -                                                                          |
| [`_validate_prepare_script`](#nemo_gym-environment-validation-_validate_prepare_script)                       | -                                                                          |
| [`_validate_rollout_driver`](#nemo_gym-environment-validation-_validate_rollout_driver)                       | -                                                                          |
| [`_with_component_root`](#nemo_gym-environment-validation-_with_component_root)                               | -                                                                          |
| [`_write_manifest_atomically`](#nemo_gym-environment-validation-_write_manifest_atomically)                   | -                                                                          |
| [`validate_environment`](#nemo_gym-environment-validation-validate_environment)                               | Validate a manifest without probing services or runtime output paths.      |

### API

```python
class nemo_gym.environment.validation.DatasetValidation(
    name: str,
    type: str,
    path: str,
    rows: int,
    prompt_config: str | None = None
)
```

Dataclass

**`name`** `str`

---

**`path`** `str`

---

**`prompt_config`** `str | None = None`

---

**`rows`** `int`

---

**`type`** `str`

---

```python
class nemo_gym.environment.validation.EnvironmentValidationError()
```

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

A manifest-backed workload failed static manifest validation.

```python
class nemo_gym.environment.validation.EnvironmentValidationReport(
    name: str,
    version: str,
    kind: str,
    declared_profile: str,
    inferred_profile: str,
    profile_evidence: str,
    manifest_path: str,
    config_path: str,
    components: tuple[nemo_gym.environment.validation.ResolvedComponent, ...],
    datasets: tuple[nemo_gym.environment.validation.DatasetValidation, ...],
    rollout_driver: str | None = None,
    grading_mode: str | None = None,
    synchronized_fields: tuple[str, ...] = (),
    warnings: tuple[str, ...] = ()
)
```

Dataclass

**`components`** `tuple[ResolvedComponent, ...]`

---

**`config_path`** `str`

---

**`datasets`** `tuple[DatasetValidation, ...]`

---

**`declared_profile`** `str`

---

**`grading_mode`** `str | None = None`

---

**`inferred_profile`** `str`

---

**`kind`** `str`

---

**`manifest_path`** `str`

---

**`name`** `str`

---

**`profile_evidence`** `str`

---

**`rollout_driver`** `str | None = None`

---

**`synchronized_fields`** `tuple[str, ...] = ()`

---

**`version`** `str`

---

**`warnings`** `tuple[str, ...] = ()`

---

```python
nemo_gym.environment.validation.EnvironmentValidationReport.to_dict() -> dict[str, typing.Any]
```

```python
class nemo_gym.environment.validation.ResolvedComponent(
    role: str,
    name: str,
    implementation: str,
    boundary: str,
    entrypoint: str | None = None
)
```

Dataclass

**`boundary`** `str`

---

**`entrypoint`** `str | None = None`

---

**`implementation`** `str`

---

**`name`** `str`

---

**`role`** `str`

---

```python
class nemo_gym.environment.validation.ResolvedComposition(
    resources_server: str | None,
    agent_server: str | None,
    model_server: str | None,
    datasets: tuple[nemo_gym.environment.manifest.ManifestDataset, ...],
    rollout_driver: str | None,
    grading_mode: str | None,
    components: tuple[nemo_gym.environment.validation.ResolvedComponent, ...]
)
```

Dataclass

**`agent_server`** `str | None`

---

**`components`** `tuple[ResolvedComponent, ...]`

---

**`datasets`** `tuple[ManifestDataset, ...]`

---

**`grading_mode`** `str | None`

---

**`model_server`** `str | None`

---

**`resources_server`** `str | None`

---

**`rollout_driver`** `str | None`

---

```python
nemo_gym.environment.validation._base_name(
    base: ast.expr
) -> str | None
```

```python
nemo_gym.environment.validation._catalog_directory(
    path: pathlib.Path
) -> pathlib.Path | None
```

```python
nemo_gym.environment.validation._component_root(
    config_path: pathlib.Path
) -> pathlib.Path | None
```

```python
nemo_gym.environment.validation._contains_not_implemented_raise(
    method: ast.FunctionDef | ast.AsyncFunctionDef
) -> bool
```

```python
nemo_gym.environment.validation._implementation_name(
    server: typing.Any
) -> str
```

```python
nemo_gym.environment.validation._infer_profile(
    composition: nemo_gym.environment.validation.ResolvedComposition
) -> tuple[str, str]
```

```python
nemo_gym.environment.validation._iter_dataset_rows(
    path: pathlib.Path
) -> collections.abc.Iterator[tuple[int, dict[str, typing.Any]]]
```

```python
nemo_gym.environment.validation._json_value(
    value: typing.Any
) -> typing.Any
```

```python
nemo_gym.environment.validation._manifest_dataset(
    dataset: typing.Any
) -> nemo_gym.environment.manifest.ManifestDataset
```

```python
nemo_gym.environment.validation._mirror_differences(
    manifest: nemo_gym.environment.manifest.EnvironmentManifest,
    composition: nemo_gym.environment.validation.ResolvedComposition
) -> dict[str, typing.Any]
```

```python
nemo_gym.environment.validation._mirror_values(
    composition: nemo_gym.environment.validation.ResolvedComposition
) -> dict[str, typing.Any]
```

```python
nemo_gym.environment.validation._only_delegates_to_super(
    method: ast.FunctionDef | ast.AsyncFunctionDef
) -> bool
```

```python
nemo_gym.environment.validation._only_raises_not_implemented(
    method: ast.FunctionDef | ast.AsyncFunctionDef
) -> bool
```

```python
nemo_gym.environment.validation._parse_python_file(
    path: pathlib.Path,
    label: str
) -> ast.Module
```

```python
nemo_gym.environment.validation._profile_warnings(
    declared: str,
    inferred: str,
    evidence: str
) -> tuple[str, ...]
```

```python
nemo_gym.environment.validation._render_value(
    value: typing.Any
) -> str
```

```python
nemo_gym.environment.validation._resolve_manifest_composition(
    config_path: pathlib.Path
) -> nemo_gym.environment.validation.ResolvedComposition
```

Resolve manifest wiring without probing or materializing runtime services.

```python
nemo_gym.environment.validation._select_dataset_agent(
    agents: list[typing.Any]
) -> typing.Any
```

```python
nemo_gym.environment.validation._server_class(
    tree: ast.Module
) -> ast.ClassDef | None
```

```python
nemo_gym.environment.validation._validate_benchmark_prompt_contract(
    manifest: nemo_gym.environment.manifest.EnvironmentManifest
) -> None
```

```python
nemo_gym.environment.validation._validate_dataset(
    dataset: nemo_gym.environment.manifest.ManifestDataset,
    standard_prompt_config: str | None
) -> nemo_gym.environment.validation.DatasetValidation
```

```python
nemo_gym.environment.validation._validate_manifest_location(
    manifest_path: pathlib.Path,
    manifest: nemo_gym.environment.manifest.EnvironmentManifest
) -> None
```

```python
nemo_gym.environment.validation._validate_prepare_script(
    path: pathlib.Path
) -> None
```

```python
nemo_gym.environment.validation._validate_rollout_driver(
    reference: str
) -> None
```

```python
nemo_gym.environment.validation._with_component_root(
    config_path: pathlib.Path
)
```

```python
nemo_gym.environment.validation._write_manifest_atomically(
    path: pathlib.Path,
    manifest: nemo_gym.environment.manifest.EnvironmentManifest
) -> None
```

```python
nemo_gym.environment.validation.validate_environment(
    manifest_path: str | pathlib.Path,
    config_path: str | pathlib.Path | None = None,
    sync: bool = False
) -> nemo_gym.environment.validation.EnvironmentValidationReport
```

Validate a manifest without probing services or runtime output paths.