Enable and verify per-R-minor index routing #176
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Tracking issue for enabling per-R-minor index routing (
UNION_SLOTS) oncran.rpkgs.com, and for verifying the claims we make about R version support once it is on.Context and the full verification run are in #175. This issue is the checklist that has to be green before we enable routing in production or change the support wording on the website and in the docs.
State today
UNION_SLOTSis empty. Every client is served the flat, single-R-version index.4.4,4.5,4.6on all 16<arch>/<os>slots and are supersets of flat.4.3and4.2are 404 on all 16 slots, while the website anddocs/configuration.mdocstill advertise R 4.3 as fully supported.build-env-imagespinsR_VERSION_LATEST=4.6.0,PREV1=4.5.3,PREV2=4.4.3. R 4.3 is not installed.Before enabling
KNOWN_MINORSfallback,EXTRA_PUBLIC_HOSTS, staging zone, verification script).tofu applythecran-rpkgs-testpull zone.BASE=https://cran-rpkgs-test.b-cdn.net scripts/verify-r-minor-routing.sh --livepasses on all 16 slots.cache_vary_headers = ["User-Agent"]question. The comment incdn.tfsays dropping it is a real win but should be its own change once routing is confirmed live, not a side effect of enabling it.Enabling
UNION_SLOTS, ideally one slot first rather than all 16.scripts/verify-r-minor-routing.sh --liveagainstcran.rpkgs.com.contrib/<minor>/paths in the pull zone logs.Before claiming it
Coverage is currently uneven, so "full coverage for ABI-sensitive packages" is not yet accurate:
On the R 4.5-built distros a 4.4 or 4.6 client sees roughly 300 fewer packages.
scripts/verify-r-minor-routing.shfails these slots viaPARITY_TOLERANCE.resoluteandalpine324(both arches), or state the limitation explicitly rather than claiming full coverage.docs/configuration.mdoc: it says the ABI heuristic "must first be developed", butbincraft's classifier is built and running. The supported set is 4.4/4.5/4.6, not 4.4/4.3.Verify my work
Everything above came from an agent session. Worth an independent check:
curl -sI https://cran.rpkgs.com/amd64/noble/latest/src/contrib/4.3/PACKAGES.gzPACKAGES.gzrequest underR/4.4.3andR/4.5.3User-Agents returns byte-identical bodies.KNOWN_MINORSgate. I checked this by reverting the gate and re-running; worth reproducing.Updated after the decision to send unsupported minors to CRAN and to publish a supported window. Supersedes the checklist items about the flat fallback.
Supported window
Current R minor plus the two previous — today 4.4, 4.5, 4.6. This is what
build-env-imagesinstalls (R_VERSION_LATEST/PREV1/PREV2) and what is published on all 16 slots. It is declared once aslocal.rpkgs_supported_minorsincdn.tfand pushed toKNOWN_MINORSon both zones, so the router and the build images cannot drift apart silently.Excluded minors are sent to CRAN for sources (index and tarballs), matching what
parseSlot()already does for an unidentifiable distro.Current state: 12 of 16 slots ready
Latest full run: 140 passed, 4 failed. Every failure is the coverage gap on the R 4.5-built distros:
RHEL 10 has closed its gap since the website warning was written; Ubuntu 26.04 and Alpine 3.24 have not.
This suggests enabling
UNION_SLOTSfor the 12 passing slots first and leaving the other 4 until the gap closes, rather than all-or-nothing.Revised checklist
tofu applythecran-rpkgs-testzone.BASE=https://cran-rpkgs-test.b-cdn.net scripts/verify-r-minor-routing.sh --live— expect the same 140/4, plus the live routing and CRAN-redirect assertions.install.packages()recovers.UNION_SLOTSfor the 12 passing slots.--liveagainstcran.rpkgs.com.cache_vary_headers = ["User-Agent"]as its own change.docs/configuration.mdocand the website (rpkgs/website PR #47) to the 4.4-4.6 window. Deliberately held until routing is live, so the published claim matches what is served.Verify my work
curl -sI https://cran.rpkgs.com/amd64/noble/latest/src/contrib/4.3/PACKAGES.gzPACKAGES.gzunderR/4.4.3andR/4.5.3User-Agents returns byte-identical bodies.KNOWN_MINORSgate is removed. I verified this by reverting the gate; worth reproducing.abi_classify()marks risky, which is the subset the per-minor slots exist for. That reasoning drove the CRAN decision and deserves a second opinion.