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.

Changelog

Short commit hashes cited in this repository refer to the pre-publication development history, which is not public. This public history starts at the import of 2026-10-01.

unreleased — 2026-10-01, the rehearsal, the site, and the first two products

spend 659 → 745 passed with the live wallet. Code lines: spend/service.ts 1 037, spend/cli.ts 126, spend/init.ts 494, spend/licence.ts 84, ts/src/ceremony.ts 169, ts/src/offline.ts 167 (CLAUDE.md).

unreleased — 2026-09-29 (evening), round 3 on today's docs, the one-seed ceremony, Carrot, and a stranger's clone

ts 595 → 620, spend 652 → 659, go 498. Code lines: ts/src/ceremony.ts 150, ts/src/offline.ts 150, spend/service.ts 974 (CLAUDE.md).

unreleased — 2026-09-29, the readiness bar: six gaps closed in one day

wire: an envelope has exactly its defined keys (bcee912, SPEC §3.1; vectors attestation_good_and_envelope_extra_keys, binding_envelope_extra_key, binding_envelope_sig_id_only_unproven, fatal_rotation_envelope_extra_key; attestation_envelope_extra_key_int flips from accepted to discarded). The 30-day freeze count runs from this change.

ROADMAP §1 was re-measured against the tree (d07f077) and every gap that needed no Owner decision was closed the same day, each by its own agent, each proven before its commit. One wire change (the envelope rule above); the spend keeper's formats are unchanged; the live soak still runs 6df3b67.

ts 591 → 595, go 494 → 498, spend 617 → 652 passed with the live wallet. Code lines: ts/src/sigelo.ts 364, go/sigelo.go 383, spend/service.ts 975 (CLAUDE.md).

unreleased — 2026-09-29, soak incident #4: 32 h offline, and the clock

The test host lost its network for 32 h because its network manager stopped auto-connecting after a failed handshake and nothing could re-authorise it unattended. The keeper failed closed — nothing was sent, every line verifies — but the tooling around it did not see the outage, and the investigation found a latent wrong-clock risk. Keeper wire formats (receipts, spend-approvals, log lines) are unchanged; no error code was renamed.

spend: 592 → 617 passed with the live wallet (559 → 584 + 2 skipped without it).

unreleased — 2026-09-24, hostile-JSON differential (ts vs go)

wire: D1 nesting depth 512 (425d2bb), S1 created format (bc7165a), S2 canonical curve points (731483b), S3 commitment format (63cceed), S4 nonce format (c5faf69), S5 noncharacters (001ecfa); vectors named in each bullet below. Recorded here 2026-09-29 to satisfy VERSIONING.md §1; the 30-day freeze count (ROADMAP R6) runs from the last of these.

A differential of 1 805 hostile documents through both verifiers found three verdict divergences, four message-level ones, two slow paths and five gaps against SPEC. Closed here, each in both implementations with the same reason text, a SPEC MUST and vectors:

unreleased — 2026-09-24, audit before the public export

wire: A1 two identical rotation entries are a fork (7c285ea, vector fatal_duplicate_rotation_is_fork).

Self-audit of the whole tree (AUDIT.md), three findings closed with tests and vectors:

unreleased (still wire sigelo/0) — 2026-09-17

Spec gaps found on first independent review, all closed with vectors.

v0.1 draft (wire sigelo/0) — 2026-09

First public draft. Nothing is stable.