Examples › Vibe Tracks › Vibe Tracks · run explorer
Vibe Tracks · run explorer
The run is the atomic record; the cards, the chart, the leaderboard, the table, the pivot and the grouped table are views over that one dataset. A ratio-of-sums KPI per run kind, every run over time, and a leaderboard that is the track tree's roll-up.
The .base file and its data
Every tab above is one entry of this file; the views read these rows. ⋯ in the toolbar copies the current view as YAML.
# Vibe Tracks' run explorer: the run is the atomic record, and the table, the pivot and the leaderboard are views over
# that one dataset (Zach, Oct 11). The check runs of every track, linked to the track tree so the leaderboard is the
# tree's roll-up. Data: ../vibetracks-dashboard (real, source/build.py there). Grammar: docs/peps/0004-dashboards.md.
data: ../vibetracks-dashboard/runs.json
facets:
- track_title
- kind
- channel
- { property: t, as: date, label: Run date }
- { property: pass_rate, as: slider-histogram, label: Pass rate of the run }
properties:
track_title: { displayName: Track }
t: { displayName: When }
kind: { displayName: Kind }
pass_rate: { displayName: Pass rate, digits: 3 }
title: { displayName: Track }
checks_passed: { displayName: Passing }
checks_run: { displayName: Checks }
datasets:
runs: ../vibetracks-dashboard/runs.json
tracks:
data: ../vibetracks-dashboard/tracks.json
tree: { parent: parent }
facets: [area]
rollup:
from: runs
latest: { by: t, per: suite }
values:
checks_passed: { property: passed, summary: Sum }
checks_run: { property: checks, summary: Sum }
pass_rate: { property: passed, summary: Ratio, per: checks }
links:
- { from: runs.track, to: tracks.id }
layout:
panels:
- text: |
## Runs in, numbers out
Every row below is one run a producer wrote. The cards are **Σ passed / Σ checks** over the runs the rail keeps
(a ratio of sums, never a mean of ratios); the leaderboard is each track's newest run per suite, rolled up
through its children. Click a point or a leader to narrow everything; click a run to open it.
w: 12
- { view: Pass rate by kind, w: 12, h: 3 }
- { view: Every run over time, w: 8, h: 5 }
- { view: Leaderboard, w: 4, h: 5 }
- { views: [Runs, Track × kind, By track], title: The runs, w: 12, h: 6, toolbar: full }
views:
- type: kpi
name: Pass rate by kind
groupBy: { property: kind }
groupOrder: [tests, checks, goldens, gates]
sort:
- { property: t, direction: ASC }
kpi:
value: { property: passed, summary: Ratio, per: checks }
spark: { x: t, y: pass_rate }
- type: chart
name: Every run over time
select: track
chart:
mark: { type: point, filled: true, size: 60 }
encoding:
x: { field: t, title: null }
y: { field: pass_rate, title: Pass rate of the run, scale: { domain: [0, 1] } }
color: { field: track_title, title: Track }
shape: { field: kind, title: Kind }
hover: { title: run, fields: [track_title, suite, passed, checks, branch] }
- type: table
name: Leaderboard
from: tracks
select: id
filters: '!checks_run.isEmpty()'
order: [title, pass_rate, checks_passed, checks_run]
sort:
- { property: pass_rate, direction: DESC }
- type: table
name: Runs
order: [t, track_title, suite, kind, passed, failed, skipped, checks, pass_rate, seconds, channel, branch, sha]
sort:
- { property: t, direction: DESC }
- type: pivot
name: Track × kind
groupBy: { property: track_title }
splitBy: [kind]
value: { property: checks, summary: Sum }
- type: table
name: By track
order: [t, suite, kind, passed, checks, pass_rate, branch]
groupBy: { property: track_title }
sort:
- { property: t, direction: DESC }
summaries: { passed: Sum, checks: Sum, pass_rate: Median }
fold: closed
// ../vibetracks-dashboard/runs.json: 86 rows, 44 KB; the first 3
{
"id": "vibetracks-check-runs",
"title": "Vibe Tracks check runs (real: tests, checks, goldens, gates)",
"titleProperty": "run",
"source": "Zach's Vibe Tracks owner bundle (~/.vibetracks/bundle, vt-state/1, generated 2026-10-26T21:06:09Z) and its producer folders under ~/vt/{zach,bam}/producers, read 2026-10-26; grasping's figures left out (SPEC §13)",
"properties": {
"run": {
"type": "text",
"width": 260
},
"track": {
"type": "text",
"hidden": true
},
"track_title": {
"type": "text",
"width": 170,
"display": "badge"
},
"producer": {
"type": "text",
"width": 140
},
"kind": {
"type": "text",
"width": 70,
"display": "badge"
},
"t": {
"type": "date",
"width": 190
},
"suite": {
"type": "text",
"width": 110
},
"channel": {
"type": "text",
"width": 80
},
"branch": {
"type": "text",
"width": 200
},
"sha": {
"type": "text",
"width": 80
},
"passed": {
"type": "number",
"width": 70
},
"failed": {
"type": "number",
"width": 70
},
"skipped": {
"type": "number",
"width": 70
},
"checks": {
"type": "number",
"width": 70
},
"pass_rate": {
"type": "number",
"width": 90,
"display": "bar",
"note": "passed / checks of this run"
},
"seconds": {
"type": "number",
"width": 80,
"unit": "s"
}
},
"rows": [
{
"id": "pyblocks:board-a4d8221-20260930T160410Z",
"run": "board-a4d8221-20260930T160410Z",
"track": "pyblocks",
"track_title": "Pyblocks",
"producer": "pyblocks",
"kind": "goldens",
"t": "2026-09-30T16:04:10.643447+00:00",
"suite": "pyblocks",
"channel": null,
"branch": null,
"sha": "a4d8221",
"passed": 12,
"failed": 11,
"skipped": 32,
"checks": 55,
"pass_rate": {
"value": 0.2182,
"unit": "share",
"basis": "derived",
"n": 55,
"source": "producers/pyblocks/runs_table.jsonl · passed / checks"
},
"seconds": null
},
{
"id": "pyblocks:board-027bf14-20260930T190216Z",
"run": "board-027bf14-20260930T190216Z",
"track": "pyblocks",
"track_title": "Pyblocks",
"producer": "pyblocks",
"kind": "goldens",
"t": "2026-09-30T19:02:16.187961+00:00",
"suite": "pyblocks",
"channel": null,
"branch": null,
"sha": "027bf14",
"passed": 12,
"failed": 11,
"skipped": 32,
"checks": 55,
"pass_rate": {
"value": 0.2182,
"unit": "share",
"basis": "derived",
"n": 55,
"source": "producers/pyblocks/runs_table.jsonl · passed / checks"
},
"seconds": null
},
{
"id": "pyblocks:board-005e2ed-20260930T205131Z",
"run": "board-005e2ed-20260930T205131Z",
"track": "pyblocks",
"track_title": "Pyblocks",
"producer": "pyblocks",
"kind": "goldens",
"t": "2026-09-30T20:51:31.068587+00:00",
"suite": "pyblocks",
"channel": null,
"branch": null,
"sha": "005e2ed",
"passed": 14,
"failed": 15,
"skipped": 26,
"checks": 55,
"pass_rate": {
"value": 0.2545,
"unit": "share",
"basis": "derived",
"n": 55,
"source": "producers/pyblocks/runs_table.jsonl · passed / checks"
},
"seconds": null
}
]
}skin.css, README.md
/* Vibe Tracks' skin: its own tokens (vibetracks~/tokens.css, Claude Desktop's, read 2026-10-25), then the
one block that maps them onto data-ui's --data-* (docs/SPEC.md §10). good / bad are its success and danger inks,
so a KPI delta reads green or red outside its neutral band, as Vibe Tracks' tiles do. */
.data-ui-skin {
--surface: #ffffff; --ink: #0b0b0b; --ink-2: #52514e; --alpha-1: rgba(11, 11, 11, .05); --line: rgba(11, 11, 11, .10);
--hover: rgba(11, 11, 11, .05); --accent: #2a78d6; --warn-ink: #734500; --success-ink: #2f7a4a; --danger-ink: #8e2626;
--font: system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; --mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace; --radius: 6px;
}
@media (prefers-color-scheme: dark) {
:root:not([data-theme="light"]) .data-ui-skin {
--surface: #1a1a1a; --ink: #f0efec; --ink-2: #c3c2b7; --alpha-1: rgba(255, 255, 255, .05); --line: #252525;
--hover: rgba(255, 255, 255, .06); --accent: #2a78d6; --warn-ink: #db9300; --success-ink: #6fbf8b; --danger-ink: #ec7e7e;
}
}
:root[data-theme="dark"] .data-ui-skin {
--surface: #1a1a1a; --ink: #f0efec; --ink-2: #c3c2b7; --alpha-1: rgba(255, 255, 255, .05); --line: #252525;
--hover: rgba(255, 255, 255, .06); --accent: #2a78d6; --warn-ink: #db9300; --success-ink: #6fbf8b; --danger-ink: #ec7e7e;
}
/* the mapping (SPEC §10's Vibe Tracks block, plus the KPI inks) */
.data-ui-skin {
--data-bg: var(--surface); --data-fg: var(--ink); --data-muted: var(--ink-2); --data-subtle: var(--alpha-1);
--data-border: var(--line); --data-rule: var(--alpha-1); --data-hover: var(--hover); --data-accent: var(--accent);
--data-warn: var(--warn-ink); --data-font: var(--font); --data-mono: var(--mono); --data-radius: var(--radius);
--data-good: var(--success-ink); --data-bad: var(--danger-ink);
}
# Vibe Tracks · run explorer
The run is the atomic record; the cards, the chart, the leaderboard, the table, the pivot and the grouped table are
views over that one dataset. A ratio-of-sums KPI per run kind, every run over time, and a leaderboard that is the
track tree's roll-up.
- **App:** Vibe Tracks
- **Replaces:** the Results tab's FINOS Perspective pivot over a track's runs (PEP 0006, `vibetracks~/pivot.js`)
and the hand-built run lists; Perspective stays only as the million-row escape hatch (SPEC §8.10).
- **Shows:** `type: kpi` in summary mode (`summary: Ratio, per: checks`: Σ passed / Σ checks, never a mean of ratios);
a chart whose point click selects a track for the whole page; a leaderboard read from the `tracks` dataset's
`rollup:` (newest run per suite, through child tracks); a panel with three presets as tabs and the full toolbar; a
rail over two linked datasets (run facets plus the tracks' area); a pass-rate slider with its histogram.
- **Data:** `../vibetracks-dashboard/runs.json` and `tracks.json` (real, from the owner bundle; see that case's README).
- **Skin:** `skin.css`, Vibe Tracks' tokens.
The original UI it replaces
the Results tab's FINOS Perspective pivot over a track's runs (PEP 0006, vibetracks~/pivot.js) and the hand-built run lists; Perspective stays only as the million-row escape hatch (SPEC §8.10).
What it shows
type: kpi in summary mode (summary: Ratio, per: checks: Σ passed / Σ checks, never a mean of ratios); a chart whose point click selects a track for the whole page; a leaderboard read from the tracks dataset's rollup: (newest run per suite, through child tracks); a panel with three presets as tabs and the full toolbar; a rail over two linked datasets (run facets plus the tracks' area); a pass-rate slider with its histogram.
Data
../vibetracks-dashboard/runs.json and tracks.json (real, from the owner bundle; see that case's README).
Skin
skin.css, Vibe Tracks' tokens.