# Pin the All-Test Job to Ubuntu 22.04

## Background and goal

The `ci (test)` job in the `all-test` workflow repeatedly exhausted the disk on
the `ubuntu-24.04` hosted-runner image deployed as `20260816.277.1`. A successful
comparison run used the preceding Ubuntu 24.04 image, `20260810.271.1`, but
standard GitHub-hosted runners do not expose weekly image versions as `runs-on`
labels. The goal is to move only the failing test job to an older supported OS
family while retaining the existing runner for the other CI checks.

## Current behavior

- `detect-code-change` runs on `ubuntu-24.04`.
- The `check-mod`, `check-swagger`, `lint`, and `test` matrix entries all run on
  `ubuntu-24.04`.
- GitHub resolves `ubuntu-24.04` to its currently deployed weekly runner image;
  the workflow cannot select the earlier `20260810.271.1` snapshot directly.

## Target contract

- `ci (test)` runs on the supported `ubuntu-22.04` hosted-runner label.
- `detect-code-change`, `ci (check-mod)`, `ci (check-swagger)`, and `ci (lint)`
  continue to run on `ubuntu-24.04`.
- Matrix command values and check names remain unchanged.
- The workflow continues to use GitHub-hosted runners; no self-hosted or larger
  runner dependency is introduced.

## Affected modules and workflows

- Non-Go CI configuration: `.github/workflows/all-tests.yml`.
- GitHub Actions workflow: `all-test`.
- Affected job: the `test` entry of the `ci` matrix.
- Go modules, executable entrypoints, container images, API routes, and
  app-delivery manifests are unchanged.

## Implementation steps

1. Select the `runs-on` label from the existing matrix command, using
   `ubuntu-22.04` for `test` and `ubuntu-24.04` for all other entries.
2. Keep the current single-dimension command matrix so required check names do
   not change.
3. Validate the YAML, runner-selection expression, whitespace, and final diff.

## Exclusions and compatibility

- Do not attempt to use `20260810.271.1` as a runner label; it is a runner-image
  release identifier rather than a supported standard-runner label.
- Do not change test commands, caches, dependencies, timeouts, or application
  source code.
- Do not move unrelated jobs away from Ubuntu 24.04.
- `ubuntu-22.04` fixes the OS family but remains a rolling GitHub-hosted image;
  exact image reproducibility would require separately provisioned runner
  infrastructure.

## Test plan

- Parse `.github/workflows/all-tests.yml` as YAML.
- Evaluate the runner-selection contract for all four matrix commands.
- Run `git diff --check`.
- Inspect the staged diff and confirm only the workflow and this plan changed.
- After pushing, confirm GitHub accepts the workflow and starts `ci (test)` on
  Ubuntu 22.04.

## Staging verification

No Clinic staging deployment is required. Verification occurs in the pull
request's `all-test` workflow by checking the `Set up job` runner-image details
and the final result of `ci (test)`.

## Release boundary

- Affected source modules: CI configuration only; no runtime source module,
  executable, or produced image is affected.
- Required deployment modules: none.
- No Clinic CD dispatch, app-delivery change, Kubernetes rollout, or production
  release is needed.
