docs: align README + MIGRATION with Isaac Phase 1 in main#54
Conversation
Top-level docs claimed Isaac would 'land in v0.3.0+' as future work, but PR strands-labs#44 / strands-labs#45 / strands-labs#46 / strands-labs#47 / strands-labs#51 (R6 + R7 Phase 1) all merged to main on 2026-05-26. Updates the doc-side framing to reflect what's actually shipped vs what's still pending. README.md: 1. Status banner: 'Backend code lands in v0.3.0+ (Isaac)' → explicit Phase 1 / Phase 2 split. Names what works today (entry- point registration, IsaacConfig, lifecycle scaffolding, procedural builders, URDF / MJCF / USD loaders) vs what's still no-op (add_object, add_camera, replicate, per-IsaacSimulation _load_*_robot stubs). 2. Quick-start preamble: 'become copy-paste-runnable when R6/strands-labs#13 and R7/strands-labs#14 ship' → 'Isaac Sim Phase 1 has shipped — the snippet below is copy-paste-runnable today on a host with Isaac Sim 2024.x+ installed'. Newton snippets remain gated on R11/strands-labs#18. 3. Isaac Sim quick-start snippet: fixed the kwarg name (rtx_mode='path_traced' → render_mode='rtx_pathtracing') so it matches the IsaacConfig field actually defined in strands_robots_sim/isaac/config.py. The previous spelling would TypeError at construction. Added a second snippet showing the loaders module (load_urdf / load_mjcf / load_usd) since that's the working URDF / MJCF / USD ingestion path today. 4. Status & roadmap section: - Stage 2 R5: [ ] → [x] (strands-labs#26 merged). - Stage 3 R6: [ ] → [x] with link to strands-labs#44. - Stage 3 R7: split into 'Phase 1 [x]' (linking strands-labs#45 / strands-labs#46 / strands-labs#47 / strands-labs#51) and 'Phase 2 [ ]' so the next-up scope is visible without dropping the historical strands-labs#14 reference. examples/MIGRATION.md: 1. [isaac] extras line: 'Heavy GPU-only backends ship in later 0.x releases' / commented-out pip install → uncommented; comment notes 'Phase 1 shipped; data-plane in Phase 2'. Newton stays commented (Stage 4 pending). 2. 'After — same task on Isaac Sim' heading: 'Stage 3, future' → 'Stage 3, Phase 1 shipped'. Snippet kwarg fixed (rtx_mode → render_mode; same bug as the README). Added a 2-line comment noting evaluate_benchmark on a real LIBERO scene needs Phase 2 data-plane wiring (matches the disclosure banner on docs/backends/isaac.md, so the three doc surfaces stay in sync). examples/README.md is left as-is: its TBD rows reference the example files (libero/run_isaac.py etc.), which haven't shipped yet — those issue links (R8/strands-labs#15, R23/strands-labs#27) are still accurate forward-pointers. Verification: - diff stat: 2 files, +28 / -14 LOC. No code touched. - README + MIGRATION render cleanly under standard markdown parsers (verified by spot-checking the table / heading nesting). - The doc-banner test (test_phase1_doc_banner.py) is on the parallel pr5/isaac-docs branch (PR strands-labs#48); the docstring banner on docs/backends/isaac.md was already updated there to the same framing — this PR brings README + MIGRATION in line. Cross-references: PR strands-labs#36 (the previous examples/README.md drift fix) lands the same kind of post-merge alignment for strands-labs#26's R5 work; this is its R7 Phase 1 sibling.
cagataycali
left a comment
There was a problem hiding this comment.
Approve — verified all factual claims against main @ 06fce4d
Local verification on a fresh clone:
Field-name fix is correct
strands_robots_sim/isaac/config.py lines 62-76 enumerate the exact IsaacConfig field set the PR description claims. render_mode exists (line 67, default "headless"); rtx_mode does not. The pre-PR snippet create_simulation("isaac", rtx_mode="path_traced", ...) would raise TypeError: __init__() got an unexpected keyword argument 'rtx_mode' at construction. rtx_pathtracing is in RENDER_MODES (verified via the __post_init__ check on line 81 + the auto-promotion path on line 116). Fix is exactly right.
Phase 1 surface enumeration matches code
- Procedural builders:
_build_so100/_build_panda/_build_unitree_g1exist instrands_robots_sim/isaac/procedural.py(line 98 onwards). Aliasesso-100/so_100/so101resolve toso100(lines 274-277). Registered keys returned bylist_procedural_robots()are["so100", "panda", "unitree_g1"](line 311). - Loaders:
load_urdf(line 157),load_mjcf(line 367),load_usd(line 576) all defined instrands_robots_sim/isaac/loaders.py, all returningProceduralRobot. - Lifecycle:
IsaacSimulation.create_world/destroy/cleanupare non-stub (PR #47's commit57929b3).
Phase 2 still-no-op enumeration matches the in-flight banner on PR #48
The add_object / add_camera / replicate / per-IsaacSimulation _load_*_robot stubs / articulation-touching paths under get_observation / send_action / render list in this PR's status banner is identical to the rewritten banner on docs/backends/isaac.md (PR #48 commit 76c3b1f). All three doc surfaces (README.md / examples/MIGRATION.md / docs/backends/isaac.md) will be in sync once both PRs land.
Roadmap checkbox accuracy
- R5 / #12 → checked: closed by PR #26 (
4a89396onmain). - R6 / #13 → checked, linked to PR #44.
- R7 / #14 split into Phase 1 (checked, linked to #45 / #46 / #47 / #51) + Phase 2 (unchecked, data-plane). Preserves the historical issue reference while exposing next-up scope. Good split.
- R8 / #15 corrected from
examples/libero_isaac.pytoexamples/libero/run_isaac.py— matches the actualexamples/libero/run_*.pyconvention established by #26.
MIGRATION.md kwarg parity
Same rtx_mode → render_mode fix as the README. The added 2-line comment about evaluate_benchmark needing Phase 2 data-plane wiring is consistent with the disclosure banner on the in-flight docs/backends/isaac.md rewrite.
Out-of-scope acknowledgment is correct
examples/README.md's TBD rows for libero/run_isaac.py / libero/run_isaac_fleet.py are still forward-accurate (those example files haven't shipped — R8/#15 / R23/#27 are open). Leaving them as-is is the right call.
No code touched, no tests to run
2 files, +28 / -14 LOC, pure docs. Markdown table / heading nesting renders cleanly under a standard parser.
Mergeability
MERGEABLE against current main. No code dependency on PR #48 — the two PRs can land independently in either order, as the description correctly states. Approving.
Summary
Top-level docs claimed Isaac Sim would "land in v0.3.0+" as future work, but PR #44 / #45 / #46 / #47 / #51 (R6 + R7 Phase 1) all merged to
mainon 2026-05-26. This PR updatesREADME.md+examples/MIGRATION.mdto reflect what's actually shipped vs what's still pending. No code touched.Inconsistencies fixed
README.mdadd_object,add_camera,replicate, per-IsaacSimulation_load_*_robotstubs)create_simulation("isaac", rtx_mode="path_traced", ...)—rtx_modeis not anIsaacConfigfield; wouldTypeErrorat constructioncreate_simulation("isaac", render_mode="rtx_pathtracing", ...)— matches the field actually defined atstrands_robots_sim/isaac/config.py:render_mode. Plus a second snippet for the loaders module (load_urdf/load_mjcf/load_usd) since that's the working URDF / MJCF / USD ingestion path today[ ][x](#26 merged)[ ][x]with PR link (#44 merged)[ ]R7 (Phase 1) [x]linking the four merged PRs (#45 / #46 / #47 / #51) andR7 (Phase 2) [ ]for the still-no-op data-plane wiringexamples/MIGRATION.md[isaac]install line (~line 28)rtx_mode='path_traced'bug as READMErender_mode='rtx_pathtracing'; added comment notingevaluate_benchmarkon a real LIBERO scene still needs Phase 2 data-plane wiring (consistent with the disclosure banner ondocs/backends/isaac.md)Out of scope
examples/README.md's backend-matrix TBD rows forlibero/run_isaac.py/libero/run_isaac_fleet.py. The Isaac BACKEND is in main but those EXAMPLE files (R8/R8: Add examples/libero_isaac.py (Stage 3) #15, R23/R23: Add examples/libero_isaac_fleet.py — IsaacLab fleet-scale LIBERO (Stage 3) #27) haven't shipped yet — the rows are still forward-accurate, no edit needed.docs/backends/isaac.mditself. That file is in the in-flight PR #48 (5/5 of feat(isaac): IsaacSimulation backend skeleton + entry-point registration (R7) #31 split); commit76c3b1fon that PR brings its Phase 1 banner + Architecture file-list + Loaders section in line with the same understanding this PR is documenting at the top level.Verification
git diff --stat: 2 files, +28 / -14 LOC. Pure docs.render_mode='rtx_pathtracing') verified against currentmain'sIsaacConfigfield set (num_envs/device/headless/physics_dt/rendering_dt/render_mode/gravity/ground_plane/stage_path/nucleus_url/camera_width/camera_height/enable_rtx_sensors/verbose/extra).Cross-references
examples/README.mdafter R5: Add LIBERO-on-MuJoCo baseline example (Stage 2) #26's R5 work merged. This is its R7 Phase 1 sibling.docs/backends/isaac.md's Phase 1 banner + Loaders section + Architecture file-list — same framing, three doc surfaces in sync).