Add Unitree G1 simulation smoke harness#2045
Conversation
|
Cloud smoke passed.\n\nValidation:\n- |
Greptile SummaryThis PR adds a headless Docker/Cloud Build smoke harness for Unitree G1 simulation entrypoints: a Dockerfile that builds a pinned Python 3.12 + uv environment, a Cloud Build config that builds and immediately runs the image, and a shell script that validates blueprint registration and then drives
Confidence Score: 5/5Safe to merge; all four changed files are new additions with no impact on existing code paths. The harness is self-contained (new files only) and the core timeout-handling logic, uv pinning, and Docker layering are all correct. The only gap found is a minor portability edge case in the Python fallback. No files require special attention. Important Files Changed
Sequence DiagramsequenceDiagram
participant CB as Cloud Build
participant D as Docker
participant S as g1_sim_smoke.sh
participant P as Python (blueprint check)
participant DI as dimos CLI
CB->>D: docker build -f Dockerfile.g1-sim
Note over D: apt-get deps + uv install<br/>uv pip install .[unitree,sim]
D-->>CB: image dimos-g1-sim:smoke
CB->>D: "docker run --rm -e RUN_SECONDS=10 dimos-g1-sim:smoke"
D->>S: bash scripts/g1_sim_smoke.sh
S->>P: python - (heredoc blueprint check)
P-->>S: OK / SystemExit if missing blueprints
S->>S: run_limited() — try timeout, gtimeout, python fallback
S->>DI: dimos --simulation --viewer none run unitree-g1-sim
Note over DI: runs until RUN_SECONDS elapses<br/>or exits with error
alt "exit code == 124 (timeout = bounded pass)"
DI-->>S: 124
S-->>CB: exit 0
else "exit code == 0"
DI-->>S: 0
S-->>CB: exit 0
else non-zero (real failure)
DI-->>S: non-zero
S-->>CB: exit $status (build fails)
end
Reviews (2): Last reviewed commit: "Address G1 smoke review nits" | Re-trigger Greptile |
| pkg-config \ | ||
| portaudio19-dev \ | ||
| && rm -rf /var/lib/apt/lists/* \ | ||
| && curl -LsSf https://astral.sh/uv/install.sh | sh |
There was a problem hiding this comment.
The uv installer is fetched and executed in the same
RUN layer without pinning a version. Any two builds that happen at different times may get different uv versions, making the image non-reproducible. Astral ships versioned releases; pinning to a specific version is straightforward and also documents the intended toolchain version.
| && curl -LsSf https://astral.sh/uv/install.sh | sh | |
| && curl -LsSf https://astral.sh/uv/install.sh | UV_VERSION=0.6.16 sh |
|
|
||
| ```bash |
There was a problem hiding this comment.
GCP project ID leaked into version-controlled docs —
openclaw-1773763209 appears to be a real, resolved project identifier. If this repository is public (or later made public), the project ID helps enumerate GCP resources and IAM policies. Consider replacing the resolved ID with a placeholder like <YOUR_GCP_PROJECT_ID> or removing the "currently resolves to" note entirely.
| seconds = float(sys.argv[1]) | ||
| cmd = sys.argv[2:] | ||
| try: | ||
| raise SystemExit(subprocess.run(cmd, timeout=seconds).returncode) |
There was a problem hiding this comment.
Adds a Docker/Cloud Build headless smoke harness for Unitree G1 simulation entrypoints.\n\nValidation:\n- bash -n scripts/g1_sim_smoke.sh\n- Cloud Build smoke submitted in titomic-458215 as c9f666f3-f3be-45cb-b3ca-8ce6f7329e96 (in progress at PR creation)\n\nNotes:\n- This validates simulation wiring only; it does not claim hardware validation.