fix: align FlashInfer wheel metadata with vLLM - #633
Conversation
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
WalkthroughChangesRelease process documentation
Dependency and installation configuration
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related PRs
Suggested labels: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
0485f51 to
3cc4ddf
Compare
Greptile SummaryThis PR resolves a dependency conflict between the published wheel metadata and vLLM 0.24.0 by downgrading the pinned FlashInfer packages (
Confidence Score: 5/5Safe to merge — the change is a targeted version pin correction and cleanup of masking overrides with no logic changes. All four changed files are dependency metadata or documentation. The version downgrade from 0.6.13 to 0.6.12 is the correct alignment with vLLM 0.24.0's published wheel metadata, the lockfile hashes are updated consistently, and the override removal exposes rather than introduces risk. The PR description documents passing uv lock --check and 1,634 tests. CONTRIBUTING.md — the hardcoded vLLM commit SHA in the smoke-test index URL will need updating whenever vLLM is bumped; no other files require special attention. Important Files Changed
|
There was a problem hiding this comment.
Actionable comments posted: 2
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 5b577214-c987-480d-abba-a37bb958bb98
⛔ Files ignored due to path filters (1)
uv.lockis excluded by!**/*.lock,!uv.lock
📒 Files selected for processing (3)
CONTRIBUTING.mddocs/user-guide/getting-started.mdpyproject.toml
📜 Review details
⏰ Context from checks skipped due to timeout. (3)
- GitHub Check: Greptile Review
- GitHub Check: CodeRabbit / Review
- GitHub Check: GPU Smoke Tests (3.13)
🧰 Additional context used
📓 Path-based instructions (9)
**/*.{md,markdown,py}
📄 CodeRabbit inference engine (.cursor/rules/agent-markdown-style.mdc)
**/*.{md,markdown,py}: Avoid decorative bold (**text**) in list items, body text, and docstrings; use structural cues (headers, list markers, colons, backticks) for emphasis instead
Use backticks for code identifiers, paths, and CLI commands in markdown and docstrings
Files:
docs/user-guide/getting-started.mdCONTRIBUTING.md
**/*.{md,markdown}
📄 CodeRabbit inference engine (.cursor/rules/agent-markdown-style.mdc)
**/*.{md,markdown}: Bold is acceptable only in markdown tables where it's the conventional way to mark header-like cells in the body
Use##headers to segment markdown sections instead of bold text
Use--(em-dash) instead of-(hyphen) for asides in markdown
Files:
docs/user-guide/getting-started.mdCONTRIBUTING.md
docs/**/*.md
📄 CodeRabbit inference engine (.cursor/rules/writing-docs.mdc)
docs/**/*.md: Use MkDocs Material admonition syntax (!!! note, !!! warning, ??? tip) for highlighting important information and collapsible sections in documentation
Use MkDocs Material tabs syntax (=== "Label") to present alternative views or language-specific examples in documentation
Use code block syntax with title and highlight line parameters (title="filename", hl_lines="2 3") for code examples in documentation
Use Mermaid diagram syntax (```mermaid flowchart, etc.) for visualizations in documentationClassify documentation pages as tutorial, how-to, explanation, or reference, and use MkDocs Material syntax such as admonitions, tabs, and titled/highlighted code blocks.
docs/**/*.md: Documentation pages must be placed under the appropriatedocs/subdirectory according to the Diataxis structure.
When adding or editing a documentation page, add it to thenav:section ofmkdocs.yml.
Files:
docs/user-guide/getting-started.md
**/*.md
📄 CodeRabbit inference engine (STYLE_GUIDE.md)
**/*.md: Use single backticks for code identifiers, paths, and CLI commands in Markdown, and use--for asides rather than a hyphen.
Do not use decorative bold in Markdown body text or list items; bold is acceptable only in table-header-like cells and MkDocs Material card-grid titles.
For Mermaid diagrams, avoid spaces in node IDs, quote labels containing special characters, and do not use explicit colors or styles.Use the repository's Markdown style and documentation conventions, including supported MkDocs Material features where appropriate.
Files:
docs/user-guide/getting-started.mdCONTRIBUTING.md
**/*
📄 CodeRabbit inference engine (STYLE_GUIDE.md)
**/*: Every source file must include the required SPDX copyright and license header; use HTML comments for Markdown, hash comments for.py,.sh,.yaml, and.yml, and hash-comment headers inside YAML frontmatter for Markdown files with frontmatter.
Ensure files end with a newline and have no trailing whitespace; use a single space between sentences.
Files:
docs/user-guide/getting-started.mdpyproject.tomlCONTRIBUTING.md
⚙️ CodeRabbit configuration file
**/*: Review as a senior maintainer for NeMo Safe Synthesizer. Prioritize issues that can change behavior, break user workflows, weaken privacy guarantees, hide failures, make tests unreliable, or create maintenance risk. Avoid generic style commentary unless it points to a concrete project convention that automated tools will not catch.
Comment only when the finding is actionable and tied to changed code. For each finding, state the impact, the condition that triggers it, and the smallest practical fix. Prefer one precise comment over broad advice. Do not ask for refactors outside the PR scope unless the changed code creates the problem.
Review type guidance: - Potential issue: use for correctness bugs, data loss, privacy leaks,
security risks, broken public APIs, invalid config behavior, missing
validation, hidden failures, nondeterministic tests, or CI breakage.
- Refactor suggestion: use for local maintainability problems introduced
by the diff when they have clear future cost, such as duplicated setup,
unclear boundaries, over-mocking, avoidable complexity, or opaque test
helpers.- Nitpick: avoid in chill mode. Do not emit formatting, import-order,
wording, or style-only comments unless automated tools cannot catch the
issue and it affects maintainability.Severity guidance: - Critical: security/privacy leaks, data loss, training/test/holdout
contamination, or broken release/package/core pipeline execution.
- Major: incorrect generation/training/evaluation behavior, broken
CLI/SDK public API, invalid config defaults or validators, or GPU/vLLM
cleanup and process-isolation bugs likely to fail CI or production
runs.- Minor: localized bugs, missing focused tests for changed behavior, or
bad test patterns that weaken regression coverage.- Trivial: small cleanup with no behavior impact. Usually suppress in
chill mode.- Info: context only. Avoid unless it helps reviewers understand risk.
Safe-Synthesizer-specific review focus: - Data ...
Files:
docs/user-guide/getting-started.mdpyproject.tomlCONTRIBUTING.md
**/*.{py,sh,yaml,yml,md}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
**/*.{py,sh,yaml,yml,md}: All source files with.py,.sh,.yaml,.yml, or.mdextensions must include SPDX copyright headers.
Run the repository's pinned formatting and linting tasks throughmise run formatandmise run checkrather than invoking Ruff or ty directly.
Files:
docs/user-guide/getting-started.mdCONTRIBUTING.md
**
⚙️ CodeRabbit configuration file
**:AGENTS.md
Guide for AI agents (Cursor, Windsurf, Claude Code, etc.) working in the Safe-Synthesizer repo.
This project loads local developer preferences from
@AGENTS.local.md. You MUST read this file if it exists and give its instructions top priority.Skills
Repo-specific skills live in
.agents/skills/; see.agents/README.mdfor the catalog. Read a skill when the task matches its scope instead of copying workflow details into this file.Durable implementation guidance belongs with the code it describes: function and class docstrings for public contracts and source comments for local invariants. Test-suite guidance belongs in
tests/TESTING.md.Repo Conventions
See STYLE_GUIDE.md for detailed code style conventions (Python, markdown, Dockerfiles, shell scripts, testing, config files, docstrings).
Use
uvfor everything -- neverpipor rawpython. Python 3.11–3.13 with modern syntax (X | Y,list[str],Self). Python 3.14+ is not supported.Common commands:
mise run test(unit tests),mise run format(auto-fix formatting + lint + copyright),mise run check(read-only local quality checks),mise run validate(pre-PR quality, lock, and CI unit checks),mise run typecheck(ty only). Always use mise tasks or the wrapper scripts intools/instead of runningruffortydirectly. Useuv runfor Python execution. When in doubt, inspectmise tasksandpytest --markers.The canonical
uv synccommand for a full GPU/dev environment is:uv sync --frozen --extra cu129 --extra engine --group devBare
uv sync --frozen(without extras) installs an incomplete environment --ty, import checks, and GPU tests will fail.Feature branches off
main. Branch names often include an issue number prefix (e.g.,<author>/123-short-name).Do ...
Files:
docs/user-guide/getting-started.mdpyproject.tomlCONTRIBUTING.md
docs/**
⚙️ CodeRabbit configuration file
Review documentation as MkDocs Material content. Check Diataxis fit, accurate commands, internal links, code fences, and markdown style from STYLE_GUIDE.md.
Files:
docs/user-guide/getting-started.md
pyproject.toml
📄 CodeRabbit inference engine (.cursor/rules/repo-navigation.mdc)
Configure package metadata, dependencies, extras (cpu/cu129/engine), and uv configuration in
pyproject.tomlIn
pyproject.toml, order sections as[project],[dependency-groups],[project.optional-dependencies],[tool.uv],[build-system], then[tool.*]; use spaces around=and# commentstyle comments.
Files:
pyproject.toml
⚙️ CodeRabbit configuration file
Treat pyproject.toml as high-risk. Check package metadata, uv indexes, dependency groups, optional extras, Python version bounds, hatch config, ty config, script entry points, dependency consistency, and whether changes require regenerating uv.lock.
Files:
pyproject.toml
🧠 Learnings (1)
📓 Common learnings
Learnt from: CR
Repo: NVIDIA-NeMo/Safe-Synthesizer
Timestamp: 2026-07-10T03:58:13.043Z
Learning: All contributions must include DCO sign-off and a cryptographic commit signature; both requirements are independent.
Learnt from: CR
Repo: NVIDIA-NeMo/Safe-Synthesizer
Timestamp: 2026-07-10T03:58:13.043Z
Learning: Commits merged to `main` must follow Conventional Commits syntax with a valid lowercase type, optional scope, description of at most 100 characters, and optional breaking-change marker.
Learnt from: CR
Repo: NVIDIA-NeMo/Safe-Synthesizer
Timestamp: 2026-07-10T03:58:13.043Z
Learning: Branches other than `main` must use the lowercase `<author>/<description>`, `<author>/<issue-id>-<description>`, or optional-type variants defined by the branch naming convention.
Learnt from: CR
Repo: NVIDIA-NeMo/Safe-Synthesizer
Timestamp: 2026-07-10T03:58:13.043Z
Learning: Before submitting a pull request, run formatting, checks, and tests; all existing tests must pass, new features must include tests, and bug fixes must include regression tests.
Learnt from: CR
Repo: NVIDIA-NeMo/Safe-Synthesizer
Timestamp: 2026-07-10T03:58:13.043Z
Learning: Use `mise` tasks with the pinned tool versions for repository setup, formatting, linting, type checking, testing, and validation.
🪛 LanguageTool
CONTRIBUTING.md
[uncategorized] ~686-~686: The official name of this software platform is spelled with a capital “H”.
Context: ...ushing a v* tag starts two workflows. release.yml publishes the wh...
(GITHUB)
[uncategorized] ~688-~688: The official name of this software platform is spelled with a capital “H”.
Context: ...oned documentation for stable releases. container-build.yml publishe...
(GITHUB)
[style] ~788-~788: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...elease is not marked as a prerelease. - Confirm versioned documentation is available at...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
🔇 Additional comments (2)
CONTRIBUTING.md (1)
686-695: LGTM!pyproject.toml (1)
116-117: LGTM!Also applies to: 140-142, 181-181, 240-240
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
3cc4ddf to
c20669d
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 0009daec-9bd5-475b-b9ac-24d181e513cb
📒 Files selected for processing (2)
CONTRIBUTING.mddocs/user-guide/getting-started.md
🚧 Files skipped from review as they are similar to previous changes (1)
- docs/user-guide/getting-started.md
📜 Review details
⏰ Context from checks skipped due to timeout. (2)
- GitHub Check: Greptile Review
- GitHub Check: CodeRabbit / Review
🧰 Additional context used
📓 Path-based instructions (6)
**/*.{md,markdown,py}
📄 CodeRabbit inference engine (.cursor/rules/agent-markdown-style.mdc)
**/*.{md,markdown,py}: Avoid decorative bold (**text**) in list items, body text, and docstrings; use structural cues (headers, list markers, colons, backticks) for emphasis instead
Use backticks for code identifiers, paths, and CLI commands in markdown and docstrings
Files:
CONTRIBUTING.md
**/*.{md,markdown}
📄 CodeRabbit inference engine (.cursor/rules/agent-markdown-style.mdc)
**/*.{md,markdown}: Bold is acceptable only in markdown tables where it's the conventional way to mark header-like cells in the body
Use##headers to segment markdown sections instead of bold text
Use--(em-dash) instead of-(hyphen) for asides in markdown
Files:
CONTRIBUTING.md
**/*.md
📄 CodeRabbit inference engine (STYLE_GUIDE.md)
**/*.md: Use single backticks for code identifiers, paths, and CLI commands in Markdown, and use--for asides rather than a hyphen.
Do not use decorative bold in Markdown body text or list items; bold is acceptable only in table-header-like cells and MkDocs Material card-grid titles.
For Mermaid diagrams, avoid spaces in node IDs, quote labels containing special characters, and do not use explicit colors or styles.Follow the repository’s Markdown style conventions documented in
STYLE_GUIDE.md.
Files:
CONTRIBUTING.md
**/*
📄 CodeRabbit inference engine (STYLE_GUIDE.md)
**/*: Every source file must include the required SPDX copyright and license header; use HTML comments for Markdown, hash comments for.py,.sh,.yaml, and.yml, and hash-comment headers inside YAML frontmatter for Markdown files with frontmatter.
Ensure files end with a newline and have no trailing whitespace; use a single space between sentences.
Files:
CONTRIBUTING.md
⚙️ CodeRabbit configuration file
**/*: Review as a senior maintainer for NeMo Safe Synthesizer. Prioritize issues that can change behavior, break user workflows, weaken privacy guarantees, hide failures, make tests unreliable, or create maintenance risk. Avoid generic style commentary unless it points to a concrete project convention that automated tools will not catch.
Comment only when the finding is actionable and tied to changed code. For each finding, state the impact, the condition that triggers it, and the smallest practical fix. Prefer one precise comment over broad advice. Do not ask for refactors outside the PR scope unless the changed code creates the problem.
Review type guidance: - Potential issue: use for correctness bugs, data loss, privacy leaks,
security risks, broken public APIs, invalid config behavior, missing
validation, hidden failures, nondeterministic tests, or CI breakage.
- Refactor suggestion: use for local maintainability problems introduced
by the diff when they have clear future cost, such as duplicated setup,
unclear boundaries, over-mocking, avoidable complexity, or opaque test
helpers.- Nitpick: avoid in chill mode. Do not emit formatting, import-order,
wording, or style-only comments unless automated tools cannot catch the
issue and it affects maintainability.Severity guidance: - Critical: security/privacy leaks, data loss, training/test/holdout
contamination, or broken release/package/core pipeline execution.
- Major: incorrect generation/training/evaluation behavior, broken
CLI/SDK public API, invalid config defaults or validators, or GPU/vLLM
cleanup and process-isolation bugs likely to fail CI or production
runs.- Minor: localized bugs, missing focused tests for changed behavior, or
bad test patterns that weaken regression coverage.- Trivial: small cleanup with no behavior impact. Usually suppress in
chill mode.- Info: context only. Avoid unless it helps reviewers understand risk.
Safe-Synthesizer-specific review focus: - Data ...
Files:
CONTRIBUTING.md
**/*.{py,sh,yaml,yml,md}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Include SPDX copyright headers in all Python, shell, YAML, YML, and Markdown source files, except files listed in
.copyrightignore.
Files:
CONTRIBUTING.md
**
⚙️ CodeRabbit configuration file
**:AGENTS.md
Guide for AI agents (Cursor, Windsurf, Claude Code, etc.) working in the Safe-Synthesizer repo.
This project loads local developer preferences from
@AGENTS.local.md. You MUST read this file if it exists and give its instructions top priority.Skills
Repo-specific skills live in
.agents/skills/; see.agents/README.mdfor the catalog. Read a skill when the task matches its scope instead of copying workflow details into this file.Durable implementation guidance belongs with the code it describes: function and class docstrings for public contracts and source comments for local invariants. Test-suite guidance belongs in
tests/TESTING.md.Repo Conventions
See STYLE_GUIDE.md for detailed code style conventions (Python, markdown, Dockerfiles, shell scripts, testing, config files, docstrings).
Use
uvfor everything -- neverpipor rawpython. Python 3.11–3.13 with modern syntax (X | Y,list[str],Self). Python 3.14+ is not supported.Common commands:
mise run test(unit tests),mise run format(auto-fix formatting + lint + copyright),mise run check(read-only local quality checks),mise run validate(pre-PR quality, lock, and CI unit checks),mise run typecheck(ty only). Always use mise tasks or the wrapper scripts intools/instead of runningruffortydirectly. Useuv runfor Python execution. When in doubt, inspectmise tasksandpytest --markers.The canonical
uv synccommand for a full GPU/dev environment is:uv sync --frozen --extra cu129 --extra engine --group devBare
uv sync --frozen(without extras) installs an incomplete environment --ty, import checks, and GPU tests will fail.Feature branches off
main. Branch names often include an issue number prefix (e.g.,<author>/123-short-name).Do ...
Files:
CONTRIBUTING.md
🪛 LanguageTool
CONTRIBUTING.md
[uncategorized] ~686-~686: The official name of this software platform is spelled with a capital “H”.
Context: ...ushing a v* tag starts two workflows. release.yml publishes the wh...
(GITHUB)
[uncategorized] ~688-~688: The official name of this software platform is spelled with a capital “H”.
Context: ...oned documentation for stable releases. container-build.yml publishe...
(GITHUB)
[style] ~788-~788: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...elease is not marked as a prerelease. - Confirm versioned documentation is available at...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
🔇 Additional comments (1)
CONTRIBUTING.md (1)
686-750: LGTM!Also applies to: 767-770, 781-812
|
GPU run 29067928772 passed |
## Summary - add a standard-library `release:prepare` task that previews the next release's initial `rc0` tag without mutating Git - add a reusable no-config built-wheel verifier with a real CPU install and CUDA dependency resolution - run the verifier in PR CI for package/release-tooling changes and in the tag workflow before either PyPI upload - keep uv cache reuse while removing project, resolver, source, and index configuration from verification subprocesses ## Stack This PR is stacked on NVIDIA-NeMo#633. Its own diff contains only the semver helper, release-tool documentation, wheel verification tooling/tests, and workflow integration. Retarget it to `main` after NVIDIA-NeMo#633 merges; the PR workflow only runs automatically for pull requests whose base is `main`. ## Validation - `mise run validate`: 1,648 tests and 3 subtests passed - 15 focused release-tool tests passed after the final council fixes - `mise run release:prepare -- --ref origin/main --json` produced `v0.1.7rc0` without creating a tag or syncing the project - clean CPU wheel install resolved and installed 239 packages; dependency check, import, and CLI help passed - clean CUDA wheel resolution selected 252 packages with the intended public indexes and versions - `mise run format-check`, type checking, lock checking, and `git diff --check` passed - independent three-seat council review found no critical blocker <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added an end-user clean-container wheel verification step to CI and release workflows. * Introduced release planning for PEP 440 versions, including release candidates and post-releases. * Added a release preparation helper for generating the next release candidate/tag plan. * **Documentation** * Updated production release and contributor release-process guidance, including post-release procedures. * Expanded container test image documentation with wheel verification steps. * **Bug Fixes** * Improved CI change detection so dependency/CI-related changes trigger the right checks. * **Chores** * Adjusted Docker artifact inclusion rules and updated Docker image tagging to use PEP 440. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
Summary
uv.lockwith the matching Python, cubin, and CUDA JIT-cache artifactsWhy
The 0.1.6 wheel requires FlashInfer 0.6.13 while vLLM 0.24.0 requires 0.6.12. Source
uv syncaccepted the combination only because[tool.uv].override-dependenciesmasked vLLM's wheel metadata. Ordinary uv and pip users therefore cannot resolve[cpu,engine]or[cu129,engine]from the published wheel.Validation
mise run validate: 1,634 tests passeduv pip check, package import, and CLI help passeduv lock --check,mise run format-check, andgit diff --checkpassedFollow-up
Run the GPU smoke/E2E workflow before using this change for the next release candidate.
Summary by CodeRabbit
Documentation
uvinstall instructions to use--index-strategy unsafe-best-match.Dependency Updates
0.6.12for CPU and CUDA (including the CUDA JIT cache variant).uvconfiguration by removing overrides/source mappings related to FlashInfer version forcing.