Compile vs run¶
What it is: the boundary between creating a RunSnapshot and executing it.
When it matters: whenever you need to reason about run_id, resume semantics, or runtime tuning.
What you provide: compile-time experiment inputs plus optional runtime overrides at execution time.
What Themis provides: immutable snapshot compilation and orchestrated execution over that snapshot.
Use this boundary map when it is unclear whether a setting freezes the run or only changes execution behavior.
flowchart LR
A["Experiment definition"] --> B["compile()"]
B --> C["RunSnapshot"]
C --> D["run() / resume() / replay()"]
E["RuntimeConfig"] --> D
C --> F["Stable run_id"]
D --> G["Execution state, artifacts, reports"]
Compilation decides what the run is, while execution decides how that frozen run is carried out.
What to inspect when it goes wrong: inspect the compiled snapshot first, then inspect execution state, stored events, and runtime settings.