chore(isaac): switch to create_simulation("isaac") + drop direct-constructor docs (closes #139)#166
Merged
cagataycali merged 1 commit intoJul 7, 2026
Conversation
…tructor workarounds (closes strands-labs#139) robots#131 shipped the strands_robots.backends entry-point walker in the strands-robots 0.4.1 release (2026-07-01), so create_simulation("isaac", ...) now resolves to this repo's IsaacSimulation exactly like create_simulation("mujoco"). This is the downstream switch-over. - pyproject.toml: bump the dependency floor to strands-robots>=0.4.1 (the first release whose factory walks the entry-point group) and correct the three comments that incorrectly claimed 0.4.0 walked it, plus the stale hatch skip-install rationale. - examples/libero/run_isaac.py + run_isaac_agent.py: construct via create_simulation("isaac", headless=True, num_envs=1, render_mode="rtx_realtime") instead of IsaacSimulation(IsaacConfig(...)). - examples/isaac_gs/app.py + render_demo.py: same switch, behavior identical (render_mode="rtx_realtime" preserved). - docs (index, quickstart, overview, api-reference, architecture, README, installation, domain-randomization): remove the now-obsolete "direct constructor" / "not wired up yet" / ">=0.3.8,<0.4" notes and show create_simulation("isaac", ...) as the primary path. The direct constructor is kept only where intentional (config-object-in-hand, render-mode field demo, multiprocessing example). - test_create_simulation_isaac.py: flip the discovery test from "asserts the ValueError today, auto-flips later" to asserting create_simulation("isaac") resolves to IsaacSimulation against the >=0.4.1 floor (skips cleanly when strands-robots is absent or below the floor). Verification: create_simulation("isaac", headless=True, render_mode="rtx_realtime") resolves to IsaacSimulation; hatch run lint + hatch run test pass (264 passed, 40 skipped); the discovery test passes positively against strands-robots 0.4.1 in a full install; mkdocs build --strict is clean.
cagataycali
approved these changes
Jul 7, 2026
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
Downstream switch-over now that
strands-labs/robots#131has shipped thestrands_robots.backendsentry-point walker in the strands-robots 0.4.1 release (2026-07-01). With the walker live,create_simulation("isaac", ...)resolves to this repo'sIsaacSimulationexactly likecreate_simulation("mujoco").pyproject.toml— bump the dependency floor tostrands-robots>=0.4.1(the first release whose factory walks the entry-point group) and correct the three comments that incorrectly claimed 0.4.0 walked[project.entry-points."strands_robots.backends"], plus the staleskip-installrationale.examples/libero/run_isaac.py,run_isaac_agent.py— construct viacreate_simulation("isaac", headless=True, num_envs=1, render_mode="rtx_realtime")instead ofIsaacSimulation(IsaacConfig(...)).examples/isaac_gs/app.py,render_demo.py— same switch, behavior identical (render_mode="rtx_realtime"preserved).index,quickstart,simulation/overview,api-reference,architecture,README,installation,domain-randomization) — remove the now-obsolete "direct constructor" / "not wired up yet" />=0.3.8,<0.4notes and showcreate_simulation("isaac", ...)as the primary path. The direct constructor is kept only where intentional: config-object-in-hand examples, therender_modeconfig-field demo, and the multiprocessing/spawnexample.strands_robots_sim/isaac/tests/test_create_simulation_isaac.py— flip the discovery test from "assert theValueErrortoday, auto-flip later" to assertingcreate_simulation("isaac")resolves toIsaacSimulationagainst the>=0.4.1floor. Skips cleanly whenstrands-robotsis absent or below the floor (e.g. theskip-install=truehatch env).Why
The pre-existing state was internally inconsistent:
pyproject.tomlalready pinnedstrands-robots>=0.4.0with a comment asserting 0.4.0 "walks" the entry-point group — but 0.4.0 does not (verified against thev0.4.0tag: no_load_plugin_backends). The walker landed inv0.4.1. Meanwhile the docs still cited the older>=0.3.8,<0.4pin and the "direct constructor workaround," so they were stale in both directions. This PR aligns the floor, the code, the tests, and the docs on the released walker.Test surface
hatch run lint— clean (black + isort + flake8 overstrands_robots_sim+examples).hatch run test— 264 passed, 40 skipped, no failures. (The new positive discovery test skips in theskip-install=truehatch env, as designed.)pip install -e .+strands-robots==0.4.1):test_create_simulation_isaac.py— 7 passed, including the positivetest_create_simulation_isaac_resolves_to_isaac_simulation.mkdocs build --strict— clean.The 7 environmental failures in
test_rendering.py/test_policy_runner.py(no X11/OpenGL on the dev box) are pre-existing and out of scope for this change; not touched here.Acceptance criteria (from #139)
1. Bump the dependency floor
pyproject.toml:strands-robots>=0.4.1and corrected comments (0.4.0 did not walk the group; 0.4.1 does).2. Switch examples to
create_simulation("isaac", ...)examples/libero/run_isaac.py—create_simulation("isaac", headless=True, num_envs=1, render_mode="rtx_realtime")(also carries therender_mode="rtx_realtime"fix tracked in fix(isaac): LIBERO run_isaac.py / run_isaac_agent.py record BLANK rollout videos (headless render_mode) — not at MuJoCo parity #137).examples/libero/run_isaac_agent.py— same switch.examples/isaac_gs/app.py,render_demo.py— switched; behavior identical.3. Remove the "direct constructor" workaround notes + stale pin references
docs/index.md— removed the direct-constructor note + the "entry-point discovery is not live yet" warning; mermaid label updated.docs/getting-started/quickstart.md— replaced the "not wired up yet" note.docs/simulation/overview.md— replaced the "until a future release walks the entry-point group" note.docs/api-reference.md— replaced the "Until then (pinned floor>=0.3.8,<0.4)" note.docs/architecture.md— flipped the!!! warning(create_simulation raises) to a!!! note(discovery is live in>=0.4.1).create_simulation("isaac", ...)as the primary path; direct constructor kept only where intentional. Also cleaned stale>=0.3.8,<0.4/ "not wired" references inREADME.md,docs/getting-started/installation.md, anddocs/simulation/domain-randomization.md.4. Tests
create_simulation("isaac")resolves toIsaacSimulation.Out-of-scope / follow-ups
render_modefield demo, multiprocessingspawnexample) — these illustrateIsaacConfigusage on purpose and were left as-is per the issue's "keep the direct constructor only where intentional."Project board
If this issue is on the Strands Labs - Robots board, please move #139 to In review.
Closes #139.