298 commits since 2026-08-19 and no tag, so a reviewer had to read the history to see the shape of the work. This gives them the shape and gives a version somewhere to land. The OpenSSF release_notes criterion also needs it.
It opens by separating two numbers that have been confused before. PROTO_VERSION is 3 and is what two engines negotiate on the wire; package.json says 2.0.0-draft.1, a package number that has never been released.
Every date was checked against the history rather than recalled:
Date
What landed
2026-08-19
First publication: X3DH, the Double Ratchet, hybrid ML-KEM-768
2026-08-25
Android sealed sender
2026-08-30
Both apps on post-quantum key agreement
2026-08-31
The ratchet proven Android to iPhone directly
2026-09-07
Android recorded as v3 after being run
2026-09-15
Sealed contact lists, §8.9c
2026-10-07
The relay's wire names for first contact and links
2026-10-09
The safety number covers post-quantum identities, §7
The last section is what stops a tag: the first released version is a maintainer's call, and this engine is not independently audited while its vendored ML-KEM-768 is self-audited upstream. A version number changes neither.
Writing pass before committing, per the standing rule. No dashes, no curly marks, and five spans rewritten to drop three contrast constructions, one "harness" and one "a real message".
Secret sweep clean across 89 files; check-doc-references.py resolves all 153 sections.
298 commits since 2026-08-19 and no tag, so a reviewer had to read the history to see the shape of the work. This gives them the shape and gives a version somewhere to land. The OpenSSF `release_notes` criterion also needs it.
It opens by separating two numbers that have been confused before. `PROTO_VERSION` is 3 and is what two engines negotiate on the wire; `package.json` says `2.0.0-draft.1`, a package number that has never been released.
**Every date was checked against the history** rather than recalled:
| Date | What landed |
|---|---|
| 2026-08-19 | First publication: X3DH, the Double Ratchet, hybrid ML-KEM-768 |
| 2026-08-25 | Android sealed sender |
| 2026-08-30 | Both apps on post-quantum key agreement |
| 2026-08-31 | The ratchet proven Android to iPhone directly |
| 2026-09-07 | Android recorded as v3 after being run |
| 2026-09-15 | Sealed contact lists, §8.9c |
| 2026-10-07 | The relay's wire names for first contact and links |
| 2026-10-09 | The safety number covers post-quantum identities, §7 |
The last section is what stops a tag: the first released version is a maintainer's call, and this engine is not independently audited while its vendored ML-KEM-768 is self-audited upstream. A version number changes neither.
Writing pass before committing, per the standing rule. No dashes, no curly marks, and five spans rewritten to drop three contrast constructions, one "harness" and one "a real message".
Secret sweep clean across 89 files; `check-doc-references.py` resolves all 153 sections.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
298 commits since 2026-08-19 and no tag, so a reviewer had to read the
history to see the shape of the work. This gives them the shape and gives
a version somewhere to land.
It opens by separating two numbers that have been confused before.
PROTO_VERSION is 3 and is what two engines negotiate on the wire;
package.json says 2.0.0-draft.1, which is a package number that has never
been released.
Every date was checked against the history rather than recalled:
publication 2026-08-19, Android sealed sender 08-25, both apps on
post-quantum key agreement 08-30, the ratchet proven Android to iPhone
08-31, Android recorded as v3 after being run 09-07, sealed contact lists
09-15, the relay's wire names for first contact 10-07, the safety number
covering post-quantum identities 10-09.
The last section is what stops a tag: the first released version is a
maintainer's call, and the engine is not independently audited while its
vendored ML-KEM-768 is self-audited upstream. A version number changes
neither and should not be read as implying otherwise.
Writing pass before committing, per the standing rule: no dashes, no
curly marks, and five spans rewritten to drop three contrast
constructions, one "harness" and one "a real message".
Secret sweep clean across 89 files; doc-references resolves every
section.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
298 commits since 2026-08-19 and no tag, so a reviewer had to read the history to see the shape of the work. This gives them the shape and gives a version somewhere to land. The OpenSSF
release_notescriterion also needs it.It opens by separating two numbers that have been confused before.
PROTO_VERSIONis 3 and is what two engines negotiate on the wire;package.jsonsays2.0.0-draft.1, a package number that has never been released.Every date was checked against the history rather than recalled:
The last section is what stops a tag: the first released version is a maintainer's call, and this engine is not independently audited while its vendored ML-KEM-768 is self-audited upstream. A version number changes neither.
Writing pass before committing, per the standing rule. No dashes, no curly marks, and five spans rewritten to drop three contrast constructions, one "harness" and one "a real message".
Secret sweep clean across 89 files;
check-doc-references.pyresolves all 153 sections.🤖 Generated with Claude Code