pub struct RuntimeSessionSpec {Show 14 fields
pub session_id: String,
pub env_id: String,
pub env_component_id: String,
pub model_component_id: String,
pub workflow_edition: String,
pub env_contract: EnvContract,
pub num_envs: usize,
pub base_seed: Option<i64>,
pub episode_seeds: Vec<i64>,
pub max_episodes: Option<u64>,
pub max_episode_steps: Option<i64>,
pub max_episode_seconds: Option<f64>,
pub close_env_on_end: bool,
pub limits: RuntimeLimits,
}Expand description
Everything one route needs to run: its identity, the negotiated env
contract, and the per-op limits. validate gates a spec
before the driver runs it.
Fields§
§session_id: StringCorrelation label only; OSS does not key on it (the managed layer owns session lifecycle). Kept as plumbing for telemetry/logs — its removal is the deferred closed split, out of scope here.
env_id: StringThe connected env container, UUIDv7 (minted by the runtime on attach).
The single routing key: replaces the old route_id + positional lane.
(Repurposed from the former descriptive-name field; the human env name
now lives only in the language SDK’s own contract type.)
env_component_id: String§model_component_id: String§workflow_edition: StringWorkflow edition negotiated at the env handshake. The runtime refuses an
edition it was not built to drive (see RuntimeSessionSpec::validate).
env_contract: EnvContract§num_envs: usize§base_seed: Option<i64>§episode_seeds: Vec<i64>Explicit per-episode reset seeds, consumed in episode-start order (a
vector reset claims one per lane). Overrides base_seed derivation when
non-empty; episodes beyond the list reset unseeded. Requires
driver-owned resets (autoreset DISABLED): under NEXT_STEP the env
seeds its own rolls, so the list would silently not apply.
max_episodes: Option<u64>§max_episode_steps: Option<i64>Truncate any episode after this many steps (runtime-enforced; the lane
is reset and the episode reported truncated). Requires driver-owned
resets (autoreset DISABLED).
max_episode_seconds: Option<f64>Truncate any episode after this wall-clock duration (seconds), same
semantics and autoreset requirement as max_episode_steps.
close_env_on_end: bool§limits: RuntimeLimitsImplementations§
Source§impl RuntimeSessionSpec
impl RuntimeSessionSpec
pub fn validate(&self) -> Result<(), String>
pub fn env_context(&self) -> RuntimeEnvContext
Sourcepub fn observation_space(&self) -> Option<&SpaceSpec>
pub fn observation_space(&self) -> Option<&SpaceSpec>
Returns the observation space, or None if the spec has not been
populated/validated (env_contract.observation_space is unset).
All RuntimeSessionSpec fields are public, so an unvalidated spec is
trivial to construct; this accessor never panics. The driver validates
the spec before running and uses the infallible internal accessor.
Sourcepub fn action_space(&self) -> Option<&SpaceSpec>
pub fn action_space(&self) -> Option<&SpaceSpec>
Returns the action space, or None if the spec has not been
populated/validated (env_contract.action_space is unset).
See RuntimeSessionSpec::observation_space for why this is fallible.
Trait Implementations§
Source§impl Clone for RuntimeSessionSpec
impl Clone for RuntimeSessionSpec
Source§fn clone(&self) -> RuntimeSessionSpec
fn clone(&self) -> RuntimeSessionSpec
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RuntimeSessionSpec
impl Debug for RuntimeSessionSpec
Source§impl PartialEq for RuntimeSessionSpec
impl PartialEq for RuntimeSessionSpec
Source§fn eq(&self, other: &RuntimeSessionSpec) -> bool
fn eq(&self, other: &RuntimeSessionSpec) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for RuntimeSessionSpec
Auto Trait Implementations§
impl Freeze for RuntimeSessionSpec
impl RefUnwindSafe for RuntimeSessionSpec
impl Send for RuntimeSessionSpec
impl Sync for RuntimeSessionSpec
impl Unpin for RuntimeSessionSpec
impl UnsafeUnpin for RuntimeSessionSpec
impl UnwindSafe for RuntimeSessionSpec
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request