Isaac Lab API, powered by MuJoCo-Warp, for RL and robotics research
This report presents the forensic synthetic code analysis of mujocolab/mjlab, a Python project with 2,777 GitHub stars. SynthScan v2.0 examined 76,675 lines of code across 327 source files, recording 1646 pattern matches distributed across 18 syntactic categories. The overall adjusted score of 26.7 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 1646 distinct pattern matches across 18 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | typings/postprocess_stubs.py | 84 | def sanitize_machine_specific() -> None: | CODE |
| LOW | tests/test_builtin_group.py | 57 | def test_different_delay_configs_separate_groups(device): | CODE |
| LOW | tests/test_builtin_group.py | 78 | def test_non_builtin_delayed_not_fused(device): | CODE |
| LOW | tests/test_builtin_group.py | 104 | def test_delayed_controls_written(device): | CODE |
| LOW | tests/test_builtin_group.py | 123 | def test_delay_actually_delays(device): | CODE |
| LOW | tests/test_circular_buffer.py | 16 | def test_circular_buffer_basic_append(device): | CODE |
| LOW | tests/test_circular_buffer.py | 35 | def test_circular_buffer_overwrite(device): | CODE |
| LOW | tests/test_circular_buffer.py | 48 | def test_circular_buffer_reset_single_batch(device): | CODE |
| LOW | tests/test_circular_buffer.py | 69 | def test_circular_buffer_first_append_fills(device): | CODE |
| LOW | tests/test_circular_buffer.py | 83 | def test_current_length_counts_and_clamps(device): | CODE |
| LOW | tests/test_circular_buffer.py | 122 | def test_getitem_lifo_and_clamp(device): | CODE |
| LOW | tests/test_circular_buffer.py | 139 | def test_backfill_after_per_batch_reset(device): | CODE |
| LOW | tests/test_circular_buffer.py | 164 | def test_backfill_multidimensional_data(device): | CODE |
| LOW | tests/test_circular_buffer.py | 211 | def test_dtype_and_device_preserved(device): | CODE |
| LOW | tests/test_circular_buffer.py | 220 | def test_backfill_only_touches_given_rows(device): | CODE |
| LOW | tests/test_circular_buffer.py | 252 | def test_backfill_uninitialized_raises(device): | CODE |
| LOW | tests/test_circular_buffer.py | 258 | def test_getitem_lag_clamps_to_oldest_after_wrap(device): | CODE |
| LOW⚡ | tests/test_recorder_manager.py | 203 | def test_record_post_step_called_each_step( | CODE |
| LOW⚡ | tests/test_recorder_manager.py | 212 | def test_record_pre_reset_passes_env_ids( | CODE |
| LOW⚡ | tests/test_recorder_manager.py | 222 | def test_record_post_reset_passes_env_ids( | CODE |
| LOW⚡ | tests/test_recorder_manager.py | 232 | def test_close_propagates_to_all_terms(mock_env: Mock) -> None: | CODE |
| LOW⚡ | tests/test_recorder_manager.py | 309 | def test_function_based_term_raises(mock_env: Mock) -> None: | CODE |
| LOW⚡ | tests/test_recorder_manager.py | 315 | def test_cfg_params_accessible_on_term(mock_env: Mock) -> None: | CODE |
| LOW⚡ | tests/test_recorder_manager.py | 323 | def test_deepcopy_protects_original_cfg(mock_env: Mock) -> None: | CODE |
| LOW⚡ | tests/test_recorder_manager.py | 359 | def test_get_term_missing_raises(mock_env: Mock) -> None: | CODE |
| LOW⚡ | tests/test_recorder_manager.py | 367 | def test_contains_for_recorder_manager(mock_env: Mock) -> None: | CODE |
| LOW⚡ | tests/test_recorder_manager.py | 375 | def test_contains_and_get_term_for_null_manager() -> None: | CODE |
| LOW⚡ | tests/test_recorder_manager.py | 383 | def test_base_term_all_hooks_are_no_ops(mock_env: Mock) -> None: | CODE |
| LOW | tests/test_recorder_manager.py | 69 | def test_terminal_action_available_at_record_pre_reset(mock_env: Mock) -> None: | CODE |
| LOW | tests/test_recorder_manager.py | 122 | def test_record_pre_reset_obs_buf_is_previous_step(mock_env: Mock) -> None: | CODE |
| LOW | tests/test_recorder_manager.py | 158 | def test_record_post_reset_fires_after_obs_are_fresh(mock_env: Mock) -> None: | CODE |
| LOW | tests/test_recorder_manager.py | 180 | def test_record_pre_reset_before_record_post_step_in_step(mock_env: Mock) -> None: | CODE |
| LOW | tests/test_recorder_manager.py | 248 | def test_terms_called_in_registration_order(mock_env: Mock) -> None: | CODE |
| LOW | tests/test_recorder_manager.py | 269 | def test_multiple_terms_have_independent_state(mock_env: Mock) -> None: | CODE |
| LOW | tests/test_recorder_manager.py | 290 | def test_active_terms_matches_registration_order(mock_env: Mock) -> None: | CODE |
| LOW | tests/test_recorder_manager.py | 335 | def test_null_recorder_manager_no_ops() -> None: | CODE |
| LOW | tests/test_recorder_manager.py | 348 | def test_get_term_returns_registered_instance(mock_env: Mock) -> None: | CODE |
| LOW | tests/test_recorder_manager.py | 463 | def test_integration_terminal_action_available_at_record_pre_reset(device: str) -> None: | CODE |
| LOW | tests/test_terrains.py | 69 | def test_no_stone_centers_inside_platform(): | CODE |
| LOW | tests/test_terrains.py | 83 | def test_stone_size_decreases_with_difficulty(): | CODE |
| LOW | tests/test_terrains.py | 96 | def test_pyramid_stairs_border_present_at_zero_difficulty(cfg_cls): | CODE |
| LOW | tests/test_terrains.py | 126 | def test_preset_compiles_across_difficulty(preset_name, difficulty): | CODE |
| LOW | tests/test_terrains.py | 163 | def test_compile_preserves_custom_names_and_defaults_unnamed_geoms(): | CODE |
| LOW | tests/test_video_recorder.py | 31 | def test_step_trigger_writes_video(tmp_path: Path): | CODE |
| LOW⚡ | tests/test_builtin_pd_actuator.py | 83 | def test_two_ctrls_per_target_with_pos_then_vel_layout(device): | CODE |
| LOW⚡ | tests/test_builtin_pd_actuator.py | 99 | def test_site_transmission_rejected(): | CODE |
| LOW⚡ | tests/test_builtin_pd_actuator.py | 109 | def test_armature_applied_once(device): | CODE |
| LOW⚡ | tests/test_builtin_pd_actuator.py | 166 | def test_effort_limit_none_leaves_joint_unlimited(device): | CODE |
| LOW⚡ | tests/test_builtin_pd_actuator.py | 175 | def test_actuator_forcerange_not_set(device): | CODE |
| LOW⚡ | tests/test_builtin_pd_actuator.py | 189 | def test_delay_syncs_pos_and_vel(device): | CODE |
| LOW | tests/test_builtin_pd_actuator.py | 153 | def test_actfrcrange_sum_clamp(device): | CODE |
| LOW | tests/test_builtin_pd_actuator.py | 222 | def test_reset_clears_delay_buffer(device): | CODE |
| LOW | tests/test_builtin_pd_actuator.py | 285 | def test_dr_pd_gains_scales_halves_independently(device): | CODE |
| LOW | tests/test_builtin_pd_actuator.py | 338 | def test_dr_pd_gains_abs_writes_correct_columns(device): | CODE |
| LOW | tests/test_builtin_pd_actuator.py | 380 | def test_dr_effort_limits_writes_jnt_actfrcrange(device): | CODE |
| LOW | tests/test_builtin_pd_actuator.py | 415 | def test_dr_effort_limits_scale_multiplies_default(device): | CODE |
| LOW | tests/test_builtin_pd_actuator.py | 442 | def test_dr_effort_limits_writes_tendon_actfrcrange(device): | CODE |
| LOW | tests/test_xml_utils.py | 11 | def test_strip_buffer_textures(): | CODE |
| LOW | tests/test_xml_utils.py | 64 | def test_rough_terrain_write_xml_roundtrip(tmp_path): | CODE |
| LOW | tests/test_flat_patch_sampling.py | 22 | def test_patches_avoid_step_boundary(rng: np.random.Generator): | CODE |
| 870 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | typings/postprocess_stubs.py | 19 | CODE | |
| LOW | tests/test_velocity_rewards.py | 3 | CODE | |
| LOW | tests/test_terrain_proportion_spawning.py | 3 | CODE | |
| LOW | tests/test_contact_sensor.py | 3 | CODE | |
| LOW | tests/test_builtin_sensor.py | 3 | CODE | |
| LOW | tests/test_raycast_sensor.py | 3 | CODE | |
| LOW | tests/test_camera_sensor.py | 3 | CODE | |
| LOW | tests/test_viewer_tick.py | 3 | CODE | |
| LOW | tests/test_variants.py | 3 | CODE | |
| LOW | tests/test_notebooks.py | 13 | CODE | |
| LOW | tests/test_manipulation_commands.py | 21 | CODE | |
| LOW | tests/test_foot_height_sensor.py | 3 | CODE | |
| LOW | tests/test_projected_gravity_sensor.py | 11 | CODE | |
| LOW | tests/test_native_viewer_actions.py | 3 | CODE | |
| LOW | tests/test_velocity_command.py | 18 | CODE | |
| LOW | tests/test_manipulation_observations.py | 1 | CODE | |
| LOW | tests/test_manipulation_observations.py | 18 | CODE | |
| LOW | tests/test_sensor_caching.py | 3 | CODE | |
| LOW | scripts/tools/terrain_explorer.py | 10 | CODE | |
| LOW | scripts/tools/render_terrain_gallery.py | 10 | CODE | |
| LOW | scripts/benchmarks/measure_throughput.py | 7 | CODE | |
| LOW | scripts/benchmarks/generate_report.py | 7 | CODE | |
| LOW | scripts/demos/contact_sensor_decimation.py | 14 | CODE | |
| LOW | scripts/demos/flat_patch_terrain.py | 12 | CODE | |
| LOW | scripts/demos/differential_ik.py | 9 | CODE | |
| LOW | scripts/demos/raycast_sensor.py | 21 | CODE | |
| LOW | scripts/demos/body_impulse.py | 14 | CODE | |
| LOW | src/mjlab/tasks/manipulation/mdp/terminations.py | 1 | CODE | |
| LOW | src/mjlab/tasks/manipulation/mdp/observations.py | 1 | CODE | |
| LOW | src/mjlab/tasks/manipulation/mdp/__init__.py | 1 | CODE | |
| LOW | src/mjlab/tasks/manipulation/mdp/__init__.py | 3 | CODE | |
| LOW | src/mjlab/tasks/manipulation/mdp/__init__.py | 4 | CODE | |
| LOW | src/mjlab/tasks/manipulation/mdp/__init__.py | 5 | CODE | |
| LOW | src/mjlab/tasks/manipulation/mdp/__init__.py | 6 | CODE | |
| LOW | src/mjlab/tasks/manipulation/mdp/rewards.py | 1 | CODE | |
| LOW | src/mjlab/tasks/manipulation/mdp/commands.py | 1 | CODE | |
| LOW | src/mjlab/tasks/manipulation/rl/__init__.py | 1 | CODE | |
| LOW | src/mjlab/tasks/velocity/mdp/terminations.py | 1 | CODE | |
| LOW | src/mjlab/tasks/velocity/mdp/observations.py | 1 | CODE | |
| LOW | src/mjlab/tasks/velocity/mdp/__init__.py | 1 | CODE | |
| LOW | src/mjlab/tasks/velocity/mdp/__init__.py | 3 | CODE | |
| LOW | src/mjlab/tasks/velocity/mdp/__init__.py | 4 | CODE | |
| LOW | src/mjlab/tasks/velocity/mdp/__init__.py | 5 | CODE | |
| LOW | src/mjlab/tasks/velocity/mdp/__init__.py | 6 | CODE | |
| LOW | src/mjlab/tasks/velocity/mdp/__init__.py | 7 | CODE | |
| LOW | src/mjlab/tasks/velocity/mdp/velocity_command.py | 1 | CODE | |
| LOW | src/mjlab/tasks/velocity/mdp/velocity_command.py | 21 | CODE | |
| LOW | src/mjlab/tasks/velocity/mdp/rewards.py | 1 | CODE | |
| LOW | src/mjlab/tasks/velocity/mdp/terrain_utils.py | 3 | CODE | |
| LOW | src/mjlab/tasks/velocity/mdp/curriculums.py | 1 | CODE | |
| LOW | src/mjlab/tasks/velocity/rl/__init__.py | 1 | CODE | |
| LOW | src/mjlab/tasks/cartpole/cartpole_env_cfg.py | 3 | CODE | |
| LOW | src/mjlab/tasks/tracking/mdp/metrics.py | 1 | CODE | |
| LOW | src/mjlab/tasks/tracking/mdp/terminations.py | 1 | CODE | |
| LOW | src/mjlab/tasks/tracking/mdp/observations.py | 1 | CODE | |
| LOW | src/mjlab/tasks/tracking/mdp/__init__.py | 1 | CODE | |
| LOW | src/mjlab/tasks/tracking/mdp/__init__.py | 3 | CODE | |
| LOW | src/mjlab/tasks/tracking/mdp/__init__.py | 4 | CODE | |
| LOW | src/mjlab/tasks/tracking/mdp/__init__.py | 5 | CODE | |
| LOW | src/mjlab/tasks/tracking/mdp/__init__.py | 6 | CODE | |
| 342 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/test_builtin_pd_actuator.py | 78 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_builtin_pd_actuator.py | 80 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_builtin_pd_actuator.py | 119 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_builtin_pd_actuator.py | 121 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_builtin_pd_actuator.py | 184 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_builtin_pd_actuator.py | 186 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_builtin_pd_actuator.py | 234 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_builtin_pd_actuator.py | 236 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/conftest.py | 141 | # ============================================================================= | COMMENT |
| MEDIUM | tests/conftest.py | 143 | # ============================================================================= | COMMENT |
| MEDIUM | tests/test_encoder_bias.py | 28 | # ============================================================================= | COMMENT |
| MEDIUM | tests/test_encoder_bias.py | 30 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/test_encoder_bias.py | 97 | # ============================================================================= | STRING |
| MEDIUM⚡ | tests/test_encoder_bias.py | 99 | # ============================================================================= | STRING |
| MEDIUM⚡ | tests/test_encoder_bias.py | 144 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/test_encoder_bias.py | 146 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/test_encoder_bias.py | 189 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/test_encoder_bias.py | 191 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/test_encoder_bias.py | 213 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/test_encoder_bias.py | 215 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/test_encoder_bias.py | 261 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/test_encoder_bias.py | 263 | # ============================================================================= | COMMENT |
| MEDIUM | tests/test_entity.py | 662 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_entity.py | 664 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_raycast_sensor.py | 1017 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_raycast_sensor.py | 1019 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_raycast_sensor.py | 456 | # ============================================================================ | STRING |
| MEDIUM⚡ | tests/test_raycast_sensor.py | 458 | # ============================================================================ | STRING |
| MEDIUM | tests/test_raycast_sensor.py | 577 | # ============================================================================ | STRING |
| MEDIUM | tests/test_raycast_sensor.py | 579 | # ============================================================================ | STRING |
| MEDIUM | tests/test_raycast_sensor.py | 855 | # ============================================================================ | STRING |
| MEDIUM | tests/test_raycast_sensor.py | 857 | # ============================================================================ | STRING |
| MEDIUM | tests/test_actuator.py | 94 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_actuator.py | 96 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_actuator.py | 156 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_actuator.py | 158 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_actuator.py | 265 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_actuator.py | 267 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_events.py | 508 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_events.py | 510 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_events.py | 560 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_events.py | 562 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_events.py | 774 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_events.py | 776 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_events.py | 865 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_events.py | 867 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_events.py | 26 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_events.py | 28 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_events.py | 198 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_events.py | 200 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_events.py | 968 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_events.py | 970 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_events.py | 80 | # =========================================================================== | STRING |
| MEDIUM⚡ | tests/test_events.py | 82 | # =========================================================================== | STRING |
| MEDIUM⚡ | tests/test_scene.py | 128 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_scene.py | 130 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_scene.py | 254 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_scene.py | 256 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_scene.py | 283 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_scene.py | 285 | # ============================================================================ | COMMENT |
| 18 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/conftest.py | 0 | <mujoco> <worldbody> <body name="ground" pos="0 0 0"> <geom name="ground_geom" type="plane" size="5 5 0.1" rgba="0.5 0.5 | STRING |
| HIGH | tests/test_contact_sensor.py | 0 | <mujoco> <worldbody> <body name="ground" pos="0 0 0"> <geom name="ground_geom" type="plane" size="5 5 0.1" rgba="0.5 0.5 | STRING |
| HIGH | tests/test_sensor_caching.py | 0 | <mujoco> <worldbody> <body name="ground" pos="0 0 0"> <geom name="ground_geom" type="plane" size="5 5 0.1" rgba="0.5 0.5 | STRING |
| HIGH | tests/test_spec_config.py | 0 | <mujoco> <worldbody> <body name="base" pos="0 0 1"> <freejoint name="free_joint"/> <geom name="base_geom" type="box" siz | STRING |
| HIGH | tests/test_actuator_builtin_group.py | 0 | <mujoco> <worldbody> <body name="base" pos="0 0 1"> <freejoint name="free_joint"/> <geom name="base_geom" type="box" siz | STRING |
| HIGH | tests/test_learned_actuator.py | 0 | <mujoco> <worldbody> <body name="base" pos="0 0 1"> <freejoint name="free_joint"/> <geom name="base_geom" type="box" siz | STRING |
| HIGH | tests/test_scene.py | 0 | <mujoco> <worldbody> <body name="base" pos="0 0 1"> <freejoint name="free_joint"/> <geom name="base_geom" type="box" siz | STRING |
| HIGH | tests/test_rl_exporter.py | 0 | <mujoco> <worldbody> <body name="base" pos="0 0 1"> <freejoint name="free_joint"/> <geom name="base_geom" type="box" siz | STRING |
| HIGH | tests/test_xml_actuator.py | 0 | <mujoco> <worldbody> <body name="base" pos="0 0 1"> <freejoint name="free_joint"/> <geom name="base_geom" type="box" siz | STRING |
| HIGH | tests/test_runner.py | 0 | <mujoco> <worldbody> <body name="base" pos="0 0 1"> <freejoint name="free_joint"/> <geom name="base_geom" type="box" siz | STRING |
| HIGH | src/mjlab/tasks/tracking/scripts/evaluate.py | 0 | optional checkpoint name within the w&b run to load (e.g. 'model_4000.pt'). | STRING |
| HIGH | src/mjlab/scripts/play.py | 0 | optional checkpoint name within the w&b run to load (e.g. 'model_4000.pt'). | STRING |
| HIGH | src/mjlab/scripts/train.py | 0 | optional checkpoint name within the w&b run to load (e.g. 'model_4000.pt'). | STRING |
| HIGH | src/mjlab/tasks/tracking/scripts/evaluate.py | 0 | root directory under which experiment logs are written. | STRING |
| HIGH | src/mjlab/scripts/play.py | 0 | root directory under which experiment logs are written. | STRING |
| HIGH | src/mjlab/scripts/train.py | 0 | root directory under which experiment logs are written. | STRING |
| HIGH | src/mjlab/envs/mdp/dr/body.py | 0 | randomize site orientation by composing an rpy perturbation. ranges are in radians. the sampled perturbation is composed | STRING |
| HIGH | src/mjlab/envs/mdp/dr/geom.py | 0 | randomize site orientation by composing an rpy perturbation. ranges are in radians. the sampled perturbation is composed | STRING |
| HIGH | src/mjlab/envs/mdp/dr/camera.py | 0 | randomize site orientation by composing an rpy perturbation. ranges are in radians. the sampled perturbation is composed | STRING |
| HIGH | src/mjlab/envs/mdp/dr/site.py | 0 | randomize site orientation by composing an rpy perturbation. ranges are in radians. the sampled perturbation is composed | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/mjlab/tasks/tracking/mdp/metrics.py | 86 | Get indices of specified bodies within the command's body list. Args: command: The motion command. body_names | STRING |
| HIGH | src/mjlab/managers/observation_manager.py | 264 | Check for NaN/Inf and handle according to policy. Args: tensor: Observation tensor to check. context: C | STRING |
| HIGH | src/mjlab/utils/color.py | 129 | Create a color ramp from a base RGB color using parameter t. This function creates a color variation by adjusting sat | STRING |
| HIGH | src/mjlab/utils/color.py | 167 | Darken an RGBA color by a given factor. Args: rgba: RGBA color tuple with values in range [0, 1]. factor: Dar | STRING |
| HIGH | src/mjlab/utils/color.py | 189 | Lighten an RGBA color by interpolating towards white. Args: rgba: RGBA color tuple with values in range [0, 1]. | STRING |
| HIGH | src/mjlab/utils/gpu.py | 12 | Select GPUs based on CUDA_VISIBLE_DEVICES and user specification. This function treats the `gpu_ids` parameter as ind | STRING |
| HIGH | src/mjlab/utils/lab_api/math.py | 202 | Converts quaternion from one convention to another. The convention to convert TO is specified as an optional argume | STRING |
| HIGH | src/mjlab/utils/lab_api/math.py | 528 | Multiply two quaternions together. Args: q1: The first quaternion in (w, x, y, z). Shape is (..., 4). | STRING |
| HIGH | src/mjlab/utils/lab_api/math.py | 704 | Computes the skew-symmetric matrix of a vector. Args: vec: The input vector. Shape is (3,) or (N, 3). | STRING |
| HIGH | src/mjlab/utils/lab_api/math.py | 874 | Compute the position and orientation error between source and target frames. Args: t01: Position of source | STRING |
| HIGH | src/mjlab/utils/lab_api/math.py | 965 | Transform input points in a given frame to a target frame. This function transform points from a source frame to a | STRING |
| HIGH | src/mjlab/utils/lab_api/math.py | 1040 | Converts perspective depth image to orthogonal depth image. Perspective depth images contain distances measured fro | STRING |
| HIGH | src/mjlab/utils/lab_api/math.py | 1132 | Un-project depth image into a pointcloud. This function converts orthogonal or perspective depth images into points | STRING |
| HIGH | src/mjlab/utils/lab_api/string.py | 21 | Converts a string from snake case to camel case. Args: snake_str: A string in snake case (i.e. with '_') | STRING |
| HIGH | src/mjlab/utils/lab_api/string.py | 109 | Converts a callable object to a string. Args: value: A callable object. Raises: ValueError: Wh | STRING |
| HIGH | src/mjlab/utils/lab_api/string.py | 139 | Resolves the module and function names to return the function. Args: name: The function name. The format sh | STRING |
| HIGH | src/mjlab/utils/lab_api/string.py | 181 | Match a list of query regular expressions against a list of strings and return the matched indices and names. When | STRING |
| HIGH | src/mjlab/utils/lab_api/string.py | 277 | Match a list of regular expressions in a dictionary against a list of strings and return the matched indices, names, | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | scripts/benchmarks/generate_report.py | 518 | if (elements.length > 0 && elements[0].datasetIndex === 0) {{ | CODE |
| HIGH | scripts/benchmarks/generate_report.py | 520 | if (d?.commit && d.commit !== 'unknown') {{ | CODE |
| HIGH | scripts/benchmarks/generate_report.py | 544 | return d?.commit && d.commit !== 'unknown' ? 'Click to view commit' : ''; | CODE |
| HIGH | scripts/benchmarks/generate_report.py | 571 | charts.push(chart); | CODE |
| HIGH | scripts/benchmarks/generate_report.py | 572 | trackingCharts.push(chart); | CODE |
| HIGH | scripts/benchmarks/generate_report.py | 583 | history.replaceState(null, '', '#' + tab.dataset.tab); | CODE |
| HIGH | scripts/benchmarks/generate_report.py | 648 | envData.push({{ ...point, y: result.env_sps / 1000 }}); | CODE |
| HIGH | scripts/benchmarks/generate_report.py | 649 | physicsData.push({{ ...point, y: result.physics_sps / 1000 }}); | CODE |
| HIGH | scripts/benchmarks/generate_report.py | 688 | if (d?.commit && d.commit !== 'unknown') {{ | CODE |
| HIGH⚡ | scripts/benchmarks/generate_report.py | 707 | const envY = items[0]?.raw?.y || 0; | CODE |
| HIGH⚡ | scripts/benchmarks/generate_report.py | 708 | const physY = items[1]?.raw?.y || 0; | CODE |
| HIGH⚡ | scripts/benchmarks/generate_report.py | 716 | return d?.commit && d.commit !== 'unknown' ? 'Click to view commit' : ''; | CODE |
| HIGH | scripts/benchmarks/generate_report.py | 739 | charts.push(chart); | CODE |
| HIGH | scripts/benchmarks/generate_report.py | 740 | throughputCharts.push(chart); | CODE |
| HIGH | scripts/benchmarks/generate_report.py | 760 | const min = days > 0 ? Date.now() - days * 86400000 : undefined; | CODE |
| HIGH | scripts/benchmarks/generate_report.py | 763 | c.options.scales.x.max = undefined; | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_domain_randomization.py | 1231 | CODE | |
| LOW | tests/test_domain_randomization.py | 1246 | CODE | |
| LOW | tests/test_notebooks.py | 52 | CODE | |
| LOW | tests/test_viser_conversions.py | 94 | CODE | |
| LOW | tests/test_runner.py | 398 | CODE | |
| LOW | tests/test_tyro_flags.py | 12 | CODE | |
| LOW | scripts/benchmarks/generate_report.py | 791 | CODE | |
| LOW | src/mjlab/tasks/tracking/mdp/commands.py | 445 | CODE | |
| LOW | src/mjlab/entity/variants.py | 430 | CODE | |
| LOW | src/mjlab/entity/variants.py | 775 | CODE | |
| LOW | src/mjlab/entity/variants.py | 1107 | CODE | |
| LOW | src/mjlab/entity/variants.py | 1317 | CODE | |
| LOW | src/mjlab/entity/entity.py | 221 | CODE | |
| LOW | src/mjlab/managers/metrics_manager.py | 122 | CODE | |
| LOW | src/mjlab/managers/curriculum_manager.py | 76 | CODE | |
| LOW | src/mjlab/managers/curriculum_manager.py | 95 | CODE | |
| LOW | src/mjlab/managers/event_manager.py | 240 | CODE | |
| LOW | src/mjlab/managers/event_manager.py | 346 | CODE | |
| LOW | src/mjlab/managers/observation_manager.py | 123 | CODE | |
| LOW | src/mjlab/managers/observation_manager.py | 333 | CODE | |
| LOW | src/mjlab/managers/observation_manager.py | 412 | CODE | |
| LOW | src/mjlab/terrains/terrain_entity.py | 303 | CODE | |
| LOW | src/mjlab/terrains/terrain_generator.py | 149 | CODE | |
| LOW | src/mjlab/terrains/terrain_generator.py | 285 | CODE | |
| LOW | src/mjlab/terrains/primitive_terrains.py | 555 | CODE | |
| LOW | src/mjlab/terrains/primitive_terrains.py | 655 | CODE | |
| LOW | src/mjlab/terrains/primitive_terrains.py | 1481 | CODE | |
| LOW | src/mjlab/utils/color.py | 88 | CODE | |
| LOW | src/mjlab/utils/xml.py | 37 | CODE | |
| LOW | src/mjlab/utils/spec_config.py | 47 | CODE | |
| LOW | src/mjlab/utils/spec_config.py | 450 | CODE | |
| LOW | src/mjlab/utils/spec.py | 66 | CODE | |
| LOW | src/mjlab/utils/lab_api/string.py | 178 | CODE | |
| LOW | src/mjlab/utils/lab_api/string.py | 274 | CODE | |
| LOW | src/mjlab/utils/lab_api/tasks/importer.py | 46 | CODE | |
| LOW | src/mjlab/viewer/base.py | 349 | CODE | |
| LOW | src/mjlab/viewer/native/viewer.py | 450 | CODE | |
| LOW | src/mjlab/viewer/viser/viewer.py | 92 | CODE | |
| LOW | src/mjlab/viewer/viser/scene.py | 440 | CODE | |
| LOW | src/mjlab/viewer/viser/scene.py | 552 | CODE | |
| LOW | src/mjlab/viewer/viser/scene.py | 673 | CODE | |
| LOW | src/mjlab/viewer/viser/scene.py | 1187 | CODE | |
| LOW | src/mjlab/viewer/viser/term_plotter.py | 90 | CODE | |
| LOW | src/mjlab/sensor/terrain_height_sensor.py | 57 | CODE | |
| LOW | src/mjlab/sensor/raycast_sensor.py | 483 | CODE | |
| LOW | src/mjlab/sensor/raycast_sensor.py | 607 | CODE | |
| LOW | src/mjlab/sensor/contact_sensor.py | 505 | CODE | |
| LOW | src/mjlab/sensor/builtin_sensor.py | 213 | CODE | |
| LOW | src/mjlab/scripts/csv_to_npz.py | 183 | CODE | |
| LOW | src/mjlab/scripts/visualize_terrain.py | 94 | CODE | |
| LOW | src/mjlab/scripts/visualize_terrain.py | 221 | CODE | |
| LOW | src/mjlab/scripts/visualize_terrain.py | 328 | CODE | |
| LOW | src/mjlab/scripts/play.py | 59 | CODE | |
| LOW | src/mjlab/scripts/train.py | 49 | CODE | |
| LOW | src/mjlab/sim/sim.py | 347 | CODE | |
| LOW | src/mjlab/envs/mdp/curriculums.py | 69 | CODE | |
| LOW | src/mjlab/envs/mdp/dr/_core.py | 238 | CODE | |
| LOW | src/mjlab/envs/mdp/dr/actuator.py | 30 | CODE | |
| LOW | src/mjlab/envs/mdp/dr/actuator.py | 192 | CODE | |
| LOW | src/mjlab/rl/runner.py | 16 | CODE | |
| 1 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_command_manager.py | 32 | def _update_metrics(self) -> None: | CODE |
| LOW | tests/test_command_manager.py | 38 | def _update_command(self, env_ids: torch.Tensor | None = None) -> None: | CODE |
| LOW | tests/test_command_manager.py | 90 | def _update_command(self) -> None: # type: ignore[override] | CODE |
| LOW | tests/test_projected_gravity_sensor.py | 111 | def _set_root_quat(robot, q: tuple[float, float, float, float], device: str) -> None: | STRING |
| LOW | src/mjlab/tasks/manipulation/mdp/commands.py | 41 | def _update_metrics(self) -> None: | CODE |
| LOW | src/mjlab/tasks/manipulation/mdp/commands.py | 109 | def _update_command(self, env_ids: torch.Tensor | None = None) -> None: | CODE |
| LOW | src/mjlab/tasks/manipulation/mdp/commands.py | 194 | def _update_metrics(self) -> None: | CODE |
| LOW | src/mjlab/tasks/manipulation/mdp/commands.py | 250 | def _update_command(self, env_ids: torch.Tensor | None = None) -> None: | CODE |
| LOW | src/mjlab/tasks/velocity/mdp/velocity_command.py | 60 | def _update_metrics(self) -> None: | CODE |
| LOW | src/mjlab/tasks/velocity/mdp/velocity_command.py | 115 | def _update_command(self, env_ids: torch.Tensor | None = None) -> None: | CODE |
| LOW | src/mjlab/tasks/tracking/mdp/commands.py | 379 | def update_relative_body_poses(self) -> None: | CODE |
| LOW | src/mjlab/tasks/tracking/mdp/commands.py | 569 | def _set_scrubber_disabled(self, disabled: bool) -> None: | CODE |
| LOW | src/mjlab/managers/command_manager.py | 159 | def _update_metrics(self) -> None: | CODE |
| LOW | src/mjlab/managers/command_manager.py | 169 | def _update_command(self, env_ids: torch.Tensor | None) -> None: | CODE |
| LOW | src/mjlab/utils/spec_config.py | 67 | def _set_geom_attr(geom: mujoco.MjsGeom, name: str, value) -> None: | CODE |
| LOW | src/mjlab/utils/buffers/delay_buffer.py | 275 | def _update_lags(self) -> None: | CODE |
| LOW | src/mjlab/viewer/base.py | 433 | def _update_stats(self) -> None: | CODE |
| LOW | src/mjlab/viewer/native/viewer.py | 245 | def _set_status_overlay(self, viewer: mujoco.viewer.Handle) -> None: | CODE |
| LOW | src/mjlab/viewer/native/viewer.py | 265 | def _update_reward_figures(self, viewer: mujoco.viewer.Handle) -> None: | CODE |
| LOW⚡ | src/mjlab/viewer/native/viewer.py | 295 | def _update_debug_visualizers(self, viewer: mujoco.viewer.Handle) -> None: | CODE |
| LOW | src/mjlab/viewer/native/viewer.py | 533 | def _setup_camera(self) -> None: | CODE |
| LOW | src/mjlab/viewer/native/viewer.py | 558 | def _set_camera_auto_track(self) -> None: | CODE |
| LOW | src/mjlab/viewer/native/viewer.py | 573 | def _set_camera_world(self) -> None: | CODE |
| LOW | src/mjlab/viewer/native/viewer.py | 580 | def _set_camera_asset_root(self) -> None: | CODE |
| LOW | src/mjlab/viewer/native/viewer.py | 591 | def _set_camera_asset_body(self) -> None: | CODE |
| LOW | src/mjlab/viewer/viser/viewer.py | 362 | def _update_env_dependent_plots(self) -> None: | CODE |
| LOW | src/mjlab/viewer/viser/viewer.py | 377 | def _update_camera_feeds(self, sim: Simulation, has_pending_updates: bool) -> None: | CODE |
| LOW | src/mjlab/viewer/viser/viewer.py | 451 | def update_scene() -> None: | CODE |
| LOW | src/mjlab/viewer/viser/viewer.py | 553 | def _update_status_display(self) -> None: | CODE |
| LOW | src/mjlab/viewer/viser/camera_viewer.py | 111 | def _update_frustum(self, sim_data, env_idx: int, scene_offset: np.ndarray) -> None: | CODE |
| LOW | src/mjlab/viewer/viser/scene.py | 382 | def update_from_mjdata(self, mj_data: mujoco.MjData) -> None: | CODE |
| LOW | src/mjlab/viewer/viser/term_plotter.py | 147 | def update_env_idx(self, env_idx: int) -> None: | CODE |
| LOW | src/mjlab/sensor/camera_sensor.py | 208 | def set_context(self, ctx: SensorContext) -> None: | CODE |
| LOW | src/mjlab/sensor/raycast_sensor.py | 567 | def set_context(self, ctx: SensorContext) -> None: | CODE |
| LOW | src/mjlab/sensor/contact_sensor.py | 441 | def _update_air_time_tracking(self, dt: float) -> None: | CODE |
| LOW | src/mjlab/sensor/contact_sensor.py | 487 | def _update_history(self) -> None: | CODE |
| LOW | src/mjlab/scripts/nan_viz.py | 126 | def _update_state(self) -> None: | STRING |
| LOW | src/mjlab/sim/sim.py | 513 | def set_sensor_context(self, ctx: SensorContext) -> None: | CODE |
| LOW | src/mjlab/envs/manager_based_rl_env.py | 541 | def update_visualizers(self, visualizer: DebugVisualizer) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_dc_actuator.py | 51 | # Set target to produce positive torque demand >> saturation_effort. | COMMENT |
| LOW | tests/test_dc_actuator.py | 88 | # Set target to produce positive torque demand >> saturation_effort. | COMMENT |
| LOW | tests/test_dc_actuator.py | 201 | # Set target to produce negative torque demand. | COMMENT |
| LOW | tests/test_contact_sensor.py | 1128 | # Check if we have contact. | COMMENT |
| LOW | tests/test_viser_conversions.py | 127 | # Check if texture was extracted (procedural textures should work). | STRING |
| LOW | tests/test_delayed_actuator.py | 299 | # Set lag to 1. | COMMENT |
| LOW | tests/test_delayed_actuator.py | 347 | # Set lag to 2 (the only valid value, so set_lags won't clamp it). | COMMENT |
| LOW | tests/test_perlin_terrain.py | 54 | # Check if height variation is present. | COMMENT |
| LOW | tests/test_tyro_flags.py | 33 | # Check if this is a tyro.cli() call | COMMENT |
| LOW | tests/test_tyro_flags.py | 48 | # Check if config= keyword argument contains TYRO_FLAGS | COMMENT |
| LOW | src/mjlab/utils/spec.py | 170 | # Check if entity has freejoint (floating-base). | COMMENT |
| LOW | src/mjlab/utils/spec.py | 175 | # Check if root body is already mocap. | COMMENT |
| LOW | src/mjlab/utils/wrappers/video_recorder.py | 94 | # Check if we should start recording. | COMMENT |
| LOW | src/mjlab/utils/wrappers/video_recorder.py | 122 | # Check if we should stop recording. | COMMENT |
| LOW | src/mjlab/utils/lab_api/math.py | 1065 | # Check if inputs are batched | STRING |
| LOW | src/mjlab/scripts/play.py | 75 | # Check if this is a tracking task by checking for motion command. | COMMENT |
| LOW | src/mjlab/scripts/play.py | 101 | # Check if the registry name includes alias, if not, append ":latest". | COMMENT |
| LOW | src/mjlab/scripts/train.py | 61 | # Set seed to have diversity in different processes. | COMMENT |
| LOW | src/mjlab/scripts/train.py | 73 | # Check if this is a tracking task by checking for motion command. | COMMENT |
| LOW | src/mjlab/scripts/train.py | 82 | # Check if motion_file is already set (e.g., via CLI --env.commands.motion.motion-file). | COMMENT |
| LOW | src/mjlab/scripts/nan_viz.py | 151 | # Check if visualization settings changed and need a refresh. | COMMENT |
| LOW | src/mjlab/sim/sim_data.py | 172 | # Check if it's a struct-like object with attributes | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/smoke_test.py | 34 | except Exception as e: | CODE |
| LOW | tests/test_viser_conversions.py | 555 | except Exception as e: | CODE |
| LOW⚡ | tests/test_task_configs.py | 24 | except Exception as e: | CODE |
| LOW⚡ | tests/test_task_configs.py | 36 | except Exception as e: | CODE |
| LOW | scripts/tools/terrain_explorer.py | 88 | except Exception as e: # noqa: BLE001 - surface any generation failure in the UI. | CODE |
| LOW | src/mjlab/__init__.py | 57 | except Exception: | CODE |
| LOW | src/mjlab/tasks/manipulation/rl/runner.py | 34 | except Exception as e: | CODE |
| LOW | src/mjlab/tasks/velocity/rl/runner.py | 31 | except Exception as e: | CODE |
| LOW | src/mjlab/tasks/tracking/rl/runner.py | 121 | except Exception as e: | CODE |
| LOW | src/mjlab/utils/lab_api/tasks/importer.py | 78 | except Exception: | CODE |
| LOW | src/mjlab/viewer/base.py | 295 | except Exception: | CODE |
| LOW | src/mjlab/viewer/native/viewer.py | 489 | except Exception as e: | CODE |
| LOW | src/mjlab/viewer/viser/scene.py | 202 | except Exception: | CODE |
| LOW | src/mjlab/viewer/viser/scene.py | 214 | except Exception: | CODE |
| LOW | src/mjlab/viewer/viser/scene.py | 1290 | except Exception: | CODE |
| LOW | src/mjlab/scripts/gcs.py | 92 | except Exception as e: | CODE |
| MEDIUM | src/mjlab/scripts/visualize_terrain.py | 175 | print(f"Error: No visual geoms found for {state['robot_name']}") | CODE |
| LOW | src/mjlab/scripts/visualize_terrain.py | 261 | except Exception as e: | CODE |
| MEDIUM | src/mjlab/scripts/visualize_terrain.py | 262 | print(f"Error creating config: {e}") | CODE |
| LOW | src/mjlab/scripts/visualize_terrain.py | 476 | except Exception: | CODE |
| LOW | src/mjlab/scripts/list_envs.py | 31 | except Exception: | CODE |
| MEDIUM | src/mjlab/scripts/export_scene.py | 49 | print(f"Error: {e}") | CODE |
| LOW | src/mjlab/sim/sim_data.py | 50 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | src/mjlab/viewer/viser/overlays.py | 146 | isinstance(s, CameraSensor) for s in self.env.unwrapped.scene.sensors.values() | CODE |
| CRITICAL | src/mjlab/viewer/viser/overlays.py | 153 | for sensor in self.env.unwrapped.scene.sensors.values() | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_rl_exporter.py | 56 | # Create a dummy ONNX model. | COMMENT |
| MEDIUM | tests/test_viser_conversions.py | 96 | # Create a model with procedural texture. | COMMENT |
| MEDIUM | scripts/fix_mjpython_macos.sh | 32 | # Create the symlink. | COMMENT |
| MEDIUM | src/mjlab/terrains/terrain_generator.py | 236 | # Create the terrain mesh and get the spawn origin in world coordinates. | COMMENT |
| MEDIUM | src/mjlab/utils/lab_api/math.py | 1927 | # Create the transformation matrix | STRING |
| MEDIUM | src/mjlab/scripts/visualize_terrain.py | 226 | # Create a copy with equal proportions to ensure all are shown once. | COMMENT |
| MEDIUM | src/mjlab/envs/manager_based_rl_env.py | 564 | # Create a nested dict for this group. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_learned_actuator.py | 175 | # Step 0: pos_error = 1.0 | COMMENT |
| LOW⚡ | tests/test_learned_actuator.py | 176 | # Step 1: pos_error = 2.0 | COMMENT |
| LOW⚡ | tests/test_learned_actuator.py | 177 | # Step 2: pos_error = 3.0 | COMMENT |
| LOW⚡ | tests/test_metrics_manager.py | 327 | # Step 0: substeps [1, 2] -> avg = 1.5 | COMMENT |
| LOW⚡ | tests/test_metrics_manager.py | 332 | # Step 1: substeps [3, 4] -> avg = 3.5 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_learned_actuator.py | 175 | # Step 0: pos_error = 1.0 | COMMENT |
| LOW⚡ | tests/test_learned_actuator.py | 176 | # Step 1: pos_error = 2.0 | COMMENT |
| LOW⚡ | tests/test_learned_actuator.py | 177 | # Step 2: pos_error = 3.0 | COMMENT |
| LOW⚡ | tests/test_metrics_manager.py | 327 | # Step 0: substeps [1, 2] -> avg = 1.5 | COMMENT |
| LOW⚡ | tests/test_metrics_manager.py | 332 | # Step 1: substeps [3, 4] -> avg = 3.5 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/benchmarks/nightly_train.sh | 7 | # Usage: | COMMENT |
| LOW | scripts/cloud/sweep-cluster.yaml | 6 | # Usage: | COMMENT |
| LOW | scripts/cloud/train.yaml | 5 | # Usage: | COMMENT |
| LOW | scripts/cloud/sweep-launch.sh | 8 | # Usage: | COMMENT |
| LOW | scripts/cloud/sweep.yaml | 4 | # Usage: | COMMENT |
| LOW | scripts/cloud/train-docker.yaml | 5 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | typings/generate_mujoco_stubs.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/run_docker.sh | 1 | #!/usr/bin/env sh | COMMENT |
| LOW | scripts/benchmarks/nightly_train.sh | 1 | #!/bin/bash | COMMENT |
| LOW | scripts/cloud/sweep-launch.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | .github/workflows/claude.yml | 41 | actions: read | COMMENT |
| LOW | src/mjlab/entity/variants.py | 921 | ) | COMMENT |
| LOW | src/mjlab/utils/lab_api/math.py | 1 | # Copyright (c) 2022-2025, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTOR | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/mjlab/utils/spec.py | 406 | CODE | |
| LOW | src/mjlab/utils/buffers/delay_buffer.py | 120 | CODE | |
| LOW | src/mjlab/envs/mdp/dr/body.py | 423 | CODE | |
| LOW | src/mjlab/envs/mdp/dr/_core.py | 49 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/mjlab/sim/sim_data.py | 1 | """Bridge for seamless PyTorch-Warp interoperability with zero-copy memory sharing. | STRING |