docs: reflect tombstone durability-gate retention (whatsapp-rust#1042) - #406
Conversation
Deletes now keep a pending pre-wire gate open until the backend delete itself is durable, instead of releasing it as soon as the tombstone lands in the in-memory cache.
|
Warning Review limit reached
Next review available in: 27 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
Per Greptile review on #406: the old wording could read as if the backend delete had already happened before clear(). It hadn't — the tombstone is discarded in-memory without ever calling delete_session/ delete_sender_key, so stale chain state can remain in the backend.
Summary
Reflects whatsapp-rust#1042 ("fix(signal): retain durability gates through deletes"), which:
needs_pre_wire_flush()returningtrueand is retried on the next flush.Previously, a concurrent delete could release a durability gate before the backend delete was actually persisted, letting ciphertext reach the wire while the pre-delete chain state was still recoverable — a crash or failed delete in that window could reload the old state and re-derive already-used key material.
Changes
advanced/signal-protocol.mdx— added a paragraph after the existing "pre-wire gate" warning in "Flush scheduling: send vs. receive," describing the new tombstone gate-retention behavior for both session and sender-key deletes, and noting that a lossyclear()still drops a pending tombstone gate (no backend delete left to wait for).Not touched:
changelog/(per project convention, that's maintained by a human).Test plan
wacore/src/store/signal_cache.rsdiff for whatsapp-rust#1042 (including the newpre_wire_gate_testsbarrier-backend tests) to verify the doc wording against the actual gate-release ordering.mint broken-links(not run locally in this environment).🤖 Generated with Claude Code
Generated by Claude Code
Summary by cubic
Update
advanced/signal-protocol.mdxto document that session and sender-key deletes keep a pending pre-wire durability gate on the tombstone until the backend delete succeeds, preventing sends while pre-delete state is still recoverable. Also clarifies that failed deletes keepneeds_pre_wire_flush()true for retry, and that a lossyclear()drops the pending delete (it discards the tombstone without callingdelete_session/delete_sender_key), so stale chain state may remain in the backend.Written for commit 7a296ca. Summary will update on new commits.