Skip to content

[Backport release/3.0.0] Complete tooling and regression-test backports - #7853

Closed
kellyguo11 wants to merge 7 commits into
isaac-sim:release/3.0.0from
kellyguo11:codex/backport-missing-tooling-tests-release-3.0.0
Closed

kellyguo11 wants to merge 7 commits into
isaac-sim:release/3.0.0from
kellyguo11:codex/backport-missing-tooling-tests-release-3.0.0

Conversation

@kellyguo11

@kellyguo11 kellyguo11 commented Sep 16, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Completes the tooling, regression-test, and repository-skill changes from develop that were not fully present on release/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

  • all 23 repository skills validated with tools/skills/cli.py check
  • changed-file pre-commit suite passed (Git LFS pointer hook skipped because git-lfs is unavailable locally)
  • changelog fragment validation passed
  • git diff --check

The 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 develop exactly. The standalone supervisor suite passes (45 passed; 386 simulator launch cases skipped locally), the workflow parses as YAML, and Ruff, formatting, aggregate git diff --check, and combined-tree provenance checks pass.

nvsekkin and others added 4 commits September 16, 2026 16:49
# 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

![Four scene-partitioned Cartpole
environments](https://raw.githubusercontent.com/nvsekkin/IsaacLab/test/scene-partitioning-perspective-golden/source/isaaclab_visualizers/test/golden_images/cartpole_all_envs/physx-kit-viewport.png)

## 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)
@kellyguo11
kellyguo11 requested a review from a team September 16, 2026 16:11
@github-actions github-actions Bot added the isaac-lab Related to Isaac Lab team label Sep 16, 2026
@greptile-apps

greptile-apps Bot commented Sep 16, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 4/5

The PR should not merge until local FileNotFoundError failures are prevented from being misreported as unavailable remote checkpoints.

Findings

  1. P1 Local Failures Look Remote ▶

Summary

This backport adds repository issue-audit skills, improves pretrained-checkpoint error reporting and tests, and adds a four-environment Kit perspective golden-image regression test.

  • Distinguishes unavailable remote checkpoints from most local download failures.
  • Adds focused tests for missing checkpoints and unwritable caches.
  • Adds visual regression coverage for scene-partitioned environments.
  • Adds issue auditing and backlog-triage workflow documentation.

Reviews (1) · Last reviewed commit: "Add issue audit and backlog triage skill..."

resume_path = retrieve_file_path(ov_path, download_dir)
except Exception:
print("A pre-trained checkpoint is currently unavailable for this task.")
except FileNotFoundError:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Local Failures Look Remote

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.

@isaaclab-review-bot isaaclab-review-bot Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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_checkpoint preserves its str | None return surface while explicitly narrowing None to remote-unavailability cases and raising a chained RuntimeError for 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 FileNotFoundError before generic failures, preserves underlying causes, and adds the OSError remediation 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.

@kellyguo11

Copy link
Copy Markdown
Contributor Author

run-ci

@isaaclab-bot isaaclab-bot Bot added ci:run-docker Trigger the on-demand Docker and GPU CI workflow and removed ci:run-docker Trigger the on-demand Docker and GPU CI workflow labels Sep 16, 2026
@kellyguo11

Copy link
Copy Markdown
Contributor Author

run-ci

@isaaclab-bot isaaclab-bot Bot added ci:run-docker Trigger the on-demand Docker and GPU CI workflow and removed ci:run-docker Trigger the on-demand Docker and GPU CI workflow labels Sep 17, 2026
kellyguo11 and others added 2 commits September 17, 2026 17:18
# 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)
@kellyguo11

Copy link
Copy Markdown
Contributor Author

run-ci

@isaaclab-bot isaaclab-bot Bot added the ci:run-docker Trigger the on-demand Docker and GPU CI workflow label Sep 17, 2026
@isaaclab-bot isaaclab-bot Bot removed the ci:run-docker Trigger the on-demand Docker and GPU CI workflow label Sep 17, 2026
@kellyguo11

Copy link
Copy Markdown
Contributor Author

Superseded by the consolidated backport in #7851 so CI validates the complete dependency/runtime/task/tooling fix set together.

@kellyguo11 kellyguo11 closed this Sep 17, 2026
kellyguo11 added a commit that referenced this pull request Sep 17, 2026
# 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

infrastructure isaac-lab Related to Isaac Lab team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants