Severity: 🟠 high | Category: Documentation | Finding ID: DOC-d5e74f19
Location: fern/versions/latest/pages/contribute/environments/new-environment.mdx:16
Problem
new-environment.mdx was rewritten since v0.5.0 around a manifest-first flow: ':16 Each newly onboarded environment or benchmark has a manifest.yaml'. EnvironmentManifest (nemo_gym/environment/manifest.py:185-224) declares 22 fields with extra="forbid", several required with non-obvious constraints (modality and description are required non-empty strings, authors is a unique non-empty list, licensing must be an SPDX expression or one of internal/proprietary/unknown, reward is a nested object). The page gives only a 4-row 'Field group / Authority' prose table — no sample YAML, no per-field types, no required/optional marking. find . -name manifest.yaml returns zero files in the repo (gym list benchmarks confirms 'manifests 0/283'), so there is no working example to copy either.
Suggested fix
Add a complete annotated manifest.yaml example to new-environment.mdx (the one gym env init --environment my_eval --profile custom-gym-verifier generates), plus a field-reference table with type, required/optional, and allowed values, generated from the EnvironmentManifest JSON Schema the page already says Gym can emit. Call out extra="forbid" so authors know unknown keys are hard errors.
Evidence
manifest.py:190 `extra="forbid"`, :205 `modality: NonEmptyString`, :207 `authors: list[...] = Field(min_length=1)`; `find . -name manifest.yaml -not -path './.git/*'` -> 0 results
Found by the doc-reviewer critic in DX review Gym-1-20260821203248 — incremental from v0.5.0 to fa0d25158. Parent tracker #2214.
Severity: 🟠 high | Category: Documentation | Finding ID:
DOC-d5e74f19Location:
fern/versions/latest/pages/contribute/environments/new-environment.mdx:16Problem
new-environment.mdx was rewritten since v0.5.0 around a manifest-first flow: ':16 Each newly onboarded environment or benchmark has a
manifest.yaml'.EnvironmentManifest(nemo_gym/environment/manifest.py:185-224) declares 22 fields withextra="forbid", several required with non-obvious constraints (modalityanddescriptionare required non-empty strings,authorsis a unique non-empty list,licensingmust be an SPDX expression or one of internal/proprietary/unknown,rewardis a nested object). The page gives only a 4-row 'Field group / Authority' prose table — no sample YAML, no per-field types, no required/optional marking.find . -name manifest.yamlreturns zero files in the repo (gym list benchmarksconfirms 'manifests 0/283'), so there is no working example to copy either.Suggested fix
Add a complete annotated
manifest.yamlexample to new-environment.mdx (the onegym env init --environment my_eval --profile custom-gym-verifiergenerates), plus a field-reference table with type, required/optional, and allowed values, generated from theEnvironmentManifestJSON Schema the page already says Gym can emit. Call outextra="forbid"so authors know unknown keys are hard errors.Evidence
Found by the
doc-reviewercritic in DX reviewGym-1-20260821203248— incremental from v0.5.0 tofa0d25158. Parent tracker #2214.