Recommended responsibilities
project/
├── .fastsim/project.yaml # registries and trusted roots
├── runs/ # application declarations
├── scenarios/ # reusable Scenario components
├── components/
│ ├── index.yaml # Registry index
│ ├── robots/ # versioned Manifests
│ ├── objects/
│ └── sensors/
└── assets/ # controlled Manifest resources
Directory names are not an auto-discovery protocol; Project explicitly registers each index.
Choose the correct kind
Environment is the scene base, object is an ordinary rigid body, articulation is a non-robot articulated object, and robot is a control-semantic specialization. Sensor, light, deformable, and fluid have distinct contracts. Do not disguise every asset as object or robot to reuse a loader.
Backend variants
One component may provide isaaclab, mujoco, pybullet, or generic * resources. Variants preserve stable component, frame, and joint semantics while declaring real capability differences. They cannot change the backend selected by the Run.
USD, URDF, MJCF, meshes, textures, and parameter files should record provenance and digests. Preserve vendor sources and place conversions in a new versioned derived directory.
Instance poses and per-run parameters belong in Scenario. Changes to shared physical meaning require a new component release. See Project, Registry, and Component and Scenario and Scene.