Write docs/glossary.md. The codebase mixes vocabulary from three domains — messaging/E2EE (envelope, prekey, ratchet, safety number, epoch, sealed box, fan-out), Stellar/Soroban (ledger, XDR, SAC, passphrase, Freighter), and this project's own coinages (device set mismatch, sibling device, resume cursor, group control event) — and a newcomer cannot tell which is which.
Acceptance criteria:
- Each term has a one-to-three sentence definition and, where useful, a pointer to the module that implements it
- Distinguishes standard protocol terms from project-specific ones
- Disambiguates genuinely confusable pairs —
ciphertext (message body column) vs. envelope ciphertext (per-device), deviceId vs. senderDeviceId, epoch (MLS) vs. sequence (group control log)
Write
docs/glossary.md. The codebase mixes vocabulary from three domains — messaging/E2EE (envelope, prekey, ratchet, safety number, epoch, sealed box, fan-out), Stellar/Soroban (ledger, XDR, SAC, passphrase, Freighter), and this project's own coinages (device set mismatch, sibling device, resume cursor, group control event) — and a newcomer cannot tell which is which.Acceptance criteria:
ciphertext(message body column) vs. envelopeciphertext(per-device),deviceIdvs.senderDeviceId,epoch(MLS) vs.sequence(group control log)