merge queue fast path - #4198
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
e31e627 to
c0e1c7d
Compare
⏭️ Performance benchmarks were skippedPerf benchmarks (CodSpeed) are opt-in on pull requests — they no longer run on every push. They always run automatically after merge to To run them on this PR, do any of the following, then push a commit (or re-run CI):
|
📝 WalkthroughWalkthroughThe CI workflow adds a merge-queue fast path that validates merge-group equivalence with a prior successful pull-request run, then skips redundant checkout, merge-base, and change-detection steps. ChangesMerge-queue CI
Estimated code review effort: 4 (Complex) | ~45 minutes Sequence Diagram(s)sequenceDiagram
participant MergeQueue
participant GitHubScript
participant GitHubAPI
participant CIJobs
MergeQueue->>GitHubScript: provide merge-group context
GitHubScript->>GitHubAPI: query PR and prior successful CI run
GitHubAPI-->>GitHubScript: return commit, tree, and run data
GitHubScript-->>CIJobs: set skip output
CIJobs-->>MergeQueue: skip redundant checks and report success
Suggested reviewers: Poem
🚥 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 |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e31e627861
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| # already guarantees): the WHOLE run must be green, informational | ||
| # jobs included. | ||
| # | ||
| # When skip=true, every later step in this job is skipped, so every |
There was a problem hiding this comment.
Gate the bridge change check on the fast path
When the fast path sets skip=true, check_bridge_cffi_release is the one later change-detection step without the new guard. Checkout and merge-base calculation are skipped, so its git diff "${MERGE_BASE}...HEAD" runs in an uninitialized workspace with an empty merge base; the failure enters the else branch and writes changed=true. This causes the expensive bridge-cffi-release workflow to run on every purported fast-path merge group instead of skipping all jobs.
Useful? React with 👍 / 👎.
| @@ -0,0 +1,169 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"> | |||
| <url><loc>https://boundaryml.com/bamlcode</loc><lastmod>2026-07-24T22:17:21.557Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url> | |||
There was a problem hiding this comment.
Stop tracking the timestamped sitemap output
When anyone runs the website's pnpm build, its postbuild script regenerates this sitemap with the current build time in every lastmod. The app's .gitignore explicitly identifies public/sitemap-0.xml as generated on every build, but adding it to Git makes the ignore rule ineffective, so normal builds now leave a large timestamp-only dirty diff and make it easy to commit stale or noisy sitemap output. Keep the generated sitemap files untracked.
Useful? React with 👍 / 👎.
Binary size checks passed✅ 7 passed
Generated by |
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
.github/workflows/ci.yaml (1)
189-445: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
check_bridge_cffi_releaseis missing the fast-path skip condition applied to every siblingcheck_*step.All other change-detection steps (
check_code,check_lexer,check_parser,check_hir,check_thir,check_codegen,check_docs,check_webview,check_grammar,check_unsafe,check_proto,check_prof,check_perf) gotif: steps.mq_fast_path.outputs.skip != 'true', butcheck_bridge_cffi_release(lines 414-434) did not. On the fast path, checkout andmerge_baseare skipped, so this step'sgit diff --quiet "${MERGE_BASE}...HEAD" ...runs against an emptyMERGE_BASEwith no repo checked out. Thegitinvocation fails, but since it's the condition of a shellif, that failure is swallowed and theelsebranch fires unconditionally, emittingchanged=true. This contradicts the job's stated design ("every later step in this job is skipped, so every output stays empty") and needlessly runs thebridge-cffi-releasejob on every merge-queue fast-path event, defeating part of the optimization this PR introduces.🛠️ Proposed fix
- name: Check if bridge_cffi release inputs changed id: check_bridge_cffi_release + if: steps.mq_fast_path.outputs.skip != 'true' env: MERGE_BASE: ${{ steps.merge_base.outputs.sha }}🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.github/workflows/ci.yaml around lines 189 - 445, Add the same fast-path guard to the check_bridge_cffi_release step that all sibling change-detection steps use: if: steps.mq_fast_path.outputs.skip != 'true'. Keep its existing environment and git diff logic unchanged so the step is skipped when checkout and merge_base are unavailable.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In @.github/workflows/ci.yaml:
- Around line 189-445: Add the same fast-path guard to the
check_bridge_cffi_release step that all sibling change-detection steps use: if:
steps.mq_fast_path.outputs.skip != 'true'. Keep its existing environment and git
diff logic unchanged so the step is skipped when checkout and merge_base are
unavailable.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 11b9a4ec-1e84-4a81-9c58-4c7c85ac41f7
📒 Files selected for processing (1)
.github/workflows/ci.yaml
Summary by CodeRabbit