Skip to main content

liminal_protocol/lifecycle/
mod.rs

1//! Typed participant lifecycle state and transitions.
2//!
3//! The deviations here are mandated by `docs/design/LP-EXTRACTION-GOAL.md`:
4//! detach cells retain a terminalized token after attach so the old binding
5//! epoch remains producible, and cursor-progress facts are keyed per
6//! participant rather than stored in the contract's fixed occurrence array.
7//! The array cannot represent two participants advancing over the same retained
8//! suffix, so completion ordering is instead enforced by typed transitions and
9//! tests.
10
11mod admission;
12mod aggregate_commit;
13mod attach;
14mod binding;
15mod binding_fate;
16mod claim_frontier;
17mod closure_accounting;
18mod conversation;
19mod conversation_codec;
20mod cursor_facts;
21mod detach;
22mod edge;
23mod enrollment;
24mod enrollment_closure;
25mod incarnation;
26mod lookup;
27mod membership;
28mod obligation_dispatch;
29mod observer_recovery;
30mod operation_event;
31mod operations;
32mod storage;
33
34#[cfg(test)]
35mod aggregate_commit_tests;
36#[cfg(test)]
37mod attach_tests;
38#[cfg(test)]
39mod binding_tests;
40#[cfg(test)]
41mod claim_frontier_tests;
42#[cfg(test)]
43mod closure_accounting_tests;
44#[cfg(test)]
45mod conversation_tests;
46#[cfg(test)]
47mod cursor_facts_tests;
48#[cfg(test)]
49mod detach_tests;
50#[cfg(test)]
51mod edge_tests;
52#[cfg(test)]
53mod enrollment_closure_tests;
54#[cfg(test)]
55mod enrollment_tests;
56#[cfg(test)]
57mod incarnation_tests;
58#[cfg(test)]
59mod lookup_tests;
60#[cfg(test)]
61mod membership_tests;
62#[cfg(test)]
63mod observer_recovery_tests;
64#[cfg(test)]
65mod observer_recovery_transaction_tests;
66#[cfg(test)]
67mod operation_event_tests;
68#[cfg(test)]
69mod storage_tests;
70#[cfg(test)]
71mod test_support;
72#[cfg(feature = "test-support")]
73pub mod test_support_external;
74
75pub use admission::{
76    BindingSlotDecision, BindingSlotOccupancy, CapacityCounter, CapacityCounterInvariantError,
77    ConnectionConversationCapacityCommit, ConnectionConversationTracking,
78    CredentialAttachCapacityCommit, CredentialAttachCapacityCounters,
79    CredentialAttachCapacityDecision, EnrollmentCapacityCommit, EnrollmentCapacityCounters,
80    EnrollmentCapacityDecision, FreshParticipantCapacityCounter,
81    FreshParticipantCapacityCounterInvariantError, ObserverCheckedOperation, ObserverFloorDecision,
82    ObserverFloorPermit, OrderAdmissionError, OrderAllocation, OrderClaims,
83    OrderClaimsInvariantError, OrderHigh, OrderLedger, OrderLedgerInvariantError,
84    RecordSizeDecision, RecordSizePermit, RecoverySequenceReserve,
85    ResultingEnrollmentCapacityCounters, SemanticConnectionCapacityDecision, SequenceAdmission,
86    SequenceAdmissionError, SequenceClaims, SequenceLedger, SequenceLedgerInvariantError,
87    check_observer_floor, check_record_size, select_credential_attach_binding_slot,
88    select_credential_attach_capacity, select_enrollment_binding_slot, select_enrollment_capacity,
89    select_semantic_connection_capacity,
90};
91use admission::{admit_sequence, allocate_order};
92pub use aggregate_commit::{
93    AggregateOperationCommit, AggregateOperationDecision, AggregateOperationFault,
94    AggregateOperationFaultReason, AggregateOperationRefusal, AggregateOperationResult,
95    decide_attached_operation, decide_detached_operation, decide_enrolled_operation,
96    decide_left_operation, decide_nonzero_debt_ack_operation,
97    decide_ordinary_binding_fate_operation, decide_recovered_binding_fate_operation,
98};
99pub use attach::{
100    AttachCommit, AttachCommitError, AttachCommitParameters, AttachTransition,
101    AttachVerificationError, FencedAttachVerificationRefusal, InstalledAttachState,
102    SealedBindingFateToken, VerifiedAttachCommit, commit_attach,
103};
104pub use binding::{
105    ActiveBinding, AdmissionOrder, BindingState, BindingTerminalDisposition, BindingTerminalKind,
106    CommittedBindingTerminal, CommittedBindingTerminalPosition, CommittedDetachedTerminal,
107    CommittedDiedTerminal, DetachedBindingTransition, DiedBindingTransition,
108    PendingBindingTerminalPosition, PendingDetachedFinalization, PendingDiedFinalization,
109    PendingFinalization,
110};
111pub use binding_fate::SealedBindingFateIntent;
112pub use claim_frontier::{
113    ActiveIdentityRanks, BindingTerminalOwner, ClaimFrontierCounter, ClaimFrontierError,
114    ClaimFrontierInvalidReason, ClaimFrontiers, ClaimFrontiersRestore, ExitProductRange,
115    ExitProductRangeRestore, FrontierBinding, FrontierParticipant, HistoricalCausalFactRestore,
116    HistoricalMarkerDeliveryFactRestore, ImmutableOrderCandidateMajor,
117    ImmutableOrderCandidateMajorRestore, ImmutableSequenceCandidate,
118    InitialEnrollmentFrontierCommit, InitialEnrollmentFrontierError,
119    InitialEnrollmentFrontierFailure, MarkerCandidateAuthority, MarkerProvenance,
120    MarkerSequenceOwner, MovableOrderClaim, MovableSequenceClaim, OrderClaimFrontier,
121    OrderClaimFrontierRestore, OrderDirectOwner, PrepareLeaveAuthorityError,
122    RecoveryClaimProvenance, RecoveryOrderActiveBindingRestore, RecoveryOrderBlock,
123    RecoveryOrderBlockRestore, RecoverySequenceBlock, RecoverySequenceBlockRestore,
124    RecoverySequenceTerminalRestore, ReplacementTerminalProductRange,
125    ReplacementTerminalProductRangeRestore, RetainedCausalRecord, RetainedCausalRecordKind,
126    SequenceClaimFrontier, SequenceClaimFrontierRestore, SequenceDirectOwner, SequenceProductClass,
127    SequenceProductRanges, SequenceProductRangesRestore, TerminalProductRange,
128    TerminalProductRangeRestore, TerminalProductSource, with_validated_marker_record_type,
129};
130pub use closure_accounting::{
131    ClosureAccounting, ClosureAccountingError, RecoveryFenceDecision, RecoveryFencePermit,
132    RemainingClosureDecision, RemainingClosurePermit, RequiredCapacityPlan,
133    RequiredCapacityPlanError, check_recovery_fence, check_remaining_closure,
134};
135pub use conversation::{
136    ConversationCommit, ConversationDecision, ConversationEvent, ConversationEventDecodeError,
137    ConversationGenesis, ConversationRefusal, ConversationRefusalReason, ConversationReplayError,
138    ConversationReplayFailure, ParticipantConversation,
139};
140pub use cursor_facts::{
141    BoundParticipantCursor, CumulativeAckAuthorizationError, CumulativeAckOutcome,
142    CursorEpisodeBuildError, CursorFactEncodeError, CursorProgressFact, CursorProgressFacts,
143    CursorProgressKey, NonzeroDebtCursorEpisode, RecipientAckObligations,
144    RecipientAckObligationsContextError, RecipientAckObligationsError,
145};
146pub use detach::{
147    CommittedDetach, CommittedDetachTransition, DetachCell, DetachCommitError, DetachReplayError,
148    DetachVerificationError, EmptyDetach, PendingDetach, PendingDetachTransition,
149    PendingDrainDecision, PendingReplay, PendingReplayError, PendingReplayRequest,
150    TerminalizedDetach, VerifiedCommittedDetach, VerifiedDetachRequest, VerifiedPendingDetach,
151    VerifiedTerminalizedDetach, commit_detach, complete_pending_detach, start_blocked_detach,
152};
153pub use edge::{
154    ClosureDebt, ClosureState, CursorFateSuccessor, CursorProgressContinuous, CursorProgressMarker,
155    DebtCompletion, DetachedAttachRefusal, DetachedCredentialRecovery, DetachedCursorRelease,
156    DetachedMarkerRelease, Event, FencedAttachCommit, KClaimBackedDetachedLeave, LeaveOnlyEdge,
157    MarkerDelivery, ObserverProjection, OrdinaryBindingAuthority, OrdinaryBindingFate,
158    OrdinaryDetachedAttachAdmission, ParticipantCursorProgress, PendingRecoveredCursorRelease,
159    PhysicalCompaction, ProjectionCompactionSuccessor, RecoveredBindingFate,
160    RecoveredBindingFateTransition, RecoveredCursorRelease, StoredEdge,
161};
162pub use enrollment::{
163    AllocatedParticipantSlot, AttachedLifecycleRecord, AttachedRecordPosition, BindingOrigin,
164    EnrollmentCommit, EnrollmentCommitError, EnrollmentCommitParameters,
165    ParticipantSlotAllocationError, ParticipantSlotAllocatorProof, commit_enrollment,
166};
167pub use enrollment_closure::{
168    InitialEnrollmentClosureError, InitialEnrollmentClosureInput,
169    InitialEnrollmentClosureProjection, PlannedEnrollmentMarker, RecoveryQuartetStatus,
170    project_initial_enrollment_closure,
171};
172pub use incarnation::{
173    ConnectionIncarnationAllocation, ConnectionIncarnationAllocationDecision,
174    ConnectionIncarnationAllocator, ConnectionIncarnationAllocatorRestore,
175    ConnectionIncarnationAllocatorRestoreError, ConnectionOrdinalExhaustion,
176    ConnectionOrdinalExhaustionCommit, ConnectionOrdinalExhaustionReplay,
177    DurableIncarnationReferences, DurableIncarnationReferencesError, ServerIncarnationExhaustion,
178    ServerIncarnationFsyncIntent, ServerIncarnationStartupDecision,
179    allocate_connection_incarnation, prepare_server_incarnation_startup,
180};
181pub use lookup::{
182    AttachSecretProof, BindingRequiredLookupResult, CredentialAttachLiveReceipt,
183    CredentialAttachLookupResult, CredentialAttachProvenance, CredentialAttachTokenPhase,
184    DetachLookupContext, DetachLookupResult, DetachTokenResolution, EnrollmentLiveReceipt,
185    EnrollmentLookupResult, EnrollmentProvenance, EnrollmentTokenPhase, LeaveLookupResult,
186    LeaveSecretProof, ParticipantBindingRequest, PresentedIdentity, ResolvedIdentity,
187    lookup_binding_required, lookup_credential_attach, lookup_detach, lookup_enrollment,
188    lookup_leave,
189};
190pub use membership::{
191    EnrollmentFingerprint, IdentityState, LeaveCommit, LeaveCommitError, LeaveCommitParameters,
192    LeaveFingerprint, LeaveVerificationError, LiveMember, LiveMemberRestore,
193    MembershipInvariantError, PendingLeaveCommitParameters, PreparedLeaveAuthority,
194    RetiredIdentity, RetirementError, VerifiedLeaveRequest, commit_leave, commit_pending_leave,
195};
196pub use obligation_dispatch::{
197    CoupledObligationDebtOwner, DebtDispatchDeferral, DebtDispatchInvariant,
198    ObligationDebtDispatchDecision, ObligationDebtDispatchState, ObligationDebtDispatchTransition,
199    ObligationDebtOwnerError, decide_obligation_debt_dispatch,
200};
201pub use observer_recovery::{
202    ObserverProgressAdvanceDecision, ObserverProgressAdvanceError,
203    ObserverProgressAdvanceTransaction, ObserverProgressProjection, ObserverProgressTrackDecision,
204    ObserverProgressTrackError, ObserverProgressTrackTransaction, ObserverRecoveryAggregate,
205    ObserverRecoveryAggregateRestoreError, ObserverRecoveryArm, ObserverRecoveryCommit,
206    ObserverRecoveryDecision, ObserverRecoveryTransaction, ObserverRecoveryTransactionDecision,
207};
208pub use operation_event::{
209    AttachedOperation, BindingFateOperation, ConversationOperation, DetachedOperation,
210    EnrolledOperation, LeftOperation, NonzeroDebtAckOperation,
211};
212pub use operations::{
213    AttachFrontierCharges, BindingFateMeasurementError, BindingFateMeasurementRefused,
214    BindingFateTerminal, BindingTerminalAdmission, BindingTerminalAdmitError,
215    BindingTerminalAdmitRefused, BindingTerminalCandidateCharge, BindingTerminalCauseClass,
216    BindingTerminalCommit, BindingTerminalEncoding, BindingTerminalPending,
217    BindingTerminalPrepareError, BindingTerminalPrepareRefused, CandidateTerminalKey,
218    CommittedOrdinaryRecord, DrainedPendingTerminal, FencedAttachMintRefusalReason,
219    FencedMarkerSourceExpectation, FencedMarkerSourceRetentionRefused,
220    InitialEnrollmentCommitValues, InitialEnrollmentOperationCommit,
221    InitialEnrollmentOperationDecision, InitialEnrollmentOperationFault,
222    InitialEnrollmentOperationInput, LiveFrontierCommit, LiveFrontierError, LiveFrontierFailure,
223    LiveFrontierOwner, LiveFrontierResult, LiveLeaveCommit, LiveLeaveError, MarkerAckCommit,
224    MarkerAckCommitError, MarkerAckDecision, MarkerDeliveryProjection, MarkerDrainCommit,
225    MarkerDrainError, MarkerProofDecision, MarkerProofInput, MarkerProofPermit, MarkerProofState,
226    MeasuredBindingFate, MintFencedAttachRefused, MintFencedAttachResult, MintedFencedAttach,
227    NonzeroAckEpisodePosition, NonzeroParticipantAckCommit, NonzeroParticipantAckCommitError,
228    NonzeroParticipantAckDecision, NonzeroParticipantAckInvariantError, OrdinaryProjectionError,
229    OrdinaryProjectionLimits, OrdinaryRecordDrainFirst, OrdinaryRecordProjectionDecision,
230    OrdinaryRecordProjectionFailure, OrdinaryRecordProjectionInput, ParticipantAckCommit,
231    ParticipantAckCommitError, ParticipantAckDecision, PendingDiedOrdinaryFinalizer,
232    PendingTerminalDrainRefused, PreparedBindingFate, PreparedBindingTerminal,
233    PreparedPendingDiedOrdinaryFinalizer, ProjectedOrdinaryRecord, ReceiptDeadlineError,
234    ReceiptDeadlines, RecordAdmissionCommit, RecordAdmissionDecision, RecordAdmissionDrainFirst,
235    RecordAdmissionFailure, RecordAdmissionFault, RecordAdmissionPersistenceParts,
236    RecordAdmissionPrestate, RecordAdmissionRefusal, RetainedFencedMarkerSource,
237    RetainedRecordCharge, UnchangedRecordAdmission, apply_attach_frontier, apply_detach_frontier,
238    apply_enrollment_frontier, apply_initial_enrollment, apply_marker_ack,
239    apply_marker_ack_frontier, apply_nonzero_participant_ack,
240    apply_nonzero_participant_ack_frontier, apply_nonzero_participant_ack_with_obligations,
241    apply_participant_ack, apply_participant_ack_frontier, apply_participant_ack_with_obligations,
242    apply_record_admission, classify_record_admission_binding, commit_pending_leave_frontier,
243    commit_settled_leave_frontier, drain_next_marker, scalar_audit_for_recipient_endpoint,
244    select_marker_proof,
245};
246pub use storage::{
247    BindingFateTerminalRestore, BindingStateRestore, ClosureStateRestore,
248    CommittedBindingTerminalRestore, ConversationStateRestoreError, CursorEpisodeRestore,
249    DebtCompletionRestore, DetachCellRestore, DetachedCredentialRecoveryRestore,
250    DetachedCursorReleaseProvenanceRestore, DetachedMarkerReleaseRestore,
251    FencedAttachCommitRestore, LeaveCommittedRestore, LiveIdentityRestore,
252    MarkerCursorProgressRestore, MarkerDeliveryRestore, OrdinaryBindingAuthorityRestore,
253    OrdinaryBindingFateRestore, ParticipantConversationRestore, ParticipantConversationState,
254    ParticipantLifecycleRestore, PendingFinalizationRestore, PendingRecoveredCursorReleaseRestore,
255    RecoveredBindingFateRestore, RecoveredStorageCompletionRestore, RestoredBindingFateTerminal,
256    RestoredParticipantLifecycle, RetiredIdentityRestore, StorageRestoreError, StoredEdgeRestore,
257};