Build docs from the extra that provides Sphinx - #7834
Conversation
The documentation build resolved its isolated environment from the ``test`` extra, which does not declare the Sphinx toolchain, so ``isaaclab -d`` failed with ``No module named sphinx``. Point it at the ``dev`` extra, which declares sphinx and the theme and extension packages the build needs.
There was a problem hiding this comment.
Isaac Lab Review Bot
Updates the documentation build command to resolve its isolated environment from the existing dev extra that provides Sphinx, with a corresponding user-visible changelog fragment.
- Design and architecture: The change is confined to the documentation command’s dependency-resolution boundary and reuses the project’s existing
devextra rather than duplicating Sphinx dependencies elsewhere. The main tradeoff is resolving the broader development dependency set for documentation builds. - API: The command names and arguments for
isaaclab -dand./isaaclab.sh -dremain unchanged. Their intended behavior is restored by making the required Sphinx toolchain available, and the change is documented in the package changelog fragment. - Implementation: The updated
--extra devargument directly affects the isolateduv runinvocation that launchespython -m sphinx. The Sphinx options, documentation working directory, output path, and command execution path remain unchanged.
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.
|
| "--isolated", | ||
| "--extra", | ||
| "test", | ||
| "dev", |
There was a problem hiding this comment.
Changing this command to pass the dev extra leaves test_build_docs_runs_sphinx_with_the_uv_test_extra expecting --extra test. The targeted CLI test will fail until its expected command and name reflect the new docs environment.
Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
|
run-ci |
) Franka Lift can stall while filling its reset-state bank: the updated `franka_panda.usda` defaults to `Colliders=primitives`, whose first-link capsule extends 6 cm below the ground. The existing ground-clearance criterion rejects every candidate, leaving the RSL-RL export batch at `0/2048` until its 600-second timeout. This PR selects `Colliders=convex_hulls` on the robot configuration shared by rigid Franka Lift and Reorient, restoring the previous collision geometry and successful reset sampling. The affected asset and reset setup originated in [#6457](#6457) ([564a008](564a008)), then moved into the current Lift tasks in [#6732](#6732) ([73106da](73106da)). The triggering change is external: the production Franka asset's top layer now selects primitive colliders and reports `Last-Modified: 2026-09-15 22:49:27 GMT`. Controlled comparisons found 0 valid states in 128 draws with the new default; explicit convex hulls and the preserved old asset both produced 63 valid states from the same draws. The same reset hang appeared in CI for #7838, #7608, #7832, #7834, and #7866. [The #7866 RL log](https://github.com/isaac-sim/IsaacLab/actions/runs/35202342707/job/105139978507) shows the batch blocked on Franka Lift after environment setup. #7866 fixes the independently configured Franka Pour task; it does not change Lift's robot configuration. This change covers Lift/Reorient only. Validation: - Fresh regression check on this branch: both Lift/Reorient cases failed without the production fix; all 9 tests in `test_lift_env_cfg.py` passed with it. - `uv run isaaclab -f` passed. - Earlier GPU validation of the identical Lift change completed the original 2,048-state harvest and reset in 22.169 seconds; the existing four-task RSL-RL export batch passed in 107.92 seconds. - Local GPU validation used PyTorch 2.11+cu128, Newton 1.6rc1, and RSL-RL 5.4.1. The identical Lift fix also passed [the full locked-environment RL CI job in #7865](https://github.com/isaac-sim/IsaacLab/actions/runs/35207648168/job/105158711330). Reset-bank sizes, clearance criteria, export behavior, the global Franka defaults, and Pour remain unchanged.
…aac-sim#7870) Franka Lift can stall while filling its reset-state bank: the updated `franka_panda.usda` defaults to `Colliders=primitives`, whose first-link capsule extends 6 cm below the ground. The existing ground-clearance criterion rejects every candidate, leaving the RSL-RL export batch at `0/2048` until its 600-second timeout. This PR selects `Colliders=convex_hulls` on the robot configuration shared by rigid Franka Lift and Reorient, restoring the previous collision geometry and successful reset sampling. The affected asset and reset setup originated in [isaac-sim#6457](isaac-sim#6457) ([564a008](isaac-sim@564a008)), then moved into the current Lift tasks in [isaac-sim#6732](isaac-sim#6732) ([73106da](isaac-sim@73106da)). The triggering change is external: the production Franka asset's top layer now selects primitive colliders and reports `Last-Modified: 2026-09-15 22:49:27 GMT`. Controlled comparisons found 0 valid states in 128 draws with the new default; explicit convex hulls and the preserved old asset both produced 63 valid states from the same draws. The same reset hang appeared in CI for isaac-sim#7838, isaac-sim#7608, isaac-sim#7832, isaac-sim#7834, and isaac-sim#7866. [The isaac-sim#7866 RL log](https://github.com/isaac-sim/IsaacLab/actions/runs/35202342707/job/105139978507) shows the batch blocked on Franka Lift after environment setup. isaac-sim#7866 fixes the independently configured Franka Pour task; it does not change Lift's robot configuration. This change covers Lift/Reorient only. Validation: - Fresh regression check on this branch: both Lift/Reorient cases failed without the production fix; all 9 tests in `test_lift_env_cfg.py` passed with it. - `uv run isaaclab -f` passed. - Earlier GPU validation of the identical Lift change completed the original 2,048-state harvest and reset in 22.169 seconds; the existing four-task RSL-RL export batch passed in 107.92 seconds. - Local GPU validation used PyTorch 2.11+cu128, Newton 1.6rc1, and RSL-RL 5.4.1. The identical Lift fix also passed [the full locked-environment RL CI job in isaac-sim#7865](https://github.com/isaac-sim/IsaacLab/actions/runs/35207648168/job/105158711330). Reset-bank sizes, clearance criteria, export behavior, the global Franka defaults, and Pour remain unchanged. (cherry picked from commit c5d33ef)
…aac-sim#7870) Franka Lift can stall while filling its reset-state bank: the updated `franka_panda.usda` defaults to `Colliders=primitives`, whose first-link capsule extends 6 cm below the ground. The existing ground-clearance criterion rejects every candidate, leaving the RSL-RL export batch at `0/2048` until its 600-second timeout. This PR selects `Colliders=convex_hulls` on the robot configuration shared by rigid Franka Lift and Reorient, restoring the previous collision geometry and successful reset sampling. The affected asset and reset setup originated in [isaac-sim#6457](isaac-sim#6457) ([564a008](isaac-sim@564a008)), then moved into the current Lift tasks in [isaac-sim#6732](isaac-sim#6732) ([73106da](isaac-sim@73106da)). The triggering change is external: the production Franka asset's top layer now selects primitive colliders and reports `Last-Modified: 2026-09-15 22:49:27 GMT`. Controlled comparisons found 0 valid states in 128 draws with the new default; explicit convex hulls and the preserved old asset both produced 63 valid states from the same draws. The same reset hang appeared in CI for isaac-sim#7838, isaac-sim#7608, isaac-sim#7832, isaac-sim#7834, and isaac-sim#7866. [The isaac-sim#7866 RL log](https://github.com/isaac-sim/IsaacLab/actions/runs/35202342707/job/105139978507) shows the batch blocked on Franka Lift after environment setup. isaac-sim#7866 fixes the independently configured Franka Pour task; it does not change Lift's robot configuration. This change covers Lift/Reorient only. Validation: - Fresh regression check on this branch: both Lift/Reorient cases failed without the production fix; all 9 tests in `test_lift_env_cfg.py` passed with it. - `uv run isaaclab -f` passed. - Earlier GPU validation of the identical Lift change completed the original 2,048-state harvest and reset in 22.169 seconds; the existing four-task RSL-RL export batch passed in 107.92 seconds. - Local GPU validation used PyTorch 2.11+cu128, Newton 1.6rc1, and RSL-RL 5.4.1. The identical Lift fix also passed [the full locked-environment RL CI job in isaac-sim#7865](https://github.com/isaac-sim/IsaacLab/actions/runs/35207648168/job/105158711330). Reset-bank sizes, clearance criteria, export behavior, the global Franka defaults, and Pour remain unchanged. (cherry picked from commit c5d33ef)
…aac-sim#7870) Franka Lift can stall while filling its reset-state bank: the updated `franka_panda.usda` defaults to `Colliders=primitives`, whose first-link capsule extends 6 cm below the ground. The existing ground-clearance criterion rejects every candidate, leaving the RSL-RL export batch at `0/2048` until its 600-second timeout. This PR selects `Colliders=convex_hulls` on the robot configuration shared by rigid Franka Lift and Reorient, restoring the previous collision geometry and successful reset sampling. The affected asset and reset setup originated in [isaac-sim#6457](isaac-sim#6457) ([564a008](isaac-sim@564a008)), then moved into the current Lift tasks in [isaac-sim#6732](isaac-sim#6732) ([73106da](isaac-sim@73106da)). The triggering change is external: the production Franka asset's top layer now selects primitive colliders and reports `Last-Modified: 2026-09-15 22:49:27 GMT`. Controlled comparisons found 0 valid states in 128 draws with the new default; explicit convex hulls and the preserved old asset both produced 63 valid states from the same draws. The same reset hang appeared in CI for isaac-sim#7838, isaac-sim#7608, isaac-sim#7832, isaac-sim#7834, and isaac-sim#7866. [The isaac-sim#7866 RL log](https://github.com/isaac-sim/IsaacLab/actions/runs/35202342707/job/105139978507) shows the batch blocked on Franka Lift after environment setup. isaac-sim#7866 fixes the independently configured Franka Pour task; it does not change Lift's robot configuration. This change covers Lift/Reorient only. Validation: - Fresh regression check on this branch: both Lift/Reorient cases failed without the production fix; all 9 tests in `test_lift_env_cfg.py` passed with it. - `uv run isaaclab -f` passed. - Earlier GPU validation of the identical Lift change completed the original 2,048-state harvest and reset in 22.169 seconds; the existing four-task RSL-RL export batch passed in 107.92 seconds. - Local GPU validation used PyTorch 2.11+cu128, Newton 1.6rc1, and RSL-RL 5.4.1. The identical Lift fix also passed [the full locked-environment RL CI job in isaac-sim#7865](https://github.com/isaac-sim/IsaacLab/actions/runs/35207648168/job/105158711330). Reset-bank sizes, clearance criteria, export behavior, the global Franka defaults, and Pour remain unchanged. (cherry picked from commit c5d33ef)
|
run-ci |
…7904) ## Description Backports ten `develop` PRs to `release/3.0.0`, including the PyTorch 2.12/CUDA 13.0 upgrade, the near-singular OSC fix, and the complete cfg-first cloning and schema-fragment migrations. The audit covers September 17, 2026 00:00 UTC through `develop` commit `4269c29a39e463dd07c74a9704d890d7a5c01e08` (September 19, 23:55 UTC), against release base `970d21ef48057a2efc3d749c0f2abab8e7e0c30e`. | Source PR | Included change | | --- | --- | | #7777 | Refresh Newton solver transforms after fixed-root pose writes | | #7608 | Make direct cloning cfg-first, including assets, callers, templates, tests, and migration documentation | | #7895 | Apply the existing CI exclusion for Franka cable/cloth/soft kitless rendering tests | | #7872 | Load the CUDA runtime matching PyTorch for Newton graph capture | | #7831 | Check authored Newton mesh-collision schema tokens correctly | | #7834 | Build documentation with the extra that provides Sphinx | | #7838 | Migrate maintained consumers to physics schema fragments, including readers and overrides | | #7840 | Consistently name Isaac Lab 3.1 as the deprecation removal release | | #7903 | Handle near-singular operational-space control | | #7674 | Upgrade PyTorch to 2.12, TorchVision to 0.27, and the CUDA stack to 13.0, including installer, wheel, and cuRobo compatibility changes | All 305 changed non-lock files match the audited `develop` snapshot exactly. The remaining file, `uv.lock`, matches that snapshot after substituting the package versions from the release branch's existing manifests; all 418 package entries were checked. Existing release package versions, compiled changelogs, documentation routing, and OVRTX compatibility code remain intact, including the #7880 revert. Source commit hashes are recorded in the commit messages. ### Already present #7866, #7870, #7867, #7869, and #7868 were included in #7851; #7819 was backported by #7884; #7883, #7885, and #7887 were backported by #7889. #7874, #7888, #7773, #7886, and #7042 were also already present. The three automatic changelog/version compilation commits are excluded; the release branch compiles its own fragments and maintains its own versions. ## Type of change - Release integration/backport - Bug fixes and documentation updates - Breaking changes already accepted for the 3.0 cloning and schema migrations; their migration guidance and changelog fragments are included ## Validation - `uv run --no-sync isaaclab -f`: all checks passed using the existing shared environment and the release base for changelog validation. - Focused cloning, OSC feature, schema parity/shim, CLI, and task configuration suite: **283 passed**. - Newton fixed-root updates and CUDA runtime/capture regressions: **14 passed**. - Complete OSC simulation suite: **21 passed**. - Mesh-collision fragments: **17 passed**; cfg-first cloning integration: **16 passed**; scene construction/ownership: **7 passed**. - The above **358 tests passed with PyTorch 2.11**. - With **PyTorch 2.12/CUDA 13.0**: installer/metadata/Docker tests **91 passed**; CPU/GPU OSC feature tests **17 passed**; complete OSC simulation suite **21 passed**. - `uv lock --check`: passed; release package manifests match their lockfile entries. - Repository skill validation: **23 skills passed**. - File-by-file source audit, release-metadata preservation checks, and `git diff --check`: passed. Local simulation used RTX 5090 and Isaac Sim 6.0.1 with PyTorch 2.11 and 2.12. The full Docker image build and fresh installation matrix were not rerun locally for this backport. Release CI uses its pinned Isaac Sim 6.1 image and remains the authoritative full integration check. Kit-dependent suites run in separate processes to avoid loading standalone USD before Kit. ## Release backport Not applicable: this PR targets `release/3.0.0` directly. ## Checklist - [x] Ran the complete pre-commit command. - [x] Included the original migration documentation, regression tests, and changelog fragments for every changed package. - [x] Preserved source attribution and recorded every source commit. - [x] Preserved the release branch's versions and existing release-specific changes. --------- Co-authored-by: vidurv-nvidia <vidurv@nvidia.com> Co-authored-by: ooctipus <ooctipus@users.noreply.github.com>
Description
isaaclab -d(and./isaaclab.sh -d) fails ondevelop:command_build_docs()insource/isaaclab/isaaclab/cli/commands/misc.pyresolves its isolated environment from thetestextra, but the Sphinx toolchain is declared in thedevextra (pyproject.toml:sphinx,sphinx-book-theme,sphinxcontrib-bibtex,sphinx-copybutton,sphinx-icon).testdeclares none of them.This matters beyond the command itself:
AGENTS.mdinstructs contributors to run./isaaclab.sh -dafter adding or changing public API symbols, so the documented workflow has been failing.One-word fix: build from
dev.Type of change
Testing
Verified both directions on the same checkout, changing only this line:
developNo module named sphinx, exit 1docs/_build/current/index.htmlproducedChecklist
pre-commitchecks with./isaaclab.sh --formatsource/<pkg>/changelog.d/for every touched packageCONTRIBUTORS.mdor my name already exists there