> This page is for version 0.2.1.
> For other versions, use one of these documentation indexes:
> - Main (default): https://docs.nvidia.com/nemo/gym/main/llms.txt
> - 0.7.0: https://docs.nvidia.com/nemo/gym/v0.7.0/llms.txt
> - 0.6.0: https://docs.nvidia.com/nemo/gym/v0.6.0/llms.txt
> - 0.5.1: https://docs.nvidia.com/nemo/gym/v0.5.1/llms.txt
> - 0.5.0: https://docs.nvidia.com/nemo/gym/v0.5.0/llms.txt
> - 0.4.0: https://docs.nvidia.com/nemo/gym/v0.4.0/llms.txt
> - 0.3.0: https://docs.nvidia.com/nemo/gym/v0.3.0/llms.txt
> - 0.2.1: https://docs.nvidia.com/nemo/gym/v0.2.1/llms.txt

> 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.tasks.harbor.digest

Whole-folder digest of a Harbor task.

Same record format as Harbor's package publisher and Gym's Terminal Bench 4 loader:
SHA256 over sorted `relative_path NUL file_sha256 LF` records covering
`task.toml`, `instruction.md`, `README.md`, `trajectory.json` and everything
under `environment/`, `tests/`, `solution/` and `steps/`. The digest travels in
`task_data` under `DIGEST_KEY` so the resources server can refuse a row whose
folder changed after materialization.

## Module Contents

### Functions

| Name                                                         | Description                       |
| ------------------------------------------------------------ | --------------------------------- |
| [`_ignored`](#nemo_gym-tasks-harbor-digest-_ignored)         | -                                 |
| [`content_hash`](#nemo_gym-tasks-harbor-digest-content_hash) | Digest the task folder at `path`. |

### Data

[`DIGEST_KEY`](#nemo_gym-tasks-harbor-digest-DIGEST_KEY)

[`_DIRECTORIES`](#nemo_gym-tasks-harbor-digest-_DIRECTORIES)

[`_IGNORED`](#nemo_gym-tasks-harbor-digest-_IGNORED)

[`_SINGLE_FILES`](#nemo_gym-tasks-harbor-digest-_SINGLE_FILES)

### API

```python
nemo_gym.tasks.harbor.digest._ignored(
    relative: str
) -> bool
```

```python
nemo_gym.tasks.harbor.content_hash(
    path: pathlib.Path
) -> str
```

Digest the task folder at `path`.

```python
nemo_gym.tasks.harbor.digest.DIGEST_KEY = '_ng_digest'
```

```python
nemo_gym.tasks.harbor.digest._DIRECTORIES = ('environment', 'tests', 'solution', 'steps')
```

```python
nemo_gym.tasks.harbor.digest._IGNORED = ('__pycache__', '*.pyc', '.DS_Store', '*.swp', '*.swo', '*~')
```

```python
nemo_gym.tasks.harbor.digest._SINGLE_FILES = ('task.toml', 'instruction.md', 'README.md', 'trajectory.json')
```