Relationships
#2595 Dashboard: deep links to a model's data item, data version and report
Opened by swamp_lord · 9/28/2026· Shipped 9/28/2026
Problem
The serve dashboard's shareable URLs (#2110, documented in #2129) stop at the model and the workflow run:
/dashboard/models/<name>/dashboard/workflows/<name>/dashboard/workflows/<name>/runs/<runId>
There is no URL for an individual data item, a specific version of it, or a report output. Anything that wants to point a human at one exact artifact — a Discord/Slack notification, a PR comment, an incident timeline — can only link to the whole model (and the reader has to find the item) or to the run that produced it.
Our case: ops.swamp-club.com posts incident messages to Discord. Each has an investigation report (a report output of the investigation workflow) and incident state held as data on an @swamp/platform-ops/incident-lifecycle model (investigation-<runId>, investigation-result-<runId>, …). We link to /dashboard/workflows/ops-incident-investigate-axiom/runs/<runId> and /dashboard/models/ops-incidents-platform because nothing narrower exists.
Checked against 20260928.160203.0-sha.b76c8a82: the router (/dashboard/assets/index-*.js) only recognises models/<name>, workflows/<name>, workflows/<name>/runs/<runId> and the top-level views; /dashboard/data/<anything> falls back to the Data list.
Proposed solution
Addressable routes, following the existing percent-encoding convention, e.g.:
/dashboard/models/<model>/data/<dataName>— latest version of a data item/dashboard/models/<model>/data/<dataName>/versions/<n>— a specific version/dashboard/workflows/<name>/runs/<runId>/reports/<reportName>(or/dashboard/models/<model>/reports/<reportName>) — a rendered report output
The data view would render the item's attributes (and markdown/JSON content for report outputs) the way the model page already does when an item is expanded.
Alternatives
- Link to the model page and name the data item in the message text (what we do now; loses the one-click path).
- Serve raw content via an API URL — not useful to someone without a token, and loses the dashboard's OAuth session.
Shipped
Click a lifecycle step above to view its details.
Sign in to post a ripple.