Repository navigation
[Backport release/3.0.0] Complete tooling and regression-test backports - #7853
kellyguo11 wants to merge 7 commits into
Conversation
# Description Adds the perspective-camera visual regression requested as a follow-up to [isaac-sim#7053](isaac-sim#7053) and [NVBUG 6632117]. - Creates four spatially separated Cartpole environments for one PhysX + Kit viewport case. - Frames all four scene partitions in a single perspective-camera capture. - Rejects flat or missing-content captures before comparing against the new golden image. ## Type of change - Test update ## Release backport - [x] Backport this pull request to the active release branch after it merges into `develop` ## Screenshot  ## Validation - `uv run isaaclab -f` - The final candidate was captured twice against the current CI Isaac Sim image (`sha256:50d2491d...`, Isaac Sim 6.1.0-alpha.72); the repeat comparison passed. ## Checklist - [x] I have read and understood the contribution guidelines. - [x] I have run the pre-commit checks. - [x] Documentation changes are not applicable to this test-only update. - [x] My changes generate no new warnings. - [x] I have added a test that covers the requested behavior. - [x] I have added a test-only changelog `.skip` fragment for `isaaclab_visualizers`. - [x] My name already exists in `CONTRIBUTORS.md`. (cherry picked from commit 9be9102)
# Description Running a play script with `--checkpoint pretrained` on a machine whose `.pretrained_checkpoints` directory was left behind by a container run (owned by `root`) prints: ``` Fetching pre-trained checkpoint : https://.../rsl_rl/Isaac-Humanoid-Direct_newtonmjwarp_none_rsl_rl.pt A pre-trained checkpoint is currently unavailable for this task. ``` and exits. The checkpoint is published and reachable; the download failed with `PermissionError: [Errno 13] Permission denied: '.../.pretrained_checkpoints/rsl_rl/https'`. That error was discarded by a bare `except Exception` in `isaaclab_rl.utils.pretrained_checkpoint.get_published_pretrained_checkpoint`, which reported every failure — a missing checkpoint, an unreachable server, an unwritable cache, a full disk — with the same sentence and returned `None`, after which the play scripts return without further explanation. This separates the two cases: * **The asset server does not provide the checkpoint.** `None` is still returned and the message still starts with `A pre-trained checkpoint is currently unavailable for this task.`, so callers and tests matching on that line are unaffected. It now also names the location that was tried, the task and backends that location was derived from, and what to do instead: ``` A pre-trained checkpoint is currently unavailable for this task. The asset server does not provide 'https://.../Isaac-Not-A-Real-Task_newtonmjwarp_none_rsl_rl.pt'. Either no checkpoint is published for task 'Isaac-Not-A-Real-Task' with the 'newtonmjwarp' physics and 'none' render backends, or the asset server could not be reached. Train the task, or pass --checkpoint <path> to use a checkpoint of your own. ``` * **The checkpoint exists but could not be downloaded.** This is a local problem the user has to fix, so it raises `RuntimeError` naming the checkpoint, the cache directory and the originating error, which is chained as the cause: ``` RuntimeError: Failed to download the pre-trained checkpoint 'https://.../Isaac-Humanoid-Direct_newtonmjwarp_none_rsl_rl.pt' into '/home/user/IsaacLab/.pretrained_checkpoints/rsl_rl': PermissionError: [Errno 13] Permission denied: '/home/user/IsaacLab/.pretrained_checkpoints/rsl_rl/https'. Check that the cache directory is writable and that the disk is not full; a directory left behind by a container run is owned by root. ``` Note that `omni.client` reports a checkpoint that was never published and a server it cannot reach identically, so both remain covered by the "unavailable" message. Both paths were verified end to end against the live asset server, using a published checkpoint with a read-only cache directory and an unpublished checkpoint name. ## Type of change - Bug fix (non-breaking change which fixes an issue) Behaviour note: callers that relied on `None` to mask a local download failure now see a `RuntimeError`. Callers that treat `None` as "no checkpoint published for this task" — every caller in the repository — are unchanged. This is called out in the changelog fragment. ## Release backport - [ ] <!-- backport-active-release --> Backport this pull request to the active release branch after it merges into `develop` ## 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](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] I have added a changelog fragment under `source/<pkg>/changelog.d/` for every touched package - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there (cherry picked from commit 768c305)
# Description Restores the missing `torch` import in `test_ovrtx_clone_plan.py`. isaac-sim#7462 converted the existing clone-plan test inputs from Torch tensors to NumPy arrays and removed the then-unused import. isaac-sim#6308 subsequently added a new object-scale test using `torch.ones` and `torch.arange` without restoring the import, causing the repository-wide Ruff pre-commit check to fail with `F821 Undefined name torch`. This PR contains only the import repair and an `isaaclab_ov` `.skip` changelog fragment. It unblocks isaac-sim#7579 and other changes based on the current `develop` branch. ## Type of change - Bug fix (non-breaking test fix) ## Release backport - [ ] <!-- backport-active-release --> Backport this pull request to the active release branch after it merges into `develop` No release backport is required: `release/3.0.0` already imports `torch` in this test. ## Screenshots Not applicable. ## Testing - `uv run --no-project --with pre-commit python -m pre_commit run --all-files` - `uv run --no-project python tools/changelog/cli.py check --include-worktree` - `git diff --check upstream/develop...HEAD` ## Checklist - [x] I have read and understood the contribution guidelines - [x] I have run the full pre-commit checks - [x] Documentation changes are not required because no public API changed - [x] My changes generate no new warnings - [x] The fix directly covers the Ruff `F821` failure - [x] I have added an `isaaclab_ov` changelog fragment - [x] My name already exists in `CONTRIBUTORS.md` (cherry picked from commit 7bf6959)
## Description Adds two developer skills for issue work, split by scope: - **`isaaclab-auditing-an-issue`** — audits a single issue against current code and drafts the reply. Holds the reusable per-issue checks. - **`isaaclab-triaging-issue-backlog`** — batch sweeps. Requires the first as a sub-skill and adds only the orchestration: adversarial verification, approval bookkeeping, and the human review gate. The guidance is distilled from a full pass over the open backlog, where automated triage repeatedly produced comments that read well but asserted things that were not true. The skills encode the checks that caught those. ### Per-issue skill - **Mandatory checks table**, one row per claim shape. Grep `contrib/` before writing "Isaac Lab doesn't have X", since features move to contrib and absence claims go stale. Check the specific backend package rather than assuming parity. Run a script for behavioral claims instead of reading the raise site — a guard can be narrower than it looks. - **URL traps.** `blob/main/...` 404s for `isaaclab_newton`, `isaaclab_ov`, `isaaclab_ovphysx` and `isaaclab_contrib`, since those packages are not on `main`. `isaac-sim.github.io/IsaacLab/main/...` is the stale 2.x docs build. Both produced dead links during the triage pass. - **Do Not Close list.** Cases where the stated reason is defensible but closing still loses something: an open maintainer question, pre-merge feedback on an open PR, a duplicate of a bug that was itself closed without a fix, an unmet titled ask, and upstream-blocked work where nobody has filed upstream. - **Comment style.** Thank the reporter, cite a verified fix, invite a reopen, and do not assign fault to the reporter or to a sibling team. ### Batch skill - Adversarial verification that defaults to REFUTED or UNCERTAIN when evidence cannot be independently confirmed. - Approval bookkeeping: never infer approval, keep one plan file, re-show anything edited after approval, and report refuted and held counts alongside the reduction figure. - A failure-mode table observed in practice, so the next sweep expects them rather than rediscovering them. ## Type of change - New feature (non-breaking change which adds functionality) ## Checklist - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [x] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there ## Notes `uv run --no-project python tools/skills/cli.py check` passes (23 skills validated). No changelog fragment: no source package changed, and the fragment check passes. The skills have not yet been pressure-tested against agents with and without them, which is the usual bar for discipline-enforcing guidance. Happy to do that before merge if reviewers would prefer. --------- Co-authored-by: Kelly Guo <kellyg@nvidia.com> (cherry picked from commit 3639364)
|
| resume_path = retrieve_file_path(ov_path, download_dir) | ||
| except Exception: | ||
| print("A pre-trained checkpoint is currently unavailable for this task.") | ||
| except FileNotFoundError: |
There was a problem hiding this comment.
A local cache race can also raise FileNotFoundError, such as when the destination directory or temporary download disappears before os.replace. This handler treats every FileNotFoundError as a missing remote checkpoint, so it returns None with misleading asset-server guidance instead of raising the newly promised chained RuntimeError for local download failures. Please distinguish the explicit remote-not-found result from local filesystem errors and cover the local case in the tests.
There was a problem hiding this comment.
Isaac Lab Review Bot
Reviewed the backported issue-triage skills, pretrained-checkpoint error-contract change, and four-environment Kit perspective golden-image coverage. The changed paths are internally consistent and no candidate finding requires maintainer action before merge.
- Design and architecture: The visualizer option remains keyword-only and default-off as it passes through the golden runner, environment factory, visualizer configuration, and camera selection, preserving existing test behavior. The dedicated golden-image namespace avoids collisions. Repository skills remain canonical under
skills/, with discovery links rather than duplicated content. - API:
get_published_pretrained_checkpointpreserves itsstr | Nonereturn surface while explicitly narrowingNoneto remote-unavailability cases and raising a chainedRuntimeErrorfor other download failures. The changed contract and caller migration guidance are documented in both the public docstring and the package changelog fragment. - Implementation: The exception ordering correctly handles
FileNotFoundErrorbefore generic failures, preserves underlying causes, and adds theOSErrorremediation hint. The visualizer configuration retains prior environment counts and camera settings when the new flag is disabled, rejects incompatible tiled use, and routes the opt-in capture to its committed golden image. The new regression tests directly cover both checkpoint failure branches and the all-environment perspective path.
No blocking issues. No inline issue met the actionable-evidence threshold; the assessment above records the review feedback.
Automated review; human maintainers own approval decisions.
|
run-ci |
…port-missing-tooling-tests-release-3.0.0
|
run-ci |
# Description Update the nightly Isaac Sim image job so its generated pull request body follows the repository PR template. Automatically comment `run-ci` when the workflow opens a PR or pushes a new update commit, while avoiding duplicate triggers when an existing update branch is unchanged. This addresses the manual follow-up needed on isaac-sim#7773. No new dependencies are required. Validation: - Parsed the workflow as YAML. - Validated the workflow with `actionlint` (excluding its pre-existing `client-id`/`app-id` metadata mismatch for `actions/create-github-app-token@v3`). - Checked the embedded shell with `bash -n`. - Mocked new, changed, and unchanged PR cases and verified `run-ci` is posted exactly when needed. - `uv run isaaclab -f` could not run because the repository lockfile does not support macOS ARM64. ## Type of change - Infrastructure update ## Release backport - [ ] <!-- backport-active-release --> Backport this pull request to the active release branch after it merges into `develop` ## Screenshots Not applicable. ## Checklist Docker and GPU tests run on demand. Push the commits you want tested, then comment `run-ci` on the pull request. - [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` - [x] I have made corresponding changes to the documentation (not applicable; workflow-only change) - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works (mocked workflow cases) - [x] I have added a changelog fragment under `source/<pkg>/changelog.d/` for every touched package (not applicable; no source package changed) - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there (cherry picked from commit 24f61d9)
…im#7869) A standalone demo that becomes ready at 299 seconds is currently terminated at the 300-second startup deadline, before its five-second soak can finish. This caused the arms smoke test in isaac-sim#7608 and isaac-sim#7674 to fail after printing its setup and reset messages. Stop applying the startup deadline once the readiness marker has been observed, while preserving the existing 300-second startup and five-second soak settings. The unconditional deadline was introduced by [isaac-sim#6704](isaac-sim#6704), commit [16083cc](isaac-sim@16083cc). This fix does not address the separate arms failures in isaac-sim#7838 and isaac-sim#7866 that never reached readiness within 300 seconds. Validation: the deterministic regression fails on develop and passes with this change; all 11 supervisor checks pass; `uv run isaaclab -f` passes. (cherry picked from commit 0921d32)
|
run-ci |
|
Superseded by the consolidated backport in #7851 so CI validates the complete dependency/runtime/task/tooling fix set together. |
# Description Consolidates the complete `develop` to `release/3.0.0` backport set previously split across #7851, #7852, and #7853. Keeping the changes together lets CI validate the runtime, task, tooling, dependency, and renderer prerequisites as one coherent release tree. The aggregate includes all audited develop changes through `e8363313c`, including the latest #7866, #7867, #7868, #7869, and #7870 fixes. It also includes the exact net patch from #7871 (`412cac434` / patch ID `0f69afa6`) because the externally updated Franka asset already breaks the release legacy-rendering matrix; #7871 is still pending merge to `develop` at the time of this update. Release CI now uses the same immutable Isaac Sim `latest-develop` digest as `develop`: ```yaml isaacsim_image_tag: latest-develop@sha256:223adbb0a6f1897ed78d40597dac2efc740843e8051779ffdcbb021a9edc1217 ``` This supersedes #7852 and #7853. ## Type of change - Bug fix (non-breaking change which fixes an issue) - New feature (non-breaking change which adds functionality) - Documentation update - Release integration/backport ## Release backport - [ ] <!-- backport-active-release --> Not applicable: this PR targets `release/3.0.0` directly. ## Screenshots Not applicable. ## Validation - Latest five develop commits are patch-equivalent in the aggregate tree. - #7871 renderer fix matches its source patch ID exactly. - `.github/workflows/config.yaml` matches `develop`. - 33 OVRTX USD/export tests passed; 19 optional backend tests skipped locally. - 3 focused Franka Pour/Lift/Reorient collider regressions passed. - 45 standalone supervisor tests passed; 386 simulator launch cases skipped locally. - All 23 repository skills validated. - Ruff check and formatting check passed on all manually merged/latest-fix Python files. - Workflow YAML parsing, `uv lock --check`, and aggregate `git diff --check` passed. - Full `uv run isaaclab -f` and local docs build cannot run on macOS ARM64 because the lock supports Linux x86_64/aarch64 and Windows AMD64; Linux CI is authoritative for those checks. ## Checklist - [x] I have read and understood the contribution guidelines. - [ ] I have run the full pre-commit command locally (platform-incompatible; focused Ruff/format checks passed and CI is running). - [x] I have made corresponding documentation changes. - [x] My focused local checks generate no new warnings. - [x] I have added/backported tests that prove the fixes are effective. - [x] I have included changelog fragments for every touched source package. - [x] Contributor attribution is preserved from the source changes. --------- Signed-off-by: Kelly Guo <kellyg@nvidia.com> Co-authored-by: Rebecca Zhang <168459200+rebeccazhang0707@users.noreply.github.com> Co-authored-by: Kai Pei <2047767028@qq.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com> Co-authored-by: ooctipus <zhengyuz@nvidia.com> Co-authored-by: Mustafa H <34825877+StafaH@users.noreply.github.com> Co-authored-by: Maximilian Krause <99733341+maxkra15@users.noreply.github.com> Co-authored-by: Ege Sekkin <72572910+nvsekkin@users.noreply.github.com> Co-authored-by: Antoine RICHARD <antoiner@nvidia.com> Co-authored-by: Piotr Barejko <pbarejko@nvidia.com> Co-authored-by: nvsekkin <esekkin@nvidia.com> Co-authored-by: camevor <camevor@nvidia.com> Co-authored-by: hujc <jichuanh@nvidia.com> Co-authored-by: marcodiiga <1969828+marcodiiga@users.noreply.github.com> Co-authored-by: Alesiani Marco <marcodiiga@users.noreply.github.com> Co-authored-by: Diego Ferigo <dferigo@rai-inst.com> Co-authored-by: Matthew Taylor <mataylor@nvidia.com> Co-authored-by: Yuchen Deng <yuchendeng@nvidia.com> Co-authored-by: Daniela Hase <116915287+daniela-hase@users.noreply.github.com> Co-authored-by: Henry Hu <yukanghu7@163.com> Co-authored-by: r-schmitt <139814266+r-schmitt@users.noreply.github.com>
Summary
Completes the tooling, regression-test, and repository-skill changes from
developthat were not fully present onrelease/3.0.0.Backported source PRs: #7550, #7535, #7582, and #7359.
This adds golden simulation-state regression support, clearer pretrained-checkpoint error coverage, the OVRTX test import correction, and the issue audit/triage repository skills.
Validation
tools/skills/cli.py checkgit-lfsis unavailable locally)git diff --checkThe pretrained-checkpoint test module requires Isaac Sim extension packages that are unavailable on this macOS host. CI remains authoritative for that coverage.
Latest develop sync (2026-09-17)
Backports #7867 and #7869 exactly: nightly image update PRs now follow the repository template and trigger CI only for newly changed updates, while standalone demos that become ready before the startup deadline can complete their soak interval. Both cherry-picked patch IDs match
developexactly. The standalone supervisor suite passes (45 passed; 386 simulator launch cases skipped locally), the workflow parses as YAML, and Ruff, formatting, aggregategit diff --check, and combined-tree provenance checks pass.