pub struct FairMetadata {
pub result_id: String,
pub created_at_iso: String,
pub created_at_unix_nanos: i128,
pub elapsed_seconds: f64,
pub solver: SolverIdentity,
pub license: String,
pub input: InputDescriptor,
pub environment: Vec<EnvOverride>,
}Expand description
FAIR-aligned provenance block. The four FAIR principles (Wilkinson et al., 2016) map onto fields here as:
- Findable:
result_id(unique per solve),created_at_iso. - Accessible: this JSON file is the artifact — no protocol gating, plain text on disk.
- Interoperable: schema versioned, types are JSON primitives, units documented in field doc comments.
- Reusable:
solver,license,inputdescribe what was solved with what code, enough to reproduce.
Fields§
§result_id: StringUnique per-solve identifier. Composed as
<unix_nanos>-<process_id> so it is monotonically ordered
within a process and globally unique across processes.
created_at_iso: StringSolve start time as ISO-8601 UTC (YYYY-MM-DDTHH:MM:SS.sssZ).
created_at_unix_nanos: i128Same instant in Unix nanoseconds (since 1970-01-01 UTC). Provided alongside the ISO string for callers that prefer integer arithmetic over date parsing.
elapsed_seconds: f64Wallclock seconds the solve took. Mirrors
SolveStatistics::total_wallclock_time_secs.
solver: SolverIdentitySolver identity — name + version + (best-effort) git commit.
license: StringSPDX license string. Always "EPL-2.0" for this crate.
input: InputDescriptorInput descriptor. kind is nl-file, builtin, or
tnlp-direct (for library callers).
environment: Vec<EnvOverride>Solve-affecting environment variables present in the process
environment at report time (POUNCE_FERAL_* numerics knobs and
the legacy FERAL_PIVTOL / FERAL_PARALLEL). These alter the
factorization or parallelism and can otherwise silently differ a
run between two machines — e.g. one with POUNCE_FERAL_PIVTOL
exported in a shell profile — with nothing in the report saying
so (pounce#235). Recorded for reproducibility (the FAIR R
principle). Presence here means the variable was set, not
necessarily that it took effect: an explicit OptionsList setting
(e.g. a feral_pivtol in an options file) takes precedence over
the env fallback. Empty (and omitted from the JSON) when none are
set. Additive — older pounce.solve-report/v1 JSON without this
field deserializes unchanged.
Trait Implementations§
Source§impl Clone for FairMetadata
impl Clone for FairMetadata
Source§fn clone(&self) -> FairMetadata
fn clone(&self) -> FairMetadata
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 FairMetadata
impl Debug for FairMetadata
Source§impl<'de> Deserialize<'de> for FairMetadata
impl<'de> Deserialize<'de> for FairMetadata
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<FairMetadata, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<FairMetadata, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Serialize for FairMetadata
impl Serialize for FairMetadata
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Auto Trait Implementations§
impl Freeze for FairMetadata
impl RefUnwindSafe for FairMetadata
impl Send for FairMetadata
impl Sync for FairMetadata
impl Unpin for FairMetadata
impl UnsafeUnpin for FairMetadata
impl UnwindSafe for FairMetadata
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
impl<T, U> Imply<T> for U
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> 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