Skip to content

[Docs] Fix environment browser task scopes - #7207

Merged
StafaH merged 7 commits into
isaac-sim:developfrom
StafaH:fix/environment-browser-task-scopes
Aug 21, 2026
Merged

[Docs] Fix environment browser task scopes#7207
StafaH merged 7 commits into
isaac-sim:developfrom
StafaH:fix/environment-browser-task-scopes

Conversation

@StafaH

@StafaH StafaH commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Description

Fix the environments-page command builder and task browser:

  • Make the pre-trained checkpoint control actionable from Train by switching the command to Play, and disable it for Contrib and Warp.
  • Add a Core / Contrib / Warp task-collection switch beside the task picker and use it to partition both the picker and available-task list.
  • Derive Warp-compatible tasks from the same frontend compatibility path used at runtime, keep canonical task IDs, and emit --frontend warp.
  • Align the --task dropdown with the physics selector below it.

Type of change

  • Bug fix
  • Documentation update

Validation

  • uv run isaaclab -f
  • uv run python -m pytest --confcutdir=tools/test tools/test/test_environ_docs.py::test_environment_browser_rows_include_concrete_core_and_contributed_selectors
  • uv run --isolated --extra test -- make -C docs current-docs
  • node --check docs/source/_static/css/environment-browser.js
  • Headless Chrome interaction check for Core, Contrib, Warp, and pre-trained checkpoint command generation

The full tools/test/test_environ_docs.py file has one unrelated existing failure in test_physics_names_for_docs_infers_physx_from_default; the focused environment-browser metadata test passes.

Checklist

  • I have read and understood the contribution guidelines
  • I have run the pre-commit checks
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added focused coverage for the generated Warp metadata
  • No source package was changed, so no package changelog fragment is required
  • My name already exists in CONTRIBUTORS.md

@StafaH
StafaH requested a review from a team August 20, 2026 06:10
@github-actions github-actions Bot added bug Something isn't working documentation Improvements or additions to documentation infrastructure labels Aug 20, 2026
@greptile-apps

greptile-apps Bot commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR partitions the environment browser into Core, Contrib, and Warp collections, derives Warp compatibility during documentation generation, and changes the checkpoint control to switch commands from Train to Play.

  • Adds collection-scoped task pickers and browser lists.
  • Generates canonical Warp-compatible task metadata and --frontend warp commands.
  • Updates command-builder styling, checkpoint behavior, and focused documentation-generation tests.

Confidence Score: 3/5

The PR should not merge until Warp scope constrains incompatible physics choices and checkpoint controls reflect actual published-checkpoint availability.

The browser currently generates commands that deterministically fail when Warp is paired with an offered PhysX backend and can generate checkpoint commands that terminate without launching for unsupported task, library, or backend combinations.

Files Needing Attention: docs/source/_static/css/environment-browser.js

Important Files Changed

Filename Overview
docs/source/_static/css/environment-browser.js Adds collection-scoped browser state and command generation, but allows invalid Warp/physics combinations and enables unavailable pre-trained checkpoints.
tools/environ_docs.py Adds Warp compatibility derivation and serialization to generated browser metadata.
docs/source/setup/environments.rst Adds the Core, Contrib, and Warp collection controls and removes the redundant Contrib category.
docs/source/_static/css/environment-browser.css Styles the new collection switch, aligned task label, and disabled checkpoint control.
tools/test/test_environ_docs.py Extends generated-row coverage to include Warp compatibility metadata, without exercising the browser command combinations implicated above.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  Scope["Collection scope"] --> Tasks["Scoped task metadata"]
  Tasks --> Selectors["Task / RL / physics selectors"]
  Scope --> Command["Command builder"]
  Selectors --> Command
  Command --> CLI["isaaclab play/train"]
  CLI --> Frontend["Selected frontend"]
  CLI --> Checkpoint["Published checkpoint lookup"]
Loading

Reviews (1): Last reviewed commit: "Fix environment browser task scopes" | Re-trigger Greptile

Comment thread docs/source/_static/css/environment-browser.js
Comment thread docs/source/_static/css/environment-browser.js Outdated

@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

The Core/Contrib/Warp partition and generated Warp metadata are integrated coherently, but the browser can emit Warp commands with physics configurations that were never checked for Warp compatibility, and the Warp scope handler fails when generation produces no compatible tasks.

  • Design and architecture: Warp eligibility is calculated only after applying the newton_mjwarp preset, while Warp scope leaves all task physics choices available and always emits --frontend warp. Constrain Warp scope to the configuration used for compatibility determination, or validate eligibility against the selected physics configuration.
  • API: The added positional supportsWarpFrontend metadata is padded and consumed consistently, and the RST scope controls match the JavaScript selectors. The remaining command-builder contract ambiguity is that selecting Warp communicates compatibility even when the generated command uses an unchecked physics preset.
  • Implementation: The scope transition logic assumes every scope contains at least one task. Because compatibility discovery intentionally converts import or registry failures into False, regeneration can produce an empty Warp collection and scopedTasks[0].task will throw. Empty scopes should be guarded or disabled.

Minor fixes needed. Posted 2 actionable findings inline.

Automated review; human maintainers own approval decisions.

Comment thread docs/source/_static/css/environment-browser.js
Comment thread docs/source/_static/css/environment-browser.js

@AntoineRichard AntoineRichard left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM, though my AI mentioned the following:


  - Important: docs/source/_static/css/environment-browser.js:672 — switching to Warp
    retains a previously selected non-Warp physics preset. For example, select
    isaacsim_physx in Core, then select Warp: the command includes --frontend warp
    physics=isaacsim_physx, which is incompatible. Force or restrict the physics selector
    to newton_mjwarp when entering Warp scope.

  Review Coverage

  Reviewed all changed JS/CSS, Python generator, RST, and tests. No other high-confidence
  findings. Pytest could not start in this sandbox due to its network-namespace

StafaH added a commit that referenced this pull request Aug 21, 2026
# Description

Fix the recurring `isaaclab_rl` LEAPP export failure for
`Isaac-Reach-Franka` on Newton MJWarp.

The existing workaround passes `limit_cpu_threads=1` to `SimulationApp`,
but the failing stack is in OpenUSD's concurrent parser and OpenUSD
reads `PXR_WORK_THREAD_LIMIT` during process startup. Set that
environment variable on every LEAPP child process so USD is serialized
before any USD module is imported, while retaining the existing Kit-side
limit.

This keeps the current task and Newton backend coverage. It also adds a
deterministic subprocess probe for the environment contract.

Observed in unrelated PRs:

- #6762:
https://github.com/isaac-sim/IsaacLab/actions/runs/32343107298/job/96578439022
- #6673:
https://github.com/isaac-sim/IsaacLab/actions/runs/32419190550/job/96590692454
- #7207:
https://github.com/isaac-sim/IsaacLab/actions/runs/32418984574/job/96590568310

OpenUSD documents `PXR_WORK_THREAD_LIMIT=1` as single-threaded mode:
https://openusd.org/dev/api/thread_limits_8h.html

## Type of change

- Bug fix (non-breaking change which fixes an issue)

## Validation

- `uv run --extra sb3 --extra skrl --extra rl-games --extra leapp python
-m pytest source/isaaclab_rl/test/export/test_leapp_export_flow.py -k
'openusd_thread_limit or rsl_rl-Isaac-Reach-Franka' -vv` (2 passed)
- `uv run isaaclab -f`
- `uv run python tools/changelog/cli.py check develop`

## Checklist

- [x] I have read and understood the contribution guidelines
- [x] I have run the pre-commit checks with `uv run isaaclab -f`
- [x] Documentation is not required for this test-only mitigation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective
- [x] I have added a changelog fragment for every touched package
- [x] My name is already in `CONTRIBUTORS.md`
@StafaH
StafaH enabled auto-merge (squash) August 21, 2026 08:30
@StafaH
StafaH merged commit 4394665 into isaac-sim:develop Aug 21, 2026
45 of 46 checks passed
@ooctipus
ooctipus deleted the fix/environment-browser-task-scopes branch August 21, 2026 08:47
kellyguo11 added a commit that referenced this pull request Aug 22, 2026
## Description

Bundled backport to `release/3.0.0` to reduce CI load.

Source PRs reviewed for this bundle:

- #7020 — already represented in `release/3.0.0`; its cherry-pick was
empty, so no duplicate commit was added.
- #7207
- #7229
- #7227
- #7231
- #6762
- #7208
- #7168 — backports the current PR head while the source PR is still
open.
- #7157
- #7216

## Type of change

- Bug fix
- Documentation update
- Workflow / packaging update

## Checklist

- [x] I have read and understood the contribution guidelines.
- [x] I have run formatting checks.
- [x] Documentation changes are included.
- [x] Documentation build generates no new warnings.
- [x] Focused regression coverage passed.
- [x] Required changelog fragments are included by the source PRs.
- [x] Contributors are already listed or included by the source PRs.

---------

Signed-off-by: Kelly Guo <kellyg@nvidia.com>
Co-authored-by: Mustafa H <34825877+StafaH@users.noreply.github.com>
Co-authored-by: Richard Lei <rilei@nvidia.com>
Co-authored-by: Mustafa Haiderbhai <mhaiderbhai@nvidia.com>
Co-authored-by: Kelly Guo <kellyg@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working documentation Improvements or additions to documentation infrastructure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants