# v2026.10.41

A burst of runs costs less

A run that starts when another workflow fails or finishes waits in the line like any other, schedules start within a budget so one busy organization can’t hold them up, and one connection’s OAuth refresh is shared across runs (migrations 119 and 120).

## What changed

## When you update

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:34a0154a74a5f3f693b38f13dc7115e8b5dfb6b4891e2e393987f4dd9ad1f3d5
docker buildx imagetools inspect ghcr.io/ralve-org/gorunner-selfhost:v2026.10.41

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

**Kubernetes**

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

## Going back

- To go back, run `./deploy.sh --skip-check v2026.10.40`. The older version’s check refuses the database that migrations 119 and 120 changed, and `--skip-check` is safe here because they only add.
- Going further back, below v2026.10.41, isn’t a plain update: runs already in the line when you do it can fail or stay pending, because the older version can’t read how they are stored.

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