Specifications
Explanation
When you start an optimization on the platform, Genie sends an optimization specification to your
agent. BaseExecutor parses this payload and builds an
OptimizationContext — that is the core ADK structure every
executor path shares.
What your agent code receives depends on which executor you use:
| Executor | What your code receives |
|---|---|
RLExecutor | EnvData and AgentData, constructed by RLExecutor from the optimization context |
Custom BaseExecutor subclass | OptimizationContext directly |
EnvData and AgentData are RL-specific conveniences: RLExecutor builds them before instantiating your RLAgentEnv subclass. The core ADK does not construct these types — if you implement your own executor, work with OptimizationContext instead. See RL Agents, Environments, and What To Do Next for how the pieces fit together.
The specification includes:
-
Design parameters / world control specifications — controllable parameters of the system and their bounds or allowed values.
-
Targets — criteria the optimization must meet. Runtime target layout is described under runtime TargetSpec; model-level defaults live in model TargetSpec.
-
Genie model — the model selected for this run, including hyper parameters, metadata, model target specifications, and world control specifications. See Models.
-
Static and randomized parameters — fixed or stochastically sampled parameters for the run. See Design parameters.
-
step_world — applies a set of design parameter values to the simulator and returns observations (and optionally internal features).
The platform builds an internal OptimizationSpec from your project configuration. You normally interact with OptimizationContext (or, on the RL path, the EnvData / AgentData that RLExecutor derives from it) rather than parsing that wire format yourself.