Skip to main content

maintain-packaging

Maintain NVIDIA NeMo Fabric Rust, Python, and TypeScript dependencies, package metadata, module paths, native artifacts, lockfiles, license evidence, and release-facing build surfaces

معلومات المصدر

المستودع
NVIDIA/NeMo-Fabric
آخر نشاط في المصدر
٨ أكتوبر ٢٠٢٦ في ٠٣:١٧
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٥١
التفرعات
٣٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
maintain-packaging
description
Maintain NVIDIA NeMo Fabric Rust, Python, and TypeScript dependencies, package metadata, module paths, native artifacts, lockfiles, license evidence, and release-facing build surfaces
author
NVIDIA Corporation and Affiliates
license
Apache-2.0
# Maintain Release And Packaging Surfaces ## Companion Guidance Use `karpathy-guidelines` alongside this skill for implementation or review work. Keep changes scoped, surface assumptions, and define focused validation before editing. Use this skill when a change affects how NeMo Fabric is built, packaged, named, or consumed outside the source tree. ## Audit Areas - Rust `Cargo.toml` package names and workspace metadata - Root development coordination in `pyproject.toml` - Published Python package metadata under `sdk/python/` and `adapter-contract/python/` - Native extension naming and placement under `sdk/python/nemo-fabric-runtime/src/nemo_fabric` - Dependency resolution in `Cargo.lock` and `uv.lock` - TypeScript adapter-contract metadata and dependency resolution in `adapter-contract/typescript/package.json` and `package-lock.json` - Documentation tooling metadata in `docs/package.json` and `docs/package-lock.json` - CI workflows, install commands, and example commands - npm trusted publishing through `.github/workflows/publish_typescript.yml` and the protected `npmjs` environment - `justfile` build, test, clean, and documentation recipes - Release tags, registry publication, and release-facing documentation in `RELEASING.md` - Metadata-only adapter catalog under `sdk/python/nemo-fabric-adapter-catalog`: regenerate its single resource bundle with `just adapter-catalog` and check freshness with `just check-adapter-catalog`. Keep source metadata outside descriptor objects and catalog resources outside automatic execution discovery. `just set-version` refreshes the bundle after stamping both ecosystems; `just wheels` checks freshness and builds the package. ## Dependency Selection ### Catalog Bundle Maintenance `scripts/ci/generate_adapter_catalog.py` collects canonical descriptors and registered targets from leaf packages under `adapters/python/` and `adapters/typescript/`, without an adapter-ID allowlist. Support packages, presets, fixtures, and source-only external integrations are excluded. The bundle keeps source package names, versions, paths, ecosystems, and fingerprints outside descriptor objects. Fingerprints use UTF-8 JSON with sorted keys, compact separators, and unescaped Unicode. These fields describe a release snapshot, not an observed execution environment. Run `just adapter-catalog`, `just check-adapter-catalog`, and `uv build --wheel --sdist --out-dir dist sdk/python/nemo-fabric-adapter-catalog` when maintaining the bundle. `just set-version` refreshes it after stamping Python and TypeScript versions. Python tests and wheel builds reject stale bundles; wheels and source distributions must build independently of the adapter source tree. Keep these maintainer details out of the PyPI-facing package README. ### Select Dependencies Treat every direct dependency as a long-lived API, supply-chain, and licensing commitment. - Keep `nemo-fabric` as a metapackage that unconditionally installs the exact-version `nemo-fabric-runtime` distribution. Its harness extras delegate to version-matched leaf adapter `harness` extras. Hermes Agent is the sole exception: its root extra delegates to the bare adapter because Hermes Agent 0.20 and later is not installable from PyPI. Do not add other adapter-only aliases. - Keep the runtime `streaming` extra pinned to the version-matched `nemo-fabric-collector` distribution. The metapackage `streaming` extra must delegate to the version-matched runtime extra. Do not expose a separate metapackage `collector` extra. - Keep leaf adapters adapter-only by default. Every leaf provides `full`, and every package-installable harness provides `harness`. The Hermes adapter omits `harness` because users install Hermes Agent separately from source. Provide `relay` only when the adapter imports the NeMo Relay Python package. For adapters that launch the Relay CLI, both `harness` and `full` install the version-matched `nemo-relay-cli-bin` package and remain equivalent. - First prefer the standard library, an existing dependency, or a small local implementation when it keeps the behavior clear and maintainable. - When multiple dependencies satisfy the technical requirement, prefer the maintained OSS option with clear SPDX metadata, a smaller transitive graph, and permissive terms such as Apache-2.0, MIT, BSD, or ISC. - Inspect the resolved transitive graph, not only the direct package license. - Treat `UNKNOWN`, non-SPDX/custom, proprietary or source-available terms, and copyleft or network-copyleft terms as explicit review points. Do not silently accept or reject them; route them to the dependency approvers with the distribution and linkage context. - Record the functional need, viable alternatives considered, why the selected dependency is the narrowest fit, and any unresolved licensing question. - Run `uv run --no-project python scripts/licensing/license_diff.py --base-ref origin/main` after updating manifests and lockfiles, then review added packages and license changes. - For `adapter-contract/typescript/package-lock.json`, inspect the resolved package entries and their `license` fields. The adapter-contract package must keep an empty production dependency graph; build-only dependencies still require permissive, recorded license evidence. - Regenerate the attribution files with the named pre-commit hooks instead of editing generated output: ```bash uv run pre-commit run --all-files attributions-rust uv run pre-commit run --all-files attributions-python uv run pre-commit run --all-files attributions-node ``` The license diff is evidence for reviewers. Dependency approvers make compatibility decisions using the distribution and linkage context. ## Checklist - [ ] Package names, import paths, and module names are internally consistent - [ ] Generated artifacts still land where downstream consumers expect - [ ] Docs and examples use the current install/import/build commands - [ ] CI references the same package names as local workflows - [ ] Public packaging changes are reflected in release-facing docs - [ ] Workspace, Python, and lockfile versions remain aligned where required - [ ] The TypeScript adapter-contract package version follows the workspace release version without changing its independent wire contract version - [ ] The editable maturin build still produces `nemo_fabric._native` - [ ] New dependencies are necessary, maintained, and narrower than the viable alternatives - [ ] Direct and transitive license changes were reviewed from the resolved lockfiles - [ ] Licensing uncertainties are called out for dependency approver review - [ ] Changed attribution files are regenerated and included ## References - `pyproject.toml` - `RELEASING.md` - `sdk/python/nemo-fabric/pyproject.toml` - `sdk/python/nemo-fabric-runtime/pyproject.toml` - `adapter-contract/python/pyproject.toml` - `Cargo.toml` - `Cargo.lock` - `uv.lock` - `docs/package.json` - `docs/package-lock.json` - `adapter-contract/typescript/package.json` - `adapter-contract/typescript/package-lock.json` - `.github/workflows/ci_typescript.yml` - `.github/workflows/publish_typescript.yml` - `scripts/ci/publish_typescript_package.py` - `.github/workflows/ci_python.yml` - `.github/workflows/ci_rust.yml` - `.pre-commit-config.yaml` - `scripts/licensing/license_diff.py` - `justfile`
عرض على GitHub