# v2026.10.28

Accurate run times, and the path a run took

A run ends when its result is decided, not once its data is saved, and every time is rounded, so a quick step shows **\<1 ms**. A run’s page draws the path the run took, empty branch paths included. Branches and loops written through the API without their app read as what they are.

## What changed

- Hover over a run’s time to see where it went: its steps, its start-up and its time in line. See [Run states and limits](https://docs.gorunner.io/build/run-states#times).
- A retried step, or one that ran more than once, has `attempts`, `passes` and `totalDurationMs` in the API. See [Get a run](https://docs.gorunner.io/api/runs/get-run).
- A Branch’s `step_completed` event names the paths it took. See [Follow a run as it happens](https://docs.gorunner.io/api/streaming).
- GoRunner fills in a branch’s or loop’s `pieceId`, a branch’s `config.executionMode`, `config.branches` and `valid` when you save and when you read. See [Workflow definition](https://docs.gorunner.io/api/workflow-definition).

## When you update

Migration 118 adds five nullable columns to step records. It is expand-only, so the previous release runs on the new schema.

GoRunner’s image is private for now. With Docker, [sign in to the registry](https://docs.gorunner.io/self-host/install-docker#sign-in-to-the-registry) first. On Kubernetes, [sign Helm in and give the cluster its pull Secret](https://docs.gorunner.io/self-host/install-kubernetes#make-a-namespace). See [Update](https://docs.gorunner.io/self-host/update) for the whole procedure, or [Install with Docker](https://docs.gorunner.io/self-host/install-docker) and [Install on Kubernetes](https://docs.gorunner.io/self-host/install-kubernetes) to install this version anew.

**Docker**

```bash
# Check the image first: its Digest must be sha256:d78d21fde3f8f8f81d292023e1bb43e5a8657a60170948b4adeddc73559b908a
docker buildx imagetools inspect ghcr.io/ralve-org/gorunner-selfhost:v2026.10.28

# Update
./deploy.sh v2026.10.28
```

**Kubernetes**

```bash
helm upgrade gorunner oci://ghcr.io/ralve-org/charts/gorunner --version 2026.10.28 -f values.yaml
```

## Going back

To go back, run `./deploy.sh --skip-check v2026.10.27`. The older version’s check refuses the database that migration 118 changed, and `--skip-check` is safe here because the migration only adds.

Source: https://docs.gorunner.io/changelog/v2026.10.28
