8000 ci(dogfood): canary the R2 cache read path via MINIMAL_REMOTE_CACHE_URL by bryan-minimal · Pull Request #667 · gominimal/minimal · GitHub
[go: up one dir, main page]

Skip to content

ci(dogfood): canary the R2 cache read path via MINIMAL_REMOTE_CACHE_URL - #667

Merged
norrietaylor merged 2 commits into
mainfrom
ci/r2-cache-canary
Jul 17, 2026
Merged

norrietaylor merged 2 commits into
mainfrom
ci/r2-cache-canary

Conversation

@bryan-minimal
@bryan-minimal bryan-minimal commented Jul 8, 2026 •
Copy link
Copy Markdown
Member

Points the one package-cache-reading CI job at the Cloudflare R2 mirror to validate the read-path migration end to end (build-servers#145 / minimal#643). This is the canary.

What

The dogfood job (minimal run build-smoke) is the only job in this repo that reads the shared package cache on every push/PR — so its minimal run step now sets MINIMAL_REMOTE_CACHE_URL=https://cache.minimal.farm/. Everything else stays on GCS as the control.

  • Isolated & representative. setup-minimal fetches the CLI from the separate shim bucket (a different bucket, unaffected by this var), and minimal --no-fetch check reads no remote cache. So this is a clean A/B: dogfood reads artifacts from R2, all other jobs read from GCS.
  • Index stays fresh. The mutable index.shisha is bypassed to GCS at the edge (infra#277 — verified: cache.minimal.farm/index.shisha returns no-store and matches GCS byte-for-byte), so it never freezes through Sippy. Only the immutable, content-addressed artifacts come from R2.
  • This PR's own dogfood run is the first live test — if reading artifacts over R2 breaks or misses, this PR's CI shows it before merge.

Why (the point)

GCS cache egress is 99% of the bill ($460/mo, almost all CI reads). R2 egress is $0. This canary measures whether pointing reads at R2 collapses that egress with hit-rate parity and zero sha256 mismatches, before rolling it out more broadly.

Rollback

Delete the env block → the reader falls back to the GCS client (default, unchanged). Trailing slash on the URL is required (Url::join footgun).

Not in scope

Writes stay on GCS. The shim/CLI bucket stays on GCS. Broader rollout (more jobs, or baking the default) comes after this canary shows the egress collapse holds.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores
    • Improved Minimal build smoke-test configuration.
    • Added remote cache support to help make build validation more consistent and efficient.
    • Expanded workflow guidance for easier maintenance and troubleshooting.

Point the one package-cache-reading CI job (`dogfood` → `minimal run
build-smoke`) at the Cloudflare R2 mirror (`https://cache.minimal.farm/`)
to validate the read-path migration end to end (build-servers#145): GCS
egress should collapse on this job with cache hit-rate parity and zero
sha256 mismatches, while every other job stays on GCS as the control.

Scoped to the smoke-test step only — `setup-minimal` fetches the CLI from
the separate shim bucket (unaffected), and `minimal --no-fetch check` reads
no remote cache. The mutable `index.shisha` is bypassed to GCS at the edge
(infra#277), so it never freezes through Sippy. Rollback is deleting the
`env` block (reader falls back to the GCS client).

This PR's own `dogfood` run exercises the canary, so CI here is the first
live test of reading the cache over R2.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@coderabbitai
coderabbitai Bot commented Jul 8, 2026 •
Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 1ee26487-14bb-4ca7-92ef-ce64960a752d

📥 Commits

Reviewing files that changed from the base of the PR and between cfeafc7 and 3aa77a6.

📒 Files selected for processing (1)
  • .github/workflows/ci.yml

📝 Walkthrough

Walkthrough

The dogfood CI workflow adds MINIMAL_REMOTE_CACHE_URL to the Minimal smoketest while retaining the existing gominimal/run-task@v1 action.

Changes

Minimal cache configuration

Layer / File(s) Summary
Configure smoketest remote cache
.github/workflows/ci.yml
The “Smoketest building Minimal” step sets MINIMAL_REMOTE_CACHE_URL to https://cache.minimal.farm/ and retains the existing action invocation.

Estimated code review effort: 1 (Trivial) | ~3 minutes

Poem

I’m a rabbit with cache in my pack,
Hopping through CI’s bright track.
Minimal builds zoom,
With a cached-up room,
And the smoketest never looks back!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: canarying the R2 cache read path by setting MINIMAL_REMOTE_CACHE_URL in dogfood CI.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

Comment @coderabbitai help to get the list of available commands.

@twitchyliquid64 twitchyliquid64 left a comment
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I dont think the minimal binary thats run here is a recent one, but lets get this in and soon i'll switch it to mip

@gominimal-aw-bot
Copy link
Copy Markdown
Contributor

This PR has been waiting for review for 5 days. A maintainer probably
just needs a quick look — even a "needs more changes" comment helps it
move forward.

If the PR is intentionally on hold, consider converting it to a draft
or adding the needs-human label so this nudge stops firing.

bryan-minimal, anything blocking from your side?

Generated by PR nudge (side-repo-ops operator) · ◷

@gominimal-aw-bot gominimal-aw-bot Bot added the agent:pr-nudge Applied by the pr-nudge agent label Jul 13, 2026
@norrietaylor
norrietaylor enabled auto-merge (squash) July 17, 2026 23:18
@norrietaylor
norrietaylor merged commit 2dc6e20 into main Jul 17, 2026
28 checks passed
@norrietaylor
norrietaylor deleted the ci/r2-cache-canary branch July 17, 2026 23:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent:pr-nudge Applied by the pr-nudge agent

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

0