Skip to content

run records are empty shells: no metrics, timestamps, or external tracker links #24

Description

@physercoe

Summary

A run created via runs_create and marked completed is a bare record — it has no started_at/finished_at timestamps, no metrics payload, no time-series data, and no link to an external tracking system (trackio_run_uri, trackio_host_id). For a system that supports experiment dashboards and metric charts, the run object carries none of the data those views need to render.

Steps to reproduce

  1. runs_create(project_id, config_json={...}) — creates a run with status: "pending"
  2. runs_update(status="completed") — marks it done
  3. runs_get(run) — inspect the result

Actual result

{
  "id": "01KTH7GRFQ65B7XX74MA6K9YWG",
  "project_id": "01KTAVZNCZGH1D9TJXAMWA636X",
  "config_json": "{...}",
  "status": "completed",
  "created_at": "2026-06-07T14:24:18Z"
}

Missing fields:

  • started_at — null/absent
  • finished_at — null/absent
  • metrics — no metric series or summary
  • trackio_run_uri — no external tracker link
  • trackio_host_id — no host association

Expected behavior

A completed run should have:

  • started_at and finished_at timestamps (even if set manually or by the worker that executed it)
  • A metrics payload or at minimum a trackio_run_uri pointing to where metrics live
  • If runs_update sets status to completed, it should require or auto-set finished_at

Impact

  • The experiment_dash overview widget (used in experiment phase) has nothing to render — no charts, no metric summaries
  • The mobile app's run detail page would show only config JSON and a "completed" badge, with no training curves or metrics
  • Workers cannot attach trackio data to a run via the current API surface (no runs_attach_artifact for metrics, no trackio_run_uri setter)
  • The experiment phase is essentially unverifiable — you can mark a run "completed" with zero evidence

Proposed fix

  1. Auto-set started_at when status transitions from pendingrunning, and finished_at when transitioning to a terminal status (completed, failed, cancelled)
  2. Add a metrics_summary_json field or a trackio_run_uri field to the run model, settable via runs_update
  3. Consider a runs_attach_metrics endpoint or allow runs_attach_artifact(kind="metrics") for structured metric blobs
  4. Validate that a run entering completed status has either metrics data or an explicit override flag

Affected project

  • Project: test-code-migration (id: 01KTAVZNCZGH1D9TJXAMWA636X)
  • Run: 01KTH7GRFQ65B7XX74MA6K9YWG (CartPole-v1 PPO, 100 steps, completed)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions