Document the runs screen, the run context and the generated dashboard
Docs / docs (push) Successful in 25s
Playwright Tests / test-playwright (1, 2) (push) Failing after 2m47s
Playwright Tests / test-playwright (2, 2) (push) Failing after 1m42s
Playwright Tests / merge-reports (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 1m45s
Test Backend / test-backend (push) Canceled after 0s
Compose Smoke Test / test-compose (push) Canceled after 0s

This commit is contained in:
2026-08-25 12:44:19 +02:00
parent 7ff29ca939
commit 03e12b7647
4 changed files with 74 additions and 1 deletions
+50
View File
@@ -286,6 +286,56 @@ acknowledgement was late is not recovery; instead a running run refreshes a
lease, and one whose lease goes stale is marked `abandoned` — which is what a
run whose engine was killed mid-training becomes.
## Looking at what ran
The **Runs** screen is the experiment log: every run newest-first, filtered by
flow, by status, or down to one sweep. A sweep is worth filtering to — the
table then draws a column per parameter that actually varied, which is what
makes fifty runs of one flow readable.
Tick two or more and their curves go side by side. That comparison is the
address, so a link to it is a link someone else can open.
One run in full is params, the per-node record with its logs and traceback,
the artifacts it made, its metrics and its result.
### A dashboard, read against runs
A run records values under the same names a dashboard binds to — a run of
`study` writes `study.loss` — so a dashboard is already a way of looking at
one. **Open in dashboard** from a run or a comparison opens any dashboard with
`?runs=a,b,c` on it, and the widgets resolve from those runs instead of from
the live engine: each chart draws a line per run, the tiles that show one
number show the first, and the controls go quiet because there is nothing left
to publish to.
Nothing about the dashboard is specific to runs. The page built to watch a
training run happen is the page that shows the finished ones.
If a flow has no dashboard yet, the same menu offers to build one from what
the flow declares — a chart per streaming port, a tile per output:
```
POST /api/v1/dashboards/from-flow/study
```
It publishes `study_results` and is an ordinary dashboard afterwards; editing
it is how it stops being generic.
### A tile that always shows the last few
The other direction is a chart pinned to runs rather than a page opened
against them, which is what a panel over a bench wants. Set a chart's source
to **Runs**, name the metric, and pick either the latest N of a flow, one
sweep, or specific runs. It re-reads on its own and whenever a run finishes.
### When a run draws nothing
A node restored from the [stage cache](#stage-caching) replays no emissions —
a cache hit returns what the node returned, not what it emitted on the way. So
a run that reused an earlier one has a result and an empty curve, and the
chart says so rather than looking broken.
## What this costs, compared
The repository ships a benchmark that measures submitting a run against a