[Docs] Fix environment browser task scopes - #7207
Conversation
Greptile SummaryThe 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.
Confidence Score: 3/5The 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
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"]
Reviews (1): Last reviewed commit: "Fix environment browser task scopes" | Re-trigger Greptile |
There was a problem hiding this comment.
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_mjwarppreset, 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
supportsWarpFrontendmetadata 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 andscopedTasks[0].taskwill throw. Empty scopes should be guarded or disabled.
Minor fixes needed. Posted 2 actionable findings inline.
Automated review; human maintainers own approval decisions.
AntoineRichard
left a comment
There was a problem hiding this comment.
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
# 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`
## 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>
Description
Fix the environments-page command builder and task browser:
--frontend warp.--taskdropdown with the physics selector below it.Type of change
Validation
uv run isaaclab -fuv run python -m pytest --confcutdir=tools/test tools/test/test_environ_docs.py::test_environment_browser_rows_include_concrete_core_and_contributed_selectorsuv run --isolated --extra test -- make -C docs current-docsnode --check docs/source/_static/css/environment-browser.jsThe full
tools/test/test_environ_docs.pyfile has one unrelated existing failure intest_physics_names_for_docs_infers_physx_from_default; the focused environment-browser metadata test passes.Checklist
CONTRIBUTORS.md