cli.sgit.ai / Builds / sgit-ai 0.26.7: verify the signer's own SSH or OpenPGP signature on commits and tags

sgit-ai 0.26.7

┌─ sgit-ai 0.26.7 ── dev build ── 28 Oct 2026, 12:22 UTC ─────────────────────────
│ tag v0.26.7 = 0d486aaf (dev) · PyPI package == tag · a plain install gets this
│ new     user signatures verified: check verify · history log/show --show-signature · tag show
│ not     nothing makes them: commit -S / sgit.gpgSign are parked until the web UI confirms
│ tests   5,235 unit+security ✓ · 18/18 end-to-end ✓ · 0.26.0/.3/.6 read signed commits ✓
│ open    BR-1 (high, every build) · R3-1 · W-1 (a question for the web UI)
│ maturity  #######---  good: use it; it changes what you can see, not what you can write
└──────────────────────────────────────────────────────────────────────────────────
$ pip install sgit-ai==0.26.7        # or: sgit update, which takes the newest build
$ sgit version
sgit-ai v0.26.7

What is new

This build is the first half of Git-parity item 2.2, signing with your own key, from design 02. It is the half that reads.

A second signature on a commit or tag

Trust is yours, as in Git

Where you see it

$ sgit check verify
Checked 5 commit(s): 5 verified, 0 bad, 0 unsigned, 0 without a known key, 0 missing
User signatures: 1 good, 1 untrusted, 0 bad, 0 expired, 0 revoked, 0 cannot check, 3 none
$ sgit check verify --require-user-signature --json     # every commit must be good
$ sgit history log --show-signature
$ sgit history show HEAD --show-signature
$ sgit vault tag show v1                                  # names the tag's signer

What is not here

Compatibility

Clientclonefsckclone signaturespush a commit0.26.8 pulls it
0.20.0✓ok4 of 4 verified✓✓, 5 of 5 verified
0.22.0✓ok4 of 4 verified✓✓
0.24.0✓ok4 of 4 verified✓✓
0.26.0✓ok4 of 4 verified✓✓, 5 of 5 verified
0.26.3✓ok4 of 4 verified✓✓
0.26.6✓ok4 of 4 verified✓✓

Review by cli.build

Verdict: good.

┌─ checks on the PyPI package 0.26.7 ───────────────────────────────────────────────
│ ✓     package == tag v0.26.7 (only the version file differs); wheel == sdist
│ ✓     5,235 unit+security tests pass (38 skipped)
│ ✓     everything from 0.26.1–0.26.6 (G1–G2, M1–M5, L1–L2, X1–X4, C1–C5) still holds
│ ✓ S1  SSH signature (in-process key) and OpenPGP signature (gpg): checked by 0.26.8 as untrusted / good
│ ✓ S2  a signature over other bytes, and one with a flipped bit: both bad; clone signatures unaffected
│ ✓ S3  0.26.0, 0.26.3 and 0.26.6 clone, fsck, verify and push over signed commits
│ ✓ S4  vaults of 0.20.0 · 0.22.0 · 0.24.0 · 0.26.0, plain and pack: open, commit, push, old client pulls
│ ✗ P1  one push of 150 commits: fresh clone's fsck fails  ── BR-1, unchanged from 0.26.6
└──────────────────────────────────────────────────────────────────────────────────────

Code read

The diff against 0.26.6 is 14 changed code files and new ones: crypto/signing/ (19 modules), Vault__User_Signatures, four new schemas and eleven new safe types. Read: the runner, the config reader and resolver, both signers, the commit and tag writers, the verification walk and the CLI wiring.

W-1 (a question for the web UI, before signing ships)

Also noted

Scripts: xsign.py, sig_tamper.py, legacy_vault.py, push_gap.py. Results: results/check_0.26.7.json, results/suite-v0.26.7.txt, results/xsign_signed_commits_old_clients.txt, results/sig_tamper_0.26.8.txt, results/legacy_vaults_0.20.0_to_0.26.0.txt. All builds: the builds page.

This page as markdown · its source, admin/content/builds/0-26-7.md