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

Informações da origem

Repositório
NVIDIA/NeMo-Fabric
Última atividade na origem
8 de outubro de 2026 às 03:17
Idioma detectado do SKILL.md
inglês
Estrelas
51
Forks
30

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
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`
Ver no GitHub