Run: the author declaration
A Run is the human-readable YAML, JSON, or TOML entry. It selects schema, name, backend, runtime policy, Scenario, control policy, plugins, and explicit overrides. It should state what this execution selects instead of copying every component detail.
schema: fastsim/2
name: kitchen-evaluation
backend: isaaclab
runtime:
physics_hz: 60
control_hz: 30
seed: 7
scenario:
use: scenario://kitchen/evaluation
plugins:
recorder:
use: plugin://official/record
ExecutionPlan: execution authority
The compiler expands Project and Registry inputs, resolves component releases and variants, validates bindings, rates, and resources, then creates a deeply immutable ExecutionPlan. It contains normalized Scenario data, runtime policy, resolved entities, plugin bindings, and provenance.
Runtime does not keep a mutable raw configuration dictionary and rediscover meaning midway through execution.
Lock: the verification boundary
A Lock freezes exact component releases, manifests, resource digests, and the plan digest. It answers “what actually executed” for deployment and audit, but is not a replacement authoring format.
| Artifact | Primary reader | Hand editing | Lifetime |
|---|---|---|---|
| Run | Project author | Yes | Changes with the project |
| ExecutionPlan | Runtime and diagnostics | No | Generated per compilation |
| Lock | Deployment, reproduction, audit | Discouraged | Frozen with approved inputs |
Syntax, component conflicts, digests, capabilities, and plugin contracts should fail during compilation whenever possible. See Configuration and CLI and outputs for exact surfaces.