Repository navigation
Open one auto-merging PR per package from every sync workflow - #908
Merged
Merged
Conversation
… back The branch tracker stalled omarchy-dev and omarchy-settings-dev twice in a week: - All ~50 auto_merge packages rode one PR, so omasnap-git's failing smoke suite kept the quattro pins unmerged from Oct 4 to Oct 8 (#788). Each package now gets its own PR on auto/track-branches-<package>; packages pinned from the same branch share one, since they move in lockstep. A run closes tracker PRs that master has moved past, and the old single PR. - A branch tip younger than min_release_age held the whole branch, so a run that landed shortly after a quattro commit pinned nothing. The watch now falls back along first-parent history to the newest commit that has cleared the window, measured from clone time so siblings agree. - The every-2-hours schedule fired every 6 to 9 hours in practice; run it hourly.
sync-upstream.yml, sync-rebuilds.yml and track-branches.yml each opened one batch PR, so one package with a failing build held back every other update in it (#788, #837). All three now group their changes with package-pr-groups.sh and hand them to package-prs.yml, which opens a PR per package and arms auto-merge. Packages pinned from the same upstream branch still share one. Green packages land on their own and only the failures stay open; a red PR conflicting with master, and each lane's old batch PR, get closed. sync-upstream.yml loses its human-merged lane: it now pushes with the PAT like the other two, so its builds start without an approval hold and its PRs auto-merge when green. min_release_age still quarantines fresh releases. Its approve job, approve-sync-push.cjs, and auto-merge-pr.cjs's exception for auto/sync-upstream go with it.
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.
All three bot lanes put many packages into one batch PR, so one failing build held back everything else (#788 for four days, #837 now). This PR gives every lane one auto-merging PR per package, so the open PRs are the failures. It also fixes why omarchy-dev and omarchy-settings-dev were slow to follow quattro.
One PR per package, for every lane
sync-upstream.yml,sync-rebuilds.ymlandtrack-branches.ymleach run their sync once..github/scripts/package-pr-groups.shsplits the changed recipes into groups and writes a patch.package-prs.ymlopens or updates one PR per group (auto/<lane>-<package>) and arms auto-merge.fail-fast: falsekeeps one bad package from affecting the rest.sync-upstreammoves them in lockstep.auto/sync-upstreamchore: sync upstream releases #837,auto/track-branches). Being unrefreshed alone isn't enough to close a PR, because one of dozens of feeds timing out is routine.sync-upstream PRs now auto-merge when green
Policy change: the human merge on
sync-upstream.ymlis gone. The workflow now pushes withPKGS_BOT_TOKENlike the other two lanes. Its builds start without an approval hold, and its PRs auto-merge on green.min_release_agestill holds fresh releases back. Removed along with it:approvejobapprove-sync-push.cjsand its testsbuild-approvedself-labelauto-merge-pr.cjs's exception forauto/sync-upstreamauto_merge: truenow only means "checked hourly by the tracker, instead of every 6 hours".Branch tracker fixes (the omarchy-dev stall)
min_release_age, so nothing was pinned. The watch now falls back along first-parent history to the newest commit that has cleared the window, never into a merged side branch. Age is measured from clone time, so siblings agree.35 */2 * * *actually fired every 6–9 hours. It now runs hourly.build-pr.ymlapplies its queue-instead-of-cancel rule toauto/track-branches-*branches as well.Verification
node --test tests/pr-workflow-approval.cjs: 45 pass. New tests cover grouping (the sibling pair shares a PR, everyone else gets their own, no changes means no PRs) and confirm every lane goes throughpackage-prs.ymlwith the PAT, with nocreate-pull-requestof its own, nobuild-approved, and no write permissions.python3 tests/upstream-watch.py: 37 pass, including fallback, merged-side-branch and nothing-old-enough cases.bin/sync-upstream self-testpasses, and all workflows parse.4.0.0.r6823.g988f44e, the same commit. With 30m they get the tip.gh --jqfilter, run against live PRs, picks out only legacy chore: sync upstream releases #837 forauto/sync-upstream.sync-upstream.ymlto split chore: sync upstream releases #837.