backmerge: report how long the PR has been open, and state the limit of the evidence - #57
Merged
Conversation
…nism The docblock cited 12 back-merge PRs, 12 merged, 10 the same day, and concluded the failure mode does not happen. Both repositories ALREADY opened pull requests -- the sample is the repositories that had adopted the mechanism, which is survivorship. It shows the pull request works where it was chosen; it does not show that theokit backmerges will be merged, because under the push nobody there ever had to merge one. Raised by the session that maintains theokit, reviewing the change to its own repository. The claim travels to three repos in a file people read to understand why the mechanism is what it is, so the limit belongs in that file rather than in a review comment nobody finds later. The first back-merge pull request in a repository that is switching is the measurement still missing. The cost of being wrong is at least observable -- an open PR with the branch visibly behind main, rather than a silent drift. actionlint clean.
The workflow opened the pull request and stopped. One sitting for ten hours printed the same line as one opened four minutes ago, so nothing distinguished "the mechanism ran" from "the mechanism ran and nobody acted on it". usetheokit/theokit-sdk#548 sat that long, and the drift was found by someone running changeset status by hand before a release cut. Four hours is from the distribution, not a round number. Hours between opening and merging, every back-merge PR in the two repositories that had this workflow: theokit-sdk 10, 1, 1, 0, 0, 0, 0, 12, 0, 0, 0, 0 theokit-gateways 0, 11, 0, 0, 0, 0, 0, 0 Seventeen of twenty merged inside an hour; the three that did not took 10, 11 and 12. The gap between normal and stuck is an order of magnitude, so any threshold inside it separates them. Four is four times the slowest ordinary case and below every outlier. The first draft said twelve, reasoning from "ten of twelve merged the same day". That would have missed the ten-hour incident that prompted the check -- the summary was true and lost the shape the threshold needed. A warning rather than a failure: this job runs on push to main, and failing it would paint main red for something main did not do. createdAt comes back in the call already asking for the number, so no extra API request. 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.
Two changes to
backmerge.yml, both from review of #56 by the session that maintainstheokit— the repository whose mechanism #56 actually changed.1.
feat: the pull request's age is now reported (bb795dae)Closes the remaining scope of
usetheokit/theokit-sdk#566.That issue was filed saying nothing carries the Version PR's changes back to
develop, then corrected on the issue:backmerge.ymldoes exactly that, and it opened#548automatically. What remained is narrower — the workflow opens the pull request and stops. One sitting for ten hours printed the same line as one opened four minutes ago:Nothing distinguished "the mechanism ran" from "the mechanism ran and nobody acted on it".
#548sat ten hours, and the drift was found by someone runningchangeset statusby hand before a cut.Four hours is from the distribution
Hours between opening and merging, every back-merge pull request in the two repositories that had this workflow, measured 2026-09-05:
Seventeen of twenty merged inside an hour; the three that did not took 10, 11 and 12. There is no middle — the gap between normal and stuck is an order of magnitude, so any threshold inside it separates them. Four is four times the slowest ordinary case and below every outlier.
The first draft said twelve hours, reasoning from "ten of twelve merged the same day". That would have missed
#548at ten hours — the very incident that prompted the check. The summary was true and lost the shape the threshold needed.A warning, not a failure: this job runs on a push to
main, and failing it would paintmainred for somethingmaindid not do. Cost is zero —createdAtcomes back in the call already asking for the number.2.
docs: the limit of the evidence that chose the mechanism (737aa6ed)#56 argued the pull-request mechanism on 12 PRs, 12 merged, and concluded "the failure mode did not happen". Both repositories in that sample already opened pull requests — the population is the repositories that had adopted the mechanism, which is survivorship. It shows the pull request works where it was chosen; it does not show that
theokit's back-merges will be merged, because under the push nobody there ever had to merge one.The limit now sits beside the evidence in the docblock, with the condition that revisits it: a back-merge pull request that sits. Raised by the
theokitsession on reviewing the change to its own repository.The two changes are related. The caveat says the missing measurement is whether a switching repository's back-merge PRs get merged; the feature is what will report it when one does not.
actionlintandzizmorclean. Date arithmetic exercised against real data (#548,2026-09-04T12:48:27Z→ 24h).