[Workflow] Default core tasks to RSL-RL - #7067
Conversation
Greptile SummaryAdds task-driven RL backend selection so unified training and playback commands use each task's registered default when
Confidence Score: 5/5The PR appears safe to merge with no concrete blocking or non-blocking defects identified. Default resolution follows the repository's established task-name normalization and registry contracts, while the new Pendulum configuration matches the environment conversion and RSL-RL observation-group conventions. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
CLI["train/play CLI"] --> Explicit{"--rl_library supplied?"}
Explicit -- Yes --> Backend["Dispatch selected backend"]
Explicit -- No --> Task["Read --task"]
Task --> Registry["Import task registrations and query Gym spec"]
Registry --> Default{"Supported default_agent?"}
Default -- Yes --> Backend
Default -- No --> Help["Show backend selector error/help"]
Reviews (1): Last reviewed commit: "Default core tasks to RSL-RL" | Re-trigger Greptile |
There was a problem hiding this comment.
Isaac Lab Review Bot
The task-registry-driven RSL-RL default is coherent with existing registration metadata, but default resolution introduces an unguarded runtime dependency on isaaclab_tasks before backend launch.
- Design and architecture: Keeping the default backend in task registration is data-driven, but
_resolve_default_librarynow crosses fromisaaclab_rlintoisaaclab_tasksduring CLI parsing. The import should be guarded so unavailable or pre-launch task registration cannot replace the established selector fallback with an exception. - API: Explicit
--rl_libraryselection remains unchanged. When it is omitted, however, an unavailable or failingisaaclab_tasksimport can now raise instead of returning the existing missing-selection help and exit code 2. - Implementation: The dispatch and argument-forwarding paths are otherwise consistent, and the Pendulum configuration follows sibling RSL-RL configs. The new dispatch test replaces
isaaclab_taskswith a stub, so it does not cover the real import path responsible for the compatibility concern.
Minor fixes needed. Posted 1 actionable finding inline.
Automated review; human maintainers own approval decisions.
| if args.task is None: | ||
| return None | ||
|
|
||
| import isaaclab_tasks # noqa: F401 |
There was a problem hiding this comment.
🟡 Warning · Design Architecture — Unguarded task-registry import during CLI parsing
_resolve_default_library runs inside run_cli, before _run_backend starts the backend that constructs AppLauncher, and imports isaaclab_tasks unguarded. This module otherwise defers even isaaclab.app to stay lightweight, and task packages pull in Kit-dependent isaaclab.envs modules. An install without isaaclab_tasks (or a pre-launch import failure) now raises instead of returning the previous exit-2 message. Guard the import and fall back to None.
AntoineRichard
left a comment
There was a problem hiding this comment.
One concern on pendulum, otherwise LGTM
There was a problem hiding this comment.
Pendulum is MARL only, will that work with RSL_RL?
There was a problem hiding this comment.
Not sure if we should use RSL_RL
Splits the default RL-library change from #6980.\n\n- Resolves
default_agentfrom task registration when--rl_libraryis omitted.\n- Registers RSL-RL as the default for core tasks, including a Pendulum RSL-RL config.\n- Adds dispatch coverage and a breaking-change fragment.\n\nValidation:uv run python -m pytest source/isaaclab_rl/test/test_entrypoints.py -q(11 passed, 2 skipped).\n\nSupersedes the RSL-RL portion of #6980.