Skip to content

ci: give the DerivedData seeder the R2 public URL - #14146

Merged
teamleaderleo merged 2 commits into
mainfrom
claude/seed-r2-public-url
Sep 24, 2026
Merged

teamleaderleo merged 2 commits into
mainfrom
claude/seed-r2-public-url

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Sep 24, 2026 •

Copy link
Copy Markdown
Collaborator

seed-derived-data.yml (#14081) passes the R2 bucket credentials to its save step but never sets CI_CACHE_R2_PUBLIC_URL. scripts/ci/r2-cache.sh restores through that URL and its save returns early with "CI_CACHE_R2_PUBLIC_URL is not set; nothing saved" when it is missing. So every main-push seed builds, then saves nothing, and its "Adopt the newest seed" step always misses. Pull request admission never gets a seed from this workflow.

This sets it at workflow level with the same value ci-macos.yml, ci.yml and nightly.yml use.

The first commit adds a test that the seeder's CI_CACHE_R2_PUBLIC_URL equals admission's, and fails. The second adds the env and passes. tests/test_seed_derived_data.py passes (9) and actionlint is clean. Found by reading the code; not yet confirmed against a seed run's log.

Split out of #14143 so it can land on its own.

🤖 Generated with Claude Code

https://claude.ai/code/session_012pAcDGiHaibDaMU4CPvXAP


Generated by Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.


Summary by cubic

Fixes the DerivedData seeder so it actually saves seeds to R2: it passed bucket credentials but never set CI_CACHE_R2_PUBLIC_URL, so r2-cache.sh refused to save and every "Adopt the newest seed" step missed. Sets the variable at workflow level with the same value admission uses, and adds a test that the seeder's value matches.

Written for commit 27fa348. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • Chores
    • Updated cache seeding to use the same public cache URL as the related admission workflow, with a default URL when no repository value is configured.
    • Added a check to verify that both workflows use the same public cache URL.

teamleaderleo and others added 2 commits September 24, 2026 05:06
r2-cache.sh restores through CI_CACHE_R2_PUBLIC_URL and refuses to save
without it. seed-derived-data.yml never sets it, so this fails.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012pAcDGiHaibDaMU4CPvXAP
seed-derived-data.yml passed the bucket credentials to its save step but
never set CI_CACHE_R2_PUBLIC_URL, which r2-cache.sh needs to restore and
refuses to save without. Every seed save warned and wrote nothing, and
every "Adopt the newest seed" missed. Set it at workflow level with the
same value ci-macos.yml and nightly.yml use.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012pAcDGiHaibDaMU4CPvXAP
@github-actions

Copy link
Copy Markdown
Contributor

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@coderabbitai

coderabbitai Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: manaflow-ai/cmux/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 9dc702a5-e448-4df7-9806-bce06bd5a6a1

📥 Commits

Reviewing files that changed from the base of the PR and between 0605515 and 27fa348.

📒 Files selected for processing (2)
  • .github/workflows/seed-derived-data.yml
  • tests/test_seed_derived_data.py

Included review availability: Your plan provides up to 10 included reviews per hour; 4 remain after this review.


📝 Walkthrough

Walkthrough

The seeder workflow now sets CI_CACHE_R2_PUBLIC_URL from a repository variable or a fallback URL. A test checks that this value matches the admission workflow’s setting.

Changes

Seeder cache URL

Layer / File(s) Summary
Configure and validate the seeder cache URL
.github/workflows/seed-derived-data.yml, tests/test_seed_derived_data.py
The workflow sets CI_CACHE_R2_PUBLIC_URL from the repository variable, with https://ci-cache.cmux.com as a fallback. The test checks that the value matches the admission workflow’s setting.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~5 minutes

Change: Bug fix

Merge Risk: ⚪ Minimal · up to 27fa3

The seeder now has the public cache URL needed for its cache workflow, with parity checked against admission. No merge-blocking issue is identified.

🚥 Pre-merge checks | ✅ 24 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 1 files. (1 skipped: 1 … Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (24 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the main change: adding the R2 public URL to the DerivedData seeder workflow.
Description check ✅ Passed The description explains the problem, the implemented fix, and the reported test results. It also notes that a seed run has not yet confirmed the behavior. The core Summary and Testing information is …
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.
Cmux Cloud Persistent Session And Early Input ✅ Passed PASS: The pull request changes only .github/workflows/seed-derived-data.yml and tests/test_seed_derived_data.py. The diff adds the CI_CACHE_R2_PUBLIC_URL workflow variable and a wiring test. It …
Cmux Swift Actor Isolation ✅ Passed PASS: The pull request changes only a GitHub Actions YAML workflow and a Python test. The authoritative diff contains no Swift files and introduces no production Swift code, so the Swift actor-isolati…
Cmux Swift Blocking Runtime ✅ Passed PASS: The pull request changes only .github/workflows/seed-derived-data.yml and tests/test_seed_derived_data.py. It introduces no production Swift changes and no blocking or timing-based Swift syn…
Cmux Browser Automation Off-Main ✅ Passed PASS: The pull request changes only .github/workflows/seed-derived-data.yml and tests/test_seed_derived_data.py. The added code sets CI_CACHE_R2_PUBLIC_URL and tests workflow configuration. It d…
Cmux Expensive Synchronous Load ✅ Passed PASS: The pull request changes only .github/workflows/seed-derived-data.yml and tests/test_seed_derived_data.py. It adds a GitHub Actions environment variable and a Python workflow-wiring test. It…
Cmux Cache Substitution Correctness ✅ Passed PASS: The pull request changes only .github/workflows/seed-derived-data.yml and tests/test_seed_derived_data.py. It introduces no production Swift, TypeScript, or JavaScript change, and it does no…
Cmux No Hacky Sleeps ✅ Passed PASS. The PR changes only GitHub Actions YAML and a Python test. The added workflow block sets CI_CACHE_R2_PUBLIC_URL, and the added test performs an assertion. No fixed sleep, timer, polling, or wa…
Cmux Algorithmic Complexity ✅ Passed The pull request changes only workflow configuration and a test. The workflow addition sets an environment variable and adds comments; it introduces no collection scans or runtime algorithm. The Pytho…
Cmux Swift Concurrency ✅ Passed PASS: The review range changes only .github/workflows/seed-derived-data.yml and tests/test_seed_derived_data.py. No Swift file or Swift concurrency code changes. The diff adds workflow YAML and a …
Cmux Swift @Concurrent ✅ Passed The pull request changes only .github/workflows/seed-derived-data.yml and tests/test_seed_derived_data.py. The authoritative diff contains no Swift files or Swift code, so the @concurrent check …
Cmux Swift Package Boundaries ✅ Passed PASS: The pull request changes only .github/workflows/seed-derived-data.yml and tests/test_seed_derived_data.py. The authoritative diff contains no Swift files and introduces no production Swift c…
Cmux Swiftpm Lockfiles ✅ Passed The PR changes only .github/workflows/seed-derived-data.yml and tests/test_seed_derived_data.py. The patch adds the R2 URL environment variable and a matching test. It does not change `Package.swi…
Cmux Swift Logging ✅ Passed PASS: The pull request changes only a GitHub Actions workflow and a Python test. It adds no Swift files or Swift logging statements, so the Swift logging check is not applicable.
Cmux User-Facing Error Privacy ✅ Passed PASS. The diff changes only an internal GitHub Actions workflow and a wiring test. The new CI_CACHE_R2_PUBLIC_URL is consumed by internal cache restore/save steps and scripts/ci/r2-cache.sh; no ch…
Cmux Full Internationalization ✅ Passed The PR changes only a GitHub Actions environment variable, operational comments, and a wiring test. CI_CACHE_R2_PUBLIC_URL and the URL are literal configuration tokens, and the comments and test are…
Cmux Swiftui State Layout ✅ Passed PASS: The pull request changes only a GitHub Actions workflow and a Python test. It introduces no SwiftUI code, state, layout measurement, list rows, or render-time mutation.
Cmux Architecture Rethink ✅ Passed PASS: The PR changes only .github/workflows/seed-derived-data.yml and tests/test_seed_derived_data.py; no Swift file changes. The added workflow-level CI_CACHE_R2_PUBLIC_URL matches the existing…
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed PASS: The pull request changes only .github/workflows/seed-derived-data.yml and tests/test_seed_derived_data.py. The diff adds a workflow environment variable and a Python test. It adds or changes…
Cmux Source Artifacts ✅ Passed PASS — The PR changes only .github/workflows/seed-derived-data.yml and tests/test_seed_derived_data.py. The additions are workflow configuration, comments, and a test assertion for `CI_CACHE_R2_PU…
Cmux No Test Or Debug Seam In Production Source ✅ Passed The pull request changes only .github/workflows/seed-derived-data.yml and tests/test_seed_derived_data.py. It changes no Swift file under a production Sources/ path, so the specified production …
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 1 files. (1 skipped: 1 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

Copy link
Copy Markdown
Collaborator Author

Two more things block the seed after this PR. Both were confirmed from job data on 2026-09-24.

1. The admission side never runs. In ci-macos.yml compile admission, Adopt the nightly DerivedData seed is skipped, not missed, on every pull-request run I checked:

Both runs executed the compile step, so reuse-products and persistent-restore did not hit. CI_ADMISSION_SEED_DERIVED_DATA is unset and CI_CACHE_BACKEND=r2. By reading, every term of the step's if: should be true, and the if: at the run's merge commit (c3771e6) is identical to main's. I haven't found which term evaluates false. Even with the seeder fixed, PRs won't adopt anything until that's found.

2. Every seed build since #14081 failed or was cancelled. The builds ran on blacksmith-6vcpu-macos-15 with Xcode 26.3 while MACOS_RUNNER_PR was unset:

MACOS_RUNNER_PR is now blacksmith-6vcpu-macos-26 with CMUX_CI_XCODE_APP_PR=Xcode_26.6, so the next seed builds where admission compiles.

— unregistered (Claude Code session, run for @teamleaderleo)


Generated by Claude Code

@teamleaderleo
teamleaderleo merged commit 4ca24a2 into main Sep 24, 2026
52 of 53 checks passed

Copy link
Copy Markdown
Collaborator Author

Follow-up to my earlier comment: I found the admission-side cause. An unset repository variable evaluates to null, and Actions compares null with '0' as the numbers 0 and 0, so vars.CI_ADMISSION_SEED_DERIVED_DATA != '0' is false while the variable is unset. A probe run (job 107503109056) printed null and false for that term. The fix is #14150.


Generated by Claude Code

rustybret pushed a commit to rustybret/bmux that referenced this pull request Sep 24, 2026
82543c5 ci: stop restoring the test compilation cache in compile admission (manaflow-ai#14161)
5da27d6 ci: route the persistent compile fleet command as control plane only (manaflow-ai#14157)
b2ec91b ci: bring a Mac mini onto the compile fleet with one command (manaflow-ai#14148)
1f39b14 ci: cancel orphaned runs from the queue janitor (manaflow-ai#14156)
455179c ci: register new Python tests automatically at commit time (manaflow-ai#14153)
e6ca0a2 fix(ios): mirror the signed-in account so pushes decrypt after launch (manaflow-ai#14110)
fd028fe ci: run forks' own macOS CI on GitHub-hosted macos-26 (manaflow-ai#14151)
f70a62b ci: cancel stale pull request runs on every janitor sweep (manaflow-ai#14144)
e2fd37e ci: default the seed adoption kill switch to on (manaflow-ai#14150)
4926f0f fix: split the SSH session-list merge so it type-checks on slow runners (manaflow-ai#14142)
34d33d2 ci: run R2 cache writers in a main-only ci-cache-writer environment (manaflow-ai#14147)
4b7f66a ci: skip the Mac wrapper and remote-daemon lanes for ci.yml routing edits (manaflow-ai#14145)
4ca24a2 ci: give the DerivedData seeder the R2 public URL (manaflow-ai#14146)

# Conflicts:
#	.github/workflows/app-host-test-rerun.yml
#	.github/workflows/auth-refresh-tests.yml
#	.github/workflows/ci-guards.yml
#	.github/workflows/ci-macos.yml
#	.github/workflows/ci-queue-janitor.yml
#	.github/workflows/ci.yml
#	.github/workflows/cli-pipe-regressions.yml
#	.github/workflows/cloud-command-deadlines.yml
#	.github/workflows/cloud-machine-tests.yml
#	.github/workflows/cloud-task-local-tests.yml
#	.github/workflows/iroh-v2.yml
#	.github/workflows/nightly.yml
#	.github/workflows/relay-tls.yml
#	.github/workflows/remote-daemon.yml
#	.github/workflows/seed-derived-data.yml
#	.github/workflows/terminal-hang-diagnostics.yml
#	.github/workflows/test-ios.yml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant