What happens
results/README.md describes env.json as holding "kernel, Go, CPU, compile flags for that run" (results/README.md:20, main at ae6b949). No committed env.json holds any of those, and the producer cannot write them.
env.json is run provenance, as the root README now says after #75 (README.md:154):
- version, arch, date, run id;
- git sha and ref;
- celeris and loadgen versions;
- the benchmark config (start and finish times, runs, duration, warmup);
- the fabric.
The producer is probatorium's report.EnvDoc (probatorium report/split.go:89-102). Its environment object is report.Environment (report/schema.go:421-450): kernel_sysctls_applied, loadgen_host, fabric, fabric_line_rate_bits_per_sec, sut_env. There is no kernel version, Go version, CPU model or compile-flags field anywhere in it. Per-adapter language versions and compile options live in summary.json (benchmarks[].language_version, benchmarks[].compile_options).
The same file has two more statements the tree contradicts. Both would go in the same edit:
results/README.md:7-8: "There may be no data here yet — the first results land when the benchmark tier runs on the cluster." The tree holds 9 published cells (v1.5.5 through v1.5.8).
results/README.md:21: run-2/ run-3/ ... is drawn at the <yyyymmdd>/ level, beside <arch>/. The reader expects results/<version>/<yyyymmdd>/<arch>/[run-N[-variant]/]{the 4 files}, with run directories under <arch>/ (src/lib/results/walk.ts:7-8, and the multi-run tests in scripts/build-data.test.ts:252-266).
Reproduction
A script run at ae6b949 prints the claim, then the union of every key in every committed env.json:
## results/README.md line 20 (the claim):
env.json # kernel, Go, CPU, compile flags for that run
## union of all keys (recursive) across every committed env.json:
arch
benchmark_config
benchmark_config.celeris_version
benchmark_config.duration
benchmark_config.finished_at
benchmark_config.git_ref
benchmark_config.loadgen_version
benchmark_config.runs
benchmark_config.scenarios_filter
benchmark_config.started_at
benchmark_config.warmup
celeris_version
date
environment
environment.fabric
environment.fabric_line_rate_bits_per_sec
environment.kernel_sysctls_applied
environment.loadgen_host
generated_at
git_ref
git_sha
loadgen_version
run_id
schema_version
version
## negative search: kernel|go_?version|cpu|compile in any env.json (case-insensitive):
results/v1.5.5/20260624/x86_64/env.json:12: "kernel_sysctls_applied": [],
... (the same line in all 9 files, and nothing else)
- The only kernel-related key is
kernel_sysctls_applied, and it is empty in all 9 files.
- The positive control is
README.md:154, which already carries the corrected provenance description.
- A check of the first cell of
results/v1.5.8/20260829/x86_64/summary.json confirms that compile_options and language_version are present there.
Impact
Documentation only. No build, validation or published number is affected. Nothing reads results/README.md: the tree walker only descends into vX.Y.Z directories (src/lib/results/walk.ts:20), and no script or page references the file. A reader looking for the kernel or Go version of a published run is sent to a file that does not have them.
Suggested fix direction
Rewrite the layout block in results/README.md to match README.md's "Content structure" section:
- describe
env.json as run provenance;
- place
run-N/ under <arch>/;
- drop the "There may be no data here yet" paragraph.
Better, replace the layout block with a link to README.md#content-structure, so the layout is described once.
What happens
results/README.mddescribesenv.jsonas holding "kernel, Go, CPU, compile flags for that run" (results/README.md:20,mainatae6b949). No committedenv.jsonholds any of those, and the producer cannot write them.env.jsonis run provenance, as the root README now says after #75 (README.md:154):The producer is probatorium's
report.EnvDoc(probatoriumreport/split.go:89-102). Itsenvironmentobject isreport.Environment(report/schema.go:421-450):kernel_sysctls_applied,loadgen_host,fabric,fabric_line_rate_bits_per_sec,sut_env. There is no kernel version, Go version, CPU model or compile-flags field anywhere in it. Per-adapter language versions and compile options live insummary.json(benchmarks[].language_version,benchmarks[].compile_options).The same file has two more statements the tree contradicts. Both would go in the same edit:
results/README.md:7-8: "There may be no data here yet — the first results land when the benchmark tier runs on the cluster." The tree holds 9 published cells (v1.5.5 through v1.5.8).results/README.md:21:run-2/ run-3/ ...is drawn at the<yyyymmdd>/level, beside<arch>/. The reader expectsresults/<version>/<yyyymmdd>/<arch>/[run-N[-variant]/]{the 4 files}, with run directories under<arch>/(src/lib/results/walk.ts:7-8, and the multi-run tests inscripts/build-data.test.ts:252-266).Reproduction
A script run at
ae6b949prints the claim, then the union of every key in every committedenv.json:kernel_sysctls_applied, and it is empty in all 9 files.README.md:154, which already carries the corrected provenance description.results/v1.5.8/20260829/x86_64/summary.jsonconfirms thatcompile_optionsandlanguage_versionare present there.Impact
Documentation only. No build, validation or published number is affected. Nothing reads
results/README.md: the tree walker only descends intovX.Y.Zdirectories (src/lib/results/walk.ts:20), and no script or page references the file. A reader looking for the kernel or Go version of a published run is sent to a file that does not have them.Suggested fix direction
Rewrite the layout block in
results/README.mdto matchREADME.md's "Content structure" section:env.jsonas run provenance;run-N/under<arch>/;Better, replace the layout block with a link to
README.md#content-structure, so the layout is described once.