Skip to content

docs: add Signed commits section to CONTRIBUTING - #93

Merged
hyperpolymath merged 1 commit into
mainfrom
docs/signing-policy-d218
Oct 1, 2026
Merged

hyperpolymath merged 1 commit into
mainfrom
docs/signing-policy-d218

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Adds a Signed commits section to this repo's CONTRIBUTING, per owner ruling D218. The estate policy is 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.ai/code/session_01WRvDivYwLSeVCJUrfjic3f

Owner ruling D218. See docs/SIGNING-POLICY.adoc in hyperpolymath/standards.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WRvDivYwLSeVCJUrfjic3f
@coderabbitai

coderabbitai Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 5ed1f609-c131-4351-9e8d-6df1d2371825

📥 Commits

Reviewing files that changed from the base of the PR and between 42084d0 and 581f346.

📒 Files selected for processing (2)
  • CONTRIBUTING.adoc
  • docs/CONTRIBUTING.adoc

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

📜 Recent review details
⏰ Context from checks skipped due to timeout. (14)
  • GitHub Check: CodeFactor
  • GitHub Check: governance / Licence consistency
  • GitHub Check: governance / Trusted-base reduction policy
  • GitHub Check: governance / Check Workflow Staleness
  • GitHub Check: governance / Workflow security linter
  • GitHub Check: governance / Well-Known (RFC 9116 + RSR)
  • GitHub Check: governance / Code quality + docs
  • GitHub Check: governance / Language / package anti-pattern policy
  • GitHub Check: hypatia / Hypatia Neurosymbolic Analysis
  • GitHub Check: governance / Guix primary / Nix fallback policy
  • GitHub Check: scan / rust-secrets
  • GitHub Check: Build
  • GitHub Check: Analyze (javascript-typescript)
  • GitHub Check: semgrep-cloud-platform/scan
⚠️ CI failures not shown inline (13)

GitHub Actions: CI / 6_RSR Framework Compliance.txt: docs: add Signed commits section to CONTRIBUTING

Conclusion: failure

View job details

##[group]Run echo "Checking RSR Bronze Level compliance..."
 �[36;1mecho "Checking RSR Bronze Level compliance..."�[0m
 �[36;1m�[0m
 �[36;1mecho "✓ Checking core documentation..."�[0m
 �[36;1mtest -f README.md || (echo "❌ README.md missing" && exit 1)�[0m
 �[36;1mtest -f LICENSE || (echo "❌ LICENSE missing" && exit 1)�[0m
 �[36;1mtest -f CHANGELOG.md || (echo "❌ CHANGELOG.md missing" && exit 1)�[0m
 �[36;1mtest -f CODE_OF_CONDUCT.md || (echo "❌ CODE_OF_CONDUCT.md missing" && exit 1)�[0m
 �[36;1mtest -f MAINTAINERS.md || (echo "❌ MAINTAINERS.md missing" && exit 1)�[0m
 �[36;1m�[0m
 �[36;1mecho "✓ Checking documentation directory..."�[0m
 �[36;1mtest -f docs/CONTRIBUTING.md || (echo "❌ CONTRIBUTING.md missing" && exit 1)�[0m
 �[36;1mtest -f docs/SECURITY.md || (echo "❌ SECURITY.md missing" && exit 1)�[0m
 �[36;1mtest -f docs/USAGE.md || (echo "❌ USAGE.md missing" && exit 1)�[0m
 �[36;1mtest -f docs/API_REFERENCE.md || (echo "❌ API_REFERENCE.md missing" && exit 1)�[0m
 �[36;1mtest -f docs/QUICKSTART.md || (echo "❌ QUICKSTART.md missing" && exit 1)�[0m
 �[36;1m�[0m
 �[36;1mecho "✓ Checking .well-known directory..."�[0m
 �[36;1mtest -f .well-known/security.txt || (echo "❌ security.txt missing" && exit 1)�[0m
 �[36;1mtest -f .well-known/ai.txt || (echo "❌ ai.txt missing" && exit 1)�[0m
 �[36;1mtest -f .well-known/humans.txt || (echo "❌ humans.txt missing" && exit 1)�[0m
 �[36;1m�[0m
 �[36;1mecho "✓ Checking build system..."�[0m
 �[36;1mtest -f rebar.config || (echo "❌ rebar.config missing" && exit 1)�[0m
 �[36;1mtest -f Makefile || (echo "❌ Makefile missing" && exit 1)�[0m
 �[36;1m�[0m
 �[36;1mecho ""�[0m
 �[36;1mecho "🎉 RSR Bronze Level Compliance: VERIFIED"�[0m
 �[36;1mecho ""�[0m
 �[36;1mecho "RSR Compliance Checklist:"�[0m
 �[36;1mecho "✓ Documentation complete"�[0m
 �[36;1mecho "✓ .well-known/ directory present"�[0m
 �[36;1mecho "✓ Build system configured"�[0m
 �[36;1mecho "✓ Code of Conduct adopted"�[0m
 �[36;1mecho "✓ Security policy defined"�[0m
 �[36;1mecho "...

GitHub Actions: CI / RSR Framework Compliance: docs: add Signed commits section to CONTRIBUTING

Conclusion: failure

View job details

##[group]Run echo "Checking RSR Bronze Level compliance..."
 �[36;1mecho "Checking RSR Bronze Level compliance..."�[0m
 �[36;1m�[0m
 �[36;1mecho "✓ Checking core documentation..."�[0m
 �[36;1mtest -f README.md || (echo "❌ README.md missing" && exit 1)�[0m
 �[36;1mtest -f LICENSE || (echo "❌ LICENSE missing" && exit 1)�[0m
 �[36;1mtest -f CHANGELOG.md || (echo "❌ CHANGELOG.md missing" && exit 1)�[0m
 �[36;1mtest -f CODE_OF_CONDUCT.md || (echo "❌ CODE_OF_CONDUCT.md missing" && exit 1)�[0m
 �[36;1mtest -f MAINTAINERS.md || (echo "❌ MAINTAINERS.md missing" && exit 1)�[0m
 �[36;1m�[0m
 �[36;1mecho "✓ Checking documentation directory..."�[0m
 �[36;1mtest -f docs/CONTRIBUTING.md || (echo "❌ CONTRIBUTING.md missing" && exit 1)�[0m
 �[36;1mtest -f docs/SECURITY.md || (echo "❌ SECURITY.md missing" && exit 1)�[0m
 �[36;1mtest -f docs/USAGE.md || (echo "❌ USAGE.md missing" && exit 1)�[0m
 �[36;1mtest -f docs/API_REFERENCE.md || (echo "❌ API_REFERENCE.md missing" && exit 1)�[0m
 �[36;1mtest -f docs/QUICKSTART.md || (echo "❌ QUICKSTART.md missing" && exit 1)�[0m
 �[36;1m�[0m
 �[36;1mecho "✓ Checking .well-known directory..."�[0m
 �[36;1mtest -f .well-known/security.txt || (echo "❌ security.txt missing" && exit 1)�[0m
 �[36;1mtest -f .well-known/ai.txt || (echo "❌ ai.txt missing" && exit 1)�[0m
 �[36;1mtest -f .well-known/humans.txt || (echo "❌ humans.txt missing" && exit 1)�[0m
 �[36;1m�[0m
 �[36;1mecho "✓ Checking build system..."�[0m
 �[36;1mtest -f rebar.config || (echo "❌ rebar.config missing" && exit 1)�[0m
 �[36;1mtest -f Makefile || (echo "❌ Makefile missing" && exit 1)�[0m
 �[36;1m�[0m
 �[36;1mecho ""�[0m
 �[36;1mecho "🎉 RSR Bronze Level Compliance: VERIFIED"�[0m
 �[36;1mecho ""�[0m
 �[36;1mecho "RSR Compliance Checklist:"�[0m
 �[36;1mecho "✓ Documentation complete"�[0m
 �[36;1mecho "✓ .well-known/ directory present"�[0m
 �[36;1mecho "✓ Build system configured"�[0m
 �[36;1mecho "✓ Code of Conduct adopted"�[0m
 �[36;1mecho "✓ Security policy defined"�[0m
 �[36;1mecho "...

GitHub Actions: CI / 8_Build.txt: docs: add Signed commits section to CONTRIBUTING

Conclusion: failure

View job details

##[group]Run rebar3 compile
 �[36;1mrebar3 compile�[0m
 shell: /usr/bin/bash -e {0}
 env:
   OTP_VERSION: 26.2
   REBAR3_VERSION: 3.22.1
   INSTALL_DIR_FOR_OTP: /home/runner/work/_temp/.setup-beam/otp
   INSTALL_DIR_FOR_REBAR3: /home/runner/work/_temp/.setup-beam/rebar3
 ##[endgroup]
 ===> Verifying dependencies...
 ===> Analyzing applications...
 ===> Compiling lfe
 ===> Compiling lhttpc
 ##[warning]_build/default/lib/lhttpc/src/lhttpc_lib.erl:246:22: Warning: http_uri:decode/1 is deprecated and will be removed in OTP 27; use uri_string:unquote function instead
 ##[warning]_build/default/lib/lhttpc/src/lhttpc_lib.erl:249:22: Warning: http_uri:decode/1 is deprecated and will be removed in OTP 27; use uri_string:unquote function instead
 ##[warning]_build/default/lib/lhttpc/src/lhttpc_lib.erl:249:45: Warning: http_uri:decode/1 is deprecated and will be removed in OTP 27; use uri_string:unquote function instead
 ##[warning]_build/default/lib/lhttpc/src/lhttpc_client.erl:100:21: Warning: erlang:get_stacktrace/0 is removed; use the new try/catch syntax for retrieving the stack backtrace
 ##[warning]_build/default/lib/lhttpc/src/lhttpc_client.erl:228:58: Warning: erlang:get_stacktrace/0 is removed; use the new try/catch syntax for retrieving the stack backtrace
 ===> Compiling quickrand
 ===> Compiling uuid
 ===> Compiling src/sbf_patterns.lfe failed
 /home/runner/work/safe-brute-force/safe-brute-force/src/sbf_patterns.lfe:151: symbol y is unbound
 /home/runner/work/safe-brute-force/safe-brute-force/src/sbf_patterns.lfe:186: function pattern-fn/0 undefined
 ##[error]Process completed with exit code 1.

GitHub Actions: CI / Build: docs: add Signed commits section to CONTRIBUTING

Conclusion: failure

View job details

##[group]Run rebar3 compile
 �[36;1mrebar3 compile�[0m
 shell: /usr/bin/bash -e {0}
 env:
   OTP_VERSION: 26.2
   REBAR3_VERSION: 3.22.1
   INSTALL_DIR_FOR_OTP: /home/runner/work/_temp/.setup-beam/otp
   INSTALL_DIR_FOR_REBAR3: /home/runner/work/_temp/.setup-beam/rebar3
 ##[endgroup]
 ===> Verifying dependencies...
 ===> Analyzing applications...
 ===> Compiling lfe
 ===> Compiling lhttpc
 ##[warning]_build/default/lib/lhttpc/src/lhttpc_lib.erl:246:22: Warning: http_uri:decode/1 is deprecated and will be removed in OTP 27; use uri_string:unquote function instead
 ##[warning]_build/default/lib/lhttpc/src/lhttpc_lib.erl:249:22: Warning: http_uri:decode/1 is deprecated and will be removed in OTP 27; use uri_string:unquote function instead
 ##[warning]_build/default/lib/lhttpc/src/lhttpc_lib.erl:249:45: Warning: http_uri:decode/1 is deprecated and will be removed in OTP 27; use uri_string:unquote function instead
 ##[warning]_build/default/lib/lhttpc/src/lhttpc_client.erl:100:21: Warning: erlang:get_stacktrace/0 is removed; use the new try/catch syntax for retrieving the stack backtrace
 ##[warning]_build/default/lib/lhttpc/src/lhttpc_client.erl:228:58: Warning: erlang:get_stacktrace/0 is removed; use the new try/catch syntax for retrieving the stack backtrace
 ===> Compiling quickrand
 ===> Compiling uuid
 ===> Compiling src/sbf_patterns.lfe failed
 /home/runner/work/safe-brute-force/safe-brute-force/src/sbf_patterns.lfe:151: symbol y is unbound
 /home/runner/work/safe-brute-force/safe-brute-force/src/sbf_patterns.lfe:186: function pattern-fn/0 undefined
 ##[error]Process completed with exit code 1.

GitHub Actions: Governance / 4_governance _ Security policy checks.txt: docs: add Signed commits section to CONTRIBUTING

Conclusion: failure

View job details

##[group]Run set -uo pipefail
 �[36;1mset -uo pipefail�[0m
 �[36;1mPATTERN='^[[:space:]]*[*_]{0,2}Version[*_]{0,2}[[:space:]]*[:=][[:space:]]*v?[0-9]+\.[0-9]+\.[0-9]+'�[0m
 �[36;1mR5B=0�[0m
 �[36;1mshopt -s nullglob�[0m
 �[36;1mfor doc in *.md *.adoc; do�[0m
 �[36;1m  [ -f "$doc" ] || continue�[0m
 �[36;1m  case "$doc" in CHANGELOG.md|CHANGELOG.adoc) continue ;; esac�[0m
 �[36;1m  while IFS= read -r hit; do�[0m
 �[36;1m    [ -n "$hit" ] || continue�[0m
 �[36;1m    echo "❌ [R5b] pinned version string: $doc:$hit"�[0m
 �[36;1m    R5B=$((R5B+1))�[0m
 �[36;1m  done < <(grep -nE "$PATTERN" "$doc" 2>/dev/null || true)�[0m
 �[36;1mdone�[0m
 �[36;1mif [ "$R5B" -gt 0 ]; then�[0m
 �[36;1m  echo ""�[0m
 �[36;1m  echo "❌ [R5b] $R5B pinned version-string line(s) in load-bearing docs."�[0m
 �[36;1m  echo "Fix: drop the embedded version; defer to CHANGELOG.md (release"�[0m
 �[36;1m  echo "history) and Cargo.toml's [package].version (semver pin) or the"�[0m
 �[36;1m  echo "equivalent package manifest. Git log carries dates."�[0m
 �[36;1m  exit 1�[0m
 �[36;1mfi�[0m
 �[36;1mecho "✅ [R5b] Documentation version-string drift: clean."�[0m
 shell: /usr/bin/bash -e {0}
 ##[endgroup]
 ❌ [R5b] pinned version string: CODE_OF_CONDUCT.adoc:192:*Version*: 1.0.0 *Last Updated*: 2025-01-15 *Review Cycle*: Annual
 ❌ [R5b] 1 pinned version-string line(s) in load-bearing docs.
 Fix: drop the embedded version; defer to CHANGELOG.md (release
 history) and Cargo.toml's [package].version (semver pin) or the
 equivalent package manifest. Git log carries dates.
 ##[error]Process completed with exit code 1.

GitHub Actions: Governance / governance _ Security policy checks: docs: add Signed commits section to CONTRIBUTING

Conclusion: failure

View job details

##[group]Run set -uo pipefail
 �[36;1mset -uo pipefail�[0m
 �[36;1mPATTERN='^[[:space:]]*[*_]{0,2}Version[*_]{0,2}[[:space:]]*[:=][[:space:]]*v?[0-9]+\.[0-9]+\.[0-9]+'�[0m
 �[36;1mR5B=0�[0m
 �[36;1mshopt -s nullglob�[0m
 �[36;1mfor doc in *.md *.adoc; do�[0m
 �[36;1m  [ -f "$doc" ] || continue�[0m
 �[36;1m  case "$doc" in CHANGELOG.md|CHANGELOG.adoc) continue ;; esac�[0m
 �[36;1m  while IFS= read -r hit; do�[0m
 �[36;1m    [ -n "$hit" ] || continue�[0m
 �[36;1m    echo "❌ [R5b] pinned version string: $doc:$hit"�[0m
 �[36;1m    R5B=$((R5B+1))�[0m
 �[36;1m  done < <(grep -nE "$PATTERN" "$doc" 2>/dev/null || true)�[0m
 �[36;1mdone�[0m
 �[36;1mif [ "$R5B" -gt 0 ]; then�[0m
 �[36;1m  echo ""�[0m
 �[36;1m  echo "❌ [R5b] $R5B pinned version-string line(s) in load-bearing docs."�[0m
 �[36;1m  echo "Fix: drop the embedded version; defer to CHANGELOG.md (release"�[0m
 �[36;1m  echo "history) and Cargo.toml's [package].version (semver pin) or the"�[0m
 �[36;1m  echo "equivalent package manifest. Git log carries dates."�[0m
 �[36;1m  exit 1�[0m
 �[36;1mfi�[0m
 �[36;1mecho "✅ [R5b] Documentation version-string drift: clean."�[0m
 shell: /usr/bin/bash -e {0}
 ##[endgroup]
 ❌ [R5b] pinned version string: CODE_OF_CONDUCT.adoc:192:*Version*: 1.0.0 *Last Updated*: 2025-01-15 *Review Cycle*: Annual
 ❌ [R5b] 1 pinned version-string line(s) in load-bearing docs.
 Fix: drop the embedded version; defer to CHANGELOG.md (release
 history) and Cargo.toml's [package].version (semver pin) or the
 equivalent package manifest. Git log carries dates.
 ##[error]Process completed with exit code 1.

GitHub Actions: Governance / 5_governance _ Well-Known (RFC 9116 + RSR).txt: docs: add Signed commits section to CONTRIBUTING

Conclusion: failure

View job details

##[group]Run SECTXT=""
 �[36;1mSECTXT=""�[0m
 �[36;1m[ -f ".well-known/security.txt" ] && SECTXT=".well-known/security.txt"�[0m
 �[36;1m[ -f "security.txt" ] && SECTXT="security.txt"�[0m
 �[36;1mif [ -z "$SECTXT" ]; then�[0m
 �[36;1m  echo "::warning::No security.txt found."�[0m
 �[36;1m  exit 0�[0m
 �[36;1mfi�[0m
 �[36;1mgrep -q "^Contact:" "$SECTXT" || { echo "::error::Missing Contact field"; exit 1; }�[0m

GitHub Actions: Governance / governance _ Well-Known (RFC 9116 + RSR): docs: add Signed commits section to CONTRIBUTING

Conclusion: failure

View job details

##[group]Run SECTXT=""
 �[36;1mSECTXT=""�[0m
 �[36;1m[ -f ".well-known/security.txt" ] && SECTXT=".well-known/security.txt"�[0m
 �[36;1m[ -f "security.txt" ] && SECTXT="security.txt"�[0m
 �[36;1mif [ -z "$SECTXT" ]; then�[0m
 �[36;1m  echo "::warning::No security.txt found."�[0m
 �[36;1m  exit 0�[0m
 �[36;1mfi�[0m
 �[36;1mgrep -q "^Contact:" "$SECTXT" || { echo "::error::Missing Contact field"; exit 1; }�[0m

GitHub Actions: Governance / governance _ Well-Known (RFC 9116 + RSR): docs: add Signed commits section to CONTRIBUTING

Conclusion: failure

View job details

##[group]Run MIXED=$(grep -rE 'src="http://|href="http://' --include="*.html" --include="*.htm" . 2>/dev/null | grep -vE 'localhost|127\.0\.0\.1|example\.com|lol/|node_modules/|third-party/|vendor/' | head -5 || true)
 �[36;1mMIXED=$(grep -rE 'src="http://|href="http://' --include="*.html" --include="*.htm" . 2>/dev/null | grep -vE 'localhost|127\.0\.0\.1|example\.com|lol/|node_modules/|third-party/|vendor/' | head -5 || true)�[0m
 �[36;1mif [ -n "$MIXED" ]; then�[0m
 �[36;1m  echo "::error::Mixed content (HTTP in HTML)"�[0m

GitHub Actions: Governance / 6_governance _ Code quality + docs.txt: docs: add Signed commits section to CONTRIBUTING

Conclusion: failure

View job details

##[group]Run editorconfig-checker/action-editorconfig-checker@840e866d93b8e032123c23bac69dece044d4d84c
 with:
   github-***REDACTED_SECRET_ASSIGNMENT***
   version: latest
 ##[endgroup]
 Find 'latest' release
 ##[error]Error: The binary 'ec-linux-amd64*' not found

GitHub Actions: Governance / governance _ Code quality + docs: docs: add Signed commits section to CONTRIBUTING

Conclusion: failure

View job details

##[group]Run editorconfig-checker/action-editorconfig-checker@840e866d93b8e032123c23bac69dece044d4d84c
 with:
   github-***REDACTED_SECRET_ASSIGNMENT***
   version: latest
 ##[endgroup]
 Find 'latest' release
 ##[error]Error: The binary 'ec-linux-amd64*' not found

GitHub Actions: Governance / 8_governance _ Workflow security linter.txt: docs: add Signed commits section to CONTRIBUTING

Conclusion: failure

View job details

##[group]Run unpinned=$(grep -rnE "^[[:space:]]+uses:" .github/workflows/ | \
 �[36;1munpinned=$(grep -rnE "^[[:space:]]+uses:" .github/workflows/ | \�[0m
 �[36;1m  grep -v "@[a-f0-9]\{40\}" | \�[0m
 �[36;1m  grep -v "uses: \./\|uses: docker://\|uses: actions/github-script\|uses: hyperpolymath/standards/" || true)�[0m
 �[36;1mif [ -n "$unpinned" ]; then�[0m
 �[36;1m  echo "ERROR: Found unpinned actions:"�[0m
 �[36;1m  echo "$unpinned"�[0m
 �[36;1m  exit 1�[0m
 �[36;1mfi�[0m
 �[36;1mecho "All actions are SHA-pinned"�[0m
 shell: /usr/bin/bash -e {0}
 ##[endgroup]
 ERROR: Found unpinned actions:
 .github/workflows/pages.yml:27:        uses: actions/checkout@v7.0.1
 .github/workflows/pages.yml:30:        uses: actions/configure-pages@v6.0.0
 .github/workflows/pages.yml:48:        uses: actions/upload-pages-artifact@v5.0.0
 .github/workflows/pages.yml:62:        uses: actions/deploy-pages@v5.0.1
 ##[error]Process completed with exit code 1.

GitHub Actions: Governance / governance _ Workflow security linter: docs: add Signed commits section to CONTRIBUTING

Conclusion: failure

View job details

##[group]Run unpinned=$(grep -rnE "^[[:space:]]+uses:" .github/workflows/ | \
 �[36;1munpinned=$(grep -rnE "^[[:space:]]+uses:" .github/workflows/ | \�[0m
 �[36;1m  grep -v "@[a-f0-9]\{40\}" | \�[0m
 �[36;1m  grep -v "uses: \./\|uses: docker://\|uses: actions/github-script\|uses: hyperpolymath/standards/" || true)�[0m
 �[36;1mif [ -n "$unpinned" ]; then�[0m
 �[36;1m  echo "ERROR: Found unpinned actions:"�[0m
 �[36;1m  echo "$unpinned"�[0m
 �[36;1m  exit 1�[0m
 �[36;1mfi�[0m
 �[36;1mecho "All actions are SHA-pinned"�[0m
 shell: /usr/bin/bash -e {0}
 ##[endgroup]
 ERROR: Found unpinned actions:
 .github/workflows/pages.yml:27:        uses: actions/checkout@v7.0.1
 .github/workflows/pages.yml:30:        uses: actions/configure-pages@v6.0.0
 .github/workflows/pages.yml:48:        uses: actions/upload-pages-artifact@v5.0.0
 .github/workflows/pages.yml:62:        uses: actions/deploy-pages@v5.0.1
 ##[error]Process completed with exit code 1.
🔇 Additional comments (2)
CONTRIBUTING.adoc (1)

111-126: LGTM!

docs/CONTRIBUTING.adoc (1)

509-524: LGTM!


📝 Summary

Summary by CodeRabbit

  • Documentation
    • Updated contribution guidance to require signed commits on the default branch, using a GitHub-registered SSH signing key and verified committer email.
    • Clarified that apps, bots and workflows must create commits through the API or approved signed-push action.
    • Documented that pull requests must be squash-merged, unsigned commits prevent merging, and rebase merges are unavailable.
    • Added guidance for recreating unsigned commits in a new pull request.

Walkthrough

The contribution guides now describe signed-commit requirements for the default branch and pull requests. They specify signing methods for people, interactive agents, apps, bots and workflows, and require squash merges.

Changes

Contribution signing guidance

Layer / File(s) Summary
Signed-commit requirements
CONTRIBUTING.adoc, docs/CONTRIBUTING.adoc
Both guides specify SSH signing with a GitHub-registered key and verified committer email for people and interactive agents. They direct apps, bots and workflows to use API-based commits. They also describe squash-only merges and unsigned PR-branch commits blocking merges.

Priority: ⬇️ Low

Estimated code review effort: 1 (Trivial) | ~3 minutes

Change: Other

Merge Risk: ⚪ Minimal · up to 581f3

The guides consistently describe signed commits and squash merging, and the signature requirement is confirmed. No concrete merge-blocking issue is established; the rebase-merge setting could not be independently verified.

Security Architecture Review

Security architecture risk: ⚪ Minimal · up to 581f3

The change documents separate signing paths for people and automation without granting additional permissions or weakening controls. No material security risk was found in the added guidance. Actual enforcement settings remain separate from this documentation change.

Retained concerns
No architecture-level concerns identified.

Security review details

Security Blast Radius

  • inferred — The direct security-relevant scope is contributor guidance for admitting changes to this repository's default branch. The supplied changed surface does not expand runtime, tenant, credential, or deployment authority.

Trust Boundaries and Controls

  • inferred — The guidance preserves separate human and automation signing paths and instructs contributors to satisfy signature checks rather than bypass them. Its enforcement assertions are documentation, not independently sufficient evidence of effective hosting-provider controls.

Resilience and Maintainability Implications

  • observed — For an unsigned PR branch, both guides prescribe recreating signed commits and opening a new PR. This is manual recovery guidance, not a new automated state transition or rollback mechanism.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the documentation change and names the added Signed commits section in CONTRIBUTING.
Description check ✅ Passed The description directly explains the signed-commit guidance, affected contributor types, merge requirements, policy reference, and documentation-only scope.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

A rabbit signs each commit with care,
A verified email travels there.
Bots use the API to write,
Squash merges keep the branch in sight.
No unsigned commits hop through the gate.

Comment @coderabbitai help to get the list of available commands.

@hyperpolymath
hyperpolymath merged commit fbeb8f1 into main Oct 1, 2026
28 of 32 checks passed
@hyperpolymath
hyperpolymath deleted the docs/signing-policy-d218 branch October 1, 2026 19:46
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