v0.2.0
Minor Changes
-
#60
3478cebThanks @germ-mark! -PrepareEncryptResultgainsproposal_message: Vec<u8>(Swift:proposalMessage: Data) — the raw staged Upd(self) proposal, the exact message the pairedencryptstaples and the peer independently digests.⚠️ Binding contract 13 → 14 — binding and binary MUST pair. Taketwo_mls_pq.swiftfrom this release (a Record shape change; a stale pairing mis-reads FFI buffers). No wire, archive, or semantic change — persisted state carries over.Unblocks the anchor "agent handoff" flow: the app signs over its own
sha256(proposal_message), which equals the same result'sproposal_hashand the receiver's independently derivedQueuedRemoteProposal.digest(cross-side coherence, covered by new tests — including at the establishment moment, before any peer frame). Bytes and digest come from the same critical section, so there is deliberately NO staged-slot getter: a decoupled read could return whatever Upd a laterprepare_to_encryptstaged (routine self-refreshes included), and a signature input must not be exposed to that race.