Repository navigation
ci: add a single gate check for main to require - #1511
Conversation
main has no required status checks, so GitHub auto-merge has nothing to wait for: `gh pr merge --auto` merged #1509 while its CI was still running, and renovate's platformAutomerge would merge dependency PRs the same way. Requiring the existing checks directly does not work, because everything behind `changes` is skipped on docs-only pull requests and a skipped check never satisfies a requirement. This adds the usual aggregator instead: it needs every job action-timeline already waits for, treats skipped as fine, and fails only when a job failed or was cancelled. That single "ci gate" check is what main's ruleset can require.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughAdds a ChangesCI gate aggregation
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 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 |
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
ccusage-guide | 1feaca5 | Commit Preview URL Branch Preview URL |
Jul 28 2026, 01:15 AM |
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes — adds a single ci gate aggregator job so main's branch ruleset can require one check instead of having auto-merge bypass CI entirely.
- Add
ci-gatejob toci.yaml— mirrors the existingaction-timelineneedslist exactly; runs withif: always()and fails only onfailureorcancelledviacontains(needs.*.result, ...), correctly lettingskippedpass for docs-only PRs and fork PRs where individual jobs don't run.
@v0 or keep the SHA fresh with Dependabot | View workflow run | Using DeepSeek Pro (free via Pullfrog for OSS) | 𝕏
ccusage
@ccusage/ccusage-darwin-arm64
@ccusage/ccusage-darwin-x64
@ccusage/ccusage-linux-arm64
@ccusage/ccusage-linux-x64
@ccusage/ccusage-win32-x64
commit: |
ccusage performance comparisonPR SHA: This compares the Rust PR release binary against the configured base package on the same CI runner. Package runtime diagnosticsCompares 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
Committed fixture performanceCommitted small fixtures for stable PR-to-PR feedback and explicit Claude/Codex command coverage. Fixtures: Claude
Large real-world-shaped fixture performanceGenerated 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
Artifact size
Lower medians and smaller artifacts are better. CI runner noise still applies; use same-run ratios as directional PR feedback, not release guarantees. |
ccusage performance comparisonPR SHA: This compares the PR package against the configured base package on the same CI runner. Package runtime diagnosticsCompares 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
Committed fixture performanceCommitted small fixtures for stable PR-to-PR feedback and explicit Claude/Codex command coverage. Fixtures: Claude
Large real-world-shaped fixture performanceGenerated 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
Artifact size
Lower medians and smaller artifacts are better. CI runner noise still applies; use same-run ratios as directional PR feedback, not release guarantees. |

Summary
mainhas no required status checks, so GitHub auto-merge has nothing to wait for.gh pr merge --auto --squashmerged #1509 while its CI was still running, and renovate'splatformAutomerge(now enabled again by #1508) would merge dependency PRs exactly the same way — instantly, unchecked.Fixing that needs a check the ruleset can require. Requiring the existing ones directly does not work: everything behind the
changesjob is skipped on docs-only pull requests, and a skipped check never satisfies a requirement, so those pull requests would be blocked forever on checks that never report.What Changed
Adds the usual aggregator job to
ci.yaml:needsthe same jobsaction-timelinealready waits for, withif: always().failureorcancelled, viacontains(needs.*.result, ...)so it needs no tooling on the runner.The check is named
ci gate— that single context is what main's ruleset should require.Follow-up (repo settings, not in this PR)
Once this is on
main, a branch ruleset on the default branch requiringci gatemakes both auto-merge and renovate's automerge wait for CI.That ruleset needs a bypass actor for the GitHub Actions app, because required status checks reject direct pushes too, and
update-pricing.yaml(and tagpr) push tomainon purpose — a token-created PR gets no CI, which is why they push directly and validate inline.Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is enabled.Summary by cubic
Adds a single CI gate check so auto-merge and Renovate wait for CI on
main, without blocking docs-only PRs.New Features
ci gatejob in.github/workflows/ci.yaml.if: always(); skipped is OK.failureorcancelledand outputs the joined results.Migration
ci gatestatus check.update-pricing.yaml, tagpr).Written for commit 1feaca5. Summary will update on new commits.
Summary by CodeRabbit