Repository navigation
refactor(schemas): migrate rigid_props to fragments; deprecate RigidBodyPropertiesCfg (2/2) - #4
Draft
vidurv-nvidia wants to merge 1 commit into
Draft
vidurv-nvidia wants to merge 1 commit into
vidurv-nvidia wants to merge 1 commit into
Conversation
…odyPropertiesCfg Build on the additive rigid-body fragment API: flip the legacy name and move every call site to the new fragment-list form. - isaaclab_physx: RigidBodyPropertiesCfg becomes a deprecation factory returning [UsdPhysicsRigidBodyCfg(...), PhysxRigidBodyCfg(...)] (removal in 5.0). - Migrate all RigidBodyPropertiesCfg usages across isaaclab_assets, isaaclab_tasks, isaaclab_mimic and the test suites to fragment lists. - Update consumer sites that treated rigid_props as a single object: disable_gravity mutations, .replace(), and attribute reads. BREAKING: RigidBodyPropertiesCfg no longer returns a single cfg object. Pass a fragment list to rigid_props; code mutating attributes on it must set the field on the PhysxRigidBodyCfg fragment in the list.
This was referenced Jun 4, 2026
vidurv-nvidia
added a commit
to isaac-sim/IsaacLab
that referenced
this pull request
Jun 24, 2026
# Description ## Summary (PR 1 of 2 — additive, no behavior change) Introduces single-namespace schema **fragments** so a prim can carry rigid-body properties from multiple USD namespaces at once (`physics:`, `physxRigidBody:`, `mjc:`), with core naming no backend. **Purely additive** — existing cfgs and the deprecated `RigidBodyPropertiesCfg` class are untouched. - **core:** `SchemaFragment`, `RigidBodyFragment`, `UsdPhysicsRigidBodyCfg`; `apply_namespaced` (generic per-fragment writer) and `apply_rigid_body_properties` (applies a fragment list with `UsdPhysics.RigidBodyAPI` as the implicit anchor). - **spawner:** `rigid_props` accepts a fragment list; legacy single cfgs keep working via a transition bridge (shapes/meshes/from_files/mesh_converter). - **backends:** `PhysxRigidBodyCfg` (physx), `MujocoRigidBodyCfg` (newton). - new `test_schema_fragments.py` + exports. **PR 2** (stacked) flips `RigidBodyPropertiesCfg` to a deprecation factory and migrates all call sites: vidurv-nvidia#4 (review after this lands). ## Test Plan - [x] `test_schema_fragments.py` — 7 passed - [x] pre-commit clean · `./isaaclab.sh -d` docs build clean - [ ] CI First slice of the staged physics schema-cfg refactor (collision / mass / joint-drive / … follow later). Draft for review of the fragment API shape. ## Type of change - New feature (non-breaking change which adds functionality) ## Screenshots N/A — no user-facing visual changes. ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the pre-commit checks (`ruff` + `ruff-format`) on the changed files - [ ] I have made corresponding changes to the documentation (the public API reference is auto-generated via `./isaaclab.sh -d`; not separately authored) - [x] My changes generate no new warnings - [x] I have added tests that prove my feature works - [x] I have added a changelog fragment under `source/<pkg>/changelog.d/` for every touched package - [ ] I have added my name to `CONTRIBUTORS.md` --------- Co-authored-by: ooctipus <zhengyuz@nvidia.com>
matthewtrepte
pushed a commit
to matthewtrepte/IsaacLab
that referenced
this pull request
Aug 4, 2026
# Description ## Summary (PR 1 of 2 — additive, no behavior change) Introduces single-namespace schema **fragments** so a prim can carry rigid-body properties from multiple USD namespaces at once (`physics:`, `physxRigidBody:`, `mjc:`), with core naming no backend. **Purely additive** — existing cfgs and the deprecated `RigidBodyPropertiesCfg` class are untouched. - **core:** `SchemaFragment`, `RigidBodyFragment`, `UsdPhysicsRigidBodyCfg`; `apply_namespaced` (generic per-fragment writer) and `apply_rigid_body_properties` (applies a fragment list with `UsdPhysics.RigidBodyAPI` as the implicit anchor). - **spawner:** `rigid_props` accepts a fragment list; legacy single cfgs keep working via a transition bridge (shapes/meshes/from_files/mesh_converter). - **backends:** `PhysxRigidBodyCfg` (physx), `MujocoRigidBodyCfg` (newton). - new `test_schema_fragments.py` + exports. **PR 2** (stacked) flips `RigidBodyPropertiesCfg` to a deprecation factory and migrates all call sites: vidurv-nvidia#4 (review after this lands). ## Test Plan - [x] `test_schema_fragments.py` — 7 passed - [x] pre-commit clean · `./isaaclab.sh -d` docs build clean - [ ] CI First slice of the staged physics schema-cfg refactor (collision / mass / joint-drive / … follow later). Draft for review of the fragment API shape. ## Type of change - New feature (non-breaking change which adds functionality) ## Screenshots N/A — no user-facing visual changes. ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the pre-commit checks (`ruff` + `ruff-format`) on the changed files - [ ] I have made corresponding changes to the documentation (the public API reference is auto-generated via `./isaaclab.sh -d`; not separately authored) - [x] My changes generate no new warnings - [x] I have added tests that prove my feature works - [x] I have added a changelog fragment under `source/<pkg>/changelog.d/` for every touched package - [ ] I have added my name to `CONTRIBUTORS.md` --------- Co-authored-by: ooctipus <zhengyuz@nvidia.com>
vidurv-nvidia
pushed a commit
that referenced
this pull request
Sep 15, 2026
…dential (isaac-sim#7741) # Description A job that pulls a public `nvcr.io/nvidia/*` base image fails with `denied: Access Denied`. The runners carry an ambient docker credential for a private NGC organization, and nvcr.io refuses that credential a pull token for a public repository instead of downgrading the request to anonymous. `_lib/setup-docker-config` now takes an optional `base-image-ref`: when the configured credentials are denied that image and anonymous access can read it, the stored nvcr.io credential is dropped from the job's temp config so the pull proceeds anonymously. `_lib/compute-deps-hash` stops swallowing an unreadable base image manifest, which silently dropped the digest from the dependency-cache key. | Before | After | | ------ | ----- | | `load metadata for nvcr.io/nvidia/isaac-sim:6.1.0` fails with `failed to fetch oauth token: denied: Access Denied`, and an unreadable manifest degrades the deps-cache key to a bare tag string with only a `🟠` note | The credential is dropped for nvcr.io only when it is provably the obstacle, the pull proceeds anonymously, and an unreadable manifest fails with a named `::error::` | ## Reproduction 1. Point `.github/workflows/config.yaml` at a public base image: `isaacsim_image_name: nvcr.io/nvidia/isaac-sim` and `isaacsim_image_tag: 6.1.0`. 2. Open a pull request from a fork, so no `NGC_API_KEY` is available and the runner's ambient credential is the only one present. 3. Observe any job that builds the base image, for example `Docker Dependency Licenses Check`: ``` #3 [auth] nvidia/isaac-sim:pull token for nvcr.io #4 [internal] load metadata for nvcr.io/nvidia/isaac-sim:6.1.0 #4 ERROR: failed to authorize: failed to fetch oauth token: denied: Access Denied ERROR: failed to build: failed to solve: failed to fetch oauth token: denied: Access Denied ``` 4. The same step also logs `🔵 Base image ID: nvcr.io/nvidia/isaac-sim:6.1.0` with no `sha256:` suffix, which is the silent digest fallback in `compute-deps-hash`. ## Scope Every workflow on this branch pins the private `nvcr.io/0947644777160149/internal/isaac-sim` image today, where the configured credentials succeed and the fallback stays dormant. This change is the prerequisite that lets a public base image be configured without the failure above; it does not change which image any workflow uses. ## Type of change - Bug fix (non-breaking change which fixes an issue) ## Release backport - [x] <!-- backport-active-release --> Backport this pull request to the active release branch after it merges into `develop` ## Screenshots Not applicable; this changes CI action behavior only. ## Validation The fallback only narrows credentials, never widens them, so each guard was exercised against a stubbed `docker` and a realistic three-registry config (nvcr.io, ECR, Docker Hub): - Public nvcr.io image, credentials denied, anonymous readable: the nvcr.io entry is dropped and the ECR and Docker Hub entries survive, so pushes keep working. - `ubuntu:24.04`, which `kitless-docker.yml` passes: the ref is not an nvcr.io image, so the config is left untouched and the Docker Hub credential keeps its pull-rate budget. - Private internal image readable with credentials: no probe fallback, no change. - Registry 503 rather than an authorization refusal: retried, then a warning, and the credential is kept, so a transient error cannot cost a working credential. - A docker config this action did not create: left unchanged, so a runner-level `DOCKER_CONFIG` is never edited. - `NVCR.IO/...` and `nvcr.io:443/...` resolve to the same registry as `nvcr.io/...`; `nvcr.io.evil.com/...` does not match. - `compute-deps-hash`: a digest-pinned tag such as `latest-develop@sha256:...` is used directly with no network call, a malformed digest pin fails with a named error, an authorization refusal fails immediately, a transient failure is retried 5 times over about 50 seconds, and a warning on stderr during a successful read is no longer concatenated into the digest. - These are committed as `.github/actions/_lib/test_registry_credential_fallback.py` (14 tests, the co-located pattern of `run-package-tests/test_cleanup_docker_storage.py`) and registered in `tools-tests.yml` so they run in CI. - Mutation checks: removing the nvcr.io scope, the exact-digest check, the ownership guard, or the `credHelpers` handling each makes the corresponding test fail, so the suite exercises the intended behavior rather than only the happy path. - `python -m py_compile` on the new helper, `bash -n` on every `run:` block in the five changed files, YAML parse of each, and `codespell` clean. ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [ ] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` — not run; this change touches only `.github/`, validated with `bash -n`, `py_compile`, a YAML parse and `codespell`, and the repository's own `pre-commit` check on this branch - [x] I have made corresponding changes to the documentation — the action's `description` and the new input document the fallback - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [ ] I have added a changelog fragment under `source/<pkg>/changelog.d/` for every touched package (do **not** edit `CHANGELOG.rst` or bump `extension.toml` — CI handles that) — not applicable; no package is touched - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there
This branch has not been deployed
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.
Description
Summary (PR 2 of 2 — stacked on the framework PR)
Builds on the additive fragment API (isaac-sim#5976). Flips the legacy name and moves every call site to fragment lists.
RigidBodyPropertiesCfg→ deprecation factory returning[UsdPhysicsRigidBodyCfg(...), PhysxRigidBodyCfg(...)](removal in 5.0).RigidBodyPropertiesCfgusages acrossisaaclab_assets,isaaclab_tasks,isaaclab_mimic, and the test suites to fragment lists.rigid_propsas a single object:disable_gravitymutations,.replace(), attribute reads.Breaking:
RigidBodyPropertiesCfgno longer returns a single cfg object.Test Plan
test_schema_fragments.py8 ·test_schemas39 ·test_schemas_shim145 ·test_spawn_shapes12 ·test_spawn_meshes10test_spawn_from_files(Nucleus assets) + full task regression in CIFixes # (N/A — part of the staged physics schema-fragment refactor; no tracked public issue)
Type of change
Screenshots
N/A — no user-facing visual changes.
Checklist
ruff+ruff-format) on the changed files./isaaclab.sh -d; not separately authored)source/<pkg>/changelog.d/for every touched packageCONTRIBUTORS.md