@@ -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
5555just 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