CI: test broad fix batches once and safely retire source PRs - #955
Closed
brandonpayton wants to merge 1 commit into
Closed
CI: test broad fix batches once and safely retire source PRs#955brandonpayton wants to merge 1 commit into
brandonpayton wants to merge 1 commit into
Conversation
This was referenced Jul 15, 2026
brandonpayton
force-pushed
the
ci/batch-absorption-manifest
branch
from
July 15, 2026 21:55
99465f5 to
a8b1da0
Compare
Add append-only batch receipts that map source PR commits to a rebase-merged integration batch and declare the union of ABI and validation treatment. Verify candidates from trusted default-branch authority, then offer a dry-run-first maintainer finalizer that revalidates the landed trees before closing source PRs and conditionally deleting exact branches. This control-plane bootstrap must land standalone because a manifest-bearing batch cannot validate changes to its own authority.
brandonpayton
force-pushed
the
ci/batch-absorption-manifest
branch
from
July 15, 2026 22:14
a8b1da0 to
c924bca
Compare
Member
Author
|
Closing because this builds a permanent batching framework, while Kandelo only needs batch PRs as a temporary merge technique. The individual commits remain the bisectable implementation history, and the batch PR plus its GitHub checks remain the validation record. We will preserve reviewed commits in ordinary integration PRs, run the combined validation once, rebase-merge, then manually close absorbed PRs and delete their branches. |
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.
Why
Kandelo has many independently reviewed fixes that need the same expensive integration tests before they can merge. Testing and merging each source pull request separately wastes build capacity, especially when an Application Binary Interface (ABI) change requires rebuilding the package universe. A broad batch is faster, but only if Kandelo can prove exactly which reviewed commits the batch contains.
Without that proof, a maintainer must manually decide which source pull requests were absorbed and which branches are safe to delete. A mistake could close work that did not land or delete a branch that moved after review. This PR adds machine-checked receipts and conservative cleanup so a tested batch can be the merge unit without losing each source change's review history or commit identity.
What changed
batch-<PR>.jsonreceipt that maps every reviewed source commit to one commit in the batch.mainbase, and branch-protection state.mainthrough a read-onlypull_request_targetworkflow. The workflow checks out the exact candidate commit without storing credentials and rejects candidates from forks.mainand produced the expected final tree. Rebase merge preserves the individual commits instead of replacing them with one squash commit.pipefailfailure wheregrep -qexited early and the still-running verifier wrote its remaining plan line into a closed pipe.Bootstrap boundary
This PR defines the trusted verifier that future batches will use. It must therefore merge on its own: asking the new verifier to certify the PR that creates that verifier would be circular. After this PR is on
main, broad batches can carry the new receipt.For this bootstrap change, the existing Prepare merge controls, the full package-publication workflow tests, and an independent exact-head review provide the evidence. Human reviewers still decide whether each source PR changes the ABI and which test suites its behavior requires. The automation checks that the receipt records the exact sorted union without omissions or duplicates. Validation IDs document the required treatment; they do not start specialty jobs by themselves.
Validation
./scripts/dev-shell.sh bash .github/scripts/test-finalize-integration-batch.sh./scripts/dev-shell.sh bash tests/scripts/package-publish-flow.shgit diff --checkc924bca06339192fcd63628e31c9ca3fecc953c5, tree24435c43b9afb5cfbdca55f8a9f6af9366f0ffc4, with no findings.29453644339reproduced the old Linux broken-pipe failure; the production verifier is byte-identical before and after the test-harness correction.This changes release-control automation only. It does not change the kernel, runtime behavior, package artifacts, browser/Node.js behavior, or the ABI.