docs(readme): add deprecation banner + migration guide (closes #169) - #172
Conversation
…s-labs#169) robots-sim is being deprecated and archived; the Isaac Sim backend now lives in strands-labs/robots as an in-tree builtin backend (absorb epic strands-labs/robots#1144, deprecation epic strands-labs#167). Add a prominent top-of-README GitHub `[!WARNING]` callout that: - states the package is deprecated and the repo will be archived - points users to the new install string `pip install 'strands-robots[isaac]'` - clarifies application code is unchanged (create_simulation("isaac") still resolves the Isaac backend, now from the builtin registry) - links the absorb epic (robots#1144) and the deprecation epic (strands-labs#167) Docs-only change; no code paths touched.
cagataycali
left a comment
There was a problem hiding this comment.
Summary
The banner is well-placed and the framing is right: a [!WARNING] callout above the fold, the archive intent stated plainly, and the reassurance that create_simulation("isaac", ...) is unchanged. I verified that last claim and it holds - strands-robots' own pyproject.toml documents the selector at the sim-isaac extra ("Selected via create_simulation("isaac") / Robot(..., backend="isaac"); the vendored in-tree backend lives at strands_robots.simulation.isaac"), so application code genuinely does not change.
But the one command a migrating user will copy is wrong, and wrong in the silent direction.
Blocking: strands-robots[isaac] is not an extra that exists
README.md, in the new banner:
# New - Isaac extra on the main package:
pip install 'strands-robots[isaac]'There is no isaac extra on strands-robots. I enumerated [project.optional-dependencies] at strands-labs/robots@main: 26 extras, and the Isaac one is named sim-isaac:
groot-service, cosmos3-service, cosmos3-diffusers, cosmos3-sim, moveit2, curobo,
wbc, motionbricks, lerobot, lerobot-async, molmoact2, sim, sim-mujoco,
sim-newton, sim-isaac, sim-gs, benchmark-libero, mesh, mesh-iot,
device-connect, ros2, vera-sim, ollama, inference, all, dev
isaac is absent; sim-isaac is present. Nor does the plain sim extra cover it - sim = ["robot_descriptions>=1.11.0,<2.0.0"] and nothing else.
Why this is blocking rather than a typo to sweep up later: pip does not fail on an unknown extra. pip install 'strands-robots[isaac]' exits 0, prints a single WARNING: strands-robots does not provide the extra 'isaac', and installs the base package with no Isaac dependencies at all. The user reads a successful install, follows the very next code block in this banner, and create_simulation("isaac", ...) fails later on missing usd-core. The deprecation notice exists precisely to stop users being stranded, and this instruction strands them with a success message - the failure is deferred and misattributed, which is worse than a hard error at install time.
Fix:
pip install 'strands-robots[sim-isaac]'Also worth adding while you are in this line
sim-isaac deliberately does not install Isaac Sim itself. From the extra's own comment block in robots/pyproject.toml:
IMPORTANT: Isaac Sim itself is NOT installed by this extra. It is an Omniverse install (Isaac Lab
./isaaclab.sh -i, or the NGC docker imagenvcr.io/nvidia/isaac-sim:6.0) ... We do NOT pinisaacsimhere: the PyPIisaacsim[all]metapackage is incomplete on its own.
So even with the extra name corrected, a user coming from strands-robots-sim (which had the same out-of-band requirement) benefits from one sentence saying Isaac Sim is installed separately, with a pointer to the robots-side install docs. Otherwise the banner reads as though the extra is sufficient. Non-blocking, but this is the natural place for it.
Note on the sibling PR
The same string appears in #173, where it is additionally pinned by a test (test_deprecation_warning.py asserts the message contains pip install strands-robots[isaac]), so correcting it there requires updating the assertion too. Worth fixing both together so the README and the runtime warning cannot disagree.
What is good
- Docs-only, one file, additive - zero risk to code paths, and the claim of no behavioural change is verifiable at a glance.
- Explicitly links both the absorb epic (
robots#1144) and the deprecation epic (#167), so a reader can find the full plan rather than just the verdict. - Correctly scopes the
DeprecationWarning, final release, and archive steps out to their own siblings instead of bundling them. - Showing the old
pip uninstallbeside the new install is the right shape for a migration block - it removes the ambiguity about whether both can coexist.
Happy to re-review immediately on the one-word fix.
What
Adds a prominent top-of-README deprecation banner (GitHub
[!WARNING]callout) plus a short migration guide to
README.md.Why
robots-simis being deprecated and archived (deprecation epic #167). TheIsaac Sim backend now lives in
strands-labs/robotsas anin-tree builtin backend (absorb epic
strands-labs/robots#1144),so there is no longer a separate plugin package to install. Users landing on
this README need an unmissable notice and a clear migration path.
The banner:
pip install 'strands-robots[isaac]'.create_simulation("isaac", ...)still resolves the Isaac backend, nowfrom the builtin registry in
strands-robotsinstead of this pluginpackage.
robots#1144) and the deprecation epic (#167).Test surface
Docs-only change; no code paths touched.
hatch run lint— passes (black / isort / flake8, 52 files unchanged).hatch run test— 264 passed, 40 skipped, 0 failed.test_rendering.py/test_policy_runner.py(no X11/OpenGL on the dev box) are not in theunit-test suite
hatch run testruns and are unaffected by this change.Acceptance criteria (from #169)
strands-labs/robots.strands-robots[isaac].https://github.com/strands-labs/robots/issues/1144.Out of scope (siblings under epic #167, not this PR)
DeprecationWarningon import.Project board
Issue #169 is not currently tracked on the
Strands Labs - Robots board
(only #8, #14, #139, #166 from this repo are on it). If it should be tracked,
add it and move to In review manually.
Closes #169