Skip to main content

coven_protocol/
lib.rs

1//! Protocol: Coven's deterministic model of replicated state — signed values,
2//! their parsing, and their validation.
3//!
4//! Everything here is a pure function of its inputs. No SQLite, no storage
5//! provider, no network, no clock reads of its own: a commit, a membership
6//! entry, a circle operation, or a provider proof either parses and validates
7//! or it does not, identically on every device. That is what lets two devices
8//! that never met agree on what happened.
9//!
10//! `write` lives here because a write's identity and publication status are
11//! stated in protocol terms — a `WriteId` names a host transaction, and a
12//! `PublishedPosition` names the commit that made it visible to peers.
13
14pub mod audience_package;
15pub mod blob;
16pub mod causal_grants;
17pub mod circle;
18pub mod circle_activation;
19#[cfg(any(test, feature = "test-utils"))]
20pub mod circle_activation_test_fixtures;
21pub mod circle_control;
22pub mod circle_journal;
23pub mod circle_roster;
24#[cfg(any(test, feature = "test-utils"))]
25pub mod circle_test_fixtures;
26pub mod device_exclusion_journal;
27pub mod hlc;
28pub mod membership;
29pub mod membership_mutation;
30pub mod objects;
31pub mod owner_promotion_journal;
32pub mod prepared_commit;
33pub mod provider;
34pub mod reclaim;
35pub mod recovery;
36pub mod remote_object;
37pub mod store_commit;
38pub mod store_creation;
39pub mod synced_schema;
40pub mod wrapped_store_key;
41pub mod write;
42
43pub use objects::{
44    AwsPrincipal, CloudKitEnvironment, GoogleDriveCorpus, ProviderDeviceBinding,
45    ProviderPrincipalId, ResolvedProviderBinding, S3EndpointBinding, StoreProviderBinding,
46};
47
48pub use circle::{
49    Audience, Circle, CircleCloseParticipant, CircleCloseSettlement, CircleCloseStatus,
50    CircleControlCoord, CircleEpochCloseId, CircleId, CircleInfo, CircleMemberInfo,
51    CircleOperationBlock, CircleOperationId, CircleOperationInfo, CircleOperationKind,
52    CircleOperationState, CircleRole, CircleState,
53};
54pub use membership::{
55    MemberInfo, MemberRole, MembershipConflictChoice, MembershipConflictInfo, MembershipCoord,
56};
57pub use provider::{
58    CloudKitAcceptedShare, CrossPrincipalProbeReceipt, ExactSlotProbeReceipt,
59    ProviderAccessLocator, ProviderAccessWithdrawal, ProviderAdminChange, ProviderAdminGrantId,
60    ProviderAdminGrantRecord, ProviderAdminMembershipChange, ProviderAdminState,
61    ProviderCapabilityProof, ProviderProbeId, StoreMemberProviderAccessGrantRef,
62};
63pub use store_commit::{
64    CommitFrontier, DeviceJoinAttemptId, ObjectHash, StoreBatchCommitRef, StoreCommitCoord,
65    StoreCommitOrder, StoreDeviceId,
66};