ADR-023: Single Integration Pipeline

Status

Accepted

Date

2026-09-13

Context

Integration tests were split across eight workflows: seven per-distro files (test-integration-<distro>.yml), each triggered by workflow_run on Auto Tag & Release and downloading the published release binary, plus a dispatch-only test-integration-branch.yml that built from an arbitrary ref.

This had three problems:

Decision

Replace all eight workflows with one matrixed workflow, .github/workflows/integration.yml (Integration Tests).

Because workflow_run workflows execute in the default-branch context and can access secrets, the job pins the checked-out ref, disables persisted checkout credentials (persist-credentials: false), and disables the Go module cache (cache: false) to avoid cache poisoning from untrusted refs.

Alternatives Considered

Keep per-distro workflows, add a PR trigger to each

Put integration into ci.yml as a job with needs: [...]

Continue downloading the release binary after Auto Tag & Release

Keep Auto Tag & Release as an additional trigger

Distinguish PR-chained vs main-push-chained runs in the README badge

Consequences