fix(ci): restrict code-cleanup workflow to Linux runners only#1948
Merged
fix(ci): restrict code-cleanup workflow to Linux runners only#1948
Conversation
Workflow was using `runs-on: self-hosted` which matches all self-hosted runners including macOS. The macOS EC2 runner (ec2-user) fails because actions/setup-python tries to create /Users/runner/ which doesn't exist on that instance. Restrict to `[self-hosted, Linux]` consistent with tests.yml and docker.yml.
Contributor
Greptile SummaryAdds Confidence Score: 5/5Safe to merge — one-line runner label addition with zero logic changes. The change is minimal, targeted, and consistent with the existing runner configuration pattern across other workflow files in the repo. No logic, permissions, or step ordering is modified. No files require special attention. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[PR Event Triggered] --> B{Runner Selection}
B -- "Before: runs-on: self-hosted" --> C[Any self-hosted runner]
C --> D[macOS EC2 runner\nec2-user home: /Users/ec2-user]
C --> E[Linux runner]
D --> F["❌ mkdir: /Users/runner: Permission denied\nWorkflow fails"]
E --> G[✅ Workflow succeeds]
B -- "After: runs-on: [self-hosted, Linux]" --> H[Linux runner only]
H --> I[✅ Workflow succeeds]
Reviews (3): Last reviewed commit: "Merge branch 'dev' into fix/code-cleanup..." | Re-trigger Greptile |
leshy
approved these changes
Apr 30, 2026
Nabla7
added a commit
that referenced
this pull request
May 6, 2026
…whole_body coordinator + async modules + setup_logger Brings in 15 PRs from dev (May 1 - May 6). Headline incoming changes: * #1954 (Mustafa) - G1 low-level connection module coordinator integration: WHOLE_BODY HardwareType, _create_whole_body_adapter on ControlCoordinator, ConnectedWholeBody on hardware_interface, whole_body/registry.py, whole_body/transport/adapter.py, unitree_g1_coordinator blueprint, MotorCommandArray msg. * #1920 - async modules (additive: async def handle_x, async @rpc, async def main, self.spawn(), self.process_observable()). * #1895 - setup_logger enforcement (test scans for stray logging.getLogger outside whitelist). * #1939 - patrol module converted to async (skill dispatcher handles sync->async transparently). * #1958 - MuJoCo sim teleop for xarm + piper. * #1885 - go2 SDK adapter + nix cyclonedds setup. * Plus #1880 (dtop), #1713 (tool-streams), #1925 (memory2 go2 autorecorder), #1948/#1944 (CI), #1909 (peek_stream), #1924 (revert), #1921 (mypy 3.10 fixes). Conflict resolutions -------------------- * dimos/hardware/whole_body/spec.py - UNION write. Took both our WholeBodyConfig dataclass + read_odom() (default None) and Mustafa's has_motor_states(). Updated SimMujocoG1WholeBodyAdapter to implement has_motor_states (returns True once SHM is attached). * dimos/hardware/whole_body/registry.py - adopted Mustafa's pattern (Callable[..., WholeBodyAdapter] factory + setup_logger), extended discover() with depth=2 walk so both their flat ("transport/") and our nested ("mujoco/g1/") layouts both register. * dimos/control/coordinator.py - kept our TaskConfig.decimation + passthrough; took Mustafa's WholeBodyAdapter union types and WHOLE_BODY branch in _setup_hardware (cleaner than our lazy imports). * dimos/control/hardware_interface.py - adopted Mustafa's _try_initialize_last_commanded (gates on has_motor_states for real-hw cold start) + ControlMode validation. Kept our per-joint kp/kd resolution from component.wb_config. * dimos/control/components.py - joint-naming convention switched from PascalCase + "_" separator to Mustafa's snake_case + "/" separator (g1/left_hip_pitch instead of g1_LeftHipPitch). Kept our _QUADRUPED_LEG_JOINTS + make_quadruped_joints helper. * dimos/visualization/viser/robot_meshes.py:dimos_joint_to_mjcf - rewritten for the new naming: split on "/", append "_joint". Dropped the camelCase->snake regex. * dimos/robot/catalog/g1.py - _LEFT_ARM_JOINT_PAIRS / _RIGHT_ARM_JOINT_PAIRS updated to new joint names; manipulation module's joint lookup against the coordinator's published state now hits. * dimos/robot/all_blueprints.py - kept both unitree-g1-coordinator (Mustafa's) and unitree-g1-dds-coordinator (ours) entries. * dimos/hardware/drive_trains/unitree_go2/adapter.py + dimos/robot/unitree/go2/blueprints/basic/unitree_go2_keyboard_teleop.py - added-by-both; took dev's canonical Go2 adapter from #1885. * logging.getLogger -> setup_logger in 6 files (control/examples/ g1_playback.py, g1_zero_posture.py, go2_standup.py; visualization/viser/scene_editor.py; hardware/whole_body/unitree/g1/adapter.py + go2/adapter.py). * pyproject.toml: dropped duplicate unitree-dds key from auto-merge, kept dev's newer unitree-sdk2py-dimos>=1.0.2. uv.lock regenerated via uv sync. Verification ------------ * Blueprint composes: unitree_g1_groot_wbc_sim imports cleanly. * dimos/project/test_get_logger.py passes (no stray logging.getLogger). * Smoke test: dimos run unitree-g1-groot-wbc-sim launches all 19 modules and ControlCoordinator stabilizes at 50 Hz.
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.
Problem
code-cleanup.ymlusesruns-on: self-hostedwhich matches all self-hosted runners — including the macOS EC2 runner. That runner runs asec2-user(home:/Users/ec2-user) andactions/setup-pythontries to create/Users/runner/which doesn't exist, causing:This has been failing 4+ times on PRs including #1925 and #1940.
Fix
One line:
Consistent with
tests.ymlanddocker.ymlwhich already scope to[self-hosted, Linux].Scope
No logic changes. Zero risk.