commit 70dd3d6b8dbb88441318dd8533881af221125bc7
parent 840287902cad3be5d70c87d12904fc99d2e87eec
Author: triesap <tyson@radroots.org>
Date: Sun, 2 Aug 2026 02:43:29 +0000
storage: document public api contract
- publish the complete storage charter and feature contract
- document cancellation commit serialization and security semantics
- add a runnable memory backend status example
- record the reviewed all-feature public API baseline
Diffstat:
5 files changed, 1294 insertions(+), 6 deletions(-)
diff --git a/crates/storage/README.md b/crates/storage/README.md
@@ -1,7 +1,170 @@
# radroots_storage
-Backend-neutral persistence abstractions for Radroots.
+`radroots_storage` defines the backend-neutral persistence contracts used by
+Radroots hosts. It owns canonical event persistence, durable operation journal
+state, outbox and delivery evidence, projection coordination, protected-record
+metadata, reliability operations, and high-level atomic workflow commits.
-This package root is established for the Release V1 refactor. Storage SPIs,
-models, and atomic operation contracts are migrated in the subsequent storage
-checkpoints.
+The package does not expose SQL, filesystem handles, database pools, raw
+transactions, encryption keys, transport clients, schedulers, or application
+state. Concrete backends implement these contracts; `radroots_storage_sqlite`
+is the native durable backend and the opt-in [`memory`] module is the bounded
+deterministic reference implementation.
+
+The authoritative package charter is the
+[`radroots_storage` section of the Release V1 specification](https://github.com/radrootslabs/lib/blob/master/docs/specs/radroots_crates_release_v1.md#13-radroots_storage).
+
+## Typical flow
+
+1. A host selects a concrete backend and owns its lifecycle.
+2. The host records operation preparation in [`Journal`] with a caller-owned
+ idempotency key.
+3. Verified events enter [`EventStore`] with explicit source provenance.
+4. [`Outbox`] stores transport-neutral delivery intent and evidence.
+5. [`ProjectionStore`] records checkpoints and rebuild coordination while
+ domain reducers remain outside storage.
+6. Advanced hosts use [`atomic::AtomicStorage`] to commit related journal,
+ event, outbox, and projection transitions as one local durable operation.
+7. [`BackupSource`] exposes explicit backup, staged restore, integrity, status,
+ and close operations without leaking backend handles.
+
+[`Journal`]: crate::Journal
+[`EventStore`]: crate::EventStore
+[`Outbox`]: crate::Outbox
+[`ProjectionStore`]: crate::ProjectionStore
+[`BackupSource`]: crate::BackupSource
+
+```rust
+use futures_executor::block_on;
+use radroots_storage::{
+ BackupSource,
+ event::SourceGeneration,
+ memory::MemoryStorage,
+ status::{ShutdownState, StorageBackend},
+};
+
+let generation = SourceGeneration::new([1; 32])?;
+let storage = MemoryStorage::new(generation);
+let status = block_on(BackupSource::status(&storage))?;
+
+assert_eq!(status.backend(), StorageBackend::Memory);
+assert_eq!(status.shutdown(), ShutdownState::Open);
+# Ok::<(), radroots_storage::Error>(())
+```
+
+The same program is available as
+[`examples/memory_status.rs`](examples/memory_status.rs).
+
+## Public capability boundary
+
+The crate root exposes the ordinary aggregate [`Storage`] capability plus
+`EventStore`, `Journal`, `Outbox`, `ProjectionStore`, `BackupSource`,
+`StorageStatus`, and `Error`. Advanced contracts remain in their owning
+modules so ordinary consumers do not accidentally depend on workflow or
+protected-record internals.
+
+All SPIs are externally implementable, dyn-compatible `Send + Sync` traits.
+Their methods return boxed `Future + Send` values, allowing the host to choose
+the async executor. Implementations must not install an executor, spawn hidden
+workers, read a clock, generate identities, or perform implicit retries.
+
+## Cancellation and commit points
+
+Dropping a returned future requests cancellation. Read operations may stop
+without side effects. Mutating operations must document and preserve their
+local durable commit point:
+
+- before the commit point, cancellation or failure leaves no partial state;
+- after a successful commit, cancellation cannot claim rollback;
+- replaying the same identity and canonical input returns the original result;
+- reusing an identity with different input fails as a conflict;
+- atomic workflow commits publish every requested mutation or none of them;
+- rollback failure never replaces the primary operation failure.
+
+`JournalState::Committed` is the durable operation-journal boundary.
+`AtomicStorage::commit` is the aggregate local workflow boundary. Network
+publication is outside this crate and is not implied by either state.
+
+## Events, journal, outbox, and projections
+
+Event storage preserves the exact signed event, verification/admission stage,
+source generation, monotonically increasing position, and every unique
+transport provenance observation. Queries are bounded and generation-aware;
+backends fail closed on corrupt rows or source changes.
+
+The journal records a command lifecycle under a validated idempotency key and
+optimistic revision. The outbox persists explicit multi-target delivery plans,
+leases, attempts, normalized receipts, partial success, and satisfaction
+evidence without owning a transport adapter. Projection storage owns only
+checkpoints, invalidation/rebuild state, and event-index manifests; reducer
+algorithms and projected domain rows stay with their domain owners.
+
+## Protected metadata and security
+
+`private_artifact` stores bounded metadata and opaque durable secret references.
+It never accepts domain plaintext, ciphertext bytes, or an active secret
+capability. Encryption, wrapping, and provider access belong to
+`radroots_secrets` and the concrete backend.
+
+Identifiers, paths, query sizes, revisions, timestamps, and result sets are
+bounded and validated before backend work. Secret references and idempotency
+keys have redacted diagnostics. Public errors are stable and do not expose SQL,
+filesystem, key-provider, or transport implementation messages. The crate
+forbids unsafe code.
+
+## Backup, restore, integrity, and close
+
+Backup and restore are explicit multi-stage operations. A backend captures a
+versioned member plan, verifies exact member digests, and finalizes only after
+all expected members are present. Restore uses isolated staging and cannot
+replace live state before complete verification. Relative member paths reject
+absolute paths, traversal, duplicates, and unsafe separators.
+
+Status and integrity inspection are passive. `close` is explicit and
+idempotent; once closed, an implementation rejects ordinary operations.
+Backend-specific durability fields are discriminated by `StorageBackend`:
+memory does not pretend to use WAL or a process writer lock, while writable
+SQLite status requires its governed lock, WAL, and busy-timeout contract.
+
+## Serialization
+
+The optional `serde` feature serializes passive identities, requests, records,
+receipts, status values, manifests, and coordination metadata. Deserialization
+revalidates invariants rather than trusting encoded revisions, digests, paths,
+cardinality, lifecycle transitions, or derived state.
+
+Serialization is not a database schema or wire-protocol authority. Backend
+schemas are private to their implementation, and cross-language runtime DTOs
+remain owned by `radroots_protocol`.
+
+## Features
+
+| Feature | Default | Contract |
+| --- | --- | --- |
+| `memory` | yes | Enables the deterministic bounded in-memory reference backend. It installs no task, clock, entropy source, filesystem, or global state. |
+| `serde` | yes | Adds validated serialization to passive storage values. It does not serialize backend handles, active secret capabilities, or transactions. |
+
+Features are additive. `--no-default-features` exposes the backend-neutral SPI
+without an implementation. `memory` and `serde` are supported independently,
+and `--all-features` enables both.
+
+## Intended consumers
+
+- `radroots_storage_sqlite` implements the contracts for native durable state.
+- `radroots_sync` coordinates bounded ingest, projection, enqueue, and delivery.
+- `radroots_sdk` composes storage with signing and transport implementations.
+- Service and application hosts may implement or inject a backend while
+ retaining ownership of paths, runtime, cancellation, clocks, and lifecycle.
+
+Applications that only need ordinary Radroots operations should normally use
+`radroots` or `radroots_sdk`. Implement this package directly when providing a
+storage backend or advanced host composition.
+
+## Copyright
+
+Except as otherwise noted, all files in the `radroots_storage` distribution are
+
+ Copyright (c) 2025 Tyson Lupul
+
+For information on usage and redistribution, and for a DISCLAIMER OF ALL
+WARRANTIES, see LICENSE included in the `radroots_storage` distribution.
diff --git a/crates/storage/examples/memory_status.rs b/crates/storage/examples/memory_status.rs
@@ -0,0 +1,17 @@
+use futures_executor::block_on;
+use radroots_storage::{
+ BackupSource,
+ event::SourceGeneration,
+ memory::MemoryStorage,
+ status::{ShutdownState, StorageBackend},
+};
+
+fn main() -> Result<(), radroots_storage::Error> {
+ let generation = SourceGeneration::new([1; 32])?;
+ let storage = MemoryStorage::new(generation);
+ let status = block_on(BackupSource::status(&storage))?;
+
+ assert_eq!(status.backend(), StorageBackend::Memory);
+ assert_eq!(status.shutdown(), ShutdownState::Open);
+ Ok(())
+}
diff --git a/crates/storage/src/lib.rs b/crates/storage/src/lib.rs
@@ -1,5 +1,4 @@
-//! Backend-neutral persistence abstractions for Radroots.
-
+#![doc = include_str!("../README.md")]
#![forbid(unsafe_code)]
pub mod atomic;
diff --git a/docs/api/README.md b/docs/api/README.md
@@ -42,3 +42,4 @@ expand a package beyond its charter.
| `radroots_nostr` | [`radroots_nostr.txt`](radroots_nostr.txt) | [release V1 specification](../specs/radroots_crates_release_v1.md) |
| `radroots_nostr_connect` | [`radroots_nostr_connect.txt`](radroots_nostr_connect.txt) | [release V1 specification](../specs/radroots_crates_release_v1.md) |
| `radroots_secrets` | [`radroots_secrets.txt`](radroots_secrets.txt) | [release V1 specification](../specs/radroots_crates_release_v1.md) |
+| `radroots_storage` | [`radroots_storage.txt`](radroots_storage.txt) | [release V1 specification](../specs/radroots_crates_release_v1.md) |
diff --git a/docs/api/radroots_storage.txt b/docs/api/radroots_storage.txt
@@ -0,0 +1,1108 @@
+pub mod radroots_storage
+pub mod radroots_storage::atomic
+pub enum radroots_storage::atomic::AtomicCommitDisposition
+pub radroots_storage::atomic::AtomicCommitDisposition::Committed
+pub radroots_storage::atomic::AtomicCommitDisposition::Replay
+pub enum radroots_storage::atomic::AtomicCommitOutcome
+pub radroots_storage::atomic::AtomicCommitOutcome::Delivered
+pub radroots_storage::atomic::AtomicCommitOutcome::Delivered::outbox: alloc::boxed::Box<radroots_storage::outbox::OutboxRecord>
+pub radroots_storage::atomic::AtomicCommitOutcome::Enqueued
+pub radroots_storage::atomic::AtomicCommitOutcome::Enqueued::admission: radroots_storage::event::AdmissionReceipt
+pub radroots_storage::atomic::AtomicCommitOutcome::Enqueued::journal: radroots_storage::journal::OperationRecord
+pub radroots_storage::atomic::AtomicCommitOutcome::Enqueued::outbox: alloc::boxed::Box<radroots_storage::outbox::OutboxRecord>
+pub radroots_storage::atomic::AtomicCommitOutcome::Ingested
+pub radroots_storage::atomic::AtomicCommitOutcome::Ingested::admission: radroots_storage::event::AdmissionReceipt
+pub radroots_storage::atomic::AtomicCommitOutcome::Ingested::projection: core::option::Option<alloc::boxed::Box<radroots_storage::projection::ProjectionStatus>>
+pub radroots_storage::atomic::AtomicCommitOutcome::Prepared
+pub radroots_storage::atomic::AtomicCommitOutcome::Prepared::journal: radroots_storage::journal::OperationRecord
+pub radroots_storage::atomic::AtomicCommitOutcome::Signed
+pub radroots_storage::atomic::AtomicCommitOutcome::Signed::event_id: radroots_event::id::EventId
+pub radroots_storage::atomic::AtomicCommitOutcome::Signed::journal: radroots_storage::journal::OperationRecord
+impl radroots_storage::atomic::AtomicCommitOutcome
+pub const fn radroots_storage::atomic::AtomicCommitOutcome::kind(&self) -> radroots_storage::atomic::AtomicWorkflowKind
+pub enum radroots_storage::atomic::AtomicWorkflow
+pub radroots_storage::atomic::AtomicWorkflow::Delivered(alloc::boxed::Box<radroots_storage::outbox::DeliveryAttemptEvidence>)
+pub radroots_storage::atomic::AtomicWorkflow::Enqueued(alloc::boxed::Box<radroots_storage::atomic::CommitEnqueued>)
+pub radroots_storage::atomic::AtomicWorkflow::Ingested(alloc::boxed::Box<radroots_storage::atomic::CommitIngested>)
+pub radroots_storage::atomic::AtomicWorkflow::Prepared(radroots_storage::journal::PrepareOperation)
+pub radroots_storage::atomic::AtomicWorkflow::Signed(alloc::boxed::Box<radroots_storage::atomic::CommitSigned>)
+impl radroots_storage::atomic::AtomicWorkflow
+pub const fn radroots_storage::atomic::AtomicWorkflow::kind(&self) -> radroots_storage::atomic::AtomicWorkflowKind
+pub enum radroots_storage::atomic::AtomicWorkflowKind
+pub radroots_storage::atomic::AtomicWorkflowKind::Delivered
+pub radroots_storage::atomic::AtomicWorkflowKind::Enqueued
+pub radroots_storage::atomic::AtomicWorkflowKind::Ingested
+pub radroots_storage::atomic::AtomicWorkflowKind::Prepared
+pub radroots_storage::atomic::AtomicWorkflowKind::Signed
+pub struct radroots_storage::atomic::AtomicCommit
+impl radroots_storage::atomic::AtomicCommit
+pub const fn radroots_storage::atomic::AtomicCommit::commit_id(&self) -> radroots_storage::atomic::AtomicCommitId
+pub const fn radroots_storage::atomic::AtomicCommit::digest(&self) -> radroots_storage::atomic::AtomicCommitDigest
+pub fn radroots_storage::atomic::AtomicCommit::new(radroots_storage::atomic::AtomicCommitId, radroots_storage::atomic::AtomicCommitDigest, u64, radroots_storage::atomic::AtomicWorkflow) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::atomic::AtomicCommit::requested_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::atomic::AtomicCommit::workflow(&self) -> &radroots_storage::atomic::AtomicWorkflow
+pub struct radroots_storage::atomic::AtomicCommitDigest(_)
+impl radroots_storage::atomic::AtomicCommitDigest
+pub const fn radroots_storage::atomic::AtomicCommitDigest::as_bytes(&self) -> &[u8; 32]
+pub const fn radroots_storage::atomic::AtomicCommitDigest::new([u8; 32]) -> Self
+pub struct radroots_storage::atomic::AtomicCommitId(_)
+impl radroots_storage::atomic::AtomicCommitId
+pub const fn radroots_storage::atomic::AtomicCommitId::as_bytes(&self) -> &[u8; 16]
+pub const fn radroots_storage::atomic::AtomicCommitId::new([u8; 16]) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::atomic::AtomicCommitReceipt
+impl radroots_storage::atomic::AtomicCommitReceipt
+pub const fn radroots_storage::atomic::AtomicCommitReceipt::commit_id(&self) -> radroots_storage::atomic::AtomicCommitId
+pub const fn radroots_storage::atomic::AtomicCommitReceipt::committed_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::atomic::AtomicCommitReceipt::digest(&self) -> radroots_storage::atomic::AtomicCommitDigest
+pub const fn radroots_storage::atomic::AtomicCommitReceipt::disposition(&self) -> radroots_storage::atomic::AtomicCommitDisposition
+pub fn radroots_storage::atomic::AtomicCommitReceipt::new(&radroots_storage::atomic::AtomicCommit, radroots_storage::atomic::AtomicCommitDisposition, u64, radroots_storage::atomic::AtomicCommitOutcome) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::atomic::AtomicCommitReceipt::outcome(&self) -> &radroots_storage::atomic::AtomicCommitOutcome
+pub struct radroots_storage::atomic::CommitEnqueued
+impl radroots_storage::atomic::CommitEnqueued
+pub const fn radroots_storage::atomic::CommitEnqueued::admission(&self) -> &radroots_storage::event::EventAdmission
+pub const fn radroots_storage::atomic::CommitEnqueued::committed_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::atomic::CommitEnqueued::expected_revision(&self) -> radroots_storage::journal::JournalRevision
+pub const fn radroots_storage::atomic::CommitEnqueued::instance_id(&self) -> radroots_storage::journal::OperationInstanceId
+pub fn radroots_storage::atomic::CommitEnqueued::new(radroots_storage::journal::OperationInstanceId, radroots_storage::journal::JournalRevision, radroots_storage::event::EventAdmission, radroots_storage::outbox::EnqueueOutboxItem, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::atomic::CommitEnqueued::outbox(&self) -> &radroots_storage::outbox::EnqueueOutboxItem
+pub struct radroots_storage::atomic::CommitIngested
+impl radroots_storage::atomic::CommitIngested
+pub const fn radroots_storage::atomic::CommitIngested::admission(&self) -> &radroots_storage::event::EventAdmission
+pub const fn radroots_storage::atomic::CommitIngested::new(radroots_storage::event::EventAdmission, core::option::Option<radroots_storage::projection::ProjectionCheckpoint>) -> Self
+pub const fn radroots_storage::atomic::CommitIngested::projection(&self) -> core::option::Option<&radroots_storage::projection::ProjectionCheckpoint>
+pub struct radroots_storage::atomic::CommitSigned
+impl radroots_storage::atomic::CommitSigned
+pub const fn radroots_storage::atomic::CommitSigned::event(&self) -> &radroots_event::draft::SignedEvent
+pub const fn radroots_storage::atomic::CommitSigned::expected_revision(&self) -> radroots_storage::journal::JournalRevision
+pub const fn radroots_storage::atomic::CommitSigned::instance_id(&self) -> radroots_storage::journal::OperationInstanceId
+pub fn radroots_storage::atomic::CommitSigned::new(radroots_storage::journal::OperationInstanceId, radroots_storage::journal::JournalRevision, radroots_event::draft::SignedEvent) -> Self
+pub trait radroots_storage::atomic::AtomicStorage: core::marker::Send + core::marker::Sync
+pub fn radroots_storage::atomic::AtomicStorage::commit(&self, radroots_storage::atomic::AtomicCommit) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::atomic::AtomicCommitReceipt, radroots_storage::Error>>
+pub fn radroots_storage::atomic::AtomicStorage::receipt(&self, radroots_storage::atomic::AtomicCommitId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::atomic::AtomicCommitReceipt>, radroots_storage::Error>>
+impl radroots_storage::atomic::AtomicStorage for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::commit(&self, radroots_storage::atomic::AtomicCommit) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::atomic::AtomicCommitReceipt, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::receipt(&self, radroots_storage::atomic::AtomicCommitId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::atomic::AtomicCommitReceipt>, radroots_storage::Error>>
+pub mod radroots_storage::backup
+pub enum radroots_storage::backup::BackupMemberKind
+pub radroots_storage::backup::BackupMemberKind::Metadata
+pub radroots_storage::backup::BackupMemberKind::Protected
+pub radroots_storage::backup::BackupMemberKind::Runtime
+pub enum radroots_storage::backup::BackupSecretPolicy
+pub radroots_storage::backup::BackupSecretPolicy::ExcludeProtectedStorage
+pub radroots_storage::backup::BackupSecretPolicy::IncludeProtectedStorage
+pub enum radroots_storage::backup::BackupStage
+pub radroots_storage::backup::BackupStage::Captured
+pub radroots_storage::backup::BackupStage::Failed
+pub radroots_storage::backup::BackupStage::Finalized
+pub radroots_storage::backup::BackupStage::Planned
+pub radroots_storage::backup::BackupStage::Verified
+pub enum radroots_storage::backup::BackupTransition
+pub radroots_storage::backup::BackupTransition::Captured(radroots_storage::backup::BackupManifest)
+pub radroots_storage::backup::BackupTransition::Fail
+pub radroots_storage::backup::BackupTransition::Finalize
+pub radroots_storage::backup::BackupTransition::Verified
+pub enum radroots_storage::backup::MemberVerification
+pub radroots_storage::backup::MemberVerification::HashMismatch
+pub radroots_storage::backup::MemberVerification::LengthMismatch
+pub radroots_storage::backup::MemberVerification::Missing
+pub radroots_storage::backup::MemberVerification::Unexpected
+pub radroots_storage::backup::MemberVerification::UnsafePath
+pub radroots_storage::backup::MemberVerification::Verified
+pub enum radroots_storage::backup::RestoreStage
+pub radroots_storage::backup::RestoreStage::Failed
+pub radroots_storage::backup::RestoreStage::Finalized
+pub radroots_storage::backup::RestoreStage::Finalizing
+pub radroots_storage::backup::RestoreStage::Staging
+pub radroots_storage::backup::RestoreStage::Verifying
+pub enum radroots_storage::backup::RestoreTransition
+pub radroots_storage::backup::RestoreTransition::Fail
+pub radroots_storage::backup::RestoreTransition::Finalize
+pub radroots_storage::backup::RestoreTransition::Staged
+pub radroots_storage::backup::RestoreTransition::Verified(alloc::vec::Vec<radroots_storage::backup::RestoreMemberStatus>)
+pub struct radroots_storage::backup::BackupFormatVersion(_)
+impl radroots_storage::backup::BackupFormatVersion
+pub const radroots_storage::backup::BackupFormatVersion::V1: Self
+pub const fn radroots_storage::backup::BackupFormatVersion::get(self) -> u16
+pub const fn radroots_storage::backup::BackupFormatVersion::new(u16) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::backup::BackupId(_)
+impl radroots_storage::backup::BackupId
+pub const fn radroots_storage::backup::BackupId::as_bytes(&self) -> &[u8; 16]
+pub const fn radroots_storage::backup::BackupId::new([u8; 16]) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::backup::BackupManifest
+impl radroots_storage::backup::BackupManifest
+pub const fn radroots_storage::backup::BackupManifest::backup_id(&self) -> radroots_storage::backup::BackupId
+pub const fn radroots_storage::backup::BackupManifest::created_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::backup::BackupManifest::format_version(&self) -> radroots_storage::backup::BackupFormatVersion
+pub fn radroots_storage::backup::BackupManifest::member(&self, &str) -> core::option::Option<&radroots_storage::backup::BackupMember>
+pub fn radroots_storage::backup::BackupManifest::members(&self) -> &[radroots_storage::backup::BackupMember]
+pub fn radroots_storage::backup::BackupManifest::new(radroots_storage::backup::BackupFormatVersion, radroots_storage::backup::BackupId, u64, radroots_storage::backup::BackupSecretPolicy, alloc::vec::Vec<radroots_storage::backup::BackupMember>) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::backup::BackupManifest::secret_policy(&self) -> radroots_storage::backup::BackupSecretPolicy
+pub const fn radroots_storage::backup::BackupManifest::total_bytes(&self) -> u64
+pub struct radroots_storage::backup::BackupMember
+impl radroots_storage::backup::BackupMember
+pub const fn radroots_storage::backup::BackupMember::byte_length(&self) -> u64
+pub const fn radroots_storage::backup::BackupMember::kind(&self) -> radroots_storage::backup::BackupMemberKind
+pub fn radroots_storage::backup::BackupMember::new(impl core::convert::Into<alloc::string::String>, radroots_storage::backup::BackupMemberKind, u64, radroots_storage::backup::MemberDigest) -> core::result::Result<Self, radroots_storage::Error>
+pub fn radroots_storage::backup::BackupMember::relative_path(&self) -> &str
+pub const fn radroots_storage::backup::BackupMember::sha256(&self) -> radroots_storage::backup::MemberDigest
+pub struct radroots_storage::backup::BackupOperation
+impl radroots_storage::backup::BackupOperation
+pub const fn radroots_storage::backup::BackupOperation::manifest(&self) -> core::option::Option<&radroots_storage::backup::BackupManifest>
+pub const fn radroots_storage::backup::BackupOperation::plan(&self) -> &radroots_storage::backup::BackupPlan
+pub const fn radroots_storage::backup::BackupOperation::planned(radroots_storage::backup::BackupPlan) -> Self
+pub const fn radroots_storage::backup::BackupOperation::revision(&self) -> radroots_storage::backup::ReliabilityRevision
+pub const fn radroots_storage::backup::BackupOperation::stage(&self) -> radroots_storage::backup::BackupStage
+pub fn radroots_storage::backup::BackupOperation::transition(&self, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::BackupTransition, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::backup::BackupOperation::updated_at_unix_ms(&self) -> u64
+pub struct radroots_storage::backup::BackupPlan
+impl radroots_storage::backup::BackupPlan
+pub const fn radroots_storage::backup::BackupPlan::backup_id(&self) -> radroots_storage::backup::BackupId
+pub const fn radroots_storage::backup::BackupPlan::format_version(&self) -> radroots_storage::backup::BackupFormatVersion
+pub const fn radroots_storage::backup::BackupPlan::new(radroots_storage::backup::BackupId, radroots_storage::backup::BackupFormatVersion, radroots_storage::backup::BackupSecretPolicy, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::backup::BackupPlan::requested_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::backup::BackupPlan::secret_policy(&self) -> radroots_storage::backup::BackupSecretPolicy
+pub struct radroots_storage::backup::MemberDigest(_)
+impl radroots_storage::backup::MemberDigest
+pub const fn radroots_storage::backup::MemberDigest::as_bytes(&self) -> &[u8; 32]
+pub const fn radroots_storage::backup::MemberDigest::new([u8; 32]) -> Self
+pub struct radroots_storage::backup::ReliabilityRevision(_)
+impl radroots_storage::backup::ReliabilityRevision
+pub const radroots_storage::backup::ReliabilityRevision::INITIAL: Self
+pub const fn radroots_storage::backup::ReliabilityRevision::get(self) -> u64
+pub const fn radroots_storage::backup::ReliabilityRevision::new(u64) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::backup::RestoreMemberStatus
+impl radroots_storage::backup::RestoreMemberStatus
+pub fn radroots_storage::backup::RestoreMemberStatus::new(impl core::convert::Into<alloc::string::String>, radroots_storage::backup::MemberVerification) -> core::result::Result<Self, radroots_storage::Error>
+pub fn radroots_storage::backup::RestoreMemberStatus::relative_path(&self) -> &str
+pub const fn radroots_storage::backup::RestoreMemberStatus::verification(&self) -> radroots_storage::backup::MemberVerification
+pub struct radroots_storage::backup::RestoreOperation
+impl radroots_storage::backup::RestoreOperation
+pub fn radroots_storage::backup::RestoreOperation::member_status(&self) -> &[radroots_storage::backup::RestoreMemberStatus]
+pub const fn radroots_storage::backup::RestoreOperation::plan(&self) -> &radroots_storage::backup::RestorePlan
+pub const fn radroots_storage::backup::RestoreOperation::revision(&self) -> radroots_storage::backup::ReliabilityRevision
+pub const fn radroots_storage::backup::RestoreOperation::stage(&self) -> radroots_storage::backup::RestoreStage
+pub const fn radroots_storage::backup::RestoreOperation::staging(radroots_storage::backup::RestorePlan) -> Self
+pub fn radroots_storage::backup::RestoreOperation::transition(&self, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::RestoreTransition, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::backup::RestorePlan
+impl radroots_storage::backup::RestorePlan
+pub const fn radroots_storage::backup::RestorePlan::accepted_secret_policy(&self) -> radroots_storage::backup::BackupSecretPolicy
+pub const fn radroots_storage::backup::RestorePlan::manifest(&self) -> &radroots_storage::backup::BackupManifest
+pub fn radroots_storage::backup::RestorePlan::new(radroots_storage::backup::BackupManifest, radroots_storage::backup::BackupSecretPolicy, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::backup::RestorePlan::requested_at_unix_ms(&self) -> u64
+pub const radroots_storage::backup::BACKUP_MEMBER_MAX: usize
+pub const radroots_storage::backup::BACKUP_MEMBER_PATH_MAX_BYTES: usize
+pub trait radroots_storage::backup::StorageReliability: core::marker::Send + core::marker::Sync
+pub fn radroots_storage::backup::StorageReliability::begin_backup(&self, radroots_storage::backup::BackupPlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>>
+pub fn radroots_storage::backup::StorageReliability::begin_restore(&self, radroots_storage::backup::RestorePlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>>
+pub fn radroots_storage::backup::StorageReliability::close(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>>
+pub fn radroots_storage::backup::StorageReliability::integrity(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::IntegrityStatus, radroots_storage::Error>>
+pub fn radroots_storage::backup::StorageReliability::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>>
+pub fn radroots_storage::backup::StorageReliability::transition_backup(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::BackupTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>>
+pub fn radroots_storage::backup::StorageReliability::transition_restore(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::RestoreTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>>
+impl radroots_storage::backup::StorageReliability for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::begin_backup(&self, radroots_storage::backup::BackupPlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::begin_restore(&self, radroots_storage::backup::RestorePlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::close(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::integrity(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::IntegrityStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::transition_backup(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::BackupTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::transition_restore(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::RestoreTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>>
+pub mod radroots_storage::event
+pub enum radroots_storage::event::AdmissionDisposition
+pub radroots_storage::event::AdmissionDisposition::Advanced
+pub radroots_storage::event::AdmissionDisposition::Duplicate
+pub radroots_storage::event::AdmissionDisposition::Inserted
+pub enum radroots_storage::event::AdmissionStage
+pub radroots_storage::event::AdmissionStage::Raw
+pub radroots_storage::event::AdmissionStage::Verified
+pub radroots_storage::event::AdmissionStage::Visible
+pub struct radroots_storage::event::AdmissionReceipt
+impl radroots_storage::event::AdmissionReceipt
+pub const fn radroots_storage::event::AdmissionReceipt::disposition(&self) -> radroots_storage::event::AdmissionDisposition
+pub const fn radroots_storage::event::AdmissionReceipt::event_id(&self) -> &radroots_event::id::EventId
+pub const fn radroots_storage::event::AdmissionReceipt::new(radroots_event::id::EventId, radroots_storage::event::EventPosition, radroots_storage::event::AdmissionStage, radroots_storage::event::AdmissionDisposition) -> Self
+pub const fn radroots_storage::event::AdmissionReceipt::position(&self) -> radroots_storage::event::EventPosition
+pub const fn radroots_storage::event::AdmissionReceipt::stage(&self) -> radroots_storage::event::AdmissionStage
+pub struct radroots_storage::event::EventAdmission
+impl radroots_storage::event::EventAdmission
+pub const fn radroots_storage::event::EventAdmission::event(&self) -> &radroots_event::draft::SignedEvent
+pub fn radroots_storage::event::EventAdmission::event_id(&self) -> &radroots_event::id::EventId
+pub const fn radroots_storage::event::EventAdmission::provenance(&self) -> &radroots_transport::source::EventProvenance
+pub const fn radroots_storage::event::EventAdmission::raw(radroots_transport::source::ObservedEvent) -> Self
+pub const fn radroots_storage::event::EventAdmission::stage(&self) -> radroots_storage::event::AdmissionStage
+pub fn radroots_storage::event::EventAdmission::verified(radroots_transport::source::ObservedEvent, radroots_event::verification::SignatureVerifiedEvent) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::event::EventAdmission::verified_event(&self) -> core::option::Option<&radroots_event::verification::SignatureVerifiedEvent>
+pub fn radroots_storage::event::EventAdmission::visible(radroots_transport::source::ObservedEvent, radroots_event::admission::VisibleEvent) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::event::EventAdmission::visible_event(&self) -> core::option::Option<&radroots_event::admission::VisibleEvent>
+pub struct radroots_storage::event::EventPage<T>
+impl<T> radroots_storage::event::EventPage<T>
+pub const fn radroots_storage::event::EventPage<T>::generation(&self) -> radroots_storage::event::SourceGeneration
+pub fn radroots_storage::event::EventPage<T>::items(&self) -> &[T]
+pub fn radroots_storage::event::EventPage<T>::new(radroots_storage::event::SourceGeneration, alloc::vec::Vec<T>, core::option::Option<radroots_storage::event::EventCursor>, radroots_storage::event::EventQueryBounds) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::event::EventPage<T>::next_cursor(&self) -> core::option::Option<radroots_storage::event::EventCursor>
+pub struct radroots_storage::event::EventPosition
+impl radroots_storage::event::EventPosition
+pub const fn radroots_storage::event::EventPosition::generation(self) -> radroots_storage::event::SourceGeneration
+pub const fn radroots_storage::event::EventPosition::new(radroots_storage::event::SourceGeneration, radroots_storage::event::EventSequence) -> Self
+pub const fn radroots_storage::event::EventPosition::sequence(self) -> radroots_storage::event::EventSequence
+pub struct radroots_storage::event::EventQuery
+impl radroots_storage::event::EventQuery
+pub const fn radroots_storage::event::EventQuery::all(radroots_storage::event::EventQueryBounds) -> Self
+pub const fn radroots_storage::event::EventQuery::bounds(&self) -> radroots_storage::event::EventQueryBounds
+pub fn radroots_storage::event::EventQuery::event_ids(&self) -> &[radroots_event::id::EventId]
+pub fn radroots_storage::event::EventQuery::for_ids(radroots_storage::event::EventQueryBounds, alloc::vec::Vec<radroots_event::id::EventId>) -> core::result::Result<Self, radroots_storage::Error>
+pub fn radroots_storage::event::EventQuery::selects(&self, &radroots_event::id::EventId) -> bool
+pub struct radroots_storage::event::EventQueryBounds
+impl radroots_storage::event::EventQueryBounds
+pub const fn radroots_storage::event::EventQueryBounds::after(self, radroots_storage::event::EventCursor) -> Self
+pub const fn radroots_storage::event::EventQueryBounds::cursor(self) -> core::option::Option<radroots_storage::event::EventCursor>
+pub const fn radroots_storage::event::EventQueryBounds::first(u16) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::event::EventQueryBounds::limit(self) -> u16
+pub struct radroots_storage::event::EventSequence(_)
+impl radroots_storage::event::EventSequence
+pub const fn radroots_storage::event::EventSequence::get(self) -> u64
+pub const fn radroots_storage::event::EventSequence::new(u64) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::event::SourceGeneration(_)
+impl radroots_storage::event::SourceGeneration
+pub const fn radroots_storage::event::SourceGeneration::as_bytes(&self) -> &[u8; 32]
+pub const fn radroots_storage::event::SourceGeneration::new([u8; 32]) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::event::StoredEventProvenance
+impl radroots_storage::event::StoredEventProvenance
+pub const fn radroots_storage::event::StoredEventProvenance::new(radroots_storage::event::EventPosition, radroots_transport::source::EventProvenance) -> Self
+pub const fn radroots_storage::event::StoredEventProvenance::position(&self) -> radroots_storage::event::EventPosition
+pub const fn radroots_storage::event::StoredEventProvenance::provenance(&self) -> &radroots_transport::source::EventProvenance
+pub struct radroots_storage::event::StoredRawEvent
+impl radroots_storage::event::StoredRawEvent
+pub const fn radroots_storage::event::StoredRawEvent::event(&self) -> &radroots_event::draft::SignedEvent
+pub const fn radroots_storage::event::StoredRawEvent::new(radroots_storage::event::EventPosition, radroots_event::draft::SignedEvent, radroots_storage::event::AdmissionStage) -> Self
+pub const fn radroots_storage::event::StoredRawEvent::position(&self) -> radroots_storage::event::EventPosition
+pub const fn radroots_storage::event::StoredRawEvent::stage(&self) -> radroots_storage::event::AdmissionStage
+pub struct radroots_storage::event::StoredVerifiedEvent
+impl radroots_storage::event::StoredVerifiedEvent
+pub const fn radroots_storage::event::StoredVerifiedEvent::event(&self) -> &radroots_event::verification::SignatureVerifiedEvent
+pub const fn radroots_storage::event::StoredVerifiedEvent::new(radroots_storage::event::EventPosition, radroots_event::verification::SignatureVerifiedEvent) -> Self
+pub const fn radroots_storage::event::StoredVerifiedEvent::position(&self) -> radroots_storage::event::EventPosition
+pub struct radroots_storage::event::StoredVisibleEvent
+impl radroots_storage::event::StoredVisibleEvent
+pub const fn radroots_storage::event::StoredVisibleEvent::event(&self) -> &radroots_event::admission::VisibleEvent
+pub const fn radroots_storage::event::StoredVisibleEvent::new(radroots_storage::event::EventPosition, radroots_event::admission::VisibleEvent) -> Self
+pub const fn radroots_storage::event::StoredVisibleEvent::position(&self) -> radroots_storage::event::EventPosition
+pub const radroots_storage::event::EVENT_QUERY_ID_MAX: usize
+pub const radroots_storage::event::EVENT_QUERY_LIMIT_MAX: u16
+pub trait radroots_storage::event::EventStore: core::marker::Send + core::marker::Sync
+pub fn radroots_storage::event::EventStore::admit(&self, radroots_storage::event::EventAdmission) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::AdmissionReceipt, radroots_storage::Error>>
+pub fn radroots_storage::event::EventStore::query_provenance(&self, radroots_event::id::EventId, radroots_storage::event::EventQueryBounds) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredEventProvenance>, radroots_storage::Error>>
+pub fn radroots_storage::event::EventStore::query_raw(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredRawEvent>, radroots_storage::Error>>
+pub fn radroots_storage::event::EventStore::query_verified(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVerifiedEvent>, radroots_storage::Error>>
+pub fn radroots_storage::event::EventStore::query_visible(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVisibleEvent>, radroots_storage::Error>>
+pub fn radroots_storage::event::EventStore::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::EventStoreStatus, radroots_storage::Error>>
+impl radroots_storage::event::EventStore for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::admit(&self, radroots_storage::event::EventAdmission) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::AdmissionReceipt, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::query_provenance(&self, radroots_event::id::EventId, radroots_storage::event::EventQueryBounds) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredEventProvenance>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::query_raw(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredRawEvent>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::query_verified(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVerifiedEvent>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::query_visible(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVisibleEvent>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::EventStoreStatus, radroots_storage::Error>>
+pub type radroots_storage::event::EventCursor = radroots_storage::event::EventPosition
+pub mod radroots_storage::journal
+pub enum radroots_storage::journal::CancellationState
+pub radroots_storage::journal::CancellationState::CancelledBeforeCommit
+pub radroots_storage::journal::CancellationState::NotRequested
+pub radroots_storage::journal::CancellationState::ObservedAfterCommit
+pub enum radroots_storage::journal::JournalStage
+pub radroots_storage::journal::JournalStage::Committed
+pub radroots_storage::journal::JournalStage::Prepared
+pub radroots_storage::journal::JournalStage::Recoverable
+pub radroots_storage::journal::JournalStage::Signed
+pub enum radroots_storage::journal::JournalState
+pub radroots_storage::journal::JournalState::Committed
+pub radroots_storage::journal::JournalState::Committed::committed_at_unix_ms: u64
+pub radroots_storage::journal::JournalState::Committed::event_id: radroots_event::id::EventId
+pub radroots_storage::journal::JournalState::Prepared
+pub radroots_storage::journal::JournalState::Recoverable(radroots_storage::journal::RecoveryRecord)
+pub radroots_storage::journal::JournalState::Signed
+pub radroots_storage::journal::JournalState::Signed::event_id: radroots_event::id::EventId
+impl radroots_storage::journal::JournalState
+pub const fn radroots_storage::journal::JournalState::stage(&self) -> radroots_storage::journal::JournalStage
+pub enum radroots_storage::journal::PrepareDisposition
+pub radroots_storage::journal::PrepareDisposition::Created
+pub radroots_storage::journal::PrepareDisposition::Replay
+pub enum radroots_storage::journal::RecoveryPoint
+pub radroots_storage::journal::RecoveryPoint::Prepared
+pub radroots_storage::journal::RecoveryPoint::Signed
+pub radroots_storage::journal::RecoveryPoint::Signed::event_id: radroots_event::id::EventId
+pub enum radroots_storage::journal::RecoveryReason
+pub radroots_storage::journal::RecoveryReason::CancelledBeforeCommit
+pub radroots_storage::journal::RecoveryReason::DeadlineExceeded
+pub radroots_storage::journal::RecoveryReason::Interrupted
+pub radroots_storage::journal::RecoveryReason::SignerUnavailable
+pub radroots_storage::journal::RecoveryReason::StorageUnavailable
+pub radroots_storage::journal::RecoveryReason::TransportUnavailable
+pub struct radroots_storage::journal::IdempotencyDigest(_)
+impl radroots_storage::journal::IdempotencyDigest
+pub const fn radroots_storage::journal::IdempotencyDigest::as_bytes(&self) -> &[u8; 32]
+pub const fn radroots_storage::journal::IdempotencyDigest::new([u8; 32]) -> Self
+pub struct radroots_storage::journal::IdempotencyKey(_)
+impl radroots_storage::journal::IdempotencyKey
+pub fn radroots_storage::journal::IdempotencyKey::as_str(&self) -> &str
+pub fn radroots_storage::journal::IdempotencyKey::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_storage::Error>
+impl core::fmt::Debug for radroots_storage::journal::IdempotencyKey
+pub fn radroots_storage::journal::IdempotencyKey::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl serde_core::ser::Serialize for radroots_storage::journal::IdempotencyKey
+pub fn radroots_storage::journal::IdempotencyKey::serialize<S>(&self, S) -> core::result::Result<<S as serde_core::ser::Serializer>::Ok, <S as serde_core::ser::Serializer>::Error> where S: serde_core::ser::Serializer
+impl<'de> serde_core::de::Deserialize<'de> for radroots_storage::journal::IdempotencyKey
+pub fn radroots_storage::journal::IdempotencyKey::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_storage::journal::JournalRevision(_)
+impl radroots_storage::journal::JournalRevision
+pub const radroots_storage::journal::JournalRevision::INITIAL: Self
+pub const fn radroots_storage::journal::JournalRevision::get(self) -> u64
+pub const fn radroots_storage::journal::JournalRevision::new(u64) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::journal::JournalTransition
+impl radroots_storage::journal::JournalTransition
+pub const fn radroots_storage::journal::JournalTransition::cancelled(radroots_storage::journal::OperationInstanceId, radroots_storage::journal::JournalRevision, u64) -> Self
+pub const fn radroots_storage::journal::JournalTransition::committed(radroots_storage::journal::OperationInstanceId, radroots_storage::journal::JournalRevision, radroots_event::id::EventId, u64) -> Self
+pub const fn radroots_storage::journal::JournalTransition::instance_id(&self) -> radroots_storage::journal::OperationInstanceId
+pub const fn radroots_storage::journal::JournalTransition::recoverable(radroots_storage::journal::OperationInstanceId, radroots_storage::journal::JournalRevision, radroots_storage::journal::RecoveryRecord) -> Self
+pub const fn radroots_storage::journal::JournalTransition::resume(radroots_storage::journal::OperationInstanceId, radroots_storage::journal::JournalRevision) -> Self
+pub const fn radroots_storage::journal::JournalTransition::signed(radroots_storage::journal::OperationInstanceId, radroots_storage::journal::JournalRevision, radroots_event::id::EventId) -> Self
+pub struct radroots_storage::journal::OperationInstanceId(_)
+impl radroots_storage::journal::OperationInstanceId
+pub const fn radroots_storage::journal::OperationInstanceId::as_bytes(&self) -> &[u8; 16]
+pub const fn radroots_storage::journal::OperationInstanceId::new([u8; 16]) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::journal::OperationRecord
+impl radroots_storage::journal::OperationRecord
+pub const fn radroots_storage::journal::OperationRecord::cancellation(&self) -> radroots_storage::journal::CancellationState
+pub fn radroots_storage::journal::OperationRecord::from_parts(radroots_storage::journal::OperationInstanceId, radroots_protocol::runtime::v1::OperationId, radroots_storage::journal::IdempotencyKey, radroots_storage::journal::IdempotencyDigest, u64, radroots_storage::journal::JournalRevision, radroots_storage::journal::JournalState, radroots_storage::journal::CancellationState) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::journal::OperationRecord::idempotency_key(&self) -> &radroots_storage::journal::IdempotencyKey
+pub const fn radroots_storage::journal::OperationRecord::input_digest(&self) -> radroots_storage::journal::IdempotencyDigest
+pub const fn radroots_storage::journal::OperationRecord::instance_id(&self) -> radroots_storage::journal::OperationInstanceId
+pub const fn radroots_storage::journal::OperationRecord::operation_id(&self) -> radroots_protocol::runtime::v1::OperationId
+pub const fn radroots_storage::journal::OperationRecord::prepared_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::journal::OperationRecord::revision(&self) -> radroots_storage::journal::JournalRevision
+pub const fn radroots_storage::journal::OperationRecord::state(&self) -> &radroots_storage::journal::JournalState
+pub fn radroots_storage::journal::OperationRecord::transition(&self, &radroots_storage::journal::JournalTransition) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::journal::PrepareOperation
+impl radroots_storage::journal::PrepareOperation
+pub const fn radroots_storage::journal::PrepareOperation::idempotency_key(&self) -> &radroots_storage::journal::IdempotencyKey
+pub const fn radroots_storage::journal::PrepareOperation::input_digest(&self) -> radroots_storage::journal::IdempotencyDigest
+pub const fn radroots_storage::journal::PrepareOperation::instance_id(&self) -> radroots_storage::journal::OperationInstanceId
+pub fn radroots_storage::journal::PrepareOperation::into_record(self) -> core::result::Result<radroots_storage::journal::OperationRecord, radroots_storage::Error>
+pub fn radroots_storage::journal::PrepareOperation::new(radroots_storage::journal::OperationInstanceId, radroots_protocol::runtime::v1::OperationId, radroots_storage::journal::IdempotencyKey, radroots_storage::journal::IdempotencyDigest, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::journal::PrepareOperation::operation_id(&self) -> radroots_protocol::runtime::v1::OperationId
+pub struct radroots_storage::journal::PrepareReceipt
+impl radroots_storage::journal::PrepareReceipt
+pub const fn radroots_storage::journal::PrepareReceipt::disposition(&self) -> radroots_storage::journal::PrepareDisposition
+pub const fn radroots_storage::journal::PrepareReceipt::new(radroots_storage::journal::PrepareDisposition, radroots_storage::journal::OperationRecord) -> Self
+pub const fn radroots_storage::journal::PrepareReceipt::record(&self) -> &radroots_storage::journal::OperationRecord
+pub struct radroots_storage::journal::RecoveryRecord
+impl radroots_storage::journal::RecoveryRecord
+pub const fn radroots_storage::journal::RecoveryRecord::attempt(&self) -> u32
+pub const fn radroots_storage::journal::RecoveryRecord::new(radroots_storage::journal::RecoveryPoint, radroots_storage::journal::RecoveryReason, u32, core::option::Option<u64>) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::journal::RecoveryRecord::point(&self) -> &radroots_storage::journal::RecoveryPoint
+pub const fn radroots_storage::journal::RecoveryRecord::reason(&self) -> radroots_storage::journal::RecoveryReason
+pub const fn radroots_storage::journal::RecoveryRecord::retry_not_before_unix_ms(&self) -> core::option::Option<u64>
+pub const radroots_storage::journal::IDEMPOTENCY_KEY_MAX_BYTES: usize
+pub const radroots_storage::journal::RECOVERABLE_QUERY_LIMIT_MAX: u16
+pub trait radroots_storage::journal::Journal: core::marker::Send + core::marker::Sync
+pub fn radroots_storage::journal::Journal::by_idempotency_key(&self, radroots_protocol::runtime::v1::OperationId, radroots_storage::journal::IdempotencyKey) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::journal::Journal::operation(&self, radroots_storage::journal::OperationInstanceId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::journal::Journal::prepare(&self, radroots_storage::journal::PrepareOperation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::PrepareReceipt, radroots_storage::Error>>
+pub fn radroots_storage::journal::Journal::recoverable(&self, u16) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::journal::Journal::transition(&self, radroots_storage::journal::JournalTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::OperationRecord, radroots_storage::Error>>
+impl radroots_storage::journal::Journal for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::by_idempotency_key(&self, radroots_protocol::runtime::v1::OperationId, radroots_storage::journal::IdempotencyKey) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::operation(&self, radroots_storage::journal::OperationInstanceId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::prepare(&self, radroots_storage::journal::PrepareOperation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::PrepareReceipt, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::recoverable(&self, u16) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::transition(&self, radroots_storage::journal::JournalTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::OperationRecord, radroots_storage::Error>>
+pub mod radroots_storage::memory
+pub struct radroots_storage::memory::MemoryStorage
+impl radroots_storage::memory::MemoryStorage
+pub const fn radroots_storage::memory::MemoryStorage::generation(&self) -> radroots_storage::event::SourceGeneration
+pub const fn radroots_storage::memory::MemoryStorage::new(radroots_storage::event::SourceGeneration) -> Self
+impl core::default::Default for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::default() -> Self
+impl radroots_storage::atomic::AtomicStorage for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::commit(&self, radroots_storage::atomic::AtomicCommit) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::atomic::AtomicCommitReceipt, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::receipt(&self, radroots_storage::atomic::AtomicCommitId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::atomic::AtomicCommitReceipt>, radroots_storage::Error>>
+impl radroots_storage::backup::StorageReliability for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::begin_backup(&self, radroots_storage::backup::BackupPlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::begin_restore(&self, radroots_storage::backup::RestorePlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::close(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::integrity(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::IntegrityStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::transition_backup(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::BackupTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::transition_restore(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::RestoreTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>>
+impl radroots_storage::event::EventStore for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::admit(&self, radroots_storage::event::EventAdmission) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::AdmissionReceipt, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::query_provenance(&self, radroots_event::id::EventId, radroots_storage::event::EventQueryBounds) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredEventProvenance>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::query_raw(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredRawEvent>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::query_verified(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVerifiedEvent>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::query_visible(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVisibleEvent>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::EventStoreStatus, radroots_storage::Error>>
+impl radroots_storage::journal::Journal for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::by_idempotency_key(&self, radroots_protocol::runtime::v1::OperationId, radroots_storage::journal::IdempotencyKey) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::operation(&self, radroots_storage::journal::OperationInstanceId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::prepare(&self, radroots_storage::journal::PrepareOperation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::PrepareReceipt, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::recoverable(&self, u16) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::transition(&self, radroots_storage::journal::JournalTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::OperationRecord, radroots_storage::Error>>
+impl radroots_storage::outbox::Outbox for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::claim(&self, radroots_storage::outbox::ClaimOutboxItems) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::outbox::ClaimedOutboxItem>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::enqueue(&self, radroots_storage::outbox::EnqueueOutboxItem) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::EnqueueReceipt, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::item(&self, radroots_storage::outbox::OutboxItemId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::outbox::OutboxRecord>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::record_attempt(&self, radroots_storage::outbox::DeliveryAttemptEvidence) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::release(&self, radroots_storage::outbox::OutboxItemId, radroots_storage::outbox::LeaseId, radroots_storage::outbox::OutboxRevision, u64, core::option::Option<u64>) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxStatus, radroots_storage::Error>>
+impl radroots_storage::private_artifact::PrivateArtifactStore for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::expired(&self, u64, u16) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::private_artifact::PrivateArtifactMetadata>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::mark_expired(&self, radroots_storage::private_artifact::PrivateArtifactId, radroots_storage::private_artifact::PrivateArtifactRevision, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::metadata(&self, radroots_storage::private_artifact::PrivateArtifactId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::private_artifact::PrivateArtifactMetadata>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::put_metadata(&self, radroots_storage::private_artifact::PrivateArtifactMetadata) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::tombstone(&self, radroots_storage::private_artifact::PrivateArtifactId, radroots_storage::private_artifact::PrivateArtifactRevision, u64, radroots_storage::private_artifact::DeletionReason) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_storage::Error>>
+impl radroots_storage::projection::ProjectionStore for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::checkpoint(&self, radroots_storage::projection::ProjectionCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::event_index_checkpoint(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexCheckpoint>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::event_index_manifest(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexManifest>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::invalidate(&self, radroots_storage::projection::ProjectionInvalidation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::put_event_index_checkpoint(&self, radroots_storage::projection::EventIndexCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::put_event_index_manifest(&self, radroots_storage::projection::EventIndexManifest) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::request_rebuild(&self, radroots_storage::projection::RebuildTicket) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self, radroots_storage::projection::ProjectionId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::ProjectionStatus>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::transition_rebuild(&self, radroots_storage::projection::RebuildTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>>
+pub mod radroots_storage::outbox
+pub enum radroots_storage::outbox::EnqueueDisposition
+pub radroots_storage::outbox::EnqueueDisposition::Created
+pub radroots_storage::outbox::EnqueueDisposition::Replay
+pub enum radroots_storage::outbox::OutboxStage
+pub radroots_storage::outbox::OutboxStage::Exhausted
+pub radroots_storage::outbox::OutboxStage::Leased
+pub radroots_storage::outbox::OutboxStage::Pending
+pub radroots_storage::outbox::OutboxStage::Retryable
+pub radroots_storage::outbox::OutboxStage::Satisfied
+impl radroots_storage::outbox::OutboxStage
+pub const fn radroots_storage::outbox::OutboxStage::is_terminal(self) -> bool
+pub enum radroots_storage::outbox::SatisfactionResult
+pub radroots_storage::outbox::SatisfactionResult::Exhausted
+pub radroots_storage::outbox::SatisfactionResult::Pending
+pub radroots_storage::outbox::SatisfactionResult::Satisfied
+pub struct radroots_storage::outbox::ClaimOutboxItems
+impl radroots_storage::outbox::ClaimOutboxItems
+pub const fn radroots_storage::outbox::ClaimOutboxItems::lease_expires_at_unix_ms(&self) -> u64
+pub fn radroots_storage::outbox::ClaimOutboxItems::lease_id_for(&self, radroots_storage::outbox::OutboxItemId) -> radroots_storage::outbox::LeaseId
+pub const fn radroots_storage::outbox::ClaimOutboxItems::lease_id_seed(&self) -> radroots_storage::outbox::LeaseId
+pub const fn radroots_storage::outbox::ClaimOutboxItems::limit(&self) -> u16
+pub fn radroots_storage::outbox::ClaimOutboxItems::new(radroots_storage::outbox::LeaseOwner, radroots_storage::outbox::LeaseId, u64, u64, u16) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::outbox::ClaimOutboxItems::now_unix_ms(&self) -> u64
+pub const fn radroots_storage::outbox::ClaimOutboxItems::owner(&self) -> &radroots_storage::outbox::LeaseOwner
+pub struct radroots_storage::outbox::ClaimedOutboxItem
+impl radroots_storage::outbox::ClaimedOutboxItem
+pub const fn radroots_storage::outbox::ClaimedOutboxItem::lease(&self) -> &radroots_storage::outbox::OutboxLease
+pub const fn radroots_storage::outbox::ClaimedOutboxItem::new(radroots_storage::outbox::OutboxRecord, radroots_storage::outbox::OutboxLease) -> Self
+pub const fn radroots_storage::outbox::ClaimedOutboxItem::record(&self) -> &radroots_storage::outbox::OutboxRecord
+pub struct radroots_storage::outbox::DeliveryAttempt(_)
+impl radroots_storage::outbox::DeliveryAttempt
+pub const radroots_storage::outbox::DeliveryAttempt::FIRST: Self
+pub const fn radroots_storage::outbox::DeliveryAttempt::get(self) -> u32
+pub const fn radroots_storage::outbox::DeliveryAttempt::new(u32) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::outbox::DeliveryAttemptEvidence
+impl radroots_storage::outbox::DeliveryAttemptEvidence
+pub const fn radroots_storage::outbox::DeliveryAttemptEvidence::item_id(&self) -> radroots_storage::outbox::OutboxItemId
+pub fn radroots_storage::outbox::DeliveryAttemptEvidence::new(radroots_storage::outbox::OutboxItemId, radroots_storage::outbox::LeaseId, radroots_storage::outbox::OutboxRevision, radroots_storage::outbox::DeliveryAttempt, radroots_transport::sink::DeliveryReceipt, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::outbox::DeliveryPlanDigest(_)
+impl radroots_storage::outbox::DeliveryPlanDigest
+pub const fn radroots_storage::outbox::DeliveryPlanDigest::as_bytes(&self) -> &[u8; 32]
+pub const fn radroots_storage::outbox::DeliveryPlanDigest::new([u8; 32]) -> Self
+pub struct radroots_storage::outbox::EnqueueOutboxItem
+impl radroots_storage::outbox::EnqueueOutboxItem
+pub const fn radroots_storage::outbox::EnqueueOutboxItem::created_at_unix_ms(&self) -> u64
+pub fn radroots_storage::outbox::EnqueueOutboxItem::into_record(self) -> radroots_storage::outbox::OutboxRecord
+pub const fn radroots_storage::outbox::EnqueueOutboxItem::item_id(&self) -> radroots_storage::outbox::OutboxItemId
+pub fn radroots_storage::outbox::EnqueueOutboxItem::new(radroots_storage::outbox::OutboxItemId, radroots_storage::journal::OperationInstanceId, radroots_storage::outbox::DeliveryPlanDigest, radroots_transport::sink::DeliveryRequest, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::outbox::EnqueueOutboxItem::operation_instance_id(&self) -> radroots_storage::journal::OperationInstanceId
+pub const fn radroots_storage::outbox::EnqueueOutboxItem::plan_digest(&self) -> radroots_storage::outbox::DeliveryPlanDigest
+pub const fn radroots_storage::outbox::EnqueueOutboxItem::request(&self) -> &radroots_transport::sink::DeliveryRequest
+pub struct radroots_storage::outbox::EnqueueReceipt
+impl radroots_storage::outbox::EnqueueReceipt
+pub const fn radroots_storage::outbox::EnqueueReceipt::disposition(&self) -> radroots_storage::outbox::EnqueueDisposition
+pub const fn radroots_storage::outbox::EnqueueReceipt::new(radroots_storage::outbox::EnqueueDisposition, radroots_storage::outbox::OutboxRecord) -> Self
+pub const fn radroots_storage::outbox::EnqueueReceipt::record(&self) -> &radroots_storage::outbox::OutboxRecord
+pub struct radroots_storage::outbox::LeaseId(_)
+impl radroots_storage::outbox::LeaseId
+pub const fn radroots_storage::outbox::LeaseId::as_bytes(&self) -> &[u8; 16]
+pub const fn radroots_storage::outbox::LeaseId::new([u8; 16]) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::outbox::LeaseOwner(_)
+impl radroots_storage::outbox::LeaseOwner
+pub fn radroots_storage::outbox::LeaseOwner::as_str(&self) -> &str
+pub fn radroots_storage::outbox::LeaseOwner::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_storage::Error>
+impl core::fmt::Debug for radroots_storage::outbox::LeaseOwner
+pub fn radroots_storage::outbox::LeaseOwner::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl serde_core::ser::Serialize for radroots_storage::outbox::LeaseOwner
+pub fn radroots_storage::outbox::LeaseOwner::serialize<S>(&self, S) -> core::result::Result<<S as serde_core::ser::Serializer>::Ok, <S as serde_core::ser::Serializer>::Error> where S: serde_core::ser::Serializer
+impl<'de> serde_core::de::Deserialize<'de> for radroots_storage::outbox::LeaseOwner
+pub fn radroots_storage::outbox::LeaseOwner::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_storage::outbox::OutboxItemId(_)
+impl radroots_storage::outbox::OutboxItemId
+pub const fn radroots_storage::outbox::OutboxItemId::as_bytes(&self) -> &[u8; 16]
+pub const fn radroots_storage::outbox::OutboxItemId::new([u8; 16]) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::outbox::OutboxLease
+impl radroots_storage::outbox::OutboxLease
+pub const fn radroots_storage::outbox::OutboxLease::acquired_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::outbox::OutboxLease::expires_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::outbox::OutboxLease::id(&self) -> radroots_storage::outbox::LeaseId
+pub const fn radroots_storage::outbox::OutboxLease::is_active_at(&self, u64) -> bool
+pub fn radroots_storage::outbox::OutboxLease::new(radroots_storage::outbox::LeaseId, radroots_storage::outbox::LeaseOwner, u64, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::outbox::OutboxLease::owner(&self) -> &radroots_storage::outbox::LeaseOwner
+pub struct radroots_storage::outbox::OutboxRecord
+impl radroots_storage::outbox::OutboxRecord
+pub fn radroots_storage::outbox::OutboxRecord::claim(&mut self, radroots_storage::outbox::OutboxLease) -> core::result::Result<(), radroots_storage::Error>
+pub const fn radroots_storage::outbox::OutboxRecord::created_at_unix_ms(&self) -> u64
+pub fn radroots_storage::outbox::OutboxRecord::evidence(&self) -> &[radroots_storage::outbox::TargetDeliveryEvidence]
+pub const fn radroots_storage::outbox::OutboxRecord::item_id(&self) -> radroots_storage::outbox::OutboxItemId
+pub const fn radroots_storage::outbox::OutboxRecord::last_attempt(&self) -> core::option::Option<radroots_storage::outbox::DeliveryAttempt>
+pub fn radroots_storage::outbox::OutboxRecord::latest_target_evidence(&self, &radroots_transport::target::TargetFingerprint) -> core::option::Option<&radroots_storage::outbox::TargetDeliveryEvidence>
+pub const fn radroots_storage::outbox::OutboxRecord::lease(&self) -> core::option::Option<&radroots_storage::outbox::OutboxLease>
+pub const fn radroots_storage::outbox::OutboxRecord::operation_instance_id(&self) -> radroots_storage::journal::OperationInstanceId
+pub const fn radroots_storage::outbox::OutboxRecord::plan_digest(&self) -> radroots_storage::outbox::DeliveryPlanDigest
+pub fn radroots_storage::outbox::OutboxRecord::record_attempt(&mut self, radroots_storage::outbox::DeliveryAttemptEvidence) -> core::result::Result<(), radroots_storage::Error>
+pub fn radroots_storage::outbox::OutboxRecord::release(&mut self, radroots_storage::outbox::LeaseId, radroots_storage::outbox::OutboxRevision, u64, core::option::Option<u64>) -> core::result::Result<(), radroots_storage::Error>
+pub const fn radroots_storage::outbox::OutboxRecord::request(&self) -> &radroots_transport::sink::DeliveryRequest
+pub const fn radroots_storage::outbox::OutboxRecord::retry_not_before_unix_ms(&self) -> core::option::Option<u64>
+pub const fn radroots_storage::outbox::OutboxRecord::revision(&self) -> radroots_storage::outbox::OutboxRevision
+pub const fn radroots_storage::outbox::OutboxRecord::satisfaction(&self) -> radroots_storage::outbox::SatisfactionResult
+pub const fn radroots_storage::outbox::OutboxRecord::stage(&self) -> radroots_storage::outbox::OutboxStage
+pub const fn radroots_storage::outbox::OutboxRecord::updated_at_unix_ms(&self) -> u64
+pub struct radroots_storage::outbox::OutboxRevision(_)
+impl radroots_storage::outbox::OutboxRevision
+pub const radroots_storage::outbox::OutboxRevision::INITIAL: Self
+pub const fn radroots_storage::outbox::OutboxRevision::get(self) -> u64
+pub const fn radroots_storage::outbox::OutboxRevision::new(u64) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::outbox::OutboxStatus
+pub radroots_storage::outbox::OutboxStatus::exhausted: u64
+pub radroots_storage::outbox::OutboxStatus::leased: u64
+pub radroots_storage::outbox::OutboxStatus::pending: u64
+pub radroots_storage::outbox::OutboxStatus::retryable: u64
+pub radroots_storage::outbox::OutboxStatus::satisfied: u64
+impl radroots_storage::outbox::OutboxStatus
+pub fn radroots_storage::outbox::OutboxStatus::total(self) -> core::option::Option<u64>
+pub struct radroots_storage::outbox::TargetDeliveryEvidence
+impl radroots_storage::outbox::TargetDeliveryEvidence
+pub const fn radroots_storage::outbox::TargetDeliveryEvidence::attempt(&self) -> radroots_storage::outbox::DeliveryAttempt
+pub const fn radroots_storage::outbox::TargetDeliveryEvidence::outcome(&self) -> &radroots_transport::outcome::DeliveryOutcome
+pub const fn radroots_storage::outbox::TargetDeliveryEvidence::recorded_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::outbox::TargetDeliveryEvidence::target(&self) -> &radroots_transport::target::TargetFingerprint
+pub const fn radroots_storage::outbox::TargetDeliveryEvidence::was_attempted(&self) -> bool
+pub const radroots_storage::outbox::LEASE_OWNER_MAX_BYTES: usize
+pub const radroots_storage::outbox::OUTBOX_CLAIM_LIMIT_MAX: u16
+pub trait radroots_storage::outbox::Outbox: core::marker::Send + core::marker::Sync
+pub fn radroots_storage::outbox::Outbox::claim(&self, radroots_storage::outbox::ClaimOutboxItems) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::outbox::ClaimedOutboxItem>, radroots_storage::Error>>
+pub fn radroots_storage::outbox::Outbox::enqueue(&self, radroots_storage::outbox::EnqueueOutboxItem) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::EnqueueReceipt, radroots_storage::Error>>
+pub fn radroots_storage::outbox::Outbox::item(&self, radroots_storage::outbox::OutboxItemId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::outbox::OutboxRecord>, radroots_storage::Error>>
+pub fn radroots_storage::outbox::Outbox::record_attempt(&self, radroots_storage::outbox::DeliveryAttemptEvidence) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>>
+pub fn radroots_storage::outbox::Outbox::release(&self, radroots_storage::outbox::OutboxItemId, radroots_storage::outbox::LeaseId, radroots_storage::outbox::OutboxRevision, u64, core::option::Option<u64>) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>>
+pub fn radroots_storage::outbox::Outbox::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxStatus, radroots_storage::Error>>
+impl radroots_storage::outbox::Outbox for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::claim(&self, radroots_storage::outbox::ClaimOutboxItems) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::outbox::ClaimedOutboxItem>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::enqueue(&self, radroots_storage::outbox::EnqueueOutboxItem) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::EnqueueReceipt, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::item(&self, radroots_storage::outbox::OutboxItemId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::outbox::OutboxRecord>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::record_attempt(&self, radroots_storage::outbox::DeliveryAttemptEvidence) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::release(&self, radroots_storage::outbox::OutboxItemId, radroots_storage::outbox::LeaseId, radroots_storage::outbox::OutboxRevision, u64, core::option::Option<u64>) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxStatus, radroots_storage::Error>>
+pub mod radroots_storage::private_artifact
+pub enum radroots_storage::private_artifact::DeletionReason
+pub radroots_storage::private_artifact::DeletionReason::IntegrityFailure
+pub radroots_storage::private_artifact::DeletionReason::KeyRevoked
+pub radroots_storage::private_artifact::DeletionReason::OperatorRequested
+pub radroots_storage::private_artifact::DeletionReason::RetentionExpired
+pub radroots_storage::private_artifact::DeletionReason::UserRequested
+pub enum radroots_storage::private_artifact::PrivateArtifactStage
+pub radroots_storage::private_artifact::PrivateArtifactStage::Active
+pub radroots_storage::private_artifact::PrivateArtifactStage::Expired
+pub radroots_storage::private_artifact::PrivateArtifactStage::Tombstoned
+pub struct radroots_storage::private_artifact::ArtifactCommitment(_)
+impl radroots_storage::private_artifact::ArtifactCommitment
+pub const fn radroots_storage::private_artifact::ArtifactCommitment::as_bytes(&self) -> &[u8; 32]
+pub const fn radroots_storage::private_artifact::ArtifactCommitment::new([u8; 32]) -> Self
+pub struct radroots_storage::private_artifact::ArtifactKind(_)
+impl radroots_storage::private_artifact::ArtifactKind
+pub fn radroots_storage::private_artifact::ArtifactKind::as_str(&self) -> &str
+pub fn radroots_storage::private_artifact::ArtifactKind::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::private_artifact::ArtifactSchemaId(_)
+impl radroots_storage::private_artifact::ArtifactSchemaId
+pub fn radroots_storage::private_artifact::ArtifactSchemaId::as_str(&self) -> &str
+pub fn radroots_storage::private_artifact::ArtifactSchemaId::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::private_artifact::ArtifactTombstone
+impl radroots_storage::private_artifact::ArtifactTombstone
+pub const fn radroots_storage::private_artifact::ArtifactTombstone::commitment(self) -> radroots_storage::private_artifact::ArtifactCommitment
+pub const fn radroots_storage::private_artifact::ArtifactTombstone::deleted_at_unix_ms(self) -> u64
+pub const fn radroots_storage::private_artifact::ArtifactTombstone::reason(self) -> radroots_storage::private_artifact::DeletionReason
+pub struct radroots_storage::private_artifact::DurableSecretReference
+impl radroots_storage::private_artifact::DurableSecretReference
+pub const fn radroots_storage::private_artifact::DurableSecretReference::key_version(&self) -> u32
+pub fn radroots_storage::private_artifact::DurableSecretReference::new(impl core::convert::Into<alloc::string::String>, impl core::convert::Into<alloc::string::String>, u32) -> core::result::Result<Self, radroots_storage::Error>
+pub fn radroots_storage::private_artifact::DurableSecretReference::opaque_reference(&self) -> &str
+pub fn radroots_storage::private_artifact::DurableSecretReference::provider(&self) -> &str
+impl core::fmt::Debug for radroots_storage::private_artifact::DurableSecretReference
+pub fn radroots_storage::private_artifact::DurableSecretReference::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+impl serde_core::ser::Serialize for radroots_storage::private_artifact::DurableSecretReference
+pub fn radroots_storage::private_artifact::DurableSecretReference::serialize<S>(&self, S) -> core::result::Result<<S as serde_core::ser::Serializer>::Ok, <S as serde_core::ser::Serializer>::Error> where S: serde_core::ser::Serializer
+impl<'de> serde_core::de::Deserialize<'de> for radroots_storage::private_artifact::DurableSecretReference
+pub fn radroots_storage::private_artifact::DurableSecretReference::deserialize<D>(D) -> core::result::Result<Self, <D as serde_core::de::Deserializer>::Error> where D: serde_core::de::Deserializer<'de>
+pub struct radroots_storage::private_artifact::PrivateArtifactId(_)
+impl radroots_storage::private_artifact::PrivateArtifactId
+pub const fn radroots_storage::private_artifact::PrivateArtifactId::as_bytes(&self) -> &[u8; 16]
+pub const fn radroots_storage::private_artifact::PrivateArtifactId::new([u8; 16]) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::private_artifact::PrivateArtifactMetadata
+impl radroots_storage::private_artifact::PrivateArtifactMetadata
+pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::artifact_id(&self) -> radroots_storage::private_artifact::PrivateArtifactId
+pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::commitment(&self) -> radroots_storage::private_artifact::ArtifactCommitment
+pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::created_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::kind(&self) -> &radroots_storage::private_artifact::ArtifactKind
+pub fn radroots_storage::private_artifact::PrivateArtifactMetadata::mark_expired(&self, radroots_storage::private_artifact::PrivateArtifactRevision, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub fn radroots_storage::private_artifact::PrivateArtifactMetadata::new(radroots_storage::private_artifact::PrivateArtifactId, radroots_storage::private_artifact::ArtifactKind, radroots_storage::private_artifact::ArtifactSchemaId, radroots_storage::private_artifact::ArtifactCommitment, u64, radroots_storage::private_artifact::DurableSecretReference, radroots_storage::private_artifact::RetentionPolicy, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::protected_size_bytes(&self) -> u64
+pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::retention(&self) -> radroots_storage::private_artifact::RetentionPolicy
+pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::revision(&self) -> radroots_storage::private_artifact::PrivateArtifactRevision
+pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::schema_id(&self) -> &radroots_storage::private_artifact::ArtifactSchemaId
+pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::secret_reference(&self) -> &radroots_storage::private_artifact::DurableSecretReference
+pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::stage(&self) -> radroots_storage::private_artifact::PrivateArtifactStage
+pub fn radroots_storage::private_artifact::PrivateArtifactMetadata::tombstone(&self, radroots_storage::private_artifact::PrivateArtifactRevision, u64, radroots_storage::private_artifact::DeletionReason) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::tombstone_record(&self) -> core::option::Option<radroots_storage::private_artifact::ArtifactTombstone>
+pub const fn radroots_storage::private_artifact::PrivateArtifactMetadata::updated_at_unix_ms(&self) -> u64
+pub struct radroots_storage::private_artifact::PrivateArtifactRevision(_)
+impl radroots_storage::private_artifact::PrivateArtifactRevision
+pub const radroots_storage::private_artifact::PrivateArtifactRevision::INITIAL: Self
+pub const fn radroots_storage::private_artifact::PrivateArtifactRevision::get(self) -> u64
+pub const fn radroots_storage::private_artifact::PrivateArtifactRevision::new(u64) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::private_artifact::PrivateArtifactStatus
+pub radroots_storage::private_artifact::PrivateArtifactStatus::active: u64
+pub radroots_storage::private_artifact::PrivateArtifactStatus::expired: u64
+pub radroots_storage::private_artifact::PrivateArtifactStatus::tombstoned: u64
+impl radroots_storage::private_artifact::PrivateArtifactStatus
+pub fn radroots_storage::private_artifact::PrivateArtifactStatus::total(self) -> core::option::Option<u64>
+pub struct radroots_storage::private_artifact::RetentionPolicy
+impl radroots_storage::private_artifact::RetentionPolicy
+pub const fn radroots_storage::private_artifact::RetentionPolicy::delete_not_before_unix_ms(self) -> core::option::Option<u64>
+pub const fn radroots_storage::private_artifact::RetentionPolicy::expires_at_unix_ms(self) -> core::option::Option<u64>
+pub const fn radroots_storage::private_artifact::RetentionPolicy::indefinite() -> Self
+pub const fn radroots_storage::private_artifact::RetentionPolicy::is_expired_at(self, u64) -> bool
+pub const fn radroots_storage::private_artifact::RetentionPolicy::new(core::option::Option<u64>, core::option::Option<u64>) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::private_artifact::RetentionPolicy::permits_deletion_at(self, u64) -> bool
+pub const radroots_storage::private_artifact::ARTIFACT_KIND_MAX_BYTES: usize
+pub const radroots_storage::private_artifact::ARTIFACT_SCHEMA_MAX_BYTES: usize
+pub const radroots_storage::private_artifact::EXPIRED_ARTIFACT_QUERY_LIMIT_MAX: u16
+pub const radroots_storage::private_artifact::SECRET_PROVIDER_MAX_BYTES: usize
+pub const radroots_storage::private_artifact::SECRET_REFERENCE_MAX_BYTES: usize
+pub trait radroots_storage::private_artifact::PrivateArtifactStore: core::marker::Send + core::marker::Sync
+pub fn radroots_storage::private_artifact::PrivateArtifactStore::expired(&self, u64, u16) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::private_artifact::PrivateArtifactMetadata>, radroots_storage::Error>>
+pub fn radroots_storage::private_artifact::PrivateArtifactStore::mark_expired(&self, radroots_storage::private_artifact::PrivateArtifactId, radroots_storage::private_artifact::PrivateArtifactRevision, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_storage::Error>>
+pub fn radroots_storage::private_artifact::PrivateArtifactStore::metadata(&self, radroots_storage::private_artifact::PrivateArtifactId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::private_artifact::PrivateArtifactMetadata>, radroots_storage::Error>>
+pub fn radroots_storage::private_artifact::PrivateArtifactStore::put_metadata(&self, radroots_storage::private_artifact::PrivateArtifactMetadata) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_storage::Error>>
+pub fn radroots_storage::private_artifact::PrivateArtifactStore::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactStatus, radroots_storage::Error>>
+pub fn radroots_storage::private_artifact::PrivateArtifactStore::tombstone(&self, radroots_storage::private_artifact::PrivateArtifactId, radroots_storage::private_artifact::PrivateArtifactRevision, u64, radroots_storage::private_artifact::DeletionReason) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_storage::Error>>
+impl radroots_storage::private_artifact::PrivateArtifactStore for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::expired(&self, u64, u16) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::private_artifact::PrivateArtifactMetadata>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::mark_expired(&self, radroots_storage::private_artifact::PrivateArtifactId, radroots_storage::private_artifact::PrivateArtifactRevision, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::metadata(&self, radroots_storage::private_artifact::PrivateArtifactId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::private_artifact::PrivateArtifactMetadata>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::put_metadata(&self, radroots_storage::private_artifact::PrivateArtifactMetadata) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::tombstone(&self, radroots_storage::private_artifact::PrivateArtifactId, radroots_storage::private_artifact::PrivateArtifactRevision, u64, radroots_storage::private_artifact::DeletionReason) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::private_artifact::PrivateArtifactMetadata, radroots_storage::Error>>
+pub mod radroots_storage::projection
+pub enum radroots_storage::projection::InvalidationReason
+pub radroots_storage::projection::InvalidationReason::EventIndexManifestChanged
+pub radroots_storage::projection::InvalidationReason::IntegrityFailure
+pub radroots_storage::projection::InvalidationReason::OperatorRequested
+pub radroots_storage::projection::InvalidationReason::ProjectionGenerationChanged
+pub radroots_storage::projection::InvalidationReason::SourceGenerationChanged
+pub enum radroots_storage::projection::ProjectionHealth
+pub radroots_storage::projection::ProjectionHealth::Failed
+pub radroots_storage::projection::ProjectionHealth::Invalidated
+pub radroots_storage::projection::ProjectionHealth::Ready
+pub radroots_storage::projection::ProjectionHealth::Rebuilding
+pub enum radroots_storage::projection::RebuildStage
+pub radroots_storage::projection::RebuildStage::Completed
+pub radroots_storage::projection::RebuildStage::Failed
+pub radroots_storage::projection::RebuildStage::Requested
+pub radroots_storage::projection::RebuildStage::Running
+pub struct radroots_storage::projection::ArtifactDigest(_)
+impl radroots_storage::projection::ArtifactDigest
+pub const fn radroots_storage::projection::ArtifactDigest::as_bytes(&self) -> &[u8; 32]
+pub const fn radroots_storage::projection::ArtifactDigest::new([u8; 32]) -> Self
+pub struct radroots_storage::projection::EventIdRange
+impl radroots_storage::projection::EventIdRange
+pub const fn radroots_storage::projection::EventIdRange::first(&self) -> &radroots_event::id::EventId
+pub const fn radroots_storage::projection::EventIdRange::last(&self) -> &radroots_event::id::EventId
+pub fn radroots_storage::projection::EventIdRange::new(radroots_event::id::EventId, radroots_event::id::EventId) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::projection::EventIndexCheckpoint
+impl radroots_storage::projection::EventIndexCheckpoint
+pub const fn radroots_storage::projection::EventIndexCheckpoint::generated_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::projection::EventIndexCheckpoint::generation(&self) -> radroots_storage::projection::ProjectionGeneration
+pub fn radroots_storage::projection::EventIndexCheckpoint::new(radroots_storage::projection::ProjectionGeneration, u64, alloc::vec::Vec<radroots_storage::projection::EventIndexShardCheckpoint>) -> core::result::Result<Self, radroots_storage::Error>
+pub fn radroots_storage::projection::EventIndexCheckpoint::shard(&self, &radroots_storage::projection::EventIndexShardId) -> core::option::Option<&radroots_storage::projection::EventIndexShardCheckpoint>
+pub fn radroots_storage::projection::EventIndexCheckpoint::shards(&self) -> &[radroots_storage::projection::EventIndexShardCheckpoint]
+pub struct radroots_storage::projection::EventIndexManifest
+impl radroots_storage::projection::EventIndexManifest
+pub const fn radroots_storage::projection::EventIndexManifest::first_published_at_unix_s(&self) -> u64
+pub const fn radroots_storage::projection::EventIndexManifest::generation(&self) -> radroots_storage::projection::ProjectionGeneration
+pub const fn radroots_storage::projection::EventIndexManifest::last_published_at_unix_s(&self) -> u64
+pub fn radroots_storage::projection::EventIndexManifest::new(radroots_storage::projection::ProjectionGeneration, u64, u32, u64, u64, alloc::vec::Vec<radroots_storage::projection::EventIndexShard>) -> core::result::Result<Self, radroots_storage::Error>
+pub fn radroots_storage::projection::EventIndexManifest::shards(&self) -> &[radroots_storage::projection::EventIndexShard]
+pub const fn radroots_storage::projection::EventIndexManifest::target_shard_size(&self) -> u32
+pub const fn radroots_storage::projection::EventIndexManifest::total_events(&self) -> u64
+pub struct radroots_storage::projection::EventIndexShard
+impl radroots_storage::projection::EventIndexShard
+pub fn radroots_storage::projection::EventIndexShard::artifact_path(&self) -> &str
+pub const fn radroots_storage::projection::EventIndexShard::event_count(&self) -> u32
+pub const fn radroots_storage::projection::EventIndexShard::event_ids(&self) -> &radroots_storage::projection::EventIdRange
+pub const fn radroots_storage::projection::EventIndexShard::first_published_at_unix_s(&self) -> u64
+pub const fn radroots_storage::projection::EventIndexShard::last_published_at_unix_s(&self) -> u64
+pub fn radroots_storage::projection::EventIndexShard::new(radroots_storage::projection::EventIndexShardId, impl core::convert::Into<alloc::string::String>, u32, radroots_storage::projection::EventIdRange, u64, u64, radroots_storage::projection::ArtifactDigest) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::projection::EventIndexShard::sha256(&self) -> radroots_storage::projection::ArtifactDigest
+pub const fn radroots_storage::projection::EventIndexShard::shard_id(&self) -> &radroots_storage::projection::EventIndexShardId
+pub struct radroots_storage::projection::EventIndexShardCheckpoint
+impl radroots_storage::projection::EventIndexShardCheckpoint
+pub fn radroots_storage::projection::EventIndexShardCheckpoint::cursor(&self) -> core::option::Option<&str>
+pub const fn radroots_storage::projection::EventIndexShardCheckpoint::last_created_at_unix_s(&self) -> u64
+pub const fn radroots_storage::projection::EventIndexShardCheckpoint::last_event_id(&self) -> core::option::Option<&radroots_event::id::EventId>
+pub fn radroots_storage::projection::EventIndexShardCheckpoint::new(radroots_storage::projection::EventIndexShardId, u64, core::option::Option<radroots_event::id::EventId>, core::option::Option<alloc::string::String>) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::projection::EventIndexShardCheckpoint::shard_id(&self) -> &radroots_storage::projection::EventIndexShardId
+pub struct radroots_storage::projection::EventIndexShardId(_)
+impl radroots_storage::projection::EventIndexShardId
+pub fn radroots_storage::projection::EventIndexShardId::as_str(&self) -> &str
+pub fn radroots_storage::projection::EventIndexShardId::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::projection::ProjectionCheckpoint
+impl radroots_storage::projection::ProjectionCheckpoint
+pub fn radroots_storage::projection::ProjectionCheckpoint::advances(&self, &Self) -> bool
+pub const fn radroots_storage::projection::ProjectionCheckpoint::generation(&self) -> radroots_storage::projection::ProjectionGeneration
+pub fn radroots_storage::projection::ProjectionCheckpoint::new(radroots_storage::projection::ProjectionId, radroots_storage::projection::ProjectionGeneration, core::option::Option<radroots_storage::event::EventPosition>, u64, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::projection::ProjectionCheckpoint::projected_rows(&self) -> u64
+pub const fn radroots_storage::projection::ProjectionCheckpoint::projection_id(&self) -> &radroots_storage::projection::ProjectionId
+pub const fn radroots_storage::projection::ProjectionCheckpoint::source_position(&self) -> core::option::Option<radroots_storage::event::EventPosition>
+pub const fn radroots_storage::projection::ProjectionCheckpoint::updated_at_unix_ms(&self) -> u64
+pub struct radroots_storage::projection::ProjectionGeneration(_)
+impl radroots_storage::projection::ProjectionGeneration
+pub const fn radroots_storage::projection::ProjectionGeneration::as_bytes(&self) -> &[u8; 32]
+pub const fn radroots_storage::projection::ProjectionGeneration::new([u8; 32]) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::projection::ProjectionId(_)
+impl radroots_storage::projection::ProjectionId
+pub fn radroots_storage::projection::ProjectionId::as_str(&self) -> &str
+pub fn radroots_storage::projection::ProjectionId::parse(impl core::convert::Into<alloc::string::String>) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::projection::ProjectionInvalidation
+impl radroots_storage::projection::ProjectionInvalidation
+pub const fn radroots_storage::projection::ProjectionInvalidation::invalid_generation(&self) -> radroots_storage::projection::ProjectionGeneration
+pub const fn radroots_storage::projection::ProjectionInvalidation::invalidated_at_unix_ms(&self) -> u64
+pub fn radroots_storage::projection::ProjectionInvalidation::new(radroots_storage::projection::ProjectionId, radroots_storage::projection::ProjectionGeneration, radroots_storage::projection::ProjectionGeneration, radroots_storage::projection::InvalidationReason, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::projection::ProjectionInvalidation::projection_id(&self) -> &radroots_storage::projection::ProjectionId
+pub const fn radroots_storage::projection::ProjectionInvalidation::reason(&self) -> radroots_storage::projection::InvalidationReason
+pub const fn radroots_storage::projection::ProjectionInvalidation::replacement_generation(&self) -> radroots_storage::projection::ProjectionGeneration
+pub struct radroots_storage::projection::ProjectionRevision(_)
+impl radroots_storage::projection::ProjectionRevision
+pub const radroots_storage::projection::ProjectionRevision::INITIAL: Self
+pub const fn radroots_storage::projection::ProjectionRevision::get(self) -> u64
+pub const fn radroots_storage::projection::ProjectionRevision::new(u64) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::projection::ProjectionStatus
+impl radroots_storage::projection::ProjectionStatus
+pub const fn radroots_storage::projection::ProjectionStatus::active_rebuild(&self) -> core::option::Option<radroots_storage::projection::RebuildTicketId>
+pub const fn radroots_storage::projection::ProjectionStatus::checkpoint(&self) -> core::option::Option<&radroots_storage::projection::ProjectionCheckpoint>
+pub const fn radroots_storage::projection::ProjectionStatus::generation(&self) -> radroots_storage::projection::ProjectionGeneration
+pub const fn radroots_storage::projection::ProjectionStatus::health(&self) -> radroots_storage::projection::ProjectionHealth
+pub fn radroots_storage::projection::ProjectionStatus::new(radroots_storage::projection::ProjectionId, radroots_storage::projection::ProjectionGeneration, radroots_storage::projection::ProjectionHealth, core::option::Option<radroots_storage::projection::ProjectionCheckpoint>, core::option::Option<radroots_storage::projection::RebuildTicketId>) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::projection::ProjectionStatus::projection_id(&self) -> &radroots_storage::projection::ProjectionId
+pub struct radroots_storage::projection::RebuildTicket
+impl radroots_storage::projection::RebuildTicket
+pub const fn radroots_storage::projection::RebuildTicket::checkpoint(&self) -> core::option::Option<&radroots_storage::projection::ProjectionCheckpoint>
+pub const fn radroots_storage::projection::RebuildTicket::invalidation(&self) -> &radroots_storage::projection::ProjectionInvalidation
+pub fn radroots_storage::projection::RebuildTicket::requested(radroots_storage::projection::RebuildTicketId, radroots_storage::projection::ProjectionInvalidation) -> Self
+pub const fn radroots_storage::projection::RebuildTicket::requested_at_unix_ms(&self) -> u64
+pub const fn radroots_storage::projection::RebuildTicket::revision(&self) -> radroots_storage::projection::ProjectionRevision
+pub const fn radroots_storage::projection::RebuildTicket::stage(&self) -> radroots_storage::projection::RebuildStage
+pub const fn radroots_storage::projection::RebuildTicket::ticket_id(&self) -> radroots_storage::projection::RebuildTicketId
+pub fn radroots_storage::projection::RebuildTicket::transition(&self, radroots_storage::projection::RebuildTransition) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::projection::RebuildTicket::updated_at_unix_ms(&self) -> u64
+pub struct radroots_storage::projection::RebuildTicketId(_)
+impl radroots_storage::projection::RebuildTicketId
+pub const fn radroots_storage::projection::RebuildTicketId::as_bytes(&self) -> &[u8; 16]
+pub const fn radroots_storage::projection::RebuildTicketId::new([u8; 16]) -> core::result::Result<Self, radroots_storage::Error>
+pub struct radroots_storage::projection::RebuildTransition
+impl radroots_storage::projection::RebuildTransition
+pub const fn radroots_storage::projection::RebuildTransition::checkpoint(radroots_storage::projection::RebuildTicketId, radroots_storage::projection::ProjectionRevision, u64, radroots_storage::projection::ProjectionCheckpoint) -> Self
+pub const fn radroots_storage::projection::RebuildTransition::complete(radroots_storage::projection::RebuildTicketId, radroots_storage::projection::ProjectionRevision, u64, radroots_storage::projection::ProjectionCheckpoint) -> Self
+pub const fn radroots_storage::projection::RebuildTransition::fail(radroots_storage::projection::RebuildTicketId, radroots_storage::projection::ProjectionRevision, u64) -> Self
+pub const fn radroots_storage::projection::RebuildTransition::start(radroots_storage::projection::RebuildTicketId, radroots_storage::projection::ProjectionRevision, u64) -> Self
+pub const fn radroots_storage::projection::RebuildTransition::ticket_id(&self) -> radroots_storage::projection::RebuildTicketId
+pub const radroots_storage::projection::EVENT_INDEX_ARTIFACT_PATH_MAX_BYTES: usize
+pub const radroots_storage::projection::EVENT_INDEX_CURSOR_MAX_BYTES: usize
+pub const radroots_storage::projection::EVENT_INDEX_SHARDS_MAX: usize
+pub const radroots_storage::projection::EVENT_INDEX_SHARD_ID_MAX_BYTES: usize
+pub const radroots_storage::projection::PROJECTION_ID_MAX_BYTES: usize
+pub trait radroots_storage::projection::ProjectionStore: core::marker::Send + core::marker::Sync
+pub fn radroots_storage::projection::ProjectionStore::checkpoint(&self, radroots_storage::projection::ProjectionCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>>
+pub fn radroots_storage::projection::ProjectionStore::event_index_checkpoint(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexCheckpoint>, radroots_storage::Error>>
+pub fn radroots_storage::projection::ProjectionStore::event_index_manifest(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexManifest>, radroots_storage::Error>>
+pub fn radroots_storage::projection::ProjectionStore::invalidate(&self, radroots_storage::projection::ProjectionInvalidation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>>
+pub fn radroots_storage::projection::ProjectionStore::put_event_index_checkpoint(&self, radroots_storage::projection::EventIndexCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>>
+pub fn radroots_storage::projection::ProjectionStore::put_event_index_manifest(&self, radroots_storage::projection::EventIndexManifest) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>>
+pub fn radroots_storage::projection::ProjectionStore::request_rebuild(&self, radroots_storage::projection::RebuildTicket) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>>
+pub fn radroots_storage::projection::ProjectionStore::status(&self, radroots_storage::projection::ProjectionId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::ProjectionStatus>, radroots_storage::Error>>
+pub fn radroots_storage::projection::ProjectionStore::transition_rebuild(&self, radroots_storage::projection::RebuildTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>>
+impl radroots_storage::projection::ProjectionStore for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::checkpoint(&self, radroots_storage::projection::ProjectionCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::event_index_checkpoint(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexCheckpoint>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::event_index_manifest(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexManifest>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::invalidate(&self, radroots_storage::projection::ProjectionInvalidation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::put_event_index_checkpoint(&self, radroots_storage::projection::EventIndexCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::put_event_index_manifest(&self, radroots_storage::projection::EventIndexManifest) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::request_rebuild(&self, radroots_storage::projection::RebuildTicket) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self, radroots_storage::projection::ProjectionId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::ProjectionStatus>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::transition_rebuild(&self, radroots_storage::projection::RebuildTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>>
+pub mod radroots_storage::status
+pub enum radroots_storage::status::EventStoreHealth
+pub radroots_storage::status::EventStoreHealth::Available
+pub radroots_storage::status::EventStoreHealth::Degraded
+pub radroots_storage::status::EventStoreHealth::Unavailable
+pub enum radroots_storage::status::EventStoreMode
+pub radroots_storage::status::EventStoreMode::ReadOnly
+pub radroots_storage::status::EventStoreMode::ReadWrite
+pub enum radroots_storage::status::IntegrityHealth
+pub radroots_storage::status::IntegrityHealth::Corrupt
+pub radroots_storage::status::IntegrityHealth::Degraded
+pub radroots_storage::status::IntegrityHealth::Healthy
+pub radroots_storage::status::IntegrityHealth::Unknown
+pub enum radroots_storage::status::ShutdownState
+pub radroots_storage::status::ShutdownState::Closed
+pub radroots_storage::status::ShutdownState::Closing
+pub radroots_storage::status::ShutdownState::Open
+pub enum radroots_storage::status::StorageBackend
+pub radroots_storage::status::StorageBackend::Memory
+pub radroots_storage::status::StorageBackend::Sqlite
+pub enum radroots_storage::status::StorageOpenMode
+pub radroots_storage::status::StorageOpenMode::Create
+pub radroots_storage::status::StorageOpenMode::ReadOnly
+pub radroots_storage::status::StorageOpenMode::ReadWriteExisting
+pub enum radroots_storage::status::WriterPolicy
+pub radroots_storage::status::WriterPolicy::AdvisoryProcessLock
+pub radroots_storage::status::WriterPolicy::NoWriter
+pub struct radroots_storage::status::EventStoreStatus
+impl radroots_storage::status::EventStoreStatus
+pub const fn radroots_storage::status::EventStoreStatus::generation(&self) -> radroots_storage::event::SourceGeneration
+pub const fn radroots_storage::status::EventStoreStatus::health(&self) -> radroots_storage::status::EventStoreHealth
+pub const fn radroots_storage::status::EventStoreStatus::mode(&self) -> radroots_storage::status::EventStoreMode
+pub const fn radroots_storage::status::EventStoreStatus::new(radroots_storage::event::SourceGeneration, radroots_storage::status::EventStoreMode, radroots_storage::status::EventStoreHealth, u64, u64, u64) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::status::EventStoreStatus::raw_events(&self) -> u64
+pub const fn radroots_storage::status::EventStoreStatus::verified_events(&self) -> u64
+pub const fn radroots_storage::status::EventStoreStatus::visible_events(&self) -> u64
+pub struct radroots_storage::status::IntegrityStatus
+impl radroots_storage::status::IntegrityStatus
+pub const fn radroots_storage::status::IntegrityStatus::checked_at_unix_ms(self) -> core::option::Option<u64>
+pub const fn radroots_storage::status::IntegrityStatus::failed_members(self) -> u32
+pub const fn radroots_storage::status::IntegrityStatus::health(self) -> radroots_storage::status::IntegrityHealth
+pub fn radroots_storage::status::IntegrityStatus::new(radroots_storage::status::IntegrityHealth, core::option::Option<u64>, u32, u32) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::status::IntegrityStatus::verified_members(self) -> u32
+pub struct radroots_storage::status::StorageStatus
+impl radroots_storage::status::StorageStatus
+pub const fn radroots_storage::status::StorageStatus::backend(self) -> radroots_storage::status::StorageBackend
+pub const fn radroots_storage::status::StorageStatus::busy_timeout_ms(self) -> u32
+pub const fn radroots_storage::status::StorageStatus::integrity(self) -> radroots_storage::status::IntegrityStatus
+pub fn radroots_storage::status::StorageStatus::new(radroots_storage::status::StorageBackend, radroots_storage::status::StorageOpenMode, radroots_storage::status::WriterPolicy, radroots_storage::status::ShutdownState, radroots_storage::status::IntegrityStatus, bool, u32) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::status::StorageStatus::open_mode(self) -> radroots_storage::status::StorageOpenMode
+pub const fn radroots_storage::status::StorageStatus::shutdown(self) -> radroots_storage::status::ShutdownState
+pub const fn radroots_storage::status::StorageStatus::wal_enabled(self) -> bool
+pub const fn radroots_storage::status::StorageStatus::writer_policy(self) -> radroots_storage::status::WriterPolicy
+#[non_exhaustive] pub enum radroots_storage::Error
+pub radroots_storage::Error::AdmissionEventMismatch
+pub radroots_storage::Error::AdmissionRegression
+pub radroots_storage::Error::AtomicCommitConflict
+pub radroots_storage::Error::AtomicCommitFailed
+pub radroots_storage::Error::AtomicWorkflowMismatch
+pub radroots_storage::Error::BackendUnavailable
+pub radroots_storage::Error::BackupManifestPlanMismatch
+pub radroots_storage::Error::BackupSecretPolicyViolation
+pub radroots_storage::Error::CorruptJournalRecord
+pub radroots_storage::Error::CorruptOutboxRecord
+pub radroots_storage::Error::CorruptPrivateArtifactMetadata
+pub radroots_storage::Error::CorruptProjectionRecord
+pub radroots_storage::Error::CorruptReliabilityOperation
+pub radroots_storage::Error::CorruptStoredEvent
+pub radroots_storage::Error::CursorGenerationMismatch
+pub radroots_storage::Error::DuplicateBackupMember
+pub radroots_storage::Error::DuplicateEventIndexShard
+pub radroots_storage::Error::DuplicateEventQueryId
+pub radroots_storage::Error::EmptyEventQueryIds
+pub radroots_storage::Error::EventConflict
+pub radroots_storage::Error::EventNotFound
+pub radroots_storage::Error::EventPageLimitExceeded
+pub radroots_storage::Error::IdempotencyConflict
+pub radroots_storage::Error::InvalidAtomicCommitId
+pub radroots_storage::Error::InvalidAtomicCommitTimestamp
+pub radroots_storage::Error::InvalidBackupId
+pub radroots_storage::Error::InvalidBackupManifest
+pub radroots_storage::Error::InvalidBackupMemberLength
+pub radroots_storage::Error::InvalidBackupMemberPath
+pub radroots_storage::Error::InvalidBackupTimestamp
+pub radroots_storage::Error::InvalidBackupTransition
+pub radroots_storage::Error::InvalidBackupVersion
+pub radroots_storage::Error::InvalidDeliveryAttempt
+pub radroots_storage::Error::InvalidDeliveryEvidence
+pub radroots_storage::Error::InvalidEventIndexArtifactPath
+pub radroots_storage::Error::InvalidEventIndexCheckpoint
+pub radroots_storage::Error::InvalidEventIndexCursor
+pub radroots_storage::Error::InvalidEventIndexManifest
+pub radroots_storage::Error::InvalidEventIndexRange
+pub radroots_storage::Error::InvalidEventIndexShardCount
+pub radroots_storage::Error::InvalidEventIndexShardId
+pub radroots_storage::Error::InvalidEventIndexTimestamp
+pub radroots_storage::Error::InvalidEventQueryLimit
+pub radroots_storage::Error::InvalidEventSequence
+pub radroots_storage::Error::InvalidExpiredArtifactQueryLimit
+pub radroots_storage::Error::InvalidIdempotencyKey
+pub radroots_storage::Error::InvalidIntegrityStatus
+pub radroots_storage::Error::InvalidJournalQueryLimit
+pub radroots_storage::Error::InvalidJournalRevision
+pub radroots_storage::Error::InvalidJournalTransition
+pub radroots_storage::Error::InvalidOperationInstanceId
+pub radroots_storage::Error::InvalidOperationTimestamp
+pub radroots_storage::Error::InvalidOutboxClaimLimit
+pub radroots_storage::Error::InvalidOutboxItemId
+pub radroots_storage::Error::InvalidOutboxLease
+pub radroots_storage::Error::InvalidOutboxLeaseOwner
+pub radroots_storage::Error::InvalidOutboxRevision
+pub radroots_storage::Error::InvalidOutboxTimestamp
+pub radroots_storage::Error::InvalidPrivateArtifactId
+pub radroots_storage::Error::InvalidPrivateArtifactKind
+pub radroots_storage::Error::InvalidPrivateArtifactMetadata
+pub radroots_storage::Error::InvalidPrivateArtifactRetention
+pub radroots_storage::Error::InvalidPrivateArtifactRevision
+pub radroots_storage::Error::InvalidPrivateArtifactSchema
+pub radroots_storage::Error::InvalidPrivateArtifactSecretReference
+pub radroots_storage::Error::InvalidPrivateArtifactTimestamp
+pub radroots_storage::Error::InvalidProjectionGeneration
+pub radroots_storage::Error::InvalidProjectionId
+pub radroots_storage::Error::InvalidProjectionInvalidation
+pub radroots_storage::Error::InvalidProjectionRevision
+pub radroots_storage::Error::InvalidProjectionTimestamp
+pub radroots_storage::Error::InvalidRebuildTicketId
+pub radroots_storage::Error::InvalidRebuildTransition
+pub radroots_storage::Error::InvalidRecoveryAttempt
+pub radroots_storage::Error::InvalidRecoveryDeadline
+pub radroots_storage::Error::InvalidReliabilityRevision
+pub radroots_storage::Error::InvalidRestoreTimestamp
+pub radroots_storage::Error::InvalidRestoreTransition
+pub radroots_storage::Error::InvalidSourceGeneration
+pub radroots_storage::Error::InvalidStorageStatus
+pub radroots_storage::Error::JournalOperationCommitted
+pub radroots_storage::Error::JournalRevisionConflict
+pub radroots_storage::Error::OperationIdentityMismatch
+pub radroots_storage::Error::OperationNotFound
+pub radroots_storage::Error::OutboxItemNotFound
+pub radroots_storage::Error::OutboxItemNotReady
+pub radroots_storage::Error::OutboxItemTerminal
+pub radroots_storage::Error::OutboxLeaseConflict
+pub radroots_storage::Error::OutboxLeaseExpired
+pub radroots_storage::Error::OutboxPlanConflict
+pub radroots_storage::Error::OutboxRevisionConflict
+pub radroots_storage::Error::PrivateArtifactConflict
+pub radroots_storage::Error::PrivateArtifactNotExpired
+pub radroots_storage::Error::PrivateArtifactNotFound
+pub radroots_storage::Error::PrivateArtifactRetentionActive
+pub radroots_storage::Error::PrivateArtifactRevisionConflict
+pub radroots_storage::Error::PrivateArtifactTombstoned
+pub radroots_storage::Error::ProjectionCheckpointMismatch
+pub radroots_storage::Error::ProjectionCheckpointRegression
+pub radroots_storage::Error::ProjectionRevisionConflict
+pub radroots_storage::Error::RebuildTicketTerminal
+pub radroots_storage::Error::ReliabilityOperationTerminal
+pub radroots_storage::Error::ReliabilityRevisionConflict
+pub radroots_storage::Error::RestoreMemberVerificationFailed
+pub radroots_storage::Error::SourceGenerationChanged
+pub radroots_storage::Error::TooManyEventQueryIds
+impl core::error::Error for radroots_storage::Error
+impl core::fmt::Display for radroots_storage::Error
+pub fn radroots_storage::Error::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result
+pub struct radroots_storage::StorageStatus
+impl radroots_storage::status::StorageStatus
+pub const fn radroots_storage::status::StorageStatus::backend(self) -> radroots_storage::status::StorageBackend
+pub const fn radroots_storage::status::StorageStatus::busy_timeout_ms(self) -> u32
+pub const fn radroots_storage::status::StorageStatus::integrity(self) -> radroots_storage::status::IntegrityStatus
+pub fn radroots_storage::status::StorageStatus::new(radroots_storage::status::StorageBackend, radroots_storage::status::StorageOpenMode, radroots_storage::status::WriterPolicy, radroots_storage::status::ShutdownState, radroots_storage::status::IntegrityStatus, bool, u32) -> core::result::Result<Self, radroots_storage::Error>
+pub const fn radroots_storage::status::StorageStatus::open_mode(self) -> radroots_storage::status::StorageOpenMode
+pub const fn radroots_storage::status::StorageStatus::shutdown(self) -> radroots_storage::status::ShutdownState
+pub const fn radroots_storage::status::StorageStatus::wal_enabled(self) -> bool
+pub const fn radroots_storage::status::StorageStatus::writer_policy(self) -> radroots_storage::status::WriterPolicy
+pub trait radroots_storage::BackupSource: core::marker::Send + core::marker::Sync
+pub fn radroots_storage::BackupSource::begin_backup(&self, radroots_storage::backup::BackupPlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>>
+pub fn radroots_storage::BackupSource::begin_restore(&self, radroots_storage::backup::RestorePlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>>
+pub fn radroots_storage::BackupSource::close(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>>
+pub fn radroots_storage::BackupSource::integrity(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::IntegrityStatus, radroots_storage::Error>>
+pub fn radroots_storage::BackupSource::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>>
+pub fn radroots_storage::BackupSource::transition_backup(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::BackupTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>>
+pub fn radroots_storage::BackupSource::transition_restore(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::RestoreTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>>
+impl radroots_storage::backup::StorageReliability for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::begin_backup(&self, radroots_storage::backup::BackupPlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::begin_restore(&self, radroots_storage::backup::RestorePlan) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::close(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::integrity(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::IntegrityStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::StorageStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::transition_backup(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::BackupTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::BackupOperation, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::transition_restore(&self, radroots_storage::backup::BackupId, radroots_storage::backup::ReliabilityRevision, radroots_storage::backup::RestoreTransition, u64) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::backup::RestoreOperation, radroots_storage::Error>>
+pub trait radroots_storage::EventStore: core::marker::Send + core::marker::Sync
+pub fn radroots_storage::EventStore::admit(&self, radroots_storage::event::EventAdmission) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::AdmissionReceipt, radroots_storage::Error>>
+pub fn radroots_storage::EventStore::query_provenance(&self, radroots_event::id::EventId, radroots_storage::event::EventQueryBounds) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredEventProvenance>, radroots_storage::Error>>
+pub fn radroots_storage::EventStore::query_raw(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredRawEvent>, radroots_storage::Error>>
+pub fn radroots_storage::EventStore::query_verified(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVerifiedEvent>, radroots_storage::Error>>
+pub fn radroots_storage::EventStore::query_visible(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVisibleEvent>, radroots_storage::Error>>
+pub fn radroots_storage::EventStore::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::EventStoreStatus, radroots_storage::Error>>
+impl radroots_storage::event::EventStore for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::admit(&self, radroots_storage::event::EventAdmission) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::AdmissionReceipt, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::query_provenance(&self, radroots_event::id::EventId, radroots_storage::event::EventQueryBounds) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredEventProvenance>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::query_raw(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredRawEvent>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::query_verified(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVerifiedEvent>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::query_visible(&self, radroots_storage::event::EventQuery) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::event::EventPage<radroots_storage::event::StoredVisibleEvent>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::status::EventStoreStatus, radroots_storage::Error>>
+pub trait radroots_storage::Journal: core::marker::Send + core::marker::Sync
+pub fn radroots_storage::Journal::by_idempotency_key(&self, radroots_protocol::runtime::v1::OperationId, radroots_storage::journal::IdempotencyKey) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::Journal::operation(&self, radroots_storage::journal::OperationInstanceId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::Journal::prepare(&self, radroots_storage::journal::PrepareOperation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::PrepareReceipt, radroots_storage::Error>>
+pub fn radroots_storage::Journal::recoverable(&self, u16) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::Journal::transition(&self, radroots_storage::journal::JournalTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::OperationRecord, radroots_storage::Error>>
+impl radroots_storage::journal::Journal for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::by_idempotency_key(&self, radroots_protocol::runtime::v1::OperationId, radroots_storage::journal::IdempotencyKey) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::operation(&self, radroots_storage::journal::OperationInstanceId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::prepare(&self, radroots_storage::journal::PrepareOperation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::PrepareReceipt, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::recoverable(&self, u16) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::journal::OperationRecord>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::transition(&self, radroots_storage::journal::JournalTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::journal::OperationRecord, radroots_storage::Error>>
+pub trait radroots_storage::Outbox: core::marker::Send + core::marker::Sync
+pub fn radroots_storage::Outbox::claim(&self, radroots_storage::outbox::ClaimOutboxItems) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::outbox::ClaimedOutboxItem>, radroots_storage::Error>>
+pub fn radroots_storage::Outbox::enqueue(&self, radroots_storage::outbox::EnqueueOutboxItem) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::EnqueueReceipt, radroots_storage::Error>>
+pub fn radroots_storage::Outbox::item(&self, radroots_storage::outbox::OutboxItemId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::outbox::OutboxRecord>, radroots_storage::Error>>
+pub fn radroots_storage::Outbox::record_attempt(&self, radroots_storage::outbox::DeliveryAttemptEvidence) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>>
+pub fn radroots_storage::Outbox::release(&self, radroots_storage::outbox::OutboxItemId, radroots_storage::outbox::LeaseId, radroots_storage::outbox::OutboxRevision, u64, core::option::Option<u64>) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>>
+pub fn radroots_storage::Outbox::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxStatus, radroots_storage::Error>>
+impl radroots_storage::outbox::Outbox for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::claim(&self, radroots_storage::outbox::ClaimOutboxItems) -> radroots_transport::source::BoxFuture<'_, core::result::Result<alloc::vec::Vec<radroots_storage::outbox::ClaimedOutboxItem>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::enqueue(&self, radroots_storage::outbox::EnqueueOutboxItem) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::EnqueueReceipt, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::item(&self, radroots_storage::outbox::OutboxItemId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::outbox::OutboxRecord>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::record_attempt(&self, radroots_storage::outbox::DeliveryAttemptEvidence) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::release(&self, radroots_storage::outbox::OutboxItemId, radroots_storage::outbox::LeaseId, radroots_storage::outbox::OutboxRevision, u64, core::option::Option<u64>) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxRecord, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::outbox::OutboxStatus, radroots_storage::Error>>
+pub trait radroots_storage::ProjectionStore: core::marker::Send + core::marker::Sync
+pub fn radroots_storage::ProjectionStore::checkpoint(&self, radroots_storage::projection::ProjectionCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>>
+pub fn radroots_storage::ProjectionStore::event_index_checkpoint(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexCheckpoint>, radroots_storage::Error>>
+pub fn radroots_storage::ProjectionStore::event_index_manifest(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexManifest>, radroots_storage::Error>>
+pub fn radroots_storage::ProjectionStore::invalidate(&self, radroots_storage::projection::ProjectionInvalidation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>>
+pub fn radroots_storage::ProjectionStore::put_event_index_checkpoint(&self, radroots_storage::projection::EventIndexCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>>
+pub fn radroots_storage::ProjectionStore::put_event_index_manifest(&self, radroots_storage::projection::EventIndexManifest) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>>
+pub fn radroots_storage::ProjectionStore::request_rebuild(&self, radroots_storage::projection::RebuildTicket) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>>
+pub fn radroots_storage::ProjectionStore::status(&self, radroots_storage::projection::ProjectionId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::ProjectionStatus>, radroots_storage::Error>>
+pub fn radroots_storage::ProjectionStore::transition_rebuild(&self, radroots_storage::projection::RebuildTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>>
+impl radroots_storage::projection::ProjectionStore for radroots_storage::memory::MemoryStorage
+pub fn radroots_storage::memory::MemoryStorage::checkpoint(&self, radroots_storage::projection::ProjectionCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::event_index_checkpoint(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexCheckpoint>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::event_index_manifest(&self, radroots_storage::projection::ProjectionGeneration) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::EventIndexManifest>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::invalidate(&self, radroots_storage::projection::ProjectionInvalidation) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::ProjectionStatus, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::put_event_index_checkpoint(&self, radroots_storage::projection::EventIndexCheckpoint) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::put_event_index_manifest(&self, radroots_storage::projection::EventIndexManifest) -> radroots_transport::source::BoxFuture<'_, core::result::Result<(), radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::request_rebuild(&self, radroots_storage::projection::RebuildTicket) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::status(&self, radroots_storage::projection::ProjectionId) -> radroots_transport::source::BoxFuture<'_, core::result::Result<core::option::Option<radroots_storage::projection::ProjectionStatus>, radroots_storage::Error>>
+pub fn radroots_storage::memory::MemoryStorage::transition_rebuild(&self, radroots_storage::projection::RebuildTransition) -> radroots_transport::source::BoxFuture<'_, core::result::Result<radroots_storage::projection::RebuildTicket, radroots_storage::Error>>
+pub trait radroots_storage::Storage: radroots_storage::event::EventStore + radroots_storage::journal::Journal + radroots_storage::outbox::Outbox + radroots_storage::projection::ProjectionStore + radroots_storage::private_artifact::PrivateArtifactStore + radroots_storage::backup::StorageReliability + radroots_storage::atomic::AtomicStorage
+impl<T> radroots_storage::Storage for T where T: radroots_storage::event::EventStore + radroots_storage::journal::Journal + radroots_storage::outbox::Outbox + radroots_storage::projection::ProjectionStore + radroots_storage::private_artifact::PrivateArtifactStore + radroots_storage::backup::StorageReliability + radroots_storage::atomic::AtomicStorage