Repository navigation
ci: order R2 cache pointers by run ID, so seeder saves take effect - #14174
Conversation
Fails on main: the pointer generation is GITHUB_RUN_NUMBER, a per-workflow counter. nightly.yml (run ~5,870) and seed-derived-data.yml (run ~38) write the same admission-derived-data prefix, so no seeder save can replace the pointer nightly wrote, and publish_pointer skips it without a word. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
nightly.yml and seed-derived-data.yml both save admission-derived-data seeds. The pointer generation was GITHUB_RUN_NUMBER, which each workflow counts separately, so the pointer nightly wrote at run ~5,870 outranked every seeder save (run ~38). Since 02:41 UTC on 2026-09-24 every seeder and pull request has adopted the seed of f2abe64, about 450 changed inputs behind, and each seeder build took 14-16 minutes. GITHUB_RUN_ID increases across all workflows in creation order, so it keeps the rule that an older run finishing late cannot regress a pointer. Every run ID is far above the run numbers stored today, so the first save after this lands repairs each stuck pointer. A pointer left in place now says so in the log. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bugbot is paused — on-demand spend limit reachedBugbot uses usage-based billing for this team and has hit its on-demand spend limit. A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue. |
|
All contributors have signed the CLA ✍️ ✅ |
|
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 configurationConfiguration used: Repository: manaflow-ai/cmux/.coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (2)
Included review availability: Your plan provides up to 10 included reviews per hour; 3 remain after this review. 📝 WalkthroughWalkthroughThe cache save generation now uses ChangesR2 cache ordering
Priority: ➖ Normal Estimated code review effort: 2 (Simple) | ~10 minutes Change: Bug fix Suggested reviewers: Merge Risk: ⚪ Minimal · up to The change aligns cache-save ordering between the seed and nightly workflows. No actionable merge risk remains from the reviewed change. 🚥 Pre-merge checks | ✅ 24 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (24 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
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. Comment |
|
An independent review at 866d2d4 found no bugs.
Auto-merge (squash) is on. |
…#14089) * ci: prune expired R2 cache archives, never one a latest pointer names Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * ci: keep compilation caches three days, not seven Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * ci: run the R2 prune job in the main-only ci-cache-writer environment The guard from #14147 requires every job holding the R2 write credentials to declare it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * ci: route the R2 prune job off Blacksmith outside manaflow-ai Required by the fork runner routing guard (#14066). Also correct the pointer re-read comment: with run-ID generations (#14174) a re-save no longer moves a pointer backwards; a new prefix's first pointer is the remaining race. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * ci: keep per-commit R2 caches one day, not three Both families try the pull request's exact base first, then the newest by prefix. On 2026-09-24, 92 of the 100 most recently updated open pull requests had a base under a day old, and each day of retention costs about 35 GiB. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
|
Measured after merge (read-only; seeder runs on main). Changed inputs when the seeder adopts a seed
🤖 Generated with Claude Code |
Summary
The DerivedData seeder has saved a new seed after every main push since 02:41 UTC on 2026-09-24, but none of those saves became the "newest seed". Every seeder run and every pull request has adopted the seed of
f2abe643, the commit that introduced seeding.The cause is how the pointer is ordered.
r2-cache.shstamps each save withGITHUB_RUN_NUMBERand refuses to move a pointer to a lower number. Run numbers are counted per workflow, and two workflows write theadmission-derived-data-…prefix:nightly.yml, at run ~5,870. It wrote the current pointer at 02:41.seed-derived-data.yml, at run ~38.So every seeder save lost the comparison, and
publish_pointerreturned success without a log line.Evidence from the last three successful seeder runs (35959372603, 35961043898, 35963073004):
…-f2abe643…with 436, 439 and 451 changed inputs, a gap that grows with every merge.https://ci-cache.cmux.com/v1/macOS-ARM64/latest/admission-derived-data-v1-macOS-ARM64-bac5277611926ed6b40291f1640fed47-still namesf2abe643,last-modified02:41:17 GMT, uncached (cf-cache-status: DYNAMIC).Fix
GITHUB_RUN_ID, which increases across all workflows in the repository in the order runs are created. An older run that finishes late still cannot regress a pointer.pointer <prefix> names a newer save (generation A > B); left as is.Testing
pointers order saves across workflowstotests/test_ci_r2_cache.sh. It fails onmain: a save with a lower run number and a higher run ID does not replace the pointer.tests/test_ci_r2_cache.shpass. That includes the existing out-of-order and retry cases, which now setGITHUB_RUN_ID.ci-guards.ymlsweep, the only local failures are the known ones caused by missing submodules and CI-only variables, plus timeouts from a machine at load ~120.Not verified yet: a seeder run on
main. Expected result: the first seeder run after merge reportssaved …and the pointer names its commit. The next one then adopts it with a single merge's worth of changed inputs and builds in minutes rather than about 15.🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.Summary by cubic
Fixes R2 cache pointer ordering so DerivedData seeder saves can finally replace the pointer, instead of every seeder run and pull request adopting a stale seed from September 24.
GITHUB_RUN_NUMBERtoGITHUB_RUN_ID, which increases across all workflows in creation order.Migration
Written for commit 866d2d4. Summary will update on new commits.
Summary by CodeRabbit