消息持久化与客户端契约索引¶
状态:实现前接口冻结。本文档中的 Rust 为伪签名:只表达稳定边界、数据和结果,绝不包含实现体、存储布局或消息中间件配置。
使用规则¶
- 所有跨模块数据、错误枚举和结果类型只在 shared.md 定义;模块契约不得复制定义。
- 实现可增加私有辅助类型,但不得改变这里的前置条件、后置条件或错误语义。
SEND_ACK只能由CommittedMessage映射;在线 Push 是优化,不能作为持久化完成的依据。- 后端实现仅实现
MessageStore/MailboxStore契约;key、CQL、事务脚本、日志主题和消费者位点均为内部细节。
架构模块映射¶
| 架构子模块 | 契约 |
|---|---|
MessageStore、MessageCommitter / CommitRecovery |
message_commit.md |
CommitLog、FanoutCoordinator |
commit_log_fanout.md |
MailboxMaterializer、MailboxStore |
mailbox.md |
| Redis / ScyllaDB 共同语义 | storage_backends.md |
GroupMembership 与管理面 |
group_membership.md |
ClientRuntime / LocalStore |
client_runtime.md |
| GUI、CLI、C FFI、UniFFI 宿主 | client_host.md |
| 分支同步与发布门禁 | branch_release.md |
依赖方向¶
MessageCommitter -> MessageStore + CommitLog
CommitLog -> FanoutCoordinator -> GroupMembership
MailboxMaterializer -> MailboxStore + MessageStore
ClientRuntime -> LocalStore + ClientHost transport
MailboxMaterializer 只接受分发日志记录;FanoutCoordinator 不得写用户邮箱或 Socket;宿主不得复制 ClientRuntime 的同步与去重状态机。