Skip to content

[Backport release/3.0.0] Bundle #7272, #7121, #7183, #7306, #7305, and #7303 - #7313

Merged
ooctipus merged 7 commits into
isaac-sim:release/3.0.0from
ooctipus:codex/backport-7272-release-3.0.0
Aug 24, 2026
Merged

[Backport release/3.0.0] Bundle #7272, #7121, #7183, #7306, #7305, and #7303#7313
ooctipus merged 7 commits into
isaac-sim:release/3.0.0from
ooctipus:codex/backport-7272-release-3.0.0

Conversation

@ooctipus

@ooctipus ooctipus commented Aug 24, 2026

Copy link
Copy Markdown
Collaborator

Description

Backports six merged PRs to release/3.0.0 as separate provenance-preserving cherry-picks:

Source PR Source commit Backport commit Scope
#7272 0081477fea2 c9fc1997476 Fix scene-wide gravity distributions for PhysX and OvPhysX.
#7121 9f65e3d4fd2 cce8acd84e1 Fix backend-factory fallback before simulator initialization.
#7183 3fcc9c6b824 99d58d3d3c4 Streamline the getting-started documentation.
#7306 6aad90be0ae 9a786cc028a Optimize Newton test runtime.
#7305 1c9ba908cf1 a2dc8ce948e Disable Warp autodiff in the test suite.
#7303 393fc37d2b0 249a5cb97d8 Remove post-Hydra preset resolution.

#7272 forwards the validated uniform, log_uniform, or gaussian distribution through both scene-wide backend paths. Newton behavior is unchanged.

#7121 makes factory resolution fall back to Newton when no SimulationContext exists while retaining the visualizer contract of reporting no active backend before context creation.

#7183 is documentation-only. #7306 and #7305 change test infrastructure only; they do not change runtime behavior.

#7303 makes resolve_task_config and parse_env_cfg the task-composition boundary. Runtime consumers now require concrete physics, renderer, and camera configurations and no longer attempt late preset fallback after Hydra composition.

The branch was synchronized with the current release/3.0.0 tip containing #7301 before #7303 was applied. All six source cherry-picks applied without conflicts. A file-by-file existence, mode, and blob audit confirmed that every #7303 path matches its merged source commit exactly.

Validation

#7272

  • Regression verification against the unpatched release/3.0.0 tip — both PhysX and OvPhysX cases failed as expected.
  • uv run --extra test --frozen python -m pytest -q source/isaaclab/test/envs/test_gravity_randomization.py source/isaaclab/test/envs/test_mdp_event_selectors.py — 7 passed.
  • uv run --extra test --extra ovphysx --frozen python -m pytest -q source/isaaclab_ov/test/physics/test_ovphysx_gravity.py — 1 passed.

#7121

  • Regression verification before the Fix backend factory fallback before simulator initialization #7121 cherry-pick reproduced the original NoneType.physics_manager failure.
  • uv run --extra test --frozen python -m pytest -q source/isaaclab/test/utils/test_backend_utils.py source/isaaclab/test/visualizers/test_visualizer.py — 18 passed.

#7183

  • uv run --frozen --extra test python -m pytest --noconftest -q tools/test/test_environ_docs.py — 26 passed.

#7306

  • All 9 affected paths match the merged source PR exactly.
  • The full simulator-backed Newton suite is left to backport CI because this local worktree does not include the full Isaac Sim runtime.

#7305

  • Loaded the root conftest.py successfully with Warp unavailable.
  • Loaded it with Warp installed and confirmed wp.config.enable_backward is False.

#7303

  • Hydra and Shadow Hand camera suites — 129 passed.
  • Benchmark capture and RL entrypoint suites — 31 passed.
  • Experimental frontend and custom-coupling suites — 74 passed, 1 skipped.
  • Ruff and Ruff-format passed for every changed Python path.
  • Source/backport audit — 54 paths checked, 0 mismatches.
  • The Isaac Sim-backed integration case is left to CI because this local worktree is kitless.

Repository gates

  • git diff --check upstream/release/3.0.0...HEAD — passed.

# Description

Scene-wide gravity randomization accepted `uniform`, `log_uniform`, and
`gaussian`, but the PhysX and OvPhysX paths always sampled uniformly.
This change forwards the validated configured distribution to both
scene-wide backend paths. Newton behavior is unchanged.

The focused regression exercises full event dispatch with deterministic
Gaussian sampling on both affected backends.

Tested with:

- `uv run --extra test -m pytest
source/isaaclab/test/envs/test_gravity_randomization.py
source/isaaclab/test/envs/test_mdp_event_selectors.py -q` (7 passed)
- `uv run --extra test --extra ovphysx -m pytest
source/isaaclab_ov/test/physics/test_ovphysx_gravity.py -q` (1 passed)
- `uv run isaaclab -f`
- `uv run python tools/changelog/cli.py check develop
--include-worktree`

## Type of change

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

## Screenshots

Not applicable.

## 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
`uv run isaaclab -f`
- [x] I have made corresponding changes to the documentation (not
applicable; no public API change)
- [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 0081477)
@ooctipus
ooctipus requested a review from a team August 24, 2026 01:02
@ooctipus ooctipus added bug Something isn't working isaac-lab Related to Isaac Lab team labels Aug 24, 2026

@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 patch correctly caches the validated gravity distribution and forwards it through the PhysX and OvPhysX scene-wide randomization paths instead of forcing uniform sampling. The focused regression test and changelog fragment cover the user-visible fix.

  • Design and architecture: Backend dispatch and ownership remain unchanged. The cached distribution is used only by the two scene-wide backend paths, while Newton continues using its existing per-environment sampling implementation.
  • API: The public call signature, defaults, parameter names, and gravity unit documentation are unchanged. The existing contract that distribution selection is cached during initialization is preserved, and the required source-package changelog fragment is present.
  • Implementation: The distribution is validated before either backend can use it, and both changed calls pass the cached value to the existing randomization helper. Tensor placement, shapes, backend conversions, and gravity sinks remain unchanged. The parameterized regression test exercises both PhysX and OvPhysX dispatch with deterministic Gaussian sampling.

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.

@greptile-apps

greptile-apps Bot commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This backport makes scene-wide PhysX and OvPhysX gravity randomization honor the distribution validated during event initialization.

  • Caches the configured gravity distribution for backend-specific calls.
  • Forwards that distribution through both PhysX and OvPhysX sampling paths.
  • Adds parameterized regression coverage for Gaussian sampling and documents the fix.

Confidence Score: 5/5

The PR appears safe to merge, with no actionable correctness, security, or quality issues identified.

The configured distribution is already validated during term initialization, the shared helper accepts each supported distribution, and both backend paths convert the sampled result into the expected three-value gravity representation.

Important Files Changed

Filename Overview
source/isaaclab/isaaclab/envs/mdp/events.py Correctly forwards the validated, initialization-time distribution to the shared randomization helper for both scene-wide backends.
source/isaaclab/test/envs/test_gravity_randomization.py Exercises distinct PhysX and OvPhysX dispatch branches and verifies that Gaussian parameters reach each gravity sink.
source/isaaclab/changelog.d/antoiner-scene-gravity-distribution.rst Accurately documents the corrected distribution behavior.

Reviews (1): Last reviewed commit: "Fix gravity distributions for PhysX and ..." | Re-trigger Greptile

…im#7121)

# Description

`FactoryBase._get_backend()` can be called before a `SimulationContext`
has been created, but it previously dereferenced
`SimulationContext.instance().physics_manager` unconditionally.
`SimulationContext.instance()` returns `None` before initialization, so
backend resolution could fail before any fallback was applied.

Following maintainer confirmation, the pre-context fallback is now
`newton`. Initialized backend resolution remains unchanged for Newton,
PhysX, and OV PhysX contexts.

A separate follow-up should update `SimulationCfg(physics=None)` to
default to Newton as well; that broader configuration-default change is
intentionally outside this PR.

## Validation

Adds unit coverage for backend resolution with
`SimulationContext._instance` unset and verifies the `newton` fallback.

## Type of change

- Bug fix

---------

Signed-off-by: Sylvester Kaczmarek <16242628+sylvesterkaczmarek@users.noreply.github.com>
Co-authored-by: ooctipus <zhengyuz@nvidia.com>
(cherry picked from commit 9f65e3d)
@ooctipus ooctipus changed the title [Backport release/3.0.0] Fix gravity distributions for PhysX and OvPhysX [Backport release/3.0.0] Fix gravity distributions and backend fallback Aug 24, 2026
StafaH added 3 commits August 24, 2026 00:45
# Description

Streamlines the getting-started documentation and points environment
discovery to the interactive browser.

- Refreshes the quickstart GIFs with OVRTX rendering.
- Uses the Franka drawer task for the zero, random, and trained-policy
comparison.
- Adds a page-scoped generator at
`tools/docs/media/generate_quickstart.sh` so the media can be
reproduced.
- Preserves environment-browser preview assignments without the removed
catalog page.

## Validation

- `tools/docs/media/generate_quickstart.sh`
- `uv run --frozen isaaclab -f`
- `uv run --frozen --isolated --extra test -- make -C docs current-docs`
- Existing focused environment-browser checks

(cherry picked from commit 3fcc9c6)
# Description

Reduces `isaaclab_newton` CI runtime while preserving distinct
behavioral coverage.

- Tests actuator target-mode configuration directly instead of launching
a simulation for pure configuration behavior.
- Preserves singleton and batched coverage at initialization boundaries,
then uses representative batched layouts for downstream behavior.
- Consolidates redundant rigid-object and rigid-object-collection
parameter matrices.
- Keeps the complete contact lifecycle shape matrix while narrowing the
secondary horizontal-collision matrix to representative primitive and
mesh cases.
- Combines contact-sensor metadata checks into one scene.
- Removes simulation-backed print/string smoke tests and replaces
tautological self-comparisons with cross-view behavioral assertions.

## Before and after measurement

Measured with the CI-style per-file test runner on the same workstation,
using a new empty Warp cache for each revision. Both revisions use the
repository-default Warp backward configuration:

| Revision | Cases | Result | Wall time |
|---|---:|---|---:|
| `upstream/develop` (`c4a275975`) | 1,180 | 0 failures, 0 errors | 30m
44.38s |
| This PR (`552b329a8`) | 907 | 0 failures, 0 errors | 21m 41.56s |

This saves **9m 02.82s (29.4%)** in a cold-cache run. Both measurements
executed all 35 Newton test files.

Measurement command:

```bash
TEST_FILTER_PATTERN=isaaclab_newton \
WARP_CACHE_PATH=<new-empty-cache> \
uv run --no-sync python -m pytest tools -q
```

## Type of change

- Test and CI performance improvement (non-breaking)

## Validation

- Full optimized Newton suite: 35 files, 907 cases, 0 failures, 0
errors.
- Full untouched baseline suite: 35 files, 1,180 cases, 0 failures, 0
errors.
- Focused changed suites all pass: articulation, rigid object, rigid
object collection, contact sensor, frame transformer, IMU, joint wrench,
and PVA.
- Ruff and Ruff format hooks pass for all changed Python files.
- `git diff --check` passes.
- `uv run --no-sync isaaclab -f` passes all applicable hooks; the
repository-wide changelog checker reports pre-existing fragment
immutability/missing-fragment issues in unrelated packages. This PR
includes an `isaaclab_newton` `.skip` fragment.

## Checklist

- [x] I have read and followed the contribution guidelines.
- [x] I have run the relevant tests and included the results above.
- [x] I have formatted and linted the changed files.
- [x] I have added the appropriate changelog fragment.

## Screenshots

Not applicable.

(cherry picked from commit 6aad90b)
## Summary

- Disable Warp backward code generation before pytest collection to
reduce cold kernel compile times.
- Keep lightweight tooling compatible when Warp is not installed.
- Run the test matrix when the root pytest configuration changes; the
cache warmer uses the same configuration.

## Validation

- Warp-free tools tests: 29 passed
- `uv run isaaclab -f`

(cherry picked from commit 1c9ba90)
@github-actions github-actions Bot added documentation Improvements or additions to documentation infrastructure labels Aug 24, 2026
@ooctipus ooctipus changed the title [Backport release/3.0.0] Fix gravity distributions and backend fallback [Backport release/3.0.0] Backport #7272, #7121, #7183, #7306, and #7305 Aug 24, 2026
## Summary

- make resolve_task_config and parse_env_cfg the task configuration
composition boundary, with explicit programmatic overrides
- remove late preset fallback handling from environments, simulation,
launch scanning, camera validation, benchmarks, and RL summaries
- require runtime consumers to receive concrete physics, renderer, and
camera configurations
- route scripts, tools, integrations, and relevant tests through
registered task composition

This is a separate follow-up to isaac-sim#7301; it does not mix the earlier
preset ownership cleanup into this PR.

## Validation

- 129 Hydra and Shadow Hand camera tests passed
- 31 benchmark capture and RL entrypoint tests passed
- 23 experimental frontend tests passed, 1 skipped
- 5 custom-coupling tests passed
- representative composition audit confirmed six task trees contain no
remaining PresetCfg nodes
- Python compile checks passed for all changed runtime and script paths
- ruff and ruff-format passed

The full format command passes every hook except the changelog
comparison, which uses the stale local origin/develop ref and flags six
pre-existing upstream fragments that this branch does not modify. This
PR includes all required package fragments.

(cherry picked from commit 393fc37)
@github-actions github-actions Bot added the isaac-mimic Related to Isaac Mimic team label Aug 24, 2026
@ooctipus ooctipus changed the title [Backport release/3.0.0] Backport #7272, #7121, #7183, #7306, and #7305 [Backport release/3.0.0] Bundle #7272, #7121, #7183, #7306, #7305, and #7303 Aug 24, 2026
@ooctipus
ooctipus merged commit 8c32ffc into isaac-sim:release/3.0.0 Aug 24, 2026
49 of 50 checks passed
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 isaac-lab Related to Isaac Lab team isaac-mimic Related to Isaac Mimic team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants