pub struct CircleTransitionDraft {
pub circle_id: CircleId,
pub epoch_id: CircleEpochId,
pub keyring: String,
pub roster: CircleMaterializedRoster,
pub policy: CircleTransitionDraftPolicy,
pub metadata: CircleMetadata,
pub close_intent: Option<CircleEpochCloseIntent>,
pub close_finalization: Option<CircleEpochCloseFinalizationDraft>,
pub close_cancellation: Option<CircleEpochCloseCancellationDraft>,
pub access: Vec<PreparedCircleAccess>,
pub control: PreparedCircleControl,
}Fields§
§circle_id: CircleId§epoch_id: CircleEpochId§keyring: String§roster: CircleMaterializedRoster§policy: CircleTransitionDraftPolicy§metadata: CircleMetadata§close_intent: Option<CircleEpochCloseIntent>§close_finalization: Option<CircleEpochCloseFinalizationDraft>§close_cancellation: Option<CircleEpochCloseCancellationDraft>§access: Vec<PreparedCircleAccess>§control: PreparedCircleControlImplementations§
Source§impl CircleTransitionDraft
impl CircleTransitionDraft
pub fn close_epoch( candidate_family: CandidateFamilyId, device_id: &str, store_membership: StoreMembershipStateRef, membership_authority: MembershipGrantCreationAuthority, store_members: Vec<(String, MemberRole)>, current_control: &PreparedCircleControl, current_roster: &CircleMaterializedRoster, current_metadata: &CircleMetadata, keyring: &str, close_id: CircleEpochCloseId, close_intent: CircleEpochCloseIntent, intent: CircleEpochCloseIntentRef, frozen_device_state: StoreDeviceStateRef, participants: Vec<CircleEpochCloseParticipant>, provisional_frontier: CommitFrontier, outcome_slot: ObjectSlot, ids: &dyn IdProvider, signer: &dyn IdentityKeyAuthority, ) -> Result<Self, CircleTransitionError>
pub fn finalize_epoch_close( candidate_family: CandidateFamilyId, device_id: &str, author_registration: &StoreDeviceRegistrationRef, metadata_stamp: &str, store_membership: StoreMembershipStateRef, membership_authority: MembershipGrantCreationAuthority, store_members: Vec<(String, MemberRole)>, close_control: &PreparedCircleControl, current_roster: &CircleMaterializedRoster, current_roster_chain: CircleRosterChain, current_metadata: &CircleMetadata, keyring: &str, intent: CircleEpochCloseIntent, responses: Vec<CircleEpochCloseSettlement>, ids: &dyn IdProvider, signer: &dyn IdentityKeyAuthority, ) -> Result<Self, CircleTransitionError>
Sourcepub fn reopen_epoch(
candidate_family: CandidateFamilyId,
device_id: &str,
store_membership: StoreMembershipStateRef,
membership_authority: MembershipGrantCreationAuthority,
store_members: Vec<(String, MemberRole)>,
close_control: &PreparedCircleControl,
current_roster: &CircleMaterializedRoster,
current_metadata: &CircleMetadata,
keyring: &str,
ids: &dyn IdProvider,
signer: &dyn IdentityKeyAuthority,
) -> Result<Self, CircleTransitionError>
pub fn reopen_epoch( candidate_family: CandidateFamilyId, device_id: &str, store_membership: StoreMembershipStateRef, membership_authority: MembershipGrantCreationAuthority, store_members: Vec<(String, MemberRole)>, close_control: &PreparedCircleControl, current_roster: &CircleMaterializedRoster, current_metadata: &CircleMetadata, keyring: &str, ids: &dyn IdProvider, signer: &dyn IdentityKeyAuthority, ) -> Result<Self, CircleTransitionError>
Reopen a frozen epoch by cancelling its close. The successor restores the frozen epoch’s protocol identity — same epoch, key generation, roster and metadata frontiers, and origin — re-issuing only the control-bound access material to the reopening control.
Source§impl CircleTransitionDraft
impl CircleTransitionDraft
pub fn founder( store_root_hash: ObjectHash, candidate_family: CandidateFamilyId, device_id: &str, name: &str, metadata_stamp: &str, store_membership: StoreMembershipStateRef, membership_authority: MembershipGrantCreationAuthority, store_members: Vec<(String, MemberRole)>, ids: &dyn IdProvider, signer: &dyn IdentityKeyAuthority, ) -> Result<Self, CircleTransitionError>
pub fn add_member( candidate_family: CandidateFamilyId, device_id: &str, store_membership: StoreMembershipStateRef, membership_authority: MembershipGrantCreationAuthority, store_members: Vec<(String, MemberRole)>, current_control: &PreparedCircleControl, current_roster: &CircleMaterializedRoster, current_roster_chain: CircleRosterChain, current_metadata: &CircleMetadata, keyring: &str, roster_stream: AuthorStreamId, member_pubkey: String, role: CircleRole, bootstrap: CircleBootstrapRef, ids: &dyn IdProvider, signer: &dyn IdentityKeyAuthority, ) -> Result<Self, CircleTransitionError>
pub fn rename( candidate_family: CandidateFamilyId, device_id: &str, name: &str, metadata_stamp: &str, store_membership: StoreMembershipStateRef, membership_authority: MembershipGrantCreationAuthority, store_members: Vec<(String, MemberRole)>, current_control: &PreparedCircleControl, current_roster: &CircleMaterializedRoster, current_metadata: &CircleMetadata, keyring: &str, ids: &dyn IdProvider, signer: &dyn IdentityKeyAuthority, ) -> Result<Self, CircleTransitionError>
Sourcepub fn resolve(
candidate_family: CandidateFamilyId,
device_id: &str,
store_membership: StoreMembershipStateRef,
membership_authority: MembershipGrantCreationAuthority,
store_members: Vec<(String, MemberRole)>,
chosen_control: &PreparedCircleControl,
chosen_roster: &CircleMaterializedRoster,
chosen_metadata: &CircleMetadata,
keyring: &str,
losing_branches: Vec<ResolvedConflictBranch>,
ids: &dyn IdProvider,
signer: &dyn IdentityKeyAuthority,
) -> Result<Self, CircleTransitionError>
pub fn resolve( candidate_family: CandidateFamilyId, device_id: &str, store_membership: StoreMembershipStateRef, membership_authority: MembershipGrantCreationAuthority, store_members: Vec<(String, MemberRole)>, chosen_control: &PreparedCircleControl, chosen_roster: &CircleMaterializedRoster, chosen_metadata: &CircleMetadata, keyring: &str, losing_branches: Vec<ResolvedConflictBranch>, ids: &dyn IdProvider, signer: &dyn IdentityKeyAuthority, ) -> Result<Self, CircleTransitionError>
Build a successor of the chosen conflicting branch that causally covers
every branch, collapsing a retained ControlConflict to a single
resolved control. The successor inherits the chosen branch’s epoch, key
generation, and roster contents verbatim — it changes no membership, keys,
or deletion intent. It merges the control, metadata, and roster head
frontiers across every branch (the union of covered heads), so a device
that authored a losing branch continues its own author streams instead of
re-allocating their head slots. The name is not inherited from the chosen
branch but re-derived as the deterministic metadata selection over the
merged frontier: the metadata layer resolves its own conflict — the
canonical maximum across every covered head — independent of which control
branch the Owner chose. losing_branches are the retained branches other
than chosen; preparation adds the chosen branch head, so the resolved
control’s causal dependencies and predecessor together name every branch.
Sourcepub fn delete(
device_id: &str,
store_membership: StoreMembershipStateRef,
membership_authority: MembershipGrantCreationAuthority,
store_members: Vec<(String, MemberRole)>,
current_control: &PreparedCircleControl,
current_roster: &CircleMaterializedRoster,
current_metadata: &CircleMetadata,
keyring: &str,
ids: &dyn IdProvider,
signer: &dyn IdentityKeyAuthority,
) -> Result<Self, CircleTransitionError>
pub fn delete( device_id: &str, store_membership: StoreMembershipStateRef, membership_authority: MembershipGrantCreationAuthority, store_members: Vec<(String, MemberRole)>, current_control: &PreparedCircleControl, current_roster: &CircleMaterializedRoster, current_metadata: &CircleMetadata, keyring: &str, ids: &dyn IdProvider, signer: &dyn IdentityKeyAuthority, ) -> Result<Self, CircleTransitionError>
Build the terminal deletion: a successor of the current control whose
state is Deleted, freezing the epoch spine for historical verification
and reclamation. It publishes no roster successor, metadata successor,
access material, or bootstraps — its control inherits the predecessor’s
access root.
Trait Implementations§
Source§impl Clone for CircleTransitionDraft
impl Clone for CircleTransitionDraft
Source§fn clone(&self) -> CircleTransitionDraft
fn clone(&self) -> CircleTransitionDraft
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more