Skip to content

CLA: save signatures on CLA's signatures branch; exemption that can't be claimed by email (1.3.0) - #18

Merged
pjhartlieb merged 2 commits into
devfrom
feat/cla-signatures-branch
Nov 12, 2026
Merged

pjhartlieb merged 2 commits into
devfrom
feat/cla-signatures-branch

Conversation

@pjhartlieb

@pjhartlieb pjhartlieb commented Nov 12, 2026 •

Copy link
Copy Markdown
Contributor

CLA signatures have not saved since 10-27: the action pushes to CLA main, which now requires a reviewed pull request. This moves them to a new bot-only branch and tightens who is exempt.

  • branch: "signatures". The branch in CLA holds only signatures/version1/cla.json; rulesets block deletion and force-push for everyone and updates for everyone but bls-cla-bot. main's copy stays as a frozen archive.
  • The job (and the App token) runs only for pull request events, or for a comment on a pull request that is recheck or contains the sign phrase. Other comments no longer mint a token.
  • Who must sign the CLA (the sign-phrase comment; commit signatures play no part):
    • pull request opened by a member or named bot (dependabot, github-actions, renovate, bls-signaturebot, bls-release): every commit author who is not a member or named bot. Reviewers are never asked.
    • pull request opened by anyone else: the opener and every commit author, members and bots included. A commit's author is only an email, so on such a pull request no author can be trusted to be a member.
    • an outside opener with no commit in the pull request fails the check: the action records only commit authors.
    • a failed membership lookup means "not a member".
  • A pull request with more than 100 commits fails: the action reads only the first 100.
  • The ICLA link points at a fixed commit (ee1e15f).

Effect on maintainers: a member who adds a commit to an outside contributor's pull request (including GitHub's "Update branch") signs the CLA, once.

Callers move to this version by repinning (cla-reusable.yml@<sha of v1.3.0>); nothing changes until they do. Minor version: same inputs and secrets.

Tests: tests/test_cla_check.py runs the exemption step against a stub gh (14 cases, one per rule above plus a claimed bot email, a commit without a login, a failed lookup, over 100 commits and an outside opener without a commit). 60 pass; making members exempt on an outside contributor's pull request fails 3 cases, and dropping the opener check fails 1. actionlint 1.7.12 with shellcheck and zizmor 1.30.1 (online audits) report nothing.

… be claimed by email (1.3.0)

- branch: "signatures", the bot-only branch in CLA (main refuses the bot's push since 10-27)
- the job runs, and mints the App token, only for pull request events or a pull request comment
  that is "recheck" or contains the sign phrase
- members and named bots are exempt only when the pull request's opener is one of them; otherwise
  only a member's signed commits, committed by that member, are exempt
- a pull request with more than 100 commits fails: the action reads only the first 100
- the ICLA link points at a fixed commit
@pjhartlieb
pjhartlieb requested a review from a team as a code owner November 12, 2026 03:06
On such a pull request the opener and every commit author must sign, members and bots included; the
signed-commit exemption is gone, so commit signatures play no part. An outside opener with no commit in
the pull request fails the check, since the action records only commit authors.
@pjhartlieb
pjhartlieb merged commit d41dd9b into dev Nov 12, 2026
14 checks passed
@pjhartlieb pjhartlieb mentioned this pull request Nov 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant