Skip to content

Add locked Recipe onboarding and software acceptance checks - #4

Merged
anHappyDog merged 8 commits into
mainfrom
fix/recipe-setup-usability
Oct 9, 2026
Merged

anHappyDog merged 8 commits into
mainfrom
fix/recipe-setup-usability

Conversation

@hootandy321

@hootandy321 hootandy321 commented Sep 29, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Recipe onboarding previously required manual copies of linked files, environment-dependent next-step commands, and unlocked MicroDuck dependency installation. embodirun example now initializes six linked templates and provides validation, planning, setup, checks, execution, and shutdown through the same implementation as examples/run.sh.

  • Preserve the caller's CLI, source root, and selected scene Python in copyable next-step commands, including transient EMBODIRUN_SCENE_PYTHON and paths containing spaces.
  • Use dedicated Python 3.12 / uv 0.12.x projects and frozen locks for XLeRobot and MicroDuck, shared by native setup and the production Docker targets. Explicit software profiles support configuration review without robot-owner, model, GPU, or scene dependencies. MicroDuck's default simulation profile retains its full prerequisite checks.
  • Add native/Docker software acceptance CI for both Recipes: actual launcher installation, both public entrypoints, printed-command execution outside the checkout, missing-environment diagnostics, non-root file ownership, and package-version parity. XLeRobot also runs both fixture rehearsals and verifies completion metadata and launcher pointer cleanup.
  • Keep the existing CPU/lint/docs workflow unchanged. Recipe installer/image checks live in a separate, path-filtered workflow: relevant source, dependencies or container inputs trigger it, and manual dispatch is available. Documentation-only changes do not rebuild Recipe images. The process-cleanup regressions reuse the existing CPU job.
  • Preserve XLeRobot hardware-profile setup and Compose's private cross-container shutdown socket. Software cleanup confirmation remains separate from physical stop feedback.
  • Finish the command's private process group after graceful leader shutdown, including when the leader has already exited and left descendants. Three real-process regressions verify listener cleanup after completion, parallel failure, and down, while preserving an unrelated process. All three reproduced the leak before the fix.
  • Synchronize English/Chinese installation and support documentation. Configuration support for six templates does not imply full-model or physical acceptance of all six.

This branch includes current main, including the RLinf compatibility removal and shared-GPU evaluation changes. PR #7 is stacked on this branch for scenario guides and published software lifecycle evidence.

Type of change

  • Bug fix
  • New capability (Recipe initialization and setup)
  • Documentation
  • Refactor with no behaviour change
  • Build, packaging, or CI

Verification

For head 4d53ed4515351a45d9edd5f161901381ba72c2f2, the existing CI passed its three jobs (CPU, Ruff, strict bilingual documentation), and the path-filtered Recipe software workflow passed both native + Docker jobs. No additional required status checks were configured; the cleanup regressions run in the existing CPU job.

Check Observed result
Full CPU suite Local: 1060 passed, 45 skipped; CI: 1060 passed, 45 skipped
Owned-process cleanup Three regressions failed before the fix and passed after it; focused Recipe/onboarding suite: 67 passed
Fresh native software setup Both Recipes installed from their frozen locks with initially empty task download caches and selected Python paths containing spaces
Native/production-container inventories XLeRobot: 13 matching package versions; MicroDuck: 14 matching package versions; each inventory also checked against its Recipe lock
Container execution Fresh isolated builder, --no-cache build; checks run as the host UID/GID with --network none
XLeRobot fixture rehearsals Both CLI and shell runs completed; physical task success remained unverified; temporary launcher JSON pointers removed
Static/documentation checks Ruff check/format, strict English/Chinese MkDocs builds, and git diff --check passed

Exact CPU/static commands used by CI:

uv sync --frozen
uv run --frozen pytest -q
.venv/bin/ruff check src tests benchmarks examples agents integrations scripts
.venv/bin/ruff format --check src tests benchmarks examples agents integrations scripts
mkdocs build --strict
mkdocs build --strict -f mkdocs.zh.yml

The matrix executes actual setup --mode software, then the selected interpreter runs scripts/check_recipe_software.py --recipe xlerobot|microduck. Its production Dockerfile build and offline container commands are recorded in the linked workflow logs and .github/workflows/recipe-software.yml.

Earlier Thor/Mac and hardware-profile import evidence remains documented in the Recipe guides. Those historical runs are separate from the latest software CI; this update does not claim another hardware-profile or physical-robot acceptance run.

Scope and follow-up acceptance

Ready for review for Recipe onboarding and software configuration/fixture acceptance. No model checkpoint, external scene asset, or physical robot was used in this update; skipped optional tests do not establish those combinations as Tested.

Independent README-based deployment Agent execution, actual student feedback, full simulation/model/CUDA/EGL acceptance, and physical calibration, camera mappings, recorded routes, handover, fresh stop feedback, and delivery acceptance remain follow-up work. Other Recipes' complete dependency locks and installation coverage also remain separate. These results are not reported as completed by software CI.

Process boundaries

  • client, deployment, application, devices, model_services remain canonical; services.* compatibility remains available.
  • No inference-engine runtime code is imported into src/embodirun; the pinned inference submodule is unchanged.
  • Robot/simulator adapters and policy bindings remain separate.
  • Robot/model dependencies remain optional and declared in their dependency projects.

Checklist

  • Support prerequisites and verification limits are documented in both support matrices; no new verified robot/model combination is claimed.
  • English/Chinese onboarding wording and installation/support pages remain parallel.
  • No checkpoints, datasets, recordings, credentials, private addresses, or personal data are included.
  • Contributions are provided under Apache-2.0 per CONTRIBUTING.md.

@hootandy321 hootandy321 changed the title [WIP] Make recipes easier to initialize and deploy [WIP] Add reproducible XLeRobot onboarding and recipe diagnostics Sep 30, 2026
@anHappyDog
anHappyDog added this pull request to stack #8 October 9, 2026 05:05
@anHappyDog anHappyDog changed the title [WIP] Add reproducible XLeRobot onboarding and recipe diagnostics Add locked Recipe onboarding and software acceptance checks Oct 9, 2026
@anHappyDog
anHappyDog marked this pull request as ready for review October 9, 2026 05:24
anHappyDog
anHappyDog previously approved these changes Oct 9, 2026
pppppppppper
pppppppppper previously approved these changes Oct 9, 2026
@anHappyDog
anHappyDog dismissed stale reviews from pppppppppper and themself via 6d3c5ce October 9, 2026 05:39
@anHappyDog
anHappyDog merged commit da1e021 into main Oct 9, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants