fix(safe-synthesizer): repair runtime setup dependency resolution#856
Draft
marcusds wants to merge 2 commits into
Draft
fix(safe-synthesizer): repair runtime setup dependency resolution#856marcusds wants to merge 2 commits into
marcusds wants to merge 2 commits into
Conversation
marcusds
force-pushed
the
safe-synthesizer-runtime-deps/mschwab
branch
from
July 22, 2026 23:35
bbd66f2 to
a3df257
Compare
`nemo safe-synthesizer runtime setup` failed at its final `uv pip check` gate with 6 incompatibilities. Root causes were workspace-level dependency overrides and install steps that skipped required packages, not the installer logic itself: - gunicorn: the plugin is installed with `--no-deps`, so its declared gunicorn dependency was never pulled. Add it to RUNTIME_EXTRA_REQUIREMENTS. - diskcache: vLLM imports diskcache for structured-output decoding and hard-pins 5.6.3 (the only release; no CVE-2025-69872 fix exists), but the workspace `[tool.uv].override-dependencies` strips it globally. Install it into the isolated runtime venv with `--no-config` so the override does not apply, leaving the global mitigation intact. - setuptools: bound the override to `>=78.1.1,<82` so it satisfies torch's `setuptools<82` (nemo-safe-synthesizer needs >=80, so 80.x-81.x). - datasets: raise the `<=4.3.0` cap to `>=4.8.5,<5` so it satisfies nemo-safe-synthesizer[engine] (>=4.8.4) and trl (>=4.7.0); jailbreak-detect already declares >=4.8.5. Regenerate the bundled deps and relock. - nvidia-cusparselt-cu12: on aarch64/SBSA the correct wheel is misreported by `uv pip check` as built for a different platform (it loads; CUDA works). Filter this known-benign line in the final check while still failing on any other incompatibility. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]> Signed-off-by: mschwab <[email protected]>
marcusds
force-pushed
the
safe-synthesizer-runtime-deps/mschwab
branch
from
July 22, 2026 23:43
a3df257 to
67722db
Compare
Contributor
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
nemo safe-synthesizer runtime setupwas aborting at its finaluv pip checkgate with 6 incompatibilities. The causes were workspace-level dependency overrides and install steps that skipped required packages — not the installer logic itself. All 6 are now resolved.Changes
--no-deps, so its declaredgunicornwas never pulledRUNTIME_EXTRA_REQUIREMENTS5.6.3, but the workspace[tool.uv].override-dependenciesstrips it globally for CVE-2025-69872--no-config(bypasses the override for this one package; global mitigation stays intact)>=78.1.1(unbounded) resolved to 83, violating torch'ssetuptools<82>=78.1.1,<82(nemo-safe-synthesizer needs>=80→ lands on 80.x–81.x)<=4.3.0conflicts withnemo-safe-synthesizer[engine](>=4.8.4) andtrl(>=4.7.0)>=4.8.5,<5(jailbreak-detect already declares>=4.8.5); regenerate bundle + relockmanylinux2014_sbsa) is misreported byuv pip checkas "built for a different platform" — it loads and CUDA worksWhy diskcache uses
--no-configinstead of re-enabling it globallyThere is no patched diskcache —
5.6.3is the latest release (Aug 2023, unmaintained) and vLLM hard-pins it. The global override removes it with the rationale "transitive via ragas but not imported," which is false for this runtime. Rather than reintroduce the CVE workspace-wide, the runtime venv installs it scoped, so every other package keeps the mitigation. The CVE requires attacker write-access to the local cache dir — acceptable for a single-user GPU runtime.Why the cusparselt line is filtered rather than fixed
The host is aarch64/SBSA (Grace). The installed
nvidia-cusparselt-cu12 0.7.1wheel is taggedpy3-none-manylinux2014_sbsa— the correct aarch64 wheel thattorchrequires. Its metadata is internally inconsistent (Root-Is-Purelib: trueplus a platform tag), souv pip checkmisreads it. No version change can fix a correct wheel, so the check tolerates exactly this line and nothing else.Notes for reviewers
datasets4.3.0 → 4.8.5 is platform-wide.uv lockresolves cleanly, but that only proves resolvability. Customizer / evaluator / jailbreak-detect deserve a functional smoke test before merge. Capped at<5deliberately to avoid the datasets 5.0.0 major jump that unbounded>=4.8.5floated to.uv.lockdiff (−487) is safe. On a clean treeuv lockproduces zero diff, so this is the deterministic result of the datasets bump. Every removed line is a wheel forarmv7l/ppc64le/riscv64/s390x— platforms already excluded by[tool.uv].environments. No x86_64/aarch64/darwin-arm64 wheels dropped.uv lock --checkpasses.uv lock --check+ the plugin unit tests (11/11).🤖 Generated with Claude Code