Project defines the resolution environment

.fastsim/project.yaml declares registries, trusted resource roots, cache policy, offline behavior, installed-package discovery, and deployment capability ceilings. The CLI walks upward from the Run to find this exact file; it does not recursively scan a workspace.

Project answers “where resolution is allowed”; Run answers “what this execution selects.” This keeps machine-private paths out of portable author intent.

Registry maps stable identities

A Registry index maps a component identity to versioned manifest releases and an explicit stable target. An unversioned URI uses only the declared stable release. Conflicting content for the same identity and version fails instead of selecting the first file discovered.

Manifest describes one release

A Manifest declares kind, parameter schema, semantics, backend variants, resource digests, and capability requirements. The compiler verifies that URI scheme, Manifest kind, and Scene placement agree.

Common kinds include environment, object, articulation, robot, deformable, fluid, sensor, light, scenario, and plugin. Backend resources are variants of one stable identity.

Resources and provenance

Resources may come from project registries, pinned remote registries, or installed packages. Before entering a Plan, they resolve under a trusted root or controlled cache and record release, variant, and digest. Runtime never reselects them.

This gives authors concise URIs, lets asset owners add variants independently, enables pre-launch diagnostics, and makes Lock files exact. See Organizing components and assets.