ferrum-bench-core 0.7.4

Canonical bench schema + metric aggregation + variance + env_hash for ferrum's bench and bench-serve commands. Locked by docs/bench/PLAYBOOK.md § 7.
Documentation

ferrum-bench-core — canonical schema, metric aggregation, and variance reporting for ferrum's bench and bench-serve commands.

Locked by docs/bench/PLAYBOOK.md § 7. Do not invent variants; producers and consumers (bench, bench-serve, compare-commits, visualizer, dashboards) all build against the types here.

Quick map

  • [BenchReport] — top-level: one bench cell, aggregated across n_repeats
  • [Scenario] — closed-loop / open-loop / shared-prefix / cli
  • [MetricSet] — p50/p75/p95/p99 of one latency metric
  • [ScalarStats] — {mean, stddev, ci95_hw} ([stats] module)
  • [Env] + [EnvHash] — apples-to-apples cell identity ([env] module)
  • [ProfileEvent] — locked structured profile JSONL envelope ([profile] module)
  • [compute_metrics] — the one aggregator both bench CLIs call
  • [arrivals] module — Poisson inter-arrival times for open-loop

Determinism notes

  • JSON keys are emitted in struct field-declaration order; field order is part of the locked schema and should not change.
  • BTreeMap (not HashMap) for any dynamic key-value bag.
  • CI95 fields are suppressed when n_repeats < 3 (degenerate).