Skip to content

docs(ci): merge-main fallback when git is older than 2.46 - #33291

Merged
lawrencecchen merged 3 commits into
feat-cmux-nextfrom
docs/merge-main-old-git
Nov 3, 2026
Merged

lawrencecchen merged 3 commits into
feat-cmux-nextfrom
docs/merge-main-old-git

Conversation

@lawrencecchen

@lawrencecchen lawrencecchen commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Summary

This adds a section to docs/ci/merge-main.md: what to do when git is older than 2.46. The merge-main resolver needs attr.tree (git 2.46), and the Linux agent VMs have git 2.43, so scripts/merge-main.sh stops there. The lead agreed that a plain git merge of the base meets the intent of the rule.

The fallback has these limits:

  • Use it only on a branch whose head you trust.
  • Make a merge commit only: no rebase and no force push.
  • Never merge a generated file by hand.
  • Run the checks of the area before you push.
  • Get a new receipt at the merge head, because next-autoland carries a receipt only across a cmux-bot base merge.

This is the path #33161 took, with the reviewer's confirmation at its merge head.

Observed / Not run

Docs only. prepush-gate.py is clean. Nothing else was run.

Changelog

none


Autofix with [code]smith
Open in [code]smith · Need help on this PR? Tag @codesmith-bot with what you need.


Summary by cubic

Adds a section to docs/ci/merge-main.md covering the fallback when git is older than 2.46, which the merge-main resolver requires (attr.tree). The Linux agent VMs ship git 2.43, so scripts/merge-main.sh stops there, and a plain git merge of the base now meets the rule's intent.

The fallback applies only to trusted branches, permits merge commits only (no rebase, squash, or force push), and requires regenerating generated files rather than hand-merging them. On main, merge the last green commit that --dry-run reports, not the tip, and confirm the trusted merge drivers are present, installing them via scripts/install-git-hooks.sh if not. It also mandates running the area's checks before pushing and getting a new receipt at the merge head, since next-autoland carries receipts only across its own cmux-bot base merges.

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

View guided diff Turn on auto-fix

The merge-main resolver needs git 2.46 (attr.tree), and the Linux agent VMs
have git 2.43, so scripts/merge-main.sh stops there. Write down the fallback
the lead agreed to: a plain `git merge` of the base, only on a branch
whose head you trust, with no rebase and no force push. Generated files
are regenerated, never hand-merged. Run the area's checks before the push,
and get a new receipt at the merge head, because next-autoland carries a
receipt only across a cmux-bot base merge.
@lawrencecchen lawrencecchen added the risk:low Risk tier (docs/ci/risk-tiers.md) label Nov 3, 2026
@github-actions

github-actions Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review dca0b5f: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr33291 -f ref=docs/merge-main-old-git -f platform=macos -f backend_mode=local

Shipped in:

@blacksmith-sh

blacksmith-sh Bot commented Nov 3, 2026

Copy link
Copy Markdown

Found 1 test failure on Blacksmith runners:

Failure

Test View Logs
build_only must be a conjunctive exclusion on the helper, signing, and publication jobs
, and must not gate the unsigned app build/
build_only must be a conjunctive exclusion on the helper, signing, and publication jobs
, and must not gate the unsigned app build
View Logs

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

The review found that the first text lost work. Taking one side of
.xcstrings or project.pbxproj drops the other side's strings or entries.
The steps now say:
- check the trusted merge drivers (scripts/install-git-hooks.sh)
- pick main's last green commit with merge-main.sh --dry-run
- repair the cmux-generated-v1 paths, which keep your side with no conflict
- keep main's former web bundles out of a feat-cmux-next branch
- regenerate the config schema on main
- why the branch's .gitattributes must be trusted
- next-autoland carries a receipt only across its own update-branch merges
@cursor

cursor Bot commented Nov 3, 2026

Copy link
Copy Markdown

Bugbot needs on-demand usage enabled

Bugbot uses usage-based billing for this team and requires on-demand usage to be enabled.

A team admin can enable on-demand usage in the Cursor dashboard.

@lawrencecchen

Copy link
Copy Markdown
Contributor Author

Review (independent-subagent): SHIP at dca0b5f

  • I checked each statement in the new section against the code:
    • attr.tree is set to the base (merge_main_resolver.py:627).
    • merge-main.sh --dry-run returns before the git version check (merge_main.py:371-373).
    • The trusted drivers come from install-git-hooks.sh:313-325.
    • cmux-generated-v1 keeps your side with no conflict.
    • The web-bundle step agrees with step 3.
    • The config schema regeneration is on main only.
    • The receipt carry: risk_tier.py reads the exact head, and next-autoland carries only across its own web-flow merges.
  • The first-pass BLOCK (one-side .xcstrings and pbxproj, missing bundle step and last-green pick, wrong attr.tree reason) is fixed. The three nits are fixed.
  • Very small point, not blocking: the SDK regenerator is not named. "Let the PR autofix regenerate them" covers it.

@lawrencecchen lawrencecchen added the ready-to-land Reviewed at this head; next-autoland merges it into feat-cmux-next when its only reds are base reds label Nov 3, 2026
@lawrencecchen
lawrencecchen merged commit 0ab392f into feat-cmux-next Nov 3, 2026
142 of 144 checks passed
@lawrencecchen
lawrencecchen deleted the docs/merge-main-old-git branch November 3, 2026 08:24

This branch was previously deployed

1 inactive deployment
ci-routing-agent — dca0b5fa Deployed Nov 3, 2026 by lawrencecchen via cmux-tui tree preflight #104781
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-to-land Reviewed at this head; next-autoland merges it into feat-cmux-next when its only reds are base reds risk:low Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant