chore(alpine): drop the deprecated Alpine 3.22 slot #213

Merged
pat-s merged 1 commit from chore/drop-alpine-322 into main 2026-09-11 07:27:04 +00:00
Owner

Why

Alpine 3.22 is deprecated and should be dropped.

It was never a published slot to begin with.
local.rpkgs_slots in cdn.tf enumerates eight distros and alpine322 is not one of them, so UNION_SLOTS never gated per-minor rewriting for it.
The website's DistroId union lists the same eight.
Every request to the slot therefore fell through to the flat index, which holds R 4.5 builds.

Evidence

The fleet-wide routing verification (pipeline 12591, verify_routing=all) measured this end to end.

Across all 16 published slots, both architectures, three R minors and both contractual URL forms: 1056 of 1056 install-and-load checks passed.

Every failure in the run was alpine322, identical on amd64 and arm64:

amd64/alpine322 R 4.4 via arch|generic|flat:  8 of 11
amd64/alpine322 R 4.6 via arch|generic|flat: 10 of 11
arm64/alpine322 R 4.4 via arch|generic|flat:  8 of 11
arm64/alpine322 R 4.6 via arch|generic|flat: 10 of 11

The tell is that all three forms agree.
On a routed slot arch and generic diverge from flat, because that divergence is the routing.
On alpine322 there is nothing to diverge from.
R 4.5 clients were 11 of 11 on every form, because flat happens to be what they need.

The data itself is not broken, only unreachable.
alpine322/contrib/4.4/data.table_1.18.6.1.tar.gz is genuinely Built: R 4.4.3 and the 4.6 object is Built: R 4.6.0.
Correct objects, correct per-minor indexes, never served.

What changed

  • alpine-322 matrix rows and dropdown options removed from the 12 pipelines that carried them, so =all no longer fans out to a slot nobody can reach.
  • 3.22 removed from the OS_VERSION dropdowns in build-all-versions.yaml and repair-built-stamp.yaml; the latter's default moves to 3.23.
  • Stale 3.22 examples updated in local/packages-to-build.R.

crow lint .crow/ reports all 18 configs valid.

Also done outside this diff

The six alpine-322 cron jobs are deleted from the Crow server, since a cron whose matrix row is gone keeps firing against nothing:

5   process-cran-updates-alpine-322-amd64     0 5/8 * * *
6   process-cran-updates-alpine-322-arm64     30 5/8 * * *
68  weekly-audit-missing-alpine-322-amd64     20 0 * * 0
69  weekly-audit-missing-alpine-322-arm64     30 0 * * 0
82  weekly-rebuild-missing-alpine-322-amd64   0 4 * * 0
83  weekly-rebuild-missing-alpine-322-arm64   10 4 * * 0

They are listed here so they can be recreated if this is ever reversed.

Not done

The published objects and indexes under amd64/alpine322 and arm64/alpine322 are left in the bucket.
Deleting them is a separate decision, and nothing routes to them in the meantime.

## Why Alpine 3.22 is deprecated and should be dropped. It was never a published slot to begin with. `local.rpkgs_slots` in `cdn.tf` enumerates eight distros and alpine322 is not one of them, so `UNION_SLOTS` never gated per-minor rewriting for it. The website's `DistroId` union lists the same eight. Every request to the slot therefore fell through to the flat index, which holds R 4.5 builds. ## Evidence The fleet-wide routing verification (pipeline 12591, `verify_routing=all`) measured this end to end. Across all 16 published slots, both architectures, three R minors and both contractual URL forms: **1056 of 1056 install-and-load checks passed.** Every failure in the run was alpine322, identical on amd64 and arm64: ``` amd64/alpine322 R 4.4 via arch|generic|flat: 8 of 11 amd64/alpine322 R 4.6 via arch|generic|flat: 10 of 11 arm64/alpine322 R 4.4 via arch|generic|flat: 8 of 11 arm64/alpine322 R 4.6 via arch|generic|flat: 10 of 11 ``` The tell is that all three forms agree. On a routed slot `arch` and `generic` diverge from `flat`, because that divergence *is* the routing. On alpine322 there is nothing to diverge from. R 4.5 clients were 11 of 11 on every form, because flat happens to be what they need. The data itself is not broken, only unreachable. `alpine322/contrib/4.4/data.table_1.18.6.1.tar.gz` is genuinely `Built: R 4.4.3` and the 4.6 object is `Built: R 4.6.0`. Correct objects, correct per-minor indexes, never served. ## What changed - alpine-322 matrix rows and dropdown options removed from the 12 pipelines that carried them, so `=all` no longer fans out to a slot nobody can reach. - `3.22` removed from the `OS_VERSION` dropdowns in `build-all-versions.yaml` and `repair-built-stamp.yaml`; the latter's default moves to `3.23`. - Stale `3.22` examples updated in `local/packages-to-build.R`. `crow lint .crow/` reports all 18 configs valid. ## Also done outside this diff The six alpine-322 cron jobs are deleted from the Crow server, since a cron whose matrix row is gone keeps firing against nothing: ``` 5 process-cran-updates-alpine-322-amd64 0 5/8 * * * 6 process-cran-updates-alpine-322-arm64 30 5/8 * * * 68 weekly-audit-missing-alpine-322-amd64 20 0 * * 0 69 weekly-audit-missing-alpine-322-arm64 30 0 * * 0 82 weekly-rebuild-missing-alpine-322-amd64 0 4 * * 0 83 weekly-rebuild-missing-alpine-322-arm64 10 4 * * 0 ``` They are listed here so they can be recreated if this is ever reversed. ## Not done The published objects and indexes under `amd64/alpine322` and `arm64/alpine322` are left in the bucket. Deleting them is a separate decision, and nothing routes to them in the meantime.
Alpine 3.22 is deprecated and is no longer a published slot.
It was never routed: `local.rpkgs_slots` in `cdn.tf` lists eight distros and
alpine322 is not among them, so `UNION_SLOTS` never gated per-minor rewriting
for it and every request fell through to the flat index.

The fleet-wide routing verification made that concrete.
Across all 16 published slots, both architectures, three R minors and both
contractual URL forms, 1056 of 1056 install-and-load checks passed.
Every failure in the run was alpine322, identical on amd64 and arm64, and
identical across `arch`, `generic` and `flat`.
That last part is the signature of an unrouted slot: on a routed slot the
contractual forms diverge from `flat`, because the divergence is the routing.
Its flat objects are R 4.5 builds, so R 4.4 and R 4.6 clients got
`LOAD_FAILED` while R 4.5 clients were fine.

This change will:

- Remove the alpine-322 matrix rows and dropdown options from every pipeline
  that carried them, so `=all` no longer fans out to a slot nobody can reach.
- Remove `3.22` from the `OS_VERSION` dropdowns in `build-all-versions.yaml`
  and `repair-built-stamp.yaml`, and move the latter's default to `3.23`.
- Update the stale `3.22` examples in `local/packages-to-build.R`.

The six alpine-322 cron jobs are deleted from the Crow server as well, since a
cron whose matrix row is gone would keep firing against nothing:

    5   process-cran-updates-alpine-322-amd64     0 5/8 * * *
    6   process-cran-updates-alpine-322-arm64     30 5/8 * * *
    68  weekly-audit-missing-alpine-322-amd64     20 0 * * 0
    69  weekly-audit-missing-alpine-322-arm64     30 0 * * 0
    82  weekly-rebuild-missing-alpine-322-amd64   0 4 * * 0
    83  weekly-rebuild-missing-alpine-322-arm64   10 4 * * 0

The published objects and indexes under `amd64/alpine322` and `arm64/alpine322`
are left in place; removing them from the bucket is a separate decision.
pat-s merged commit 416a2d64d9 into main 2026-09-11 07:27:04 +00:00
pat-s deleted branch chore/drop-alpine-322 2026-09-11 07:27:04 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
devxy/build-cran-binaries!213
No description provided.