Skip to navigation

nemo_gym.data.tasks.harbor.scaffold

View as Markdown

gym dataset init: a dataset folder in exactly the shape the loader accepts.

One task, ready to validate and run. Everything written here is read back by the loader in a test, so the scaffold cannot drift from what gym eval run and gym dataset validate expect.

Module Contents

Functions

NameDescription
init_datasetWrite <root>/<name without org>/ with dataset.toml and one task folder; refuses to overwrite.
split_dataset_nameorg/name as Harbor 0.22.0 requires it; a bare name gets DEFAULT_ORG.

Data

ANSWER_TEMPLATE_MD

DATASET_TOML

DEFAULT_IMAGE

DEFAULT_ORG

INSTRUCTION_MD

INSTRUCTION_TEMPLATE_MD

SOLVE_SH

TASKS_JSONL

TASK_DATA_PY

TASK_TOML

TEMPLATE_TASK_TOML

TEST_SH

VERIFIER_PY

_NAME_SEGMENT

API

nemo_gym.data.tasks.harbor.scaffold.init_dataset(
root: pathlib.Path,
name: str,
image: str = DEFAULT_IMAGE,
task: str = 'hello',
parameterized: bool = False
) -> pathlib.Path

Write <root>/<name without org>/ with dataset.toml and one task folder; refuses to overwrite.

name is org/name or a bare name, which is written as local/<name> so that Harbor accepts the manifest. The folder is the name without the org, as harbor task init does for a task. With parameterized the folder is a template instead: task.toml at its root (its [task].name is rewritten to <org>/<task_id> in every rendered task, the name Harbor keys a task on), instruction.template.md, tasks.jsonl with two rows, task_data.py, a Python verifier that reads answer.md and the reference answer as solution/answer.template.md, which prepare renders into one task folder per row (nemo_gym.data.tasks.harbor.parameterized).

nemo_gym.data.tasks.harbor.scaffold.split_dataset_name(
name: str
) -> tuple[str, str]

org/name as Harbor 0.22.0 requires it; a bare name gets DEFAULT_ORG.

Raises ValueError for a name Harbor’s manifest would reject, so nothing is written for it.

nemo_gym.data.tasks.harbor.scaffold.ANSWER_TEMPLATE_MD = '{{ task_data.answer }}\n'
nemo_gym.data.tasks.harbor.scaffold.DATASET_TOML = '# Harbor\'s dataset file. The [dataset] table is Harbor\'s; the [gym] table is ...
nemo_gym.data.tasks.harbor.scaffold.DEFAULT_IMAGE = 'python:3.12-slim'
nemo_gym.data.tasks.harbor.scaffold.DEFAULT_ORG = 'local'
nemo_gym.data.tasks.harbor.scaffold.INSTRUCTION_MD = 'Create a file called `hello.txt` in the working directory containing the single...
nemo_gym.data.tasks.harbor.scaffold.INSTRUCTION_TEMPLATE_MD = 'Solve this problem:\n\n{{ task_data.question }}\n\nWrite only the final answer ...
nemo_gym.data.tasks.harbor.scaffold.SOLVE_SH = '#!/bin/bash\n# The reference solution `gym dataset validate` runs; it must scor...
nemo_gym.data.tasks.harbor.scaffold.TASKS_JSONL = '{"task_id": "{task}-1", "task_data": {"question": "What is 2 + 2?", "answer": "...
nemo_gym.data.tasks.harbor.scaffold.TASK_DATA_PY = "# The TaskData model every task's fields (tasks.jsonl rows, rendered as task_da...
nemo_gym.data.tasks.harbor.scaffold.TASK_TOML = 'schema_version = "1.4"\n\n[task]\nname = "{org}/{task}"\n\n[environment]\ndocke...
nemo_gym.data.tasks.harbor.scaffold.TEMPLATE_TASK_TOML = TASK_TOML.replace('[task]\n', '# Rendered per row as `<org>/<task_id>`: Harbor n...
nemo_gym.data.tasks.harbor.scaffold.TEST_SH = '#!/bin/bash\n# Harbor\'s verifier contract: write the reward to /logs/verifier/...
nemo_gym.data.tasks.harbor.scaffold.VERIFIER_PY = '# The Python verifier: runs inside the task\'s sandbox through a test.sh shim N...
nemo_gym.data.tasks.harbor.scaffold._NAME_SEGMENT = re.compile('^[a-zA-Z0-9][a-zA-Z0-9._-]*$')