Audience
Verification level
COMPILE-ONLY PASS FOR THREE BACKENDS. main.py compiles the same run.yaml with
PyBullet, MuJoCo, and Isaac Lab overrides and validates selected variant, resource
format, semantics, and distinct plan digests. It does not start any native backend.
Files
run.yamldefaults to PyBullet and references one portable prop.main.pycalls publiccompile_file(..., backend_override=...)three times.../catalog/portable_prop.yamlmaps each backend to the appropriate resource.
Read the Manifest
The logical identity appears once:
id: object://fastsim/component-demo-portable-prop
variants:
pybullet:
resources: {model: {format: model/vnd.urdf+xml, ...}}
mujoco:
resources: {model: {format: model/vnd.urdf+xml, ...}}
isaaclab:
resources: {model: {format: model/vnd.usd, ...}}
Each Variant may carry backend-specific resources, semantics, requirements, and defaults. The identity does not change, so the Scenario stays portable. A successful selection still does not prove equivalent native physics or adapter compatibility.
Read the Run and Python
The Run remains backend-neutral at the entity:
prop:
use: object://fastsim/component-demo-portable-prop
Python changes only one invocation:
compiled = compiler.compile_file(RUN_FILE, backend_override=backend)
The override does not edit run.yaml. It changes the effective backend, selected
Variant, resource format, provenance, and plan digest.
Run it
fastsim config validate run.yaml --backend pybullet --json
fastsim config validate run.yaml --backend mujoco --json
fastsim config validate run.yaml --backend isaaclab --json
python main.py
Expected rows show PyBullet/URDF, MuJoCo/URDF, Isaac Lab/USD, followed by
Distinct plan digests: 3.
Common errors
- Putting backend paths directly in every Run: keep the logical identity in the Run and backend packaging in the Manifest.
- Expecting an unspecified Variant to fall back arbitrarily: only the exact backend
or an explicit
'*'Variant may be selected. - Treating URDF/USD choice as automatic universal conversion: this Manifest author supplied and owns both resource forms.
- Treating compile pass as native parity: run backend acceptance separately.
Previous: 10 — Versions and stable · Next: 12 — Resource bundle and integrity