Skip to content

chore(renovate): let renovate gate its own automerge on CI - #1515

Merged
ryoppippi merged 1 commit into
mainfrom
chore/renovate-wait-for-ci
Jul 28, 2026
Merged

ryoppippi merged 1 commit into
mainfrom
chore/renovate-wait-for-ci

Conversation

@ryoppippi

@ryoppippi ryoppippi commented Jul 28, 2026 •

Copy link
Copy Markdown
Member

Summary

main has no required status checks, so GitHub's auto-merge merges the moment it is enabled — that is how #1509 landed with its CI still running. platformAutomerge hands renovate's automerge to that same mechanism, so dependency PRs would merge before their checks report. With it off, renovate merges the branch itself only after it has seen the branch checks pass, which needs no repository rules at all.

Why not require the ci gate check instead

That was the plan, and #1511 added the check for it, but a repository ruleset cannot list the built-in GitHub Actions integration as a bypass actor:

422: Actor GitHub Actions integration must be part of the ruleset source or owner organization

Required status checks reject direct pushes too, so without that bypass the rule would break update-pricing.yaml, which pushes to main on purpose. Bypassing by write role does not help either: renovate holds write, so it would bypass the very gate it is meant to obey.

Required checks become workable once a bot app with its own token can open the pricing PRs — then nothing needs to push to main directly. ci gate stays in place for that.

Testing

renovate-config-validator --strict passes.


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


Summary by cubic

Disable platformAutomerge in renovate so dependency PRs only self-merge after CI passes. This avoids GitHub auto-merge on main merging before checks complete.

Written for commit b879c13. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • Chores
    • Updated automated dependency update handling so changes are no longer merged automatically by the hosting platform.

main has no required status checks, so GitHub's auto-merge merges the moment
it is enabled - that is how #1509 landed mid-CI. platformAutomerge hands
renovate's automerge to that same mechanism, which would merge dependency
PRs before their checks report.

Requiring the new `ci gate` check on main would fix it for every merge path
at once, but a repository ruleset cannot list the built-in GitHub Actions
integration as a bypass actor:

  Actor GitHub Actions integration must be part of the ruleset source or
  owner organization

and required status checks reject direct pushes too, so the rule would break
update-pricing.yaml's push to main. Bypassing by write role does not help
either, because renovate holds write and would bypass the gate it is meant
to obey.

With platformAutomerge off, renovate merges the branch itself once it has
seen the branch checks pass, which needs no repository rules at all.
Copilot AI review requested due to automatic review settings July 28, 2026 09:46

Copilot AI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@coderabbitai

coderabbitai Bot commented Jul 28, 2026 •

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 67daceeb-dc88-4d40-a9e0-19f3c5cba769

📥 Commits

Reviewing files that changed from the base of the PR and between d500f5f and b879c13.

📒 Files selected for processing (1)
  • .github/renovate.json

📝 Walkthrough

Walkthrough

Renovate’s platformAutomerge setting changes from true to false, while repository-level automerge remains enabled.

Changes

Renovate automerge configuration

Layer / File(s) Summary
Platform automerge setting
.github/renovate.json
Disables platform-driven automerge without changing the repository-level automerge setting.

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

Possibly related PRs

  • ccusage/ccusage#1508: Modifies the same Renovate platformAutomerge configuration key in the opposite direction.

Suggested reviewers: copilot

🚥 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 clearly matches the main change: disabling Renovate platform automerge so CI gates merges.
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.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/renovate-wait-for-ci

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.

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
ccusage-guide b879c13 Commit Preview URL

Branch Preview URL
Jul 28 2026, 09:46 AM

@pullfrog pullfrog Bot 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.

✅ No new issues found.

Reviewed changes — flips platformAutomerge from true to false so Renovate gates its own auto-merge on CI rather than delegating to GitHub's auto-merge, which merges immediately on main due to no required status checks.

  • Disable platformAutomerge in .github/renovate.json — Renovate's platformAutomerge hands control to GitHub's auto-merge, which fires immediately on main (no required checks). With it off, Renovate merges itself only after branch CI passes.

Pullfrog  | ⚠️ this action is pinned to a commit SHA, which freezes the cleanup step — switch to @v0 or keep the SHA fresh with Dependabot | View workflow run | Using DeepSeek Pro (free via Pullfrog for OSS) | 𝕏

@cubic-dev-ai cubic-dev-ai Bot 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.

No issues found across 1 file

Re-trigger cubic

@pkg-pr-new

pkg-pr-new Bot commented Jul 28, 2026

Copy link
Copy Markdown

Open in StackBlitz

ccusage

npx https://pkg.pr.new/ccusage@1515

@ccusage/ccusage-darwin-arm64

npx https://pkg.pr.new/@ccusage/ccusage-darwin-arm64@1515

@ccusage/ccusage-darwin-x64

npx https://pkg.pr.new/@ccusage/ccusage-darwin-x64@1515

@ccusage/ccusage-linux-arm64

npx https://pkg.pr.new/@ccusage/ccusage-linux-arm64@1515

@ccusage/ccusage-linux-x64

npx https://pkg.pr.new/@ccusage/ccusage-linux-x64@1515

@ccusage/ccusage-win32-x64

npx https://pkg.pr.new/@ccusage/ccusage-win32-x64@1515

commit: b879c13

@github-actions

Copy link
Copy Markdown
Contributor

ccusage performance comparison

PR SHA: b879c135a4a4
Base SHA: d500f5ffe88e

This compares the PR package against the configured base package on the same CI runner.

Package runtime diagnostics

Compares the PR package wrapper, the installed native optional dependency binary, and the workspace release binary on the same large fixture. This identifies whether slow package results come from JavaScript wrapper overhead, the published native binary build, or the Rust core itself.

Fixtures: Claude /home/runner/_work/_temp/ccusage-large-fixture (1.01 GiB, 2597 files), Codex /home/runner/_work/_temp/ccusage-large-codex-fixture (1.01 GiB, 2597 files)
All rows run --offline --json, measured by hyperfine with 0 warmups and 1 runs. This isolates wrapper overhead from the installed native optional dependency and the workspace release binary built on the runner.

Command Runtime Input Median Throughput Samples
claude --offline --json Package wrapper 1.01 GiB 354.3ms 2.84 GiB/s 1
claude --offline --json Installed native binary 1.01 GiB 303.3ms 3.32 GiB/s 1
codex --offline --json Package wrapper 1.01 GiB 116.2ms 8.66 GiB/s 1
codex --offline --json Installed native binary 1.01 GiB 92.5ms 10.89 GiB/s 1

Committed fixture performance

Committed small fixtures for stable PR-to-PR feedback and explicit Claude/Codex command coverage.

Fixtures: Claude apps/ccusage/test/fixtures/claude (0.00 MiB, 2 files), Codex apps/ccusage/test/fixtures/codex (0.00 MiB, 1 files)
Base runs the published ccusage package from pkg.pr.new, installed before measurement; PR runs the published ccusage package from pkg.pr.new, installed before measurement. Both run --offline --json, measured by hyperfine with 2 warmups and 7 runs.
Peak RSS is measured separately with /usr/bin/time using 1 runs. Lower RSS ratios are better.

Command Input Base median PR median PR vs base Base peak RSS PR peak RSS PR/base RSS Base throughput PR throughput
claude daily --offline --json 0.00 MiB 27.2ms 27.3ms 1.00x 55.00 MiB 55.00 MiB 1.00x 0.06 MiB/s 0.06 MiB/s
claude session --offline --json 0.00 MiB 24.0ms 25.7ms 0.93x 55.00 MiB 55.00 MiB 1.00x 0.06 MiB/s 0.06 MiB/s
codex daily --offline --json 0.00 MiB 23.5ms 23.5ms 1.00x 55.00 MiB 55.00 MiB 1.00x 0.04 MiB/s 0.04 MiB/s
codex session --offline --json 0.00 MiB 23.0ms 25.6ms 0.90x 55.00 MiB 55.00 MiB 1.00x 0.04 MiB/s 0.03 MiB/s

Large real-world-shaped fixture performance

Generated fixtures shaped from aggregate local log statistics: thousands of JSONL files, many small sessions, and a long tail of larger sessions. No real prompts, paths, or outputs are stored in the fixtures.

Fixtures: Claude /home/runner/_work/_temp/ccusage-large-fixture (1.01 GiB, 2597 files), Codex /home/runner/_work/_temp/ccusage-large-codex-fixture (1.01 GiB, 2597 files)
Base runs the published ccusage package from pkg.pr.new, installed before measurement; PR runs the published ccusage package from pkg.pr.new, installed before measurement. Both run --offline --json, measured by hyperfine with 0 warmups and 1 runs.
Peak RSS is measured separately with /usr/bin/time using 1 runs. Lower RSS ratios are better.

Command Input Base median PR median PR vs base Base peak RSS PR peak RSS PR/base RSS Base throughput PR throughput
claude --offline --json 1.01 GiB 364.6ms 347.8ms 1.05x 954.57 MiB 958.58 MiB 1.00x 2.76 GiB/s 2.89 GiB/s
codex --offline --json 1.01 GiB 118.2ms 117.9ms 1.00x 430.65 MiB 418.65 MiB 0.97x 8.52 GiB/s 8.54 GiB/s

Artifact size

Artifact Base PR Delta Ratio
packed ccusage-*.tgz 18.78 KiB 18.78 KiB +0.00 KiB 1.00x
installed native package binary 4156.78 KiB 4156.78 KiB +0.00 KiB 1.00x

Lower medians and smaller artifacts are better. CI runner noise still applies; use same-run ratios as directional PR feedback, not release guarantees.

@github-actions

Copy link
Copy Markdown
Contributor

ccusage performance comparison

PR SHA: b879c135a4a4
Base SHA: d500f5ffe88e

This compares the Rust PR release binary against the configured base package on the same CI runner.

Package runtime diagnostics

Compares the PR package wrapper, the installed native optional dependency binary, and the workspace release binary on the same large fixture. This identifies whether slow package results come from JavaScript wrapper overhead, the published native binary build, or the Rust core itself.

Fixtures: Claude /home/runner/_work/_temp/ccusage-large-fixture (1.01 GiB, 2597 files), Codex /home/runner/_work/_temp/ccusage-large-codex-fixture (1.01 GiB, 2597 files)
All rows run --offline --json, measured by hyperfine with 0 warmups and 1 runs. This isolates wrapper overhead from the installed native optional dependency and the workspace release binary built on the runner.

Command Runtime Input Median Throughput Samples
claude --offline --json Package wrapper 1.01 GiB 363.1ms 2.77 GiB/s 1
claude --offline --json Installed native binary 1.01 GiB 311.7ms 3.23 GiB/s 1
codex --offline --json Package wrapper 1.01 GiB 116.4ms 8.65 GiB/s 1
codex --offline --json Installed native binary 1.01 GiB 91.1ms 11.05 GiB/s 1

Committed fixture performance

Committed small fixtures for stable PR-to-PR feedback and explicit Claude/Codex command coverage.

Fixtures: Claude apps/ccusage/test/fixtures/claude (0.00 MiB, 2 files), Codex apps/ccusage/test/fixtures/codex (0.00 MiB, 1 files)
Base runs the published ccusage package from pkg.pr.new, installed before measurement; PR runs the published native ccusage binary from pkg.pr.new, installed before measurement. Both run --offline --json, measured by hyperfine with 2 warmups and 7 runs.
Peak RSS is measured separately with /usr/bin/time using 1 runs. Lower RSS ratios are better.

Command Input Base median PR median PR vs base Base peak RSS PR peak RSS PR/base RSS Base throughput PR throughput
claude daily --offline --json 0.00 MiB 29.6ms 5.3ms 5.58x 55.00 MiB 12.44 MiB 0.23x 0.05 MiB/s 0.29 MiB/s
claude session --offline --json 0.00 MiB 23.6ms 5.4ms 4.40x 55.00 MiB 12.45 MiB 0.23x 0.07 MiB/s 0.29 MiB/s
codex daily --offline --json 0.00 MiB 22.7ms 2.5ms 9.15x 55.00 MiB 10.44 MiB 0.19x 0.04 MiB/s 0.35 MiB/s
codex session --offline --json 0.00 MiB 22.7ms 2.4ms 9.44x 55.00 MiB 10.44 MiB 0.19x 0.04 MiB/s 0.36 MiB/s

Large real-world-shaped fixture performance

Generated fixtures shaped from aggregate local log statistics: thousands of JSONL files, many small sessions, and a long tail of larger sessions. No real prompts, paths, or outputs are stored in the fixtures.

Fixtures: Claude /home/runner/_work/_temp/ccusage-large-fixture (1.01 GiB, 2597 files), Codex /home/runner/_work/_temp/ccusage-large-codex-fixture (1.01 GiB, 2597 files)
Base runs the published ccusage package from pkg.pr.new, installed before measurement; PR runs the published native ccusage binary from pkg.pr.new, installed before measurement. Both run --offline --json, measured by hyperfine with 0 warmups and 1 runs.
Peak RSS is measured separately with /usr/bin/time using 1 runs. Lower RSS ratios are better.

Command Input Base median PR median PR vs base Base peak RSS PR peak RSS PR/base RSS Base throughput PR throughput
claude --offline --json 1.01 GiB 373.3ms 331.7ms 1.13x 922.57 MiB 964.58 MiB 1.05x 2.70 GiB/s 3.04 GiB/s
codex --offline --json 1.01 GiB 119.4ms 94.9ms 1.26x 414.65 MiB 416.65 MiB 1.00x 8.43 GiB/s 10.61 GiB/s

Artifact size

Artifact Base PR Delta Ratio
packed ccusage-*.tgz 18.78 KiB 18.78 KiB +0.00 KiB 1.00x
installed native package binary 4156.78 KiB 4156.78 KiB +0.00 KiB 1.00x

Lower medians and smaller artifacts are better. CI runner noise still applies; use same-run ratios as directional PR feedback, not release guarantees.

@ryoppippi
ryoppippi merged commit cc5be7d into main Jul 28, 2026
39 checks passed
@ryoppippi
ryoppippi deleted the chore/renovate-wait-for-ci branch July 28, 2026 09:56
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.

2 participants