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.