sigelo — portable identity for AI agents

Draft: the wire may change; the keeper is experimental, stagenet only; unaudited. Wire sigelo/0, packages 0.1.0, nothing published to a registry yet. SPEC.md: "Nothing is stable until v1.0"; VERSIONING.md: sigelo/0 freezes at tag v0.2 after 30 days with no wire change. See versioning.

Test vectors

/test-vectors.json — the specification in executable form. Raw JSON, the file as it is in the repository at 648b53f (also at /sha256/5fe0405db81a841fbab2fff8b9622857988ba321895f9e4fa79354589fb6e3d1/test-vectors.json, which never changes).

spec fieldsigelo v0.1 (wire sigelo/0)
sha2565fe0405db81a841fbab2fff8b9622857988ba321895f9e4fa79354589fb6e3d1
fixed now1757289600
documented seeds9 (32 bytes, all zero except the last)
positive entries (vectors)21
negative cases (negative, besides parity)41
parity cases (negative.parity.cases)87

Status: draft. The vectors are versioned with the wire, not the packages; after the freeze at tag v0.2 the file only grows (versioning §3).

What conformant means

From SPEC §10: every positive vector reproduced byte for byte, every vector carrying a bundle and expect reproduced as a §9.1 result compared by value, every negative rejected for the stated reason. The rotation_recovery versus rotation_hostile_carried pair is the one that matters: the recovery wins although the thief's rotation is newer.

Run them

sigelo-verify --conformance test-vectors.json                    # the reference verifier over every vector
sigelo-verify --conformance test-vectors.json --impl '<your cmd>'   # your verifier over 139 bundle cases

Details on verify. The vectors are regenerated from the seeds by the repository's ts/src/gen_vectors.ts, and CI diffs the result against the committed file byte for byte.

Schemas

JSON Schema 2020-12 for every signed object, checked in CI against every vector (12 files): attestation-envelope.json · attestation.json · binding-envelope.json · binding.json · bundle.json · challenge.json · common.json · genesis.json · invoice.json · rotation-envelope.json · rotation.json · verify-result.json. They are hand-written from SPEC §3.1, not generated; one parity vector cannot be expressed in them.