docs/INVARIANTS.md: add outbound no-replay invariant#804
docs/INVARIANTS.md: add outbound no-replay invariant#804
Conversation
📝 WalkthroughWalkthroughAdds INV-032 to docs/INVARIANTS.md: an invariant requiring that each transceiver may emit a specific outbound message only once, with Solana/Sui using a released bitmap and EVM using atomic queue deletion; introduces related error codes and references to updated outbox/queue logic. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~8 minutes Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches🧪 Generate unit tests (beta)
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
🤖 Fix all issues with AI agents
In `@docs/INVARIANTS.md`:
- Around line 280-289: Update INV-032 to clarify that the same
OutboxItem.released bitmap implementation underpins INV-004, INV-005 and INV-032
(hence reuse of the MessageAlreadySent / EMessageAlreadySent error names) and
explicitly document that EVM enforces the invariant differently:
completeOutboundQueuedTransfer() relies on atomic queue deletion and absence of
an entry (results in OutboundQueuedTransferNotFound on a second attempt) rather
than emitting a MessageAlreadySent error; reference OutboxItem.released,
try_release(), completeOutboundQueuedTransfer(), MessageAlreadySent,
EMessageAlreadySent, and OutboundQueuedTransferNotFound in the note so readers
understand shared implementation vs distinct EVM enforcement.
5324da5 to
c736593
Compare
Summary by CodeRabbit
✏️ Tip: You can customize this high-level summary in your review settings.