Skip to content

[codex] publish 26.07 release notes, migration checklist, and cut the 26.07 GA docs train - #2143

Merged
abhinavg4 merged 16 commits into
NVIDIA-NeMo:mainfrom
lbliii:codex/docs-26-06-release-notes
Jul 28, 2026
Merged

abhinavg4 merged 16 commits into
NVIDIA-NeMo:mainfrom
lbliii:codex/docs-26-06-release-notes

Conversation

@lbliii

@lbliii lbliii commented Jun 30, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Publishes the NeMo Curator 26.07 (v1.3.0) release-level documentation rollup tracked by #2120 and the supplemental code-freeze audits in #2118.

Review feedback addressed

Per @ayushdg's review:

  • Release train is 26.07, not 26.06. The release notes, migration checklist, page slug (26-07-migration), nav entry, section anchors, and every cross-link now say 26.07. The file was renamed 26-06-migration.mdx -> 26-07-migration.mdx.
  • uv venv --python 3.11. Step 1 now leads with the uv flow and keeps the stdlib venv commands as the non-uv alternative.
  • Custom stage scheduling was not a migration. Removed step 8 ("Normalize Custom Stage Scheduling") and its at-a-glance row, and renumbered the remaining steps. The with_() and stage-spec standardization from #2077 / #2086 stays documented as a feature under "Consistent Stage Scheduling and with_() Overrides" in the release notes.

Also refreshed the stale forward-looking notices on the main train that still said "Python 3.10 support will be removed in 26.06" and listed Python 3.10-3.12. They now state that 3.10 support was removed in 26.07 and list 3.11-3.13, matching requires-python = ">=3.11,<3.14". Bumped the two "tested 26.06 stack" references in the inference-server guide.

@sarahyurick — the dependency table still matches r1.3.0's pyproject.toml; leaving the request for @ayushdg / @praateekmahajan / @suiyoubi to confirm whether any entry needs extra context.

26.07 version cut (GA)

This PR now also freezes the main preview tree as the 26.07 GA train and repoints latest, so publishing after merge makes 26.07 GA:

  • Snapshots fern/versions/main/pages/ -> fern/versions/v26.07/pages/ (177 pages, verified byte-identical to main).
  • Adds fern/versions/v26.07.yml with ./main/ path prefixes rewritten to ./v26.07/ (nav otherwise identical to main.yml).
  • Repoints the versions/latest.yml symlink from v26.04.yml to v26.07.yml, so /latest/... serves 26.07.
  • Adds the 26.07 · v1.3.0 entry to docs.yml versions: and relabels Latest as Latest · v1.3.0 (26.07), matching nemo_curator/package_info.py.
  • Adds the four 26.07 redirect families (version-root index.html, calendar-train 26.07 paths, nested :path*/index.html, Sphinx-style :path*.html), each placed to match the existing per-version ordering ahead of the catch-alls.

main stays as the Main · preview train and keeps moving forward; v26.04, v26.02, and v25.09 are untouched.

Note that merging alone does not publish. Production updates only on a docs/v* tag push (or manual dispatch of publish-fern-docs.yml).

Two follow-ups intentionally left out of scope:

  • No GA was demoted or removed. fern/README.md says to "demote/remove the oldest GA per the support policy" — I do not know the policy, so all four trains remain listed.
  • CHANGELOG.md has no 1.3.0 section (it stops at 1.0.0). fern/README.md asks that version display-names align with CHANGELOG.md; the display-name matches package_info.py, but the changelog itself needs a separate update.

Release-boundary update

PR #2063 is now on main, so the branch no longer says resumability is unreleased. The release notes and migration checklist document released Pipeline.run(checkpoint_path=...) behavior, its pre-existing-Ray requirement, local checkpoint storage, resumability-safe stage validation, and NoneTask / FailedTask semantics.

PR #2059 is also included as a new capability: deterministic source sharding across SLURM arrays, shard completion manifests, and incomplete-shard retry discovery.

Supplemental coverage

The update explicitly captures #1427, #1679, #1746, #1762, #1763, #1774, #1844, #1855, #1870, #1880, #1888, #1890, #1895, #1927, #1957, #2059, and #2063. Detailed #1927 guidance is in #2149, native resumability is in #2134, and SLURM arrays are in #2154.

Merge order / documentation dependencies

Merge this PR after the detailed feature workstreams so its canonical internal links resolve to their final pages:

Validation

  • Rebased onto current main (merge conflict in index.mdx resolved in favor of the 26.07 rewrite; the conflicting hunk was the 26.04 InferenceServer section that this PR removes).
  • fern check: 0 errors
  • git diff --check: passed
  • all 14 Python code blocks in the release notes and migration page parse with ast
  • anchor audit: every 26-07-migration#... link resolves to a heading in the renamed file
  • no remaining 26.06 / 26-06 references under fern/versions/main/
  • fern check re-run after the version cut: 0 errors
  • all 177 nav path: entries in v26.07.yml resolve to real files; latest.yml resolves to v26.07.yml
  • diff -r confirms versions/v26.07 is byte-identical to versions/main, and the two nav files are identical modulo the path prefix
  • redirect audit: no duplicate sources, and every 26.07 rule precedes the catch-alls
  • re-synced the snapshot after merging [codex] docs: expand Nemotron-Parse tuning guidance #2131 from main

Closes #2120
Part of #2144
Parent tracker: #2118

@copy-pr-bot

copy-pr-bot Bot commented Jun 30, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

lbliii added 2 commits July 1, 2026 14:00
Signed-off-by: Lawrence Lane <25370251+lbliii@users.noreply.github.com>
Signed-off-by: Lawrence Lane <25370251+lbliii@users.noreply.github.com>
Signed-off-by: Lawrence Lane <25370251+lbliii@users.noreply.github.com>
@lbliii
lbliii marked this pull request as ready for review July 1, 2026 21:00
@lbliii
lbliii requested a review from a team as a code owner July 1, 2026 21:00
@lbliii
lbliii requested review from meatybobby and removed request for a team July 1, 2026 21:00
@greptile-apps

greptile-apps Bot commented Jul 1, 2026 •

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR publishes the NeMo Curator 26.07 (v1.3.0) documentation rollup: it replaces the stale 26.04 release notes page with categorized 26.07 notes and adds a new step-by-step migration checklist. All other touched pages receive targeted corrections to Python version ranges and stack-version references that previously pointed to 26.04/26.06 language.

  • New 26-07-migration.mdx: 10-step migration checklist with before/after code examples covering Python upgrade, task-ID removal, sentinel task construction, video preprocessing option removal, caption variant rename, InferenceModelConfig replacement, ASR worker rename, architecture-specific dependencies, and pipeline resumability.
  • Rewritten index.mdx: 26.07 release notes with What's New, Improvements, Fixes, Breaking Changes, Dependency Changes, and Upgrade Checklist sections; all internal fragment links use numeric-prefixed anchors matching the heading anchor format generated by the Fern MDX renderer.
  • Navigation and supporting pages: main.yml adds the migration checklist between Overview and Migration FAQ; deployment, requirements, installation, and inference-server pages update Python ranges from 3.10-3.12 to 3.11-3.13 and correct the forward-looking "will be removed in 26.06" warnings to past-tense "was removed in 26.07".

Confidence Score: 5/5

Documentation-only change; no runtime code is modified and all internal cross-links use the correct numeric-prefixed anchor format.

Every changed file is pure documentation (MDX, YAML nav config). Python version ranges, stack version references, and forward-looking deprecation warnings are all updated consistently across the seven files. The new migration checklist anchors in index.mdx match the heading slugs generated for the numbered sections in 26-07-migration.mdx. The previous review concern about numeric-prefixed anchors has been addressed — all fragment links now include the step-number prefix.

Files Needing Attention: No files require special attention. The migration checklist and release notes are internally consistent and cross-linked correctly.

Important Files Changed

Filename Overview
fern/versions/main/pages/about/release-notes/26-07-migration.mdx New migration checklist for 26.07 upgrade; 10-step guide with before/after code examples, at-a-glance table, and correct numeric-prefixed anchors for all internal links.
fern/versions/main/pages/about/release-notes/index.mdx Replaced 26.04 release notes with 26.07 release notes; all Python version references updated to 3.11-3.13 and internal fragment links use numeric-prefixed anchors consistent with headings in the new migration file.
fern/versions/main.yml Adds 26-07-migration page to the Release Notes navigation section between Overview and Migration FAQ with the correct slug.
fern/versions/main/pages/admin/deployment/index.mdx Updated system requirements and warning block: Python 3.10-3.12 → 3.11-3.13, stale 'will be removed in 26.06' changed to 'was removed in 26.07', link updated to new migration checklist.
fern/versions/main/pages/admin/deployment/requirements.mdx Updated Python version in system requirements, warning block, and software dependencies line (Python 3.10+ → 3.11+); all links updated to 26.07 migration checklist.
fern/versions/main/pages/curate-text/synthetic/inference-server.mdx Two occurrences of 'tested 26.06 stack' updated to 'tested 26.07 stack'; no other logic changes.
fern/versions/main/pages/get-started/installation.mdx Quick Start requirements updated to Python 3.11-3.13, warning changed from forward-looking to past-tense, link points to 26.07 migration checklist.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Release Notes Navigation] --> B[Overview - index.mdx: 26.07 release notes]
    A --> C[26.07 Migration Checklist - 26-07-migration.mdx: NEW]
    A --> D[Migration FAQ - migration-faq.mdx]
    B -->|links to| C
    C -->|links back to| B
    B --> E[Breaking Changes section]
    E --> C
    C --> F[Step 1: Upgrade Python]
    C --> G[Step 2: Stop Supplying task_id]
    C --> H[Step 3: Instantiate Sentinel Tasks]
    C --> I[Step 4: Remove Video Preprocessing Option]
    C --> J[Step 5: Replace Unversioned Caption Variant]
    C --> K[Step 6: Replace InferenceModelConfig]
    C --> L[Step 7: Separate ASR DataLoader Workers]
    C --> M[Step 8: Review Architecture Dependencies]
    C --> N[Step 9: Configure Resumability]
    C --> O[Step 10: Run Post-Upgrade Checks]
    style C fill:#d4edda,stroke:#28a745
    style B fill:#d1ecf1,stroke:#17a2b8
Loading

Reviews (8): Last reviewed commit: "Merge branch 'main' into codex/docs-26-0..." | Re-trigger Greptile

Signed-off-by: Lawrence Lane <25370251+lbliii@users.noreply.github.com>
@lbliii
lbliii force-pushed the codex/docs-26-06-release-notes branch from 303c2a2 to 28712ec Compare July 2, 2026 02:10
Signed-off-by: Lawrence Lane <25370251+lbliii@users.noreply.github.com>
@lbliii

lbliii commented Jul 2, 2026

Copy link
Copy Markdown
Contributor Author

Adversarial release-doc review follow-up is now included in commit 86e286845:

  • Added a What's New entry and breaking-change notice for the expanded Qwen/Nemotron caption model matrix.
  • Added the required migration from the removed qwen caption variant to qwen2.5 or qwen3.
  • Added a What's New entry and breaking-change notice for typed Ray Serve/Dynamo inference-server configuration.
  • Added before/after migration guidance for the removed InferenceModelConfig API.
  • Updated the migration summary, section anchors, and post-upgrade checks.

This makes #2147 and #2148 explicit content dependencies of the release rollup. Please merge the detailed feature PRs first and keep #2143 last so the consolidated 26.06 page can be rebased once and retain all release-note material.

Validation after rebasing on the current remote branch:

  • fern check: 0 errors
  • git diff --check: passed
  • all 15 Python code blocks in the migration checklist parse with ast

Cross-PR integration and publication staging are tracked in #2160.

@github-actions

github-actions Bot commented Jul 6, 2026 •

Copy link
Copy Markdown
Contributor

@lbliii

lbliii commented Jul 7, 2026

Copy link
Copy Markdown
Contributor Author

@meatybobby friendly ping on this docs PR for the #2118 release-docs workstream — when you have a moment, could you take a look at the 26.06 release notes and migration checklist?

Docs preview: https://nvidia-preview-codex-docs-26-06-release-notes.docs.buildwithfern.com/nemo/curator

Thanks!

@lbliii lbliii added the docs-release-26.07 Documentation work tracked by the 26.07 release epic (#2118) label Jul 13, 2026 — with ChatGPT Codex Connector
Comment thread fern/versions/main/pages/about/release-notes/index.mdx Outdated
@lbliii
lbliii requested a review from sarahyurick July 16, 2026 16:55

lbliii commented Jul 16, 2026

Copy link
Copy Markdown
Contributor Author

@sarahyurick, thanks for already taking a look here. Once your comments are addressed, could you please provide a formal approval if the 26.06 release notes and migration checklist look ready? Thank you!

Comment thread fern/versions/v26.07/pages/about/concepts/streaming.mdx Outdated
Comment thread fern/versions/v26.07/pages/about/concepts/throughput.mdx Outdated
Comment thread fern/versions/v26.07/pages/admin/deployment/slurm/image.mdx Outdated
Comment thread fern/versions/v26.07/pages/api-reference/executors/experimental.mdx Outdated

```python
@dataclass
class MyGpuStage(ProcessingStage[AudioTask, AudioTask]):

@sarahyurick sarahyurick Jul 27, 2026 •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It doesn't declare GPU resources.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed — the example was labelled a GPU stage but declared no resources. Added, along with the imports the snippet needs:

resources: Resources = field(
    default_factory=lambda: Resources(gpu_memory_gb=16.0)
)

Used gpu_memory_gb rather than gpus since this is a single-GPU stage, per the guidance on the Resources page.

filtered = df[df["score"] > self.threshold]

if filtered.empty:
return None # Filter out entire batch

@sarahyurick sarahyurick Jul 27, 2026 •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should return NoneTask now, since it is supposed to represent a filtered task.

But I guess it is okay if we do not update the documentation for this yet.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added a short note rather than changing the example, since returning None is still the supported way to filter a batch out:

Returning None remains the supported way to filter a batch out. The resumability layer converts it to a NoneTask, which represents a filtered task and consumes that branch, so a None return is what you will see surfaced as NoneTask downstream.

Happy to go further and rewrite the snippet to construct NoneTask directly if you would rather document it that way — just say the word.

"""
```

### `build()`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Users shouldn't ever need to interact with build I think.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed. Left the section in place since it explains what happens between add_stage() and execution, but flagged it as not user-facing:

run() calls build() for you. You should not need to call it directly; it is documented here to explain what happens between add_stage() and execution.

Comment on lines +284 to +289
ray_stage_spec={
RayStageSpecKeys.RAY_NUM_CPUS: 1.0,
},
xenna_stage_spec={
"worker_max_lifetime_m": 45,
},

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably folks would never specify both ray_stage_spec and xenna_stage_spec right? Just whichever executor they are using for the pipeline?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right — reworked the example so each spec is paired with the executor it belongs to, instead of showing both set at once. The main snippet now sets only ray_stage_spec, followed by a Xenna equivalent, with:

Both specs are shown together here only to document the arguments. In practice you set the one matching the executor you run the pipeline with [...] Setting both is harmless — each executor reads only its own spec — but it is only useful if the same stage runs under both backends.

Let me know if the last sentence overstates it and you would rather I just drop it.

Comment thread fern/versions/v26.07/pages/curate-text/synthetic/nemo-data-designer.mdx Outdated
Comment thread fern/versions/v26.07/pages/reference/infrastructure/container-environments.mdx Outdated
Comment thread fern/versions/v26.07/pages/reference/infrastructure/execution-backends.mdx Outdated
Applies @sarahyurick's review. Each change is mirrored in
fern/versions/main/pages and the frozen fern/versions/v26.07/pages so
the two trees stay byte-identical.

Corrections verified against source:

- Fix the SLURM client name. The class is SlurmRayClient, not
  RaySlurmClient; the documented import would have raised ImportError.
  Also note that it subclasses RayClient and behaves identically on a
  single node or outside SLURM.
- Fix the RayActorPoolExecutor import. nemo_curator.backends.experimental
  no longer exists; the executor lives in
  nemo_curator.backends.ray_actor_pool.
- Fix the NeMo Data Designer install. data-designer ships in sdg_cpu and
  sdg_cuda12, not the text extras.
- Drop Dask from the container component list. It is present only as a
  transitive dependency of the RAPIDS raft-dask-cu12 package, not as an
  execution framework.
- Declare GPU resources on the audio batch-stage example, with the
  imports the snippet needs.
- Note that Pipeline.build() is called by run() and is not part of the
  user-facing flow.
- Split the with_() example so each stage spec is paired with its own
  executor instead of setting both at once.
- Note that a None return surfaces downstream as NoneTask.
- Drop 'and others' from the streaming executor list.

Removals:

- Delete the SLURM image-curation page. It used ImageTextPairDataset and
  nemo_curator.utils.distributed_utils.get_client, both removed with
  Dask.
- Delete the experimental-executors API page, whose module no longer
  exists.
- Remove both nav entries, the incoming cards and cross-references, and
  add redirects for the unversioned, latest, main, and v26.07 URLs.
  Older trains still host both pages and are left alone.

Signed-off-by: Lawrence Lane <25370251+lbliii@users.noreply.github.com>
@lbliii

lbliii commented Jul 28, 2026

Copy link
Copy Markdown
Contributor Author

Thanks @sarahyurick — all 11 comments addressed in 3fc7eea. Every change is mirrored in both fern/versions/main/pages and the frozen fern/versions/v26.07/pages so the two trees stay byte-identical.

Three of your comments turned out to be broken code rather than just stale prose, so flagging those specifically:

Page Problem Fix
about/concepts/throughput.mdx RaySlurmClient does not exist — the class is SlurmRayClient. The documented import would raise ImportError. Corrected the name in all three spots, plus your single-node fallback note
reference/infrastructure/execution-backends.mdx from nemo_curator.backends.experimental import RayActorPoolExecutor — that module is gone Now nemo_curator.backends.ray_actor_pool
curate-text/synthetic/nemo-data-designer.mdx Install said text_cuda12, which does not contain data-designer at all Now sdg_cpu / sdg_cuda12

Both deletions confirmed against source before removing: the SLURM image page used ImageTextPairDataset and nemo_curator.utils.distributed_utils.get_client (neither module exists), and nemo_curator/backends/experimental/ is gone. I also removed the nav entries, the incoming cards on /api-reference and /admin, and two cross-references from the multi-node Ray page, then added redirects for the unversioned, latest, main, and v26.07 URLs. Older trains still host both pages, so their URLs are untouched.

Two I answered rather than changed outright — NoneTask (kept return None as the supported pattern, added a note) and the dual stage-spec example (split per executor, with a caveat sentence). Happy to go further on either if you would prefer.

Validation: fern check 0 errors; deletion-related warnings went 10 → 3, and the 3 remaining are unrelated (one pre-existing translation.mdx alias warning, two from the gitignored generated library reference). All 56 Python blocks in the touched files parse, every nav path resolves, and no dangling references to either deleted page remain.

/ok to test 3fc7eea

The Data Designer edit added two lines above the placeholder
api_key="unused" example, shifting it from line 183 to 185 in both the
main and v26.07 trees. detect-secrets pins line numbers, so the baseline
needed realigning. Same hash, no new secret material.

Signed-off-by: Lawrence Lane <25370251+lbliii@users.noreply.github.com>
@lbliii

lbliii commented Jul 28, 2026

Copy link
Copy Markdown
Contributor Author

/ok to test b37123bd0e0dfd57ad2eb6a4e2fbb7b1ac2e8ac1

@lbliii

lbliii commented Jul 28, 2026

Copy link
Copy Markdown
Contributor Author

/ok to test b37123b

@copy-pr-bot

copy-pr-bot Bot commented Jul 28, 2026

Copy link
Copy Markdown

/ok to test b37123bd0e0dfd57ad2eb6a4e2fbb7b1ac2e8ac1

@lbliii, there was an error processing your request: E2

See the following link for more information: https://docs.gha-runners.nvidia.com/cpr/e/2/


```bash
uv pip install --extra-index-url https://pypi.nvidia.com nemo-curator[text_cuda12]
uv pip install nemo-curator[sdg_cpu]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for the confusion, I meant I think the NDD stages need both the text and SDG extras, not just one or the other.

(And the inference server extra as you already included below.)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@lbliii Can you please add this in a followup? Thanks. I will merge the PR now to ensure no rebasing is required later.

This branch was previously deployed

3 inactive deployments
nemo-ci — b37123bd Deployed Jul 28, 2026 by copy-pr-bot[bot] via L0_Unit_Test_GPU-sdg #5096
public — b37123bd Deployed Jul 28, 2026 by copy-pr-bot[bot] via release / finalize / notify #689
test — b37123bd Deployed Jul 28, 2026 by copy-pr-bot[bot] via cicd-wait-in-queue #5096
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs-release-26.07 Documentation work tracked by the 26.07 release epic (#2118)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Docs] Publish 26.07 release notes and migration checklist

4 participants