ci: stop committing versions to master on merge (--no-bitmap-commit + bitmapAutoSync)#10434
Draft
davidfirst wants to merge 1 commit into
Draft
ci: stop committing versions to master on merge (--no-bitmap-commit + bitmapAutoSync)#10434davidfirst wants to merge 1 commit into
davidfirst wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Draft — the core change that lets
bit_mergestop pushing commits tomaster, which is the prerequisite for enabling the GitHub merge queue. Do not merge until the two prerequisites below are met.What it does
bit ci merge --no-bitmap-commit— after tag/export, nogit add/commit/pushto the default branch. New component versions live only in the scope.bitmapAutoSync: true(workspace.jsonc) — every command on the main lane reconciles the local.bitmapfrom the latest exported scope HEAD, so a "stale" committed.bitmapself-corrects at runtime. The scope becomes the single source of truth for versions, replacing the old post-merge bump commit.bit_merge'sgenerate-cli-reference*/generate-core-aspects-idssteps — they're now verified and committed in PRs bycheck_generated_reference(ci: verify generated CLI-reference files are committed in the PR #10428), and--no-bitmap-commitwould discard their output anyway.Why
Today every merge pushes a
.bitmapversion-bump commit tomaster. That commit is the thing the next PR must consume (or collide on), and it's a post-merge mutation the merge queue can't coordinate with. Removing it dissolves both the existing inter-PR version race and the merge-queue blocker. The existingserial-group: bit-merge-operationsremains the interlock that prevents two concurrent exports minting the same version.Prerequisites before this can merge
check_generated_reference(currently advisory) on real PR traffic — confirm it doesn't go red on PRs that don't touch the CLI (that would signal nightly bit-version drift; we'd pin the generation version before requiring it).check_generated_referenceto a required check at merge time. This PR removes the post-merge generation safety net, so the PR check becomes the sole guarantee the reference stays current — it must block.Known consequences (by design)
.bitmapandpnpm-lock.yamlare no longer auto-committed tomasterpost-merge; PRs carry their own changes andbitmapAutoSyncreconciles versions.mergePralready checks out withskipNpmInstall, so it wasn't meaningfully updating the lockfile anyway..bitmaponmasterwill intentionally lag the scope; this is reconciled per-workspace at runtime.Rollout note
Recommend merging this and letting
mastermerges run on it for a while (verify exports still land andbitmapAutoSynclogssynced N component(s)) before the CircleCIgh-readonly-queue.*allowlist + enabling the queue, so the version-decoupling is validated independently of the queue switch.