pub struct RunRecord {
pub schema: u32,
pub run_id: String,
pub benchmark_id: String,
pub benchmark_name: String,
pub recorded_at: u64,
pub target_url: String,
pub target_model: String,
pub params: BTreeMap<String, String>,
pub serve_overrides: BTreeMap<String, String>,
pub source: RunSource,
pub metrale_version: String,
pub frame: BenchmarkResult,
}Expand description
2026-09-26: One finished run, as stored. Only benchmark_id,
recorded_at and frame are required and every other field defaults, so
a bare BenchmarkResult (no frame key) never parses as a record.
Fields§
§schema: u32§run_id: String§benchmark_id: String§benchmark_name: String§recorded_at: u642026-09-26: Unix seconds when RunRecord::new assembled the record,
after the run ended. A bare-frame file takes the number in its stem.
target_url: String2026-09-26: Stored flat rather than as a TargetEndpoint, whose
constructor trims trailing slashes; RunRecord::target rebuilds it
through that constructor.
target_model: String§params: BTreeMap<String, String>2026-09-26: Every parameter, defaults included.
serve_overrides: BTreeMap<String, String>2026-09-26: The serve overrides the caller put on the target. The CLI
sets them only under --pull-request-gate, to the served plan’s merged
set (the baseline’s [benchmarks.serve_overrides] and
--serve-override, after --hermetic expansion); the TUI sets none.
Empty therefore does not mean the endpoint had no overrides.
source: RunSource§metrale_version: String§frame: BenchmarkResult2026-09-26: The run’s terminal frame.
Implementations§
Source§impl RunRecord
impl RunRecord
Sourcepub fn new(
descriptor: &BenchmarkDescriptor,
values: &ParamValues,
target: &TargetEndpoint,
serve_overrides: BTreeMap<String, String>,
source: RunSource,
metrale_version: &str,
frame: BenchmarkResult,
) -> Self
pub fn new( descriptor: &BenchmarkDescriptor, values: &ParamValues, target: &TargetEndpoint, serve_overrides: BTreeMap<String, String>, source: RunSource, metrale_version: &str, frame: BenchmarkResult, ) -> Self
2026-09-26: Assemble a record when the run ends. run_id stays empty
until save sets it.
Sourcepub fn target(&self) -> TargetEndpoint
pub fn target(&self) -> TargetEndpoint
2026-09-26: The endpoint, rebuilt through TargetEndpoint::new.
Sourcepub fn values(&self, specs: &[ParamSpec]) -> Result<ParamValues>
pub fn values(&self, specs: &[ParamSpec]) -> Result<ParamValues>
2026-09-26: Rehydrate the stored parameters against a live schema
through ParamValues::from_overrides, which errors on an unknown key or
a value the spec’s ParamKind rejects.
pub fn verdict_kind(&self) -> Option<VerdictKind>
Trait Implementations§
Source§impl<'de> Deserialize<'de> for RunRecord
impl<'de> Deserialize<'de> for RunRecord
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for RunRecord
impl RefUnwindSafe for RunRecord
impl Send for RunRecord
impl Sync for RunRecord
impl Unpin for RunRecord
impl UnwindSafe for RunRecord
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more