build-cran-binaries/.crow
Repository files (latest commit first)
Filename Latest commit message Latest commit date
pat-s bfe56ffd22
feat(slots): add a retirement workflow and a drift check
Retiring a slot means three separate things in three separate places, and
nothing tied them together.
Alpine 3.22 is what that costs: it was removed from `local.rpkgs_slots` in
`cdn.tf` at some point, so the edge stopped routing it, but it kept a matrix
row in twelve pipelines, six cron jobs on the Crow server and ~50000 objects in
the bucket.
Nightly builds kept producing binaries nobody could reach, and because an
unrouted slot serves the flat index to every client, R 4.4 and R 4.6 users got
`LOAD_FAILED` rather than nothing.

This change will:

- Add `local/check-slots.R`, which fails when any `.crow/*.yaml` still targets
  a slot missing from `local.rpkgs_slots`. Run it with `just check-slots`.
- Add `local/retire-slot.R`, which strips a slot from the pipeline matrices and
  deletes its objects from the bucket. Dry run by default, and it refuses any
  slot still listed in `cdn.tf`, so it cannot be pointed at a live slot.
- Add `.crow/retire-slot.yaml`, which runs the asset half in CI where the B2
  credentials exist.
- Document the ordering in README, including the cron jobs, which live on the
  Crow server and cannot be removed from here.

The check is one-directional on purpose.
A pipeline targeting an unpublished slot is an error; a published slot missing
from *some* pipeline is only reported, because several pipelines cover a subset
deliberately.

Verified against the tree as it stood before #213: the checker names exactly the
twelve files that PR edited by hand, and `retire-slot.R --config-only` reproduces
that commit's structural changes byte for byte across all 18 pipeline files.
The only differences are two prose lines, a usage example and a dropdown
`description:`, which the script leaves alone because rewriting free text
automatically is guesswork.
2026-09-11 08:17:21 +00:00
..
archive-missed-packages.yaml chore(alpine): drop the deprecated Alpine 3.22 slot (#213) 2026-09-11 07:27:03 +00:00
auto-apply-patches.yaml fix(ci): install RPostgres for audit workflows (#172) 2026-08-30 07:31:28 +00:00
backfill-abi-classification.yaml feat(abi): backfill classifier verdicts for pre-per-minor packages (#199) 2026-09-04 10:34:49 +00:00
backfill-flat-safety.yaml chore(alpine): drop the deprecated Alpine 3.22 slot (#213) 2026-09-11 07:27:03 +00:00
build-all-versions-install-deps.yaml fix(ci): make every manual gate default to a value that matches nothing (#158) 2026-08-09 15:31:14 +00:00
build-all-versions.yaml chore(alpine): drop the deprecated Alpine 3.22 slot (#213) 2026-09-11 07:27:03 +00:00
process-updates.yaml chore(alpine): drop the deprecated Alpine 3.22 slot (#213) 2026-09-11 07:27:03 +00:00
prune-stale-flat-binaries.yaml chore(alpine): drop the deprecated Alpine 3.22 slot (#213) 2026-09-11 07:27:03 +00:00
rebuild-abi-gap.yaml chore(alpine): drop the deprecated Alpine 3.22 slot (#213) 2026-09-11 07:27:03 +00:00
reindex.yaml chore(alpine): drop the deprecated Alpine 3.22 slot (#213) 2026-09-11 07:27:03 +00:00
repair-built-stamp.yaml chore(alpine): drop the deprecated Alpine 3.22 slot (#213) 2026-09-11 07:27:03 +00:00
repair-unsafe-flat-objects.yaml chore(alpine): drop the deprecated Alpine 3.22 slot (#213) 2026-09-11 07:27:03 +00:00
retire-slot.yaml feat(slots): add a retirement workflow and a drift check 2026-09-11 08:17:21 +00:00
trial-build-registry.yaml chore(alpine): drop the deprecated Alpine 3.22 slot (#213) 2026-09-11 07:27:03 +00:00
verify-repo-routing.yaml chore(alpine): drop the deprecated Alpine 3.22 slot (#213) 2026-09-11 07:27:03 +00:00
weekly-audit-missing.yaml chore(alpine): drop the deprecated Alpine 3.22 slot (#213) 2026-09-11 07:27:03 +00:00
weekly-patch-proposals.yaml fix(ci): install RPostgres for audit workflows (#172) 2026-08-30 07:31:28 +00:00
weekly-rebuild-missing.yaml chore(alpine): drop the deprecated Alpine 3.22 slot (#213) 2026-09-11 07:27:03 +00:00
weekly-rebuild-reindex.yaml chore(alpine): drop the deprecated Alpine 3.22 slot (#213) 2026-09-11 07:27:03 +00:00