Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

ADR-055: Cryptographic Git signatures and pinned local trust

Status: accepted. Implements SYN-261; external authority bindings remain SYN-326.

A Git signature header is not proof of valid attribution. The verifier removes exactly the gpgsig header and continuation lines from raw commit bytes, verifies SSHSIG in the git namespace with RustCrypto ssh-key (Ed25519, SHA256/SHA512), and matches the signing key against an explicitly pinned local issuer/subject roster. OpenPGP, alternate SHA256 headers and unsupported algorithms fail explicitly. No shell, global Git configuration, key agent or network is used to verify.

The roster supplies signing-time validity and compromise/revocation boundaries. Historical validity is separate from current key eligibility. Committer time is signed but signer-controlled: this cannot defeat backdating without independent timestamp evidence. Current team authority and freshness require SYN-326/SYN-231. A self-supplied key is unknown_signer; email and Git author text are never trust roots.

commit-verify --roster roster.json and MCP commit_verify use the same core. Native report v1 remains compatible. Ordinary single-owner commands stay advisory. Strict profiles will consume this explicit verdict rather than signature presence.