Repository navigation
common: Add the /signoff PR command to every repository - #8
Draft
cgwalters-bot wants to merge 1 commit into
Draft
cgwalters-bot wants to merge 1 commit into
cgwalters-bot wants to merge 1 commit into
Conversation
This was referenced Sep 24, 2026
Draft
DCO is required org-wide by the default ruleset, and PRs from contributors who forgot to sign off (or from the bot, which never does) sit blocked until someone rewrites them by hand. This lets a maintainer comment `/signoff` to add their own Signed-off-by to all of a PR's commits, leaving them otherwise unchanged, or `/rebase-signoff` to also rebase onto the target branch. The logic is the pr-signoff reusable workflow in bootc-dev/actions, so what each repository carries is a small stub, and putting it in common/ has sync-common install it everywhere (the bootc-bot App it uses already has the workflows permission that needs). This repository is skipped by the sync, so it gets a copy. The stub pins a commit of bootc-dev/actions rather than main, since it hands the App's private key to that workflow. Only comments starting with one of the commands get a runner; the rest create a skipped run. Closes: bootc-dev#260 Generated-by: AI
cgwalters-bot
force-pushed
the
bot/pr-signoff
branch
from
September 24, 2026 23:50
5118bd2 to
b9f8ff8
Compare
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.
Adds the
/signoffPR command to every repository. A maintainer comments/signoff, and theirSigned-off-byis added to all of the PR's commits, which otherwise stay byte for byte the same./rebase-signoffalso moves the commits onto the target branch. DCO is required by the org'sdefaultruleset.This is plain Actions with no LLM, following the review of bootc-dev#261. The logic is the
pr-signoffreusable workflow in bootc-dev/actions (cgwalters-forge/actions#2 has the design, the security notes and the search for existing tools that bootc-dev#260 asked for). This PR adds:common/.github/workflows/signoff.yml, the stub, which sync-common installs in every bootc-dev and composefs repository;.github/workflows/signoff.yml, a copy for this repository, since the sync skips it;docs/repository-structure.md.bootc gets the same file ahead of the sync in cgwalters-forge/bootc#16.
About the stub:
vars.GH_AW_APP_CLIENT_ID/secrets.GH_AW_APP_PRIVATE_KEY, as merge.yml does) with its workflows permission. Those credentials are installed org-wide on bootc-dev. For composefs, where sync-common also installs the stub, it is unconfirmed: the org variable and secret still need setting there, or the stub falls back toGITHUB_TOKEN(same-repository PRs only, and no CI on the new head).@<sha> # main), because it hands the App key to it. The pin is currently the actions PR's head, and must be bumped to the commit that lands in bootc-dev/actions before merging. Future bumps go incommon/, and sync-common carries them.if:only lets through human (User) comments on PRs that start with a command. Anything else is a skipped run with no runner, e.g. this run.Testing
actionlint is clean on both stubs. The runs below are real, on cgwalters-forge/infra, with the stub pinned to the actions PR head. The forge has no App, so they used the
GITHUB_TOKENfallback:/signoffwithout a SHA on 2 unsigned commits worked (run). One commit's message has trailing whitespace and the other is Latin-1 with anencodingheader. Afterwards the trees and author lines were identical, each message began with the original bytes followed by the trailer, the encoding header was kept, and the commenter was the committer./signoff <12-hex head>on the result replied "nothing to do" (run)./rebase-signoff <12-hex head>after the base moved put both commits on the new tip, each with one trailer (run).non_fast_forwardruleset (run);The App-token path is untested: minting the token, the workflows permission, and pushing to fork PRs. It must get one real run here, with the bootc-bot App, before anyone relies on it.
Supersedes bootc-dev#261
Closes bootc-dev#260
Generated-by: https://github.com/cgwalters/#llms
Review draft in cgwalters-forge, not upstream yet. This section is removed when the PR is opened upstream.
bootc-dev/infra, basemainPVTI_lADOE9oHIs4BlJLczg9kERgTo review:
/promoteon a line of its own, to open it upstream, ready for review. Either covers only the commits pushed so far.Signed-off-by: Colin Walters <walters@verbum.org>to the commits lacking it (the bot's and yours; anyone else's only if you ask), with you as committer./draftline (in the same comment or before) to open it upstream as a draft (/readyundoes that).