build(evaluator): install NeMo Fabric from published wheels via a Linux fabric extra#778
build(evaluator): install NeMo Fabric from published wheels via a Linux fabric extra#778SandyChapman wants to merge 3 commits into
fabric extra#778Conversation
|
…ux `fabric` extra NeMo Fabric now publishes wheels to PyPI, so the Fabric agent-eval runtime no longer needs a source build from a local checkout on Linux. - Add a Linux-gated `fabric` extra on nemo-evaluator-sdk pulling nemo-fabric[claude,codex,deepagents,runtime]. The native nemo-fabric-runtime wheel is manylinux-only (no macOS wheel yet), so the sys_platform == 'linux' marker keeps macOS lock resolution intact; macOS-native dev still uses script/dev-install-fabric.sh (also updated to point Linux devs at the extra). - Bump nemo-relay 0.4.x -> 0.5.x (stable, all-platform wheels) to align with Fabric's relay line; mirror the bump in the bundle-package and vendored-SDK dependency blocks. - Allow the fabric subtree's prereleases via explicit constraint pins (openai-codex, openai-codex-cli-bin, sqlite-vec), matching the existing safetensors pattern; no global --prerelease=allow needed. - Add a Linux fabric-wheel-smoke CI job (gated on the deps path filter) that installs the extra from the lock and imports the nemo_fabric surface the runtime uses, validating the manylinux_2_39 wheel installs on the runner glibc. hermes is intentionally omitted: hermes-agent pins requests==2.33.0 exactly, which conflicts with the workspace's requests>=2.33.1 floor. The nemo-relay gateway binary is still source-only (not on PyPI), so dev-install-fabric.sh remains required for live ATIF trajectory capture. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Sandy Chapman <schapman@nvidia.com>
…rom GitHub releases - Drop the sqlite-vec explicit-prerelease constraint. It's a LangGraph dep (langgraph-checkpoint-sqlite>=0.1.6), so it resolves to stable 0.1.9 instead of the 0.1.10 alpha (re-locked via uv lock --upgrade-package sqlite-vec). Only the two Fabric-owned codex prereleases (openai-codex, openai-codex-cli-bin) remain, and they clear when Fabric bumps off the beta. - dev-install-fabric.sh: download the prebuilt nemo-relay gateway from the NeMo-Relay GitHub releases (checksum-verified, pinned via NEMO_RELAY_VERSION) instead of a cargo build from a local NeMo-Relay checkout. Source-build fallback for platforms with no prebuilt asset (Intel macOS) or NEMO_RELAY_REPO. - dev-install-fabric.sh: install the `runtime` extra as well. Fabric's metapackage split means [codex,relay] no longer provides the importable nemo_fabric module; and make --uninstall remove nemo-fabric-runtime + adapters so it actually restores the CI-equivalent state. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Sandy Chapman <schapman@nvidia.com>
f7dddc5 to
1e85de4
Compare
📝 WalkthroughWalkthroughFabric dependency constraints, development installation, relay provisioning, and Linux CI smoke validation were updated. Aggregate CI status now includes the Fabric wheel smoke job. ChangesFabric installation flow
Sequence Diagram(s)sequenceDiagram
participant CI
participant uv
participant nemo_evaluator_sdk
participant nemo_fabric
CI->>uv: Sync nemo-evaluator-sdk[fabric] with frozen lockfile
uv->>nemo_evaluator_sdk: Resolve Fabric extra
nemo_evaluator_sdk->>nemo_fabric: Provide Fabric package
CI->>nemo_fabric: Import module and Fabric symbols
Possibly related PRs
Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/ci.yaml:
- Around line 909-910: Update the actions/checkout step in the CI workflow to
set persist-credentials to false, preventing GITHUB_TOKEN from being stored in
.git/config while preserving the existing checkout configuration.
In `@script/dev-install-fabric.sh`:
- Line 78: Update the installation flow around RELAY_BIN_DIR so the installed
nemo-relay binary is discoverable by the live integration test. Either install
it into a directory already on PATH or print a shell PATH export that prepends
RELAY_BIN_DIR after installation, while preserving support for custom CARGO_HOME
values.
- Around line 79-80: Update the existing nemo-relay detection in the
provisioning flow to honor NEMO_RELAY_VERSION: obtain the installed binary’s
version, compare it with the requested version, and only skip installation when
they match. When they differ, replace the binary or fail explicitly instead of
treating any PATH match as already provisioned.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: b76ccb50-3940-4bfc-8f7b-258b56a9b7d3
⛔ Files ignored due to path filters (2)
sdk/python/nemo-platform/pyproject.tomlis excluded by!sdk/**uv.lockis excluded by!**/*.lock
📒 Files selected for processing (5)
.github/workflows/ci.yamlpackages/nemo_evaluator_sdk/pyproject.tomlpackages/nemo_platform/pyproject.tomlpyproject.tomlscript/dev-install-fabric.sh
- ci.yaml (fabric-wheel-smoke): set persist-credentials: false on checkout so
GITHUB_TOKEN isn't left in .git/config while the job installs + imports
third-party wheels (matches the repo convention used by other jobs).
- dev-install-fabric.sh: honor NEMO_RELAY_VERSION — compare an existing
nemo-relay's version and skip provisioning only on a match, otherwise
(re)install, instead of short-circuiting on any PATH match.
- dev-install-fabric.sh: warn when the gateway install dir isn't on PATH so the
live test's shutil.which("nemo-relay") can resolve it.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Sandy Chapman <schapman@nvidia.com>
|
Holding this as a draft until NeMo Fabric ships a public, non-prerelease release. The change itself is complete and CI is green, but it currently pulls Fabric's daily alpha wheels, which drag two Fabric-owned prerelease pins into the workspace lock ( Those clear automatically once Fabric cuts a stable release and its Parking rather than merging also avoids interim CI flakiness from Fabric alpha wheels being garbage-collected from the index. |
What
NeMo Fabric now publishes wheels to PyPI, so the Fabric agent-eval runtime no longer needs a source build from a local checkout on Linux. This adds a Linux-gated
fabricextra onnemo-evaluator-sdkthat installs the publishednemo-fabric[claude,codex,deepagents,runtime]from the lock.Changes
fabricextra (Linux-gated) onnemo-evaluator-sdk. The nativenemo-fabric-runtimewheel (which provides thenemo_fabricmodule) ships manylinux only — no macOS wheel yet, so thesys_platform == 'linux'marker keeps macOS lock resolution intact.nemo-relay0.4.x → 0.5.x(stable, all-platform wheels) to align with Fabric's relay line. Mirrored in the bundle-package block (packages/nemo_platform) and the vendored-SDK block (sdk/python/nemo-platform). Observability imports (AtifConfig,AtofConfig,ComponentSpec,ObservabilityConfig) verified on 0.5.0.openai-codex,openai-codex-cli-bin) — same pattern as the existingsafetensors>=0.8.0rc0line; no global--prerelease=allow. (sqlite-vecwas initially constrained too, but it's a plain LangGraph transitive dep —langgraph-checkpoint-sqlite>=0.1.6— so it resolves to stable 0.1.9.)script/dev-install-fabric.shreworked (macOS-native dev path):nemo-fabric[codex,relay,runtime]— theruntimeextra provides the importablenemo_fabricafter Fabric's metapackage split ([codex,relay]alone no longer does).nemo-relaygateway from the NeMo-Relay GitHub releases (checksum-verified, pinned viaNEMO_RELAY_VERSION) instead of acargo installfrom a local NeMo-Relay checkout — no NeMo-Relay clone or Rust build needed. Source-build fallback for platforms with no prebuilt asset (Intel macOS) orNEMO_RELAY_REPO.fabric-wheel-smokeCI job (gated on thedepspath filter, registered inci-status): installs the extra from the lock on Linux and imports thenemo_fabricsurfaceruntime.pyuses. This is the only CI coverage that actually resolves/installs/imports the real fabric tree (unit tests use a hermeticnemo_fabricfake) and validates themanylinux_2_39runtime wheel installs on the runner glibc.Verification
uv lock --checkclean; branch rebased onto current main.uv syncpulls zero fabric packages (all Linux-marker-gated) — only bumps relay0.4.0 → 0.5.0.requires_live_fabric.fabric-wheel-smokegreen on Linux (realimport nemo_fabric).Known limitations / follow-ups
nemo-fabricships a non-prerelease and itsadapters/codexdrops theopenai-codexbeta pin → then drop the prerelease constraints and re-lock.hermesomitted:hermes-agentpinsrequests==2.33.0exactly, conflicting with the workspace'srequests>=2.33.1floor. Re-add once upstream loosens it.nemo-relaygateway daemon (required for live ATIF capture on out-of-process agents like Codex) is published as prebuilt GitHub-release binaries for all platforms incl. macOS arm64, but not as a pip wheel — the Relay team confirmed they don't plan to wheel it, so the dev script / containers install it as a per-platform binary.nemo-fabric-runtimewheel yet (upstream ask on Fabric).make update-sdkregen can follow at merge time.🤖 Generated with Claude Code
Summary by CodeRabbit
nemo_fabricimports successfully.