v2.0.23 β The Notary (ed25519 endorsements)
Series 3, desk 1 of 4 β the notary ποΈ. Prove whose paper a vault is β and that not one byte has moved since β without ever opening it.
What's new
vault100/notary.pyβ mint a personal seal (V100SEAL1+ 32-byte seed, written0600, KEEP SECRET) and its public stamp (V100STAMP1+ pk, share freely). Endorse any vault/file into a detached 108-byte.v100sig(V100SIG1 | epoch | pk | signature). Attest with optional stamp-pinning.- CLI β
vault100 notary mint me.v100sealΒ·vault100 notary endorse papers.v100 -s me.v100sealΒ·vault100 notary attest papers.v100 [--stamp me.v100stamp]β batch verdicts, exit codes, refusal dossiers (doctored vault / foreign seal / torn or forged paper). - Web β Annex D instrument (i): three desks β mint (two downloads + fingerprint), endorse (vault+seal β
.v100sig), attest (vault+sig+optional stamp β green ENDORSEMENT HOLDS / red REFUSED verdict cards). Worker opsnotary-mint/notary-sign/notary-verify, seal bytes zeroed, sweep burns picks and verdicts. - Interop β ed25519 detached signatures are deterministic: the desk CLI and the web notary produce byte-identical endorsements of the same paper with the same seal (cross-attested both directions in tests).
- Features page β Schedule A gains provision β 16.
Verification
- 84/84 pytest (7 new NotaryTests: mint roundtrip+0600 perms, holds, doctored refusal, foreign-seal/stamp mismatch, torn/forged paper, determinism, full CLI flow)
- 14/14 new headless-Chromium notary E2E Β· courier 40/40 Β· quorum 19/19 Β· regress 11/11 β local + live
- fixed-seed cross-vector: Python endorsement == JS endorsement, every byte
The guardrails stand: zero-knowledge Β· honest claims Β· no telemetry β attestation proves custody, never reads contents.