Skip to content

feat(security): docs and hooks to support cryptographic signing of commits#155

Open
ryanheffernan wants to merge 15 commits into
mainfrom
agent/configure-gpg-signing
Open

feat(security): docs and hooks to support cryptographic signing of commits#155
ryanheffernan wants to merge 15 commits into
mainfrom
agent/configure-gpg-signing

Conversation

@ryanheffernan

@ryanheffernan ryanheffernan commented Jul 20, 2026

Copy link
Copy Markdown
Collaborator

Description

Document and validate cryptographic commit signing for trustees who rely on
copy-pr-bot automatic sync, without prompting external contributors who receive
no auto-sync benefit.

Copy-pr-bot uses GitHub's commit.verification.verified status when deciding
whether a trusted pull request can auto-sync. Verified commits from trustees will automatically sync to the protected pull-request/* branch and trigger CI runs without needing to prompt with ok to test. Note that all commits in a PR must be verified for this to work.

Commits from non-trustees or any commits that aren't verified will still require a trustee to approve the sync via /ok to test.

Validation

  • Standard CI passes.
  • Kind integration passes, or this PR explains why it was not run.

No need to run kind, docs and git hooks update only.

Local validation

  • Confirm that when no key is configured no warnings are printed
➜  tmp.gmUNgnEC6R git:(main) git config --local --bool --get commit.gpgsign
➜  tmp.gmUNgnEC6R git:(main) /private/tmp/nvcm-gpg-signing/scripts/hooks/pre-commit
Checking SPDX license headers...
  • Confirm that when key is configured the hook signs commits
➜  tmp.gmUNgnEC6R git:(main) git config --local --bool --get commit.gpgsign
true
➜  tmp.gmUNgnEC6R git:(main) /private/tmp/nvcm-gpg-signing/scripts/hooks/pre-commit
✓ OpenPGP commit signing configured
Checking SPDX license headers...
➜  tmp.gmUNgnEC6R git:(main) git commit --allow-empty -s -m "Test automatic signing"
[main (root-commit) 40353c8] Test automatic signing
➜  tmp.gmUNgnEC6R git:(main) git verify-commit HEAD
gpg: Signature made Tue Jul 21 08:35:17 2026 PDT
gpg:                using EDDSA key <FINGERPRINT>
gpg: Good signature from "Ryan Heffernan (GitHub commit signing) <rheffernan@nvidia.com>" [ultimate]
  • Confirm hook failure when signing configured but incomplete
➜  tmp.gmUNgnEC6R git:(main) /private/tmp/nvcm-gpg-signing/scripts/hooks/pre-commit
WARNING: Configured GPG secret key 'missing-test-key' was not found.

Import the secret key or update the repository-local user.signingkey setting.

Checking SPDX license headers...
➜  tmp.gmUNgnEC6R git:(main) git commit --allow-empty -m 'test'
error: gpg failed to sign the data:
gpg: skipped "missing-test-key": No secret key
[GNUPG:] INV_SGNR 9 missing-test-key
[GNUPG:] FAILURE sign 17
gpg: signing failed: No secret key

fatal: failed to write commit object

The kind integration test is manual due to taking ~30 min to complete. Ready pull requests from
configured trustees auto-sync when every commit is GitHub Verified. Other pull requests,
including draft pull requests, require an authorized maintainer to approve the exact current
commit. Approval must be repeated after the pull request is updated.

For a pull request that requires approval, an authorized maintainer first comments:

/ok to test <sha>

After copy-pr-bot has synced the current commit, start the suite with:

/kind test

As a fallback, run Actions -> Kind Integration -> Run workflow against the copy-pr-bot generated
pull-request/<PR_NUMBER> branch. Use the default test_path for the full suite, or narrow it
only while debugging.

The completed workflow updates this PR description with its conclusion and exact run URL.

Passing Kind Integration run, if not automatically reported:

Checklist

  • I am familiar with the contributing guidelines in CONTRIBUTING.md.
  • Commits are signed off for DCO compliance.
  • New or existing tests cover these changes, or the PR explains why tests are not needed.
  • Documentation is updated for user-facing behavior changes.
  • Generated artifacts are updated when applicable, such as OpenAPI specs,
    docs screenshots, or Helm/rendered outputs.

Summary by CodeRabbit

Summary by CodeRabbit

  • Documentation

    • Added/expanded guidance on cryptographically signing commits, including verification and re-signing instructions.
    • Updated contribution sign-off wording and improved code examples formatting.
    • Clarified local hook signing checks are advisory and that authoritative verification happens in protected CI/GitHub processes.
  • New Features

    • Commit hooks now report cryptographic signing readiness for OpenPGP, SSH, or X.509/S/MIME (when opted in).
    • commit-msg continues enforcing DCO Signed-off-by trailers.
  • Workflow

    • Updated PR validation steps for verified auto-sync vs maintainer /ok to test <sha> approval before running Kind tests.

Signed-off-by: Ryan Heffernan <rheffernan@nvidia.com>
@copy-pr-bot

copy-pr-bot Bot commented Jul 20, 2026

Copy link
Copy Markdown

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

Signed-off-by: Ryan Heffernan <rheffernan@nvidia.com>
@coderabbitai

coderabbitai Bot commented Jul 20, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The PR adds repository-local commit-signing readiness checks to hook installation and pre-commit execution, documents signing and approval workflows, and updates pull request instructions for verified commits and maintainer-approved testing.

Changes

Commit-signing workflow

Layer / File(s) Summary
Signing policy and contributor guidance
.github/PULL_REQUEST_TEMPLATE.md, CONTRIBUTING.md, README.md
Documentation describes verified commit requirements, local signing checks, DCO sign-offs, trustee auto-sync, and /ok to test <sha> approval flows.
Hook signing readiness checks
scripts/hooks/pre-commit
The pre-commit hook checks repository-local signing configuration, supported tools, and OpenPGP secret keys before existing Ruff and SPDX checks; failures remain advisory.
Hook installer signing status
scripts/install-hooks.sh
Hook installation reports whether supported repository-local signing settings are configured or incomplete.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Suggested reviewers: zsblevins, polarweasel, jojung1

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
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.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: adding docs and hooks to support cryptographic commit signing.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch agent/configure-gpg-signing

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

Signed-off-by: Ryan Heffernan <rheffernan@nvidia.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Nitpick comments (3)
scripts/configure-gpg-signing.sh (1)

55-65: 📐 Maintainability & Code Quality | 🔵 Trivial

Duplicated GPG program discovery.

This GPG_PROGRAM/gpg/gpg2 discovery block is re-implemented almost verbatim in scripts/hooks/pre-commit (lines 56-70). Extracting a shared helper would prevent the two copies from drifting (see consolidated comment).

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/configure-gpg-signing.sh` around lines 55 - 65, Extract the
duplicated GPG executable discovery logic from the configure script and
scripts/hooks/pre-commit into a shared helper, then update both callers to reuse
it. Preserve the existing GPG_PROGRAM validation, gpg/gpg2 fallback order, and
failure messages or equivalent behavior through the shared helper.
scripts/tests/configure-gpg-signing.sh (1)

120-127: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Sign-failure path is untested.

The stub already supports simulating a signing failure via GPG_STUB_CAN_SIGN=0 (lines 67-69), but no test case sets it, so configure-gpg-signing.sh's "GnuPG could not sign" branch (its lines 100-104) has no coverage alongside the missing-key case already tested here.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/tests/configure-gpg-signing.sh` around lines 120 - 127, Add a test
case in the configure-gpg-signing test flow that sets GPG_STUB_CAN_SIGN=0 while
providing an available key, invokes configure-gpg-signing.sh, and asserts it
fails with the expected signing-error path. Keep the existing missing-key case
unchanged and use the established test helpers and environment setup.
scripts/hooks/pre-commit (1)

27-90: 📐 Maintainability & Code Quality | 🔵 Trivial

Duplicates GPG program/key-validation logic from configure-gpg-signing.sh.

The gpg/gpg2 discovery (lines 56-70) and secret-key existence check (lines 72-84) closely mirror scripts/configure-gpg-signing.sh (lines 55-65, 78-84). A shared helper sourced by both scripts would avoid duplicated maintenance and the kind of drift already visible in scripts/install-hooks.sh's weaker status check (see consolidated comment below).

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/hooks/pre-commit` around lines 27 - 90, Extract the shared GPG
program discovery and secret-key validation used by check_gpg_signing and
configure-gpg-signing.sh into a reusable helper sourced by both scripts. Update
check_gpg_signing to call that helper instead of maintaining its own gpg/gpg2
lookup and list-secret-keys checks, while preserving the existing failure
behavior and messages.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@CONTRIBUTING.md`:
- Line 120: Update the pull request checklist associated with “Submit a pull
request” to remove the stale “all commits signed off” wording, replacing it with
the repository’s current cryptographic signing requirement or removing the
checklist item entirely so it no longer references DCO sign-off.
- Around line 88-93: Complete the DCO-to-GPG migration consistently: in
CONTRIBUTING.md lines 88-93, align the documented installed hooks with the
installer by removing commit-msg enforcement or explicitly documenting its
continued use; in CONTRIBUTING.md line 120, remove or rewrite the stale “all
commits signed off” checklist requirement; and in README.md lines 67-85, make
the documented hook set match the installer and finalized contribution policy.

In `@scripts/configure-gpg-signing.sh`:
- Around line 119-136: Update the public-key export command in the heredoc to
use the resolved GPG_PROGRAM_PATH variable instead of hardcoded gpg, preserving
the existing fingerprint argument and user guidance.

In `@scripts/install-hooks.sh`:
- Around line 49-61: The GPG signing status check in the install-hooks script
omits the format requirement enforced by check_gpg_signing. Read the
repository’s gpg.format configuration and report signing as configured only when
it is unset or set to openpgp, in addition to commit.gpgsign being true and
user.signingkey being present.

---

Nitpick comments:
In `@scripts/configure-gpg-signing.sh`:
- Around line 55-65: Extract the duplicated GPG executable discovery logic from
the configure script and scripts/hooks/pre-commit into a shared helper, then
update both callers to reuse it. Preserve the existing GPG_PROGRAM validation,
gpg/gpg2 fallback order, and failure messages or equivalent behavior through the
shared helper.

In `@scripts/hooks/pre-commit`:
- Around line 27-90: Extract the shared GPG program discovery and secret-key
validation used by check_gpg_signing and configure-gpg-signing.sh into a
reusable helper sourced by both scripts. Update check_gpg_signing to call that
helper instead of maintaining its own gpg/gpg2 lookup and list-secret-keys
checks, while preserving the existing failure behavior and messages.

In `@scripts/tests/configure-gpg-signing.sh`:
- Around line 120-127: Add a test case in the configure-gpg-signing test flow
that sets GPG_STUB_CAN_SIGN=0 while providing an available key, invokes
configure-gpg-signing.sh, and asserts it fails with the expected signing-error
path. Keep the existing missing-key case unchanged and use the established test
helpers and environment setup.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 274a0fbb-93f8-4593-b14c-1a7608ba3aa3

📥 Commits

Reviewing files that changed from the base of the PR and between eec34fd and 35c2008.

📒 Files selected for processing (8)
  • CONTRIBUTING.md
  • GOVERNANCE.md
  • Makefile
  • README.md
  • scripts/configure-gpg-signing.sh
  • scripts/hooks/pre-commit
  • scripts/install-hooks.sh
  • scripts/tests/configure-gpg-signing.sh

Comment thread CONTRIBUTING.md Outdated
Comment thread CONTRIBUTING.md Outdated
Comment thread scripts/configure-gpg-signing.sh Outdated
Comment thread scripts/install-hooks.sh Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
scripts/hooks/pre-commit (1)

34-43: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Use local Git config for signing checks git config --get can read global/system settings, so these checks can pass even when this repository has no local signing config. Switch them to --local to match scripts/configure-gpg-signing.sh (including the gpg.program lookup in scripts/hooks/pre-commit).

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/hooks/pre-commit` around lines 34 - 43, Update the signing checks in
the pre-commit hook to read repository-local Git configuration by adding --local
to the commit.gpgsign, user.signingkey, and gpg.format lookups, and apply the
same local-scope lookup to the gpg.program check in the hook. Keep the existing
OpenPGP defaulting and validation behavior unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/PULL_REQUEST_TEMPLATE.md:
- Line 43: Restore the DCO checklist requirement in
.github/PULL_REQUEST_TEMPLATE.md alongside the GitHub Verified-signature item,
keeping the existing Signed-off-by enforcement in scripts/hooks/commit-msg and
related CI policy consistent.

---

Outside diff comments:
In `@scripts/hooks/pre-commit`:
- Around line 34-43: Update the signing checks in the pre-commit hook to read
repository-local Git configuration by adding --local to the commit.gpgsign,
user.signingkey, and gpg.format lookups, and apply the same local-scope lookup
to the gpg.program check in the hook. Keep the existing OpenPGP defaulting and
validation behavior unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 3896673f-3391-424f-99d6-95e68182c367

📥 Commits

Reviewing files that changed from the base of the PR and between 35c2008 and 3819a34.

📒 Files selected for processing (5)
  • .github/PULL_REQUEST_TEMPLATE.md
  • CONTRIBUTING.md
  • README.md
  • scripts/hooks/pre-commit
  • scripts/install-hooks.sh
🚧 Files skipped from review as they are similar to previous changes (3)
  • scripts/install-hooks.sh
  • README.md
  • CONTRIBUTING.md

Comment thread .github/PULL_REQUEST_TEMPLATE.md Outdated
ryanheffernan and others added 2 commits July 20, 2026 16:24

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
scripts/tests/configure-gpg-signing.sh (1)

40-213: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Extract the repeated stub-environment prefix.

PATH="$test_root/bin:$PATH" HOME="$test_root/home" is repeated ~8 times across this function. A small helper reduces duplication and the risk of one call site drifting (e.g. missing a stub var).

♻️ Suggested helper
+with_stub_env() {
+    PATH="$test_root/bin:$PATH" HOME="$test_root/home" "$@"
+}
+
 output="$(
     cd "$repo"
-    PATH="$test_root/bin:$PATH" HOME="$test_root/home" \
-        "$bash_path" "$CONFIGURE_SCRIPT" 89ABCDEF01234567
+    with_stub_env "$bash_path" "$CONFIGURE_SCRIPT" 89ABCDEF01234567
 )"

Given the function is already flagged high-complexity (170+ lines covering ~6 scenarios), consider also splitting it into scenario-specific functions (e.g. test_configure_success, test_email_mismatch, test_hook_readiness, test_installer_commit_msg) sharing a common fixture setup, for easier debugging when one assertion fails.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/tests/configure-gpg-signing.sh` around lines 40 - 213, Extract the
repeated PATH and HOME setup from run_suite into a small reusable helper, then
use it at every configure-gpg-signing.sh and pre-commit invocation while
preserving each call’s scenario-specific environment variables. Keep the
existing test behavior unchanged; splitting run_suite into scenario-specific
functions is optional and outside the required cleanup.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@scripts/tests/configure-gpg-signing.sh`:
- Around line 40-213: Extract the repeated PATH and HOME setup from run_suite
into a small reusable helper, then use it at every configure-gpg-signing.sh and
pre-commit invocation while preserving each call’s scenario-specific environment
variables. Keep the existing test behavior unchanged; splitting run_suite into
scenario-specific functions is optional and outside the required cleanup.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: cec314ce-6308-4e27-b24d-bf7d00b0b84f

📥 Commits

Reviewing files that changed from the base of the PR and between 3819a34 and 949e797.

📒 Files selected for processing (8)
  • .github/PULL_REQUEST_TEMPLATE.md
  • CONTRIBUTING.md
  • README.md
  • scripts/configure-gpg-signing.sh
  • scripts/hooks/commit-msg
  • scripts/hooks/pre-commit
  • scripts/install-hooks.sh
  • scripts/tests/configure-gpg-signing.sh
💤 Files with no reviewable changes (1)
  • scripts/hooks/commit-msg
🚧 Files skipped from review as they are similar to previous changes (4)
  • .github/PULL_REQUEST_TEMPLATE.md
  • README.md
  • scripts/configure-gpg-signing.sh
  • CONTRIBUTING.md

Signed-off-by: Ryan Heffernan <rheffernan@nvidia.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
scripts/install-hooks.sh (2)

57-58: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Do not report signing ready from configuration alone.

A deleted secret key or missing configured gpg.program still produces this success message, whereas scripts/hooks/pre-commit warns that signing is unavailable. Either perform the same availability checks or describe this as configuration being set rather than operational signing readiness.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/install-hooks.sh` around lines 57 - 58, Update the signing message in
the configuration check around GPG_SIGNING_ENABLED, GPG_SIGNING_KEY, and
GPG_SIGNING_FORMAT so it does not claim operational signing readiness without
verifying the secret key and configured gpg.program are available. Reuse the
availability checks used by scripts/hooks/pre-commit, or change the message to
state only that signing configuration is set.

30-30: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Remove the retired commit-msg hook from the installation contract.

The PR objective says this hook is retired, but these changes still install, advertise, and test its DCO enforcement—so it will continue blocking commits.

  • scripts/install-hooks.sh#L30-L30: install only the supported hook(s).
  • scripts/install-hooks.sh#L46-L46: remove the retired-hook status entry.
  • scripts/tests/configure-gpg-signing.sh#L22-L22: remove COMMIT_MSG_HOOK.
  • scripts/tests/configure-gpg-signing.sh#L50-L51: remove commit-message test state.
  • scripts/tests/configure-gpg-signing.sh#L186-L216: remove copying and enforcement assertions for the retired hook.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/install-hooks.sh` at line 30, Remove the retired commit-msg hook from
the installation and DCO test contract: update scripts/install-hooks.sh lines
30-30 to install only supported hooks and lines 46-46 to remove its status
entry; in scripts/tests/configure-gpg-signing.sh remove COMMIT_MSG_HOOK at lines
22-22, commit-message test state at lines 50-51, and the retired-hook copying
and enforcement assertions at lines 186-216.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@CONTRIBUTING.md`:
- Around line 161-165: Remove the retired commit-msg hook from the documented
hook set and update the installer and hook files so installation no longer
creates or enforces it. In CONTRIBUTING.md lines 161-165 and README.md lines
74-76, remove or revise the corresponding installation and DCO-enforcement
descriptions while keeping documentation consistent with the remaining hooks.

---

Outside diff comments:
In `@scripts/install-hooks.sh`:
- Around line 57-58: Update the signing message in the configuration check
around GPG_SIGNING_ENABLED, GPG_SIGNING_KEY, and GPG_SIGNING_FORMAT so it does
not claim operational signing readiness without verifying the secret key and
configured gpg.program are available. Reuse the availability checks used by
scripts/hooks/pre-commit, or change the message to state only that signing
configuration is set.
- Line 30: Remove the retired commit-msg hook from the installation and DCO test
contract: update scripts/install-hooks.sh lines 30-30 to install only supported
hooks and lines 46-46 to remove its status entry; in
scripts/tests/configure-gpg-signing.sh remove COMMIT_MSG_HOOK at lines 22-22,
commit-message test state at lines 50-51, and the retired-hook copying and
enforcement assertions at lines 186-216.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 64e39011-5570-45db-8567-1f605a8e3735

📥 Commits

Reviewing files that changed from the base of the PR and between 949e797 and ea37f7c.

📒 Files selected for processing (5)
  • .github/PULL_REQUEST_TEMPLATE.md
  • CONTRIBUTING.md
  • README.md
  • scripts/install-hooks.sh
  • scripts/tests/configure-gpg-signing.sh

Comment thread CONTRIBUTING.md Outdated
Signed-off-by: Ryan Heffernan <rheffernan@nvidia.com>
…/configure-gpg-signing

Signed-off-by: Ryan Heffernan <rheffernan@nvidia.com>
@ryanheffernan
ryanheffernan force-pushed the agent/configure-gpg-signing branch from 5fdc8dd to c88dcee Compare July 21, 2026 01:28
@ryanheffernan ryanheffernan changed the title Configure GPG commit signing feat(security): configure GPG commit signing Jul 21, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
CONTRIBUTING.md (1)

21-21: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Add language identifiers to the fenced code blocks.

Use text for these prose examples to satisfy Markdown linting.

Proposed fix
-```
+```text
...
-```
+```text

Also applies to: 61-61

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@CONTRIBUTING.md` at line 21, Update the fenced code blocks in
CONTRIBUTING.md, including the blocks at the referenced prose examples, to
specify the text language identifier (```text) while preserving their contents.

Source: Linters/SAST tools

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@CONTRIBUTING.md`:
- Line 21: Update the fenced code blocks in CONTRIBUTING.md, including the
blocks at the referenced prose examples, to specify the text language identifier
(```text) while preserving their contents.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 4f5bba39-cd7a-468d-92c1-f749376e26ce

📥 Commits

Reviewing files that changed from the base of the PR and between ea37f7c and c88dcee.

📒 Files selected for processing (6)
  • CONTRIBUTING.md
  • Makefile
  • README.md
  • scripts/hooks/pre-commit
  • scripts/install-hooks.sh
  • scripts/tests/configure-gpg-signing.sh
🚧 Files skipped from review as they are similar to previous changes (3)
  • scripts/install-hooks.sh
  • Makefile
  • README.md

Signed-off-by: Ryan Heffernan <rheffernan@nvidia.com>
@ryanheffernan
ryanheffernan marked this pull request as ready for review July 21, 2026 01:42
Signed-off-by: Ryan Heffernan <rheffernan@nvidia.com>
Signed-off-by: Ryan Heffernan <rheffernan@nvidia.com>
@github-actions

Copy link
Copy Markdown

Signed-off-by: Ryan Heffernan <rheffernan@nvidia.com>
@ryanheffernan ryanheffernan changed the title feat(security): configure GPG commit signing feat(security): validate trusted commit signing Jul 21, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@scripts/install-hooks.sh`:
- Around line 53-68: Update the signing readiness branch in
scripts/install-hooks.sh to validate the configured signer executable and
required OpenPGP secret key using the same read-only checks as the pre-commit
hook before reporting signing as configured. Keep the incomplete message for
missing or invalid readiness, including unsupported formats, so “configured” is
emitted only when signing can actually be used.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 7d00912f-1f8c-4ddf-b5be-1cd48cbe292f

📥 Commits

Reviewing files that changed from the base of the PR and between 4e906a7 and c32abd4.

📒 Files selected for processing (4)
  • CONTRIBUTING.md
  • README.md
  • scripts/hooks/pre-commit
  • scripts/install-hooks.sh
🚧 Files skipped from review as they are similar to previous changes (2)
  • CONTRIBUTING.md
  • scripts/hooks/pre-commit

Comment thread scripts/install-hooks.sh
Signed-off-by: Ryan Heffernan <rheffernan@nvidia.com>
@ryanheffernan ryanheffernan changed the title feat(security): validate trusted commit signing feat(security): docs and hooks to support cryptographic signing of commits Jul 21, 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