docs(signal-protocol): document persisted skipped-key seeds - #474
Conversation
SessionMessageKeyMaterial's Seed/Derived variants moved to fixed-width arrays and the seed now round-trips through export instead of only ever coming back as Derived. Update the legacy v1 interop section to reflect that only seedless (pre-#1210) records still hit ChainNotRepresentable::DerivedMessageKey.
SessionMessageKeyMaterial's Seed/Derived variants moved to fixed-width arrays and the seed now round-trips through export instead of only ever coming back as Derived. Update the legacy v1 interop section to reflect that only seedless (pre-#1210) records still hit ChainNotRepresentable::DerivedMessageKey. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
📝 WalkthroughWalkthrough
ChangesSession key material interoperability
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
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 |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@advanced/signal-protocol.mdx`:
- Around line 1392-1395: Rewrite the documentation at
advanced/signal-protocol.mdx lines 1392-1395 and 1513-1518 into concise,
active-voice, reader-focused sentences using “you.” At lines 1392-1395, separate
seed persistence, corruption validation, legacy Derived behavior, and
downgrade/migration guidance; at lines 1513-1518, separately explain v1
projection limits, typed errors, seeded-key behavior, and CI coverage. Preserve
all existing behavioral guidance while limiting each sentence to one idea.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 88f14b09-7ad1-45d1-8596-deb04261340c
📒 Files selected for processing (1)
advanced/signal-protocol.mdx
|
| Filename | Overview |
|---|---|
| advanced/signal-protocol.mdx | Documents persisted skipped-key seeds, associated breaking API changes, downgrade behavior, and the narrower legacy-v1 export limitation. |
Reviews (2): Last reviewed commit: "docs(signal-protocol): tighten prose per..." | Re-trigger Greptile
Split two dense multi-clause passages (persisted-seed behavior and the legacy v1 export error) into shorter, one-idea sentences, per this repo's active-voice/second-person style guideline. Addresses CodeRabbit review comment on PR #474. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
There was a problem hiding this comment.
0 issues found across 1 file (changes from recent commits).
Confidence score: 5/5
- Automated review surfaced no issues in the provided summaries.
- No files require special attention.
Auto-approved: Documentation-only update describing already-merged code changes. No behavioral, operational, or security tradeoff to decide.
Re-trigger cubic
Summary
Follows up whatsapp-rust#1210, which changed how
wacore-libsignalpersists skipped out-of-order message keys and fixed a bug where a session holding one could never round-trip through the legacy v1 interop projection.SessionMessageKeyMaterial: documented the move fromVec<u8>fields to fixed-width arrays, and corrected the claim that "exported records always useDerived" — a skipped key's seed is now persisted (session_structure::chain::MessageKey.seed, local field 100) and round-trips back out asSeed. Added a breaking-change note covering the array change, the removedMessageKeyGenerator::Keysvariant, and the silent-seed-drop-on-downgrade behavior.ChainNotRepresentable::DerivedMessageKeyused to fire for every skipped key (the projection was lossy from the first cycle); now it's limited to keys persisted before #1210 that never had a seed to retain. Added a note that CI now actually runs thelegacy-session-interoptest suite, which previously compiled away untested in every job.Only
advanced/signal-protocol.mdxchanged — the parts of this feature already documented in detail there. No other doc surface references skipped-key material or this feature.Test plan
[#1210]links,#session-and-sender-key-shapesanchor) resolveGenerated by Claude Code
Summary by cubic
Updates Signal Protocol docs to reflect persisted skipped-key seeds in
wacore-libsignal. Skipped message keys now round-trip as seeds, and legacy v1 interop only errors for pre-#1210 seedless records.Migration
SessionMessageKeyMaterialnow uses fixed-width arrays;Seed([u8; 32])can be exported. Match bothSeedandDerived.MessageKeyGenerator::Keysremoved. UseMessageKeyGenerator::new_from_seed.ChainNotRepresentable::DerivedMessageKey.Refactors
legacy-session-interopsuite.Written for commit 0ba7b05. Summary will update on new commits.