{# One run on the Activity page. The same row markup serves the live queue and the history: what differs is which of its fields the run has recorded yet. A live run carries the stage and progress its own persisted event stream last reported; a run that has stopped carries the cost record's derived speed and its wall-clock duration — a queued run has neither yet, and a running one shows the rate so far. `row` is the dict web/views.py builds once (views.run_row); the header chip is fed from the same reads. #} {% set run = row.run %} {% set live = row.live %}