Skip to content

Commit 6a35501

Browse files
docs: add Signed commits section to CONTRIBUTING (#143)
Adds a **Signed commits** section to this repo's CONTRIBUTING, per owner ruling **D218**. The estate policy is [`docs/SIGNING-POLICY.adoc`](https://github.com/hyperpolymath/standards/blob/main/docs/SIGNING-POLICY.adoc) in hyperpolymath/standards. This repo's default branch is covered by the zero-bypass `Require-Signed-Commits` ruleset, and rebase-merge is off. The section tells contributors what that requires: - People and interactive agents sign with an SSH signing key. - Apps, bots and workflows write through the API, so GitHub signs their commits. - PRs are merged with squash. If the file already had its own signing section, that section is replaced in place instead of adding a second one. Lines elsewhere that told people to sign with GPG are changed to match the policy (SSH for people). This is a docs-only change. The commit was created through `createCommitOnBranch`, so GitHub signs it. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01WRvDivYwLSeVCJUrfjic3f Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
1 parent ccef0f7 commit 6a35501

1 file changed

Lines changed: 19 additions & 2 deletions

File tree

‎.github/CONTRIBUTING.md‎

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Prerequisites — the minimum versions and where to get them:
1919

2020
- `<tool` `2>` v\`\<version\>\` — `<install` `instruction>`.
2121

22-
- GPG signing key configured (estate policy — all commits must be
22+
- SSH signing key configured (estate policy — all commits must be
2323
signed). See
2424
[standards/docs/secure-coding-training.md](https://github.com/hyperpolymath/standards/blob/main/docs/secure-coding-training.md).
2525

@@ -55,7 +55,7 @@ just fmt # auto-format
5555
just lint # static checks
5656
```
5757

58-
- All commits must be **GPG-signed** (CI enforces; see
58+
- All commits must be **signed**, with SSH for people (CI enforces; see
5959
[standards](https://github.com/hyperpolymath/standards)).
6060

6161
- All source files must carry an **SPDX-License-Identifier** header (CI
@@ -107,3 +107,20 @@ When you make a non-obvious design decision, write it down:
107107

108108
- Estate-wide concerns (policy, conventions, CI): file at
109109
`hyperpolymath/standards/issues`.
110+
111+
## Signed commits
112+
113+
Every commit that reaches the default branch must be signed; a ruleset refuses
114+
unsigned pushes. Estate policy:
115+
[SIGNING-POLICY](https://github.com/hyperpolymath/standards/blob/main/docs/SIGNING-POLICY.adoc).
116+
117+
- **People and interactive agents** sign with an SSH key registered on GitHub
118+
as a *signing* key (`gpg.format=ssh`, `user.signingkey=<key>.pub`,
119+
`commit.gpgsign=true`). The committer email must be verified on that account.
120+
- **Apps, bots and workflows** never `git push` local commits. They write
121+
through the API (`createCommitOnBranch` or the estate `signed-push` action)
122+
so that GitHub signs each commit.
123+
- Merge PRs with **squash**. The ruleset checks every commit on the PR branch,
124+
not just the result, so one unsigned commit blocks the merge. Re-create such a
125+
branch with signed commits (`git cherry-pick -S`) and open a new PR.
126+
Rebase-merge replays commits unsigned and is disabled.

0 commit comments

Comments
 (0)