feat(backmerge): share the back-merge, and decide its mechanism by measurement - #56
Merged
Conversation
…asurement Three repositories had a back-merge and two mechanisms: theokit pushed straight to workspace, theokit-sdk and theokit-gateways opened a pull request. Three instances of one job under two file names, which is also why a grep for one of them reported two rather than three. The objection that had left this undecided -- that a direct push bypasses review -- is false. Measured 2026-09-05: workspace carries no branch protection in ANY of the ten consumers, so neither mechanism bypasses anything. What decided it was the opposite worry, also measured. A pull request only helps if somebody merges it. Every back-merge PR in both repositories was merged, all but one on the day it was opened (sdk #511 #516 #519 #528 #540 #548; gateways #108 #111 #114 #117 #120 #121). The failure mode did not happen, so the pull request keeps its advantage -- a reviewable record -- at no observed cost. One input, target-branch, defaulting to workspace: every current caller uses it, and a repository with a second permanent branch calls this again rather than growing a matrix here. actionlint and zizmor clean.
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.
Closes #53, which I filed saying the decision was not mine to make silently. It was — once the
premise behind it was checked.
The premise that blocked it, and why it fell
#53 said unifying these "requires deciding whether a back-merge may bypass review". That framing
assumed
workspaceis reviewed. Measured 2026-09-05:So a direct push bypasses nothing, because there is nothing there to bypass. The question I said
belonged to a human turned out to be a question about a fact, and the fact says the two mechanisms
are equivalent on the axis I was worried about.
What actually decided it
The opposite worry, and it is the one with data. A pull request only helps if somebody merges it,
and an unmerged one leaves the branch exactly as far behind as no mechanism at all.
theokit-sdktheokit-gatewaysThe failure mode did not happen. So the pull request keeps its advantage — a reviewable record of
what came back — at no observed cost, and that is the version shared here.
The push mechanism is not wrong, and this is not a verdict on it. With two working options,
the one that leaves a record is the one worth being everybody's default.
Shape
One input,
target-branch, defaulting toworkspace. Every current caller uses that; arepository with a second permanent branch calls the workflow again rather than growing a matrix
inside it.
The
theokit-sdkimplementation is the base — its steady-state message ("nothing to back-merge")and its already-open-PR check both survive, along with the note that
workspaceis a livecheckout so merging may need a clean tree.
Also in this branch
fix(setup)removingregistry-url(#55), already described there.Follow-up
Converting the three callers is a separate change per repository, after
v1serves this. The filename is unified at the same time —
release-backmerge.ymlandbackmerge.ymlbeing the same jobunder two names is how this counted as two instances instead of three for as long as it did.