Skip to content

[Bump] Bump Newton to 1.6.0rc1 for newton#4017 - #7445

Merged
kellyguo11 merged 13 commits into
isaac-sim:developfrom
hujc7:jichuanh/newton-pin-4017-uvlock
Sep 5, 2026
Merged

[Bump] Bump Newton to 1.6.0rc1 for newton#4017#7445
kellyguo11 merged 13 commits into
isaac-sim:developfrom
hujc7:jichuanh/newton-pin-4017-uvlock

Conversation

@hujc7

@hujc7 hujc7 commented Aug 31, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Bumps Newton from 1.5.1 to 1.6.0rc1, the first release carrying newton#4017, unblocking the MuJoCo tendon adapter that PR [Task Clean-up][Assets] Serve the Shadow Hand from one asset with native PhysX tendons #7161 needs.
  • warp-lang and mujoco/mujoco-warp move with it, because 1.6.0rc1 requires them.
  • Pins newton[sim] in [project].dependencies as well, so a wheel built from this metadata resolves the fix rather than falling back to the newest stable.
  • Updates test literals in isaaclab and isaaclab_newton for Newton's new actuator class names, and asks for a determinism guarantee in the manipulation determinism test.

Description

resolve_fixed_tendon_actuator_columns reads mujoco.actuator_trntype through an
ArticulationView. Every Newton 1.5.x release rejects that with "has custom frequency
'mujoco:actuator' which is not supported by ArticulationView"
; newton#4017 makes
ArticulationView generic over custom frequencies.

1.6.0rc1 (published 2026-09-03) is the first release containing that fix — verified two ways:
the merge commit 4055a159 is an ancestor of v1.6.0rc1, and custom_frequency_label_attributes,
the symbol the fix introduces in newton/_src/sim/model.py, is present at v1.6.0rc1 and absent
at v1.5.1. No 1.6.0 final exists yet, and no 1.5.x backport carries the fix, so 1.6.0rc1 is
the only released option.

The release requires warp-lang>=1.17.0 and mujoco-warp~=3.12.0, so those pins move too:

Package Before After
newton[sim] 1.5.1 1.6.0rc1
warp-lang 1.16.0 1.17.0
mujoco 3.11.0 3.12.0
mujoco-warp 3.11.0 3.12.0

warp-lang is pinned to the 1.17.0 release rather than left as >=1.17.0: Newton's prerelease
enables prerelease resolution, and an unbounded bound then resolves to a nightly
(1.18.0.dev20260903).

Wheel installs get the pin too

[tool.uv].override-dependencies only reaches uv sync, so it does not constrain a wheel built
from this metadata. 1.6.0rc1 is a prerelease, which a default resolve skips, so a loose bound
resolved newton 1.5.1 — without newton#4017, the fix this bump exists to deliver. Since
wheel.yml builds on every push to develop, that would have shipped.

[project].dependencies now pins newton[sim]==1.6.0rc1, matching the override. A default
resolve of the new metadata returns 1.6.0rc1 under both uv pip compile and pip download,
with no --pre flag. isaacsim-core==6.0.1.0 requires newton[sim]==1.2.1, so installing the
isaacsim extra still needs an override — exactly as on develop, which carries an equally
exact pin in the same place.

Newton actuator class rename

1.6.0rc1 introduces DrivePD / DriveNeuralMLP / DriveNeuralLSTM alongside the existing
ControllerPD / ControllerNeural*. Both names remain importable, so this is not a breaking
API change and no production code changes. Tests in isaaclab and isaaclab_newton assert on the
class name Newton constructs with, which switched to the Drive* form, so those literals are
updated.

Determinism

test_manipulation_env_determinism[cuda-Isaac-Open-Drawer-Franka] failed on this branch in CI.
Two separate questions: whether the bump caused it, and why it failed at all.

Not caused by the bump. Each arm was run 5x on the same machine, because a single run of an
intermittent test samples a coin rather than measuring it:

GPU develop pins (newton 1.5.1 / warp 1.16.0 / mujoco 3.11.0) this PR (newton 1.6.0rc1 / warp 1.17.0 / mujoco 3.12.0)
RTX PRO 6000 Blackwell 3 / 5 failed 3 / 5 failed
L40 3 / 3 passed 4 / 4 passed

Both pin sets fail at the same rate on Blackwell and both are clean on L40, so the failure is
hardware-dependent, not version-dependent. Intermediate Newton revisions (the commits before and
at newton#4119, the MuJoCo 3.12 bump) show
the same behaviour, so neither Warp 1.17, MuJoCo 3.12, nor #4119 is implicated.

Why it failed. The test asserted bit-reproducible rewards without ever asking for a
determinism guarantee. Newton defaults to wp.DeterministicMode.NOT_GUARANTEED, under which
Warp's atomics may accumulate in any order, so two runs of the same environment are not required
to agree — the assertion was stricter than the configuration it ran under, and whether it held
came down to GPU scheduling.

The Newton-backed case now passes deterministic_mode="run_to_run", which is exactly the
guarantee this test asserts: one device, one process, run twice. deterministic_mode is a Newton
setting, so the PhysX-backed IsaacContrib-Lift-Cube-Franka case leaves it unset and the helper
keeps asserting that the mode is only applied to a NewtonCfg backend. This is a
test-configuration fix, not a masking of the intermittency: the guarantee the assertion depends
on is now actually requested.

Related: #7561 addresses the adjacent layer and
does not overlap this PR. Newton's solvers take a per-module deterministic argument, which is
what deterministic_mode reaches and what this PR sets; Newton's sensor and geometry kernels take
no such argument and fall back to the warp.config.deterministic global, which #7561 raises from
the same config field in the RL entrypoint.

Type of change

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

Release backport

  • Backport this pull request to the active release branch after it merges into develop

Validation

  • uv lock --check — clean; the relock moves exactly the four packages above, and the
    [project].dependencies pin moves exactly one further lockfile line
  • Default resolve of the published metadata returns newton==1.6.0rc1 under both
    uv pip compile and pip download, with no --pre flag
  • uv run --frozen python -m pytest source/isaaclab/test/cli/test_wheel_builder_metadata.py source/isaaclab/test/cli/test_uv_run_pyproject.py — 21 passed, which enforces that the two generated uv-overrides.txt files match the override table and that [tool.isaaclab.versions] mirrors the dependency pins
  • uv run isaaclab -f — passed
  • Full Docker + Tests suite — 48 passed / 0 failed on b184335e80b

@github-actions github-actions Bot added documentation Improvements or additions to documentation isaac-lab Related to Isaac Lab team infrastructure labels Aug 31, 2026
@hujc7 hujc7 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 Aug 31, 2026
@hujc7 hujc7 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 Aug 31, 2026
@hujc7 hujc7 changed the title [Fix] Pin Newton to the commit carrying newton#4017 [Fix] Bump Newton to 1.6.0rc1 for newton#4017 Sep 3, 2026
@hujc7 hujc7 added the ci:run-docker Trigger the on-demand Docker and GPU CI workflow label Sep 3, 2026
Isaac Sim ships some prebundled packages twice: a flat directory and an
extras-qualified mirror, <pkg>[extras]/<pkg>-<version>-*/<pkg>, whose contents
are per-file symlinks into the flat copy. Only the flat directory was
repointed, so the mirror kept pointing at the shipped version's file list.

MEASURED on the Isaac Sim image: newton[sim]/newton-1.5.0-py3-none-any/newton
holds 842 symlinks, and 330 of their targets do not exist in the newton the
pin installs, 232 of them under _src/solvers/kamino.

Collapse each mirror to the same symlink the flat directory already gets, so
one directory link replaces a per-file tree that goes stale on every bump.
Mirrors are matched by name rather than glob, since newton[sim] is a valid
character class that would otherwise match newtons.
@hujc7
hujc7 force-pushed the jichuanh/newton-pin-4017-uvlock branch from 487e413 to f950b51 Compare September 3, 2026 11:21
@hujc7 hujc7 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 3, 2026
@hujc7
hujc7 force-pushed the jichuanh/newton-pin-4017-uvlock branch from f950b51 to 9282d41 Compare September 3, 2026 12:09
@hujc7 hujc7 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 3, 2026
1.6.0rc1 is the first release carrying newton#4017, which makes ArticulationView
generic over custom frequencies; the MuJoCo tendon adapter needs it to read
mujoco.actuator_trntype. The release requires warp-lang >=1.17 and mujoco-warp
3.12, so those pins move with it.

Both uv-overrides.txt files are regenerated from the override table rather than
edited by hand.
@hujc7
hujc7 force-pushed the jichuanh/newton-pin-4017-uvlock branch from 9282d41 to cd565d7 Compare September 3, 2026 12:24
@hujc7 hujc7 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 3, 2026
@hujc7
hujc7 marked this pull request as ready for review September 4, 2026 16:35
@hujc7
hujc7 requested a review from a team September 4, 2026 16:35
develop pins Newton to 24bd8635 via isaac-sim#7453, which sits 16 commits before
newton#4017 and so lacks the ArticulationView fix this branch exists to deliver.
1.6.0rc1 is a descendant of that commit, so keeping the release pin loses
nothing develop gained.

Drop two things develop now does better: it expands package_roots to include the
extras-qualified wheel trees, which covers the prebundle mirrors this branch
walked by hand, and its P-ADMM fix applies the sparse flags only for
penalty_update_method rather than for every field.
@hujc7 hujc7 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 4, 2026
@greptile-apps

greptile-apps Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR upgrades Newton to 1.6.0rc1 with the corresponding Warp and MuJoCo versions, updates actuator assertions for Newton's renamed drive classes, repairs extras-qualified prebundle mirrors, and makes the Newton manipulation determinism test request run-to-run determinism.

  • Pins Newton 1.6.0rc1, Warp 1.17.0, and MuJoCo/MuJoCo-Warp 3.12.0 across dependency metadata and generated overrides.
  • Repoints nested extras-qualified Isaac Sim prebundle package mirrors to the active environment.
  • Updates Newton actuator and Kamino solver compatibility tests.
  • Requests deterministic Newton execution in the manipulation determinism test.

Confidence Score: 5/5

The PR appears safe to merge, with no concrete changed-code defect or security regression identified.

The coordinated dependency pins cover the repository's supported platforms, compatibility-sensitive test expectations were updated, and the prebundle and determinism changes preserve their documented runtime contracts.

Important Files Changed

Filename Overview
pyproject.toml Updates the coordinated Newton, Warp, MuJoCo, and MuJoCo-Warp dependency pins consistently.
source/isaaclab/isaaclab/cli/commands/install.py Discovers and repoints extras-qualified nested prebundle mirrors alongside flat package directories.
source/isaaclab/test/cli/test_install_prebundle.py Adds focused coverage for nested mirror discovery, literal bracket matching, and symlink idempotency.
source/isaaclab/test/actuators/test_newton_adapter.py Updates actuator assertions to Newton 1.6's constructed DrivePD class.
source/isaaclab_newton/test/assets/test_newton_actuators_newton.py Updates PD and neural actuator introspection expectations to the new Drive class names.
source/isaaclab_newton/test/physics/test_newton_manager_abstraction.py Constructs a sparse P-ADMM configuration accepted by Newton 1.6 while preserving field-forwarding coverage.
source/isaaclab_tasks/test/core/test_environment_determinism.py Requests run-to-run determinism for the Newton-backed drawer manipulation case.
uv.lock Relocks the coordinated physics dependencies and supported-platform artifacts without an identified changed-code vulnerability.

Reviews (1): Last reviewed commit: "Merge develop; drop the CI fixes it land..." | Re-trigger Greptile

@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 Newton, Warp, and MuJoCo dependency updates are internally consistent, but three changelog fragments do not accurately describe the changes in this patch. The Newton release note incorrectly identifies the previous dependency as Newton 1.5.1 rather than the pinned 1.6.0.dev0 git revision, and three .skip entries refer to unrelated or absent implementation changes.

  • Design and architecture: The dependency structure remains coherent: newton[sim]>=1.2.0 supports wheel co-resolution while the uv override selects 1.6.0rc1, and the override files and lock manifest reflect the same Newton, Warp, and MuJoCo versions. No architectural correction is required beyond keeping the release metadata aligned with the actual dependency transition.
  • API: No Isaac Lab public API is changed. Newton now constructs the renamed Drive* actuator classes and the affected tests were updated, but the user-facing changelog currently misstates the prior Newton source and version; it should describe the move from the pinned git revision recorded as 1.6.0.dev0 to the 1.6.0rc1 PyPI release.
  • Implementation: The dependency pins and actuator test expectations are aligned with the updated lockfile. Before merge, remove the two unrelated isaaclab .skip fragments and correct the isaaclab_newton fragment, which currently describes a P-ADMM solver test change absent from this patch rather than the actuator class-name literal updates that actually landed.

Minor fixes needed. Posted 3 actionable findings inline.

Automated review; human maintainers own approval decisions.

Changed
^^^^^^^

* Changed the pinned Newton version from ``1.5.1`` to ``1.6.0rc1``, the first release carrying

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.

🟡 Warning · Api — Release note misstates the previous Newton pin

This diff replaces newton[sim] @ git+...@24bd8635..., which uv.lock recorded as version 1.6.0.dev0, not 1.5.1. The published note therefore misidentifies both the prior dependency and who was affected by the ArticulationView custom-frequency error. Restate it as moving from the pinned Newton git revision to the 1.6.0rc1 PyPI release, and consider noting the ControllerPD to DrivePD construction rename that this bump makes user-visible.

@@ -0,0 +1 @@
CI-only fix; no user-visible change.

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.

🔵 Suggestion · Implementation — Unrelated changelog fragments committed

This fragment and jichuanh-kitless-isaac-sim-symlink.skip describe a deps-invariants fix and a kit-less Isaac Sim symlink fix, neither of which appears in this diff; the isaaclab change here is already covered by jichuanh-newton-pin-4017.minor.rst. Drop both so the commit stays focused and changelog.d does not accumulate fragments for unshipped work.

@@ -0,0 +1,2 @@
Test-only change: the P-ADMM round-trip test now builds a solver combination the

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.

🔵 Suggestion · Implementation — Fragment describes a change absent from diff

The only isaaclab_newton change here updates actuator class-name literals in test/assets/test_newton_actuators_newton.py; no P-ADMM round-trip or solver-combination change exists in this PR. The fragment text therefore records inaccurate release metadata for the package. Reword it to describe the actuator class-name update that actually lands.

Drop two fragments left over from isaac-sim#7405, which merged: the docker and CLI
changes they described are no longer part of this branch.

Rename the isaaclab_newton fragment to describe the change that is actually
here. The P-ADMM solver-combination fix now comes from develop, so the only
remaining change in that package is the test update for Newton's new drive
class names.

State why the manipulation case asks for run_to_run rather than implying it
matches the cartpole cases, which request the stronger gpu_to_gpu.
@hujc7 hujc7 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 4, 2026
The install test pins the exact Newton version the wheel must resolve, and the
literal still named the git-pin build develop carries (1.6.0.dev0). This branch
pins the 1.6.0rc1 release, so the assertion failed in Installation Tests (ARM)
even though the wheel resolved newton==1.6.0rc1 correctly.
@hujc7 hujc7 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 4, 2026
isaac-sim#7453 pinned the Newton build in [project].dependencies specifically to cover
"both workspace and wheel installs". Restoring the loose >=1.2.0 bound during the
develop merge dropped the wheel half of that guarantee: [tool.uv].override-
dependencies only reaches uv sync, and 1.6.0rc1 is a prerelease, so a default
resolve of the published metadata skipped it and picked the newest stable, 1.5.1
-- which lacks newton#4017, the fix this bump exists to deliver.

Pin the same release the override forces. A default resolve of the new metadata
returns newton==1.6.0rc1. isaacsim-core==6.0.1.0 requires newton[sim]==1.2.1, so
an override is still needed to install the isaacsim extra, exactly as on develop.
@hujc7 hujc7 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 4, 2026
@hujc7 hujc7 changed the title [Fix] Bump Newton to 1.6.0rc1 for newton#4017 [Bump] Bump Newton to 1.6.0rc1 for newton#4017 Sep 4, 2026
@kellyguo11
kellyguo11 merged commit bc3ebea into isaac-sim:develop Sep 5, 2026
83 of 84 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation infrastructure isaac-lab Related to Isaac Lab team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants