Skip to content

ci: catch-up posts once per head, says less, and merges inserted declarations - #15018

Merged
teamleaderleo merged 3 commits into
mainfrom
ci/catch-up-quieter-smarter
Sep 27, 2026
Merged

teamleaderleo merged 3 commits into
mainfrom
ci/catch-up-quieter-smarter

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Sep 27, 2026 •

Copy link
Copy Markdown
Collaborator

Why

Automatic catch-up posted the same comment twice on #14876, 26 s apart. The comment took six lines to name one file. It also gave up on a conflict it could have resolved: the pull request had added one function, and main had rewritten the functions around it.

Changes

  • Once per head. Two green main runs (36322788603, 36322888743) both selected Add What's New recap with an off / quiet / sheet setting #14876's head before either had commented. Their finish jobs already run one at a time per pull request (pr-catch-up-auto-push-N). The comment step now checks for the head's marker line among github-actions[bot]'s comments and stays quiet when it finds one.
  • Shorter comments. A blocked catch-up is now one sentence: which files conflict, that nothing was pushed, and how to retry. The opt-out label and run link move into the footer. For example:

    Automatic catch-up couldn't merge main (c9a6a0e34564): .../AppSection+DisplayText.swift (both sides changed the same lines). Nothing was pushed; merge it by hand. A new push or /catch-up tries again.

  • Inserted declarations merge. Source files in brace languages (Swift, ObjC, C, Go, Rust, Kotlin, Java, TS/JS) outside .github/ are now resolved in one narrow case:
    • The conflict hunk is one side only inserting whole declarations (func, a type, case, import...) with balanced braces.
    • The other side's lines are kept, and the declarations are placed at the brace depth they had.
    • When both sides only inserted declarations, both are kept.
    • Statements (let, calls) and any other overlap still stop.
    • The finish job's verify re-derives each such file from the merge-base, head and base blobs and requires an exact match, so nothing else can ride along.
  • External contributors. The automatic path already takes only branches in this repository (auto_catch_up_select.py: isCrossRepository and the head repo name), so fork pull requests get no automatic comments. This PR doesn't change that.

Checked

🤖 Generated with Claude Code


Summary by cubic

Makes automatic catch-up quieter and resolves source-file conflicts it previously gave up on.

  • The comment step now checks for a marker line among github-actions[bot]'s comments and stays quiet when it finds one, so two green main runs no longer post the same comment twice.
  • A blocked comment is now one sentence naming the conflicting files, that nothing was pushed, and how to retry; the opt-out label and run link moved to the footer.
  • Conflicts in brace-language source files (Swift, ObjC, C, Go, Rust, Kotlin, Java, TS/JS) outside .github/ now resolve when one side only inserted whole declarations (func, a type, import…) at balanced brace depth; both sides inserting declarations keeps both. Declarations move only within the hunk's own scope — after blank lines or closing braces, never between an attribute or doc comment and its declaration. Statements, switch or enum cases, preprocessor directives, braces next to quotes or comments, and marker-shaped lines still stop.
  • The push job re-derives each such file from the merge-base, head, and base blobs and requires an exact match, so nothing else can ride along; the merge job stops early where that re-derivation cannot work.
  • The merge and catch-up messages now name the source path as "both sides changed it" instead of "not a generated file".

Written for commit 324943d. Summary will update on new commits.

Review in cubic

…arations

Two green main runs selected #14876's head before either had commented, so
it got the same comment twice 26 s apart. The finish jobs of one pull
request already run one at a time; the comment step now looks for the
head's marker first and stays quiet when it is there.

The blocked comment was six lines for one file. It is now one sentence
naming the files and the next step, with the opt-out and run link in the
footer.

Conflicts in source files stopped outright. A hunk where one side only
inserted whole declarations (a function, a type, an enum case) now keeps
the other side's lines and places the declarations at the same brace
depth; both sides inserting declarations keeps both. Statements and
anything else still stop. The push job re-derives each such file from the
three blobs before it pushes. #14876's conflict resolves this way.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 27, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 2 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 10 included reviews currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

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

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 51d6230f-0e98-4820-865b-9f42f79ec1ca

📥 Commits

Reviewing files that changed from the base of the PR and between 82c26b3 and 324943d.

📒 Files selected for processing (4)
  • .github/workflows/pr-catch-up.yml
  • scripts/ci/catch_up_pr.py
  • tests/test_ci_catch_up_pr.py
  • tests/test_ci_merge_main.py

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.

@github-actions

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Sep 27, 2026 •

Copy link
Copy Markdown
Contributor

CI fast guards passes on 324943dd35 (https://github.com/manaflow-ai/cmux/actions/runs/36325451919).

@github-actions

github-actions Bot commented Sep 27, 2026 •

Copy link
Copy Markdown
Contributor

CI failure attribution

CI passes on 324943dd35 (run 36325452134 attempt 1).

Written by scripts/ci/classify_failures.py (ci-failure-attribution.yml); signatures are its SIGNATURES table. A machine verdict is the runner's fault, not this PR's.

teamleaderleo and others added 2 commits September 27, 2026 10:05
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From review: a marker-shaped line in a side could steer split_conflicts(),
so any wide conflict-marker line in an input stops the merge (pbxproj too).
A block is whole declarations only when every line at its level is a
declaration start, an attribute, a comment, a closing brace or blank, and
a declaration is a keyword followed by a name, so calls, assignments and
switch or enum cases stay put. Blocks move only within the scope the hunk
starts in, to its start, after a blank line or after a closing brace, never
between an attribute or doc comment and its declaration. Hunks with
preprocessor directives or braces next to quotes or comments stop. verify
re-derives only conflicted files, and the merge job stops early where verify
could not re-derive (several merge bases, a renamed base). The duplicate
check reads every comment page before matching.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Sep 27, 2026 •

Copy link
Copy Markdown
⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@teamleaderleo
teamleaderleo merged commit 05d0190 into main Sep 27, 2026
40 checks passed
@teamleaderleo
teamleaderleo deleted the ci/catch-up-quieter-smarter branch September 27, 2026 14:39
@github-actions

Copy link
Copy Markdown
Contributor

Merge receipt for 324943dd35: every check was green at merge (9 verified; 12 skipped by policy). Full suite runs on main after merge.

rustybret pushed a commit to rustybret/bmux that referenced this pull request Sep 27, 2026
648d5c1 Add a Paste Last Screenshot action with an unbound shortcut (manaflow-ai#14955)
ff61677 ci: avoid partial blobs in catch-up merges (manaflow-ai#15023)
4d0d112 ci: retry transient catch-up GraphQL failures (manaflow-ai#15021)
212e808 ci: attribution scores a lone suspect and reports app-host crashes apart (manaflow-ai#14952)
4cabdf4 test: settle the window before measuring the unread sidebar-row invalidation (manaflow-ai#14568)
12ec99b Add a release-media capture tool for changelog screenshots and clips (manaflow-ai#15010)
ee2cda0 Backfill Unreleased changelog and draft next release cards (manaflow-ai#14999)
be4adf8 Show a brief notice when Cmd+V fails on an oversized image or a timeout (manaflow-ai#14953)
23d22d7 ci: an owned pool the run starts on now beats an earlier one it queues on (manaflow-ai#14993)
05d0190 ci: catch-up posts once per head, says less, and merges inserted declarations (manaflow-ai#15018)
4ee4b21 ci: fail stalled Swift package tests instead of waiting out the job timeout (manaflow-ai#14997)
9ce512a merge-main: run local guards only when asked (manaflow-ai#15016)
d60108a ci: clear test-e2e's fixed DerivedData with clear-dirs.sh (manaflow-ai#14994)
1d7895e ci: run the shell and CLI no-socket lanes in parallel (manaflow-ai#14990)
6e7d25f Honor macOS Differentiate Without Color, Increase Contrast and Reduce Transparency (manaflow-ai#14991)
966b355 Stop interrupting focused work: sidebar jumps, Computer Use focus steal, quit dialog on logout (manaflow-ai#14961)
e1f1cb2 Strip control characters from feedback attachment filenames (manaflow-ai#14783)
0758c9f test: find the onboarding window the test presented, not a leftover (manaflow-ai#15015)
b35c540 fix(spm): resolve GhosttyKit/GhosttyRuntimeTestStubs target name collisions (manaflow-ai#10569)
ef33bed Map .purs artifacts to the Haskell highlight.js grammar (manaflow-ai#14202)
e2a167a Highlight Elixir and Erlang files in the file editor (manaflow-ai#13732)
972c449 fix: wrap Linux browser download card label (manaflow-ai#11157)
f563884 Add Aside to browser data import detection (manaflow-ai#13379)
091d0ea Add cmux send --paste and hint at it for large multi-line sends (manaflow-ai#14937)
3ffcdbb test(ios): keep folder-tap stat tests off the real 2 s deadline (manaflow-ai#15017)
68d3936 test: keep CmuxTerminal pasteboard tests off the cooperative pool (manaflow-ai#15006)
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented Sep 27, 2026 •

Copy link
Copy Markdown
⚠️ Action not completed

Pull request is closed.

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