2.4. Environment metadata
The env field carries reproducibility metadata captured by the
child at startup (issue
#11). It exists
so a JSONL row is self-describing for downstream tooling: which
Lean version produced this number? on what hardware? at which git
commit?
The value is a JSON object with the following keys. Producers MUST
emit every key. Fields with no available value land as JSON
null, NOT as an absent key — the issue #11 acceptance criterion
is "Missing metadata is handled explicitly rather than silently
omitted."
key | type | meaning |
|---|---|---|
| string |
|
| string |
|
| string | LLVM target triple. Empty string when missing at compile time. |
| string |
Coarse OS family: |
| string | null | Architecture parsed from the target triple's leading segment. |
| string | null |
Linux: from |
| integer | null |
Logical core count. Linux: |
| string | null |
|
| string | Basename of the running executable. |
| string |
|
| string | null |
Full 40-char SHA from |
| bool | null |
True iff |
| integer | Wallclock at capture, ms since Unix epoch. |
| string |
Wallclock at capture, ISO 8601 UTC ( |
The order writers emit these keys in is fixed by
LeanBench.RunEnv.toJson and pinned by the schema-stability test;
consumers MUST NOT depend on key order, but adding or removing a
key without updating both Schema.envKeys and the test fixture
will break the build.
The same env snapshot also rides on the in-memory
BenchmarkResult / FixedResult (parent-side capture) and is
surfaced as a one-line summary in human-readable reports.