How it works

Runs, tags and the axis

Four ideas cover the whole model. Everything the app shows is derived from your pushes at read time.

The four words

  • Run — one push.
  • Metric — one number, with a unit and a direction. Both are pinned the first time the metric is seen.
  • Tag — a coordinate. Tags identify the run, and they are what you filter, group and compare on.
  • Meta — provenance: commit, CI URL, runner. It never identifies anything.

The rule: if it identifies, it is a tag; if it must not, it is meta.

{ "tags": {"version": "v2.5.0", "platform": "linux-x64"}, "metrics": [{"name": "binary_size", "value": 2.14, "unit": "MB"}], "meta": {"commit": "9f2c1ab", "ci": "…/runs/812"}}identifies · filter · comparethe numbers, one pushprovenance, never identity

Tags are coordinates

Each tag key is a dimension, so a project's runs form a grid. A cell is one run, holding the metrics that push measured.

platform ↓v2.3v2.4v2.5linux-x64cortex-m7runbinary_size 1.98latency_ms 43.1runbinary_size 2.06latency_ms 42.1runbinary_size 2.14latency_ms 41.6runbinary_size 0.21peak_ram 62runbinary_size 0.22peak_ram 63runbinary_size 0.24peak_ram 71axis: version →

The axis is the one tag key the x-axis walks — version by default, changed in project settings. Hold the other tags fixed and you have a series.

Filter or axis is up to the query

No tag is a “filter tag” or an “axis tag”. The same grid gives a trend or a comparison depending on which key you walk.

platform ↓v2.3v2.4v2.5linux-x64cortex-m7runbinary_size 1.98latency_ms 43.1runbinary_size 2.06latency_ms 42.1runbinary_size 2.14latency_ms 41.6runbinary_size 0.21peak_ram 62runbinary_size 0.22peak_ram 63runbinary_size 0.24peak_ram 71row → trendfilter platform=linux-x64 · axis versioncolumn → comparisonfilter version=v2.5 · axis platform

Two modes

A project is versioned or time_series. The mode is fixed once the project has runs.

versionedthe tag set is the identityversion=v2.5pushpush again → replacedtime_seriesthe timestamp joins the identitypush again → appended

Three layouts

ProjectTagsNote
Firmwareversion × board × buildone project per product
Monorepoversion × component × platformone project per repo
Nightly benchmarksmodel × devicetime_series, commit in meta

More shapes in the FAQ.