Skip to main content

prikk_store/
lib.rs

1#![forbid(unsafe_code)]
2#![warn(missing_docs)]
3
4//! Storage crate for Prikk repositories.
5//!
6//! This crate provides persistent layout, object storage, WAL durability, deeper read-only
7//! repository verification, initial ref-state/ref-log publication primitives, a narrow
8//! active-session append API, opt-in safe doctor repairs, conservative snapshot materialization,
9//! read-only worktree status, minimal worktree-to-patch draft generation, supported patch replay
10//! planning and materialization, explicit opt-in deletion of patch-removed files, deterministic
11//! arbitrary-span text edit replay and generation from worktree changes, explicit unborn local branch
12//! genesis through active-WAL ref ownership,
13//! read-only inverse planning for the supported patch subset, non-mutating rollback preview,
14//! conservative rollback draft append to an empty active WAL, rollback draft verification, sealed
15//! rollback block classification, and an internal patch-algebra foundation. Production confluence,
16//! plugin execution, and remote sync remain separate increments.
17
18mod active;
19mod author_key_index;
20mod author_signing;
21mod blob_access;
22mod block_state;
23mod bundle;
24mod byte_cursor;
25mod checkout;
26mod commit_index;
27mod compact;
28mod container;
29mod doctor;
30mod file_codec;
31mod format;
32mod frame_resync;
33mod fsutil;
34mod generation;
35mod history;
36mod index;
37mod layout;
38mod lifecycle_cache;
39mod lock;
40mod maintainer_signing;
41mod memory_store;
42mod merge_evidence;
43mod merge_execute;
44// Production node-id minting (DC-09 Phase 4.4a-1), consumed by node-addressed worktree authoring
45// (4.4a-2) for fresh-node creation.
46mod node_id_gen;
47mod node_lifecycle;
48mod object_store;
49// Patch algebra foundation and evidence contract (DC-16/DC-21), now production-compiled through the
50// DC-22 read-only merge-evidence store boundary.
51mod patch_algebra;
52mod patch_checkout;
53mod patch_exchange;
54mod patch_inverse;
55mod patch_replay;
56mod patch_set_digest;
57mod path;
58mod received;
59mod received_index;
60mod recognition_claim;
61mod refs;
62mod rfc111_seal_simulation;
63mod rollback_draft;
64mod rollback_preview;
65mod rollback_verify;
66mod seal_from_accepted;
67mod signature_diagnostics;
68mod snapshot;
69mod state_root;
70mod sync_negotiation;
71mod tag_travel;
72mod text_span;
73mod trust;
74mod trust_index;
75mod unlock;
76mod verify;
77mod wal;
78mod worktree;
79mod worktree_marker;
80mod worktree_patch;
81mod worktree_status;
82
83#[cfg(test)]
84mod dc55_identity_evidence;
85#[cfg(test)]
86mod format_stability_gate;
87#[cfg(test)]
88mod rfc111_index_decode_cost_gate;
89#[cfg(test)]
90mod rfc111_seal_decode_cost_gate;
91#[cfg(test)]
92mod signature_contract_tests;
93#[cfg(test)]
94mod test_support;
95
96pub use active::{
97    ActiveCommitResult, ActiveRefMetadata, ActiveSession, finish_active_publication_cleanup,
98    read_active_ref_metadata, remove_active_ref_metadata, require_active_ref_for_non_empty_wal,
99    write_active_ref_metadata,
100};
101pub use author_signing::{AuthorSigner, Ed25519AuthorSigner, author_signature};
102pub use block_state::{
103    BlockStateOutcome, BlockStateStatus, derive_next_state_root, validate_block_v2_shape,
104};
105pub use bundle::{
106    BundleExportReport, BundleImportOptions, BundleImportReport, DEFAULT_BUNDLE_MAX_OBJECT_COUNT,
107    DEFAULT_BUNDLE_MAX_TOTAL_BYTES, export_bundle, import_bundle,
108};
109pub use checkout::{
110    CheckoutMaterialization, CheckoutPlan, DEFAULT_CHECKOUT_REF, SnapshotCheckoutPlan,
111    prepare_checkout_plan, prepare_snapshot_checkout_plan,
112};
113pub use commit_index::CommitIndexDivergence;
114pub use compact::{
115    CompactionReport, compact_received_index, compact_ref_pointer_index, compact_trust_policy,
116    plan_compact_received_index, plan_compact_ref_pointer_index, plan_compact_trust_policy,
117};
118pub use doctor::{
119    DoctorIssue, DoctorRepairOptions, DoctorRepairReport, DoctorReport, DoctorSeverity,
120    doctor_repository, repair_repository,
121};
122pub use history::{
123    DEFAULT_HISTORY_LIMIT, HistoryEntry, RefHistory, load_received_ref_history, load_ref_history,
124};
125pub use layout::{ContainerSlot, LockableContainer, RepositoryFormat, RepositoryLayout};
126pub use lifecycle_cache::incremental::LifecycleCacheDivergence;
127pub use lock::{ActiveLock, ContainerLockGuard, RefLock, acquire_container_locks};
128pub use maintainer_signing::{Ed25519MaintainerSigner, MaintainerSigner, maintainer_signature};
129pub use memory_store::MemoryObjectStore;
130pub use merge_evidence::{
131    MergeEvidenceDisplay, MergeEvidenceDisplayItem, MergeEvidenceDisplayOperation,
132    MergeEvidenceDisplaySelector, MergeEvidenceTarget, MergePlanDisplay, prepare_merge_evidence,
133    prepare_merge_plan,
134};
135pub use merge_execute::{MergeExecutionReport, execute_merge};
136pub use object_store::{
137    FileObjectStore, ObjectReadSnapshot, ObjectReader, ObjectWriteSession, ObjectWriter,
138};
139pub use patch_checkout::{
140    PatchDeletionConflict, PatchDeletionPlan, PatchMaterializationReport,
141    materialize_patch_checkout, materialize_patch_checkout_with_deletions,
142    plan_patch_checkout_deletions,
143};
144pub use patch_exchange::{
145    AcceptOptions, AcceptReport, ClaimSignatureVerification,
146    DEFAULT_EXCHANGE_ARTIFACT_MAX_OBJECT_COUNT, DEFAULT_EXCHANGE_ARTIFACT_MAX_TOTAL_BYTES,
147    ExchangeExportReport, accept_exchange_artifact, accepted_but_unsealed_patch_ids,
148    export_exchange_artifact,
149};
150pub use patch_inverse::{
151    PatchInverseOperationKind, PatchInverseOperationSummary, PatchInversePlan,
152    prepare_patch_inverse_plan,
153};
154pub use patch_replay::{PatchReplayPlan, prepare_patch_replay_plan};
155pub use patch_set_digest::{
156    PatchSetDigest, PatchSetResolution, compute_patch_set_digest,
157    compute_patch_set_digest_and_count_from_block, compute_patch_set_digest_for_ref,
158    compute_patch_set_digest_from_block, patch_ids_reachable_from_block, patch_set_digest_preimage,
159    resolve_patch_set_digest,
160};
161pub use path::{RepoPath, validate_no_path_collisions, validate_repo_path};
162pub use received::{
163    ReceivedPointer, list_received_pointers, read_received_pointer, validate_received_ref,
164};
165pub use recognition_claim::{
166    RecognitionClaimConsistency, check_recognition_claim_consistency, order_claims_for_sealing,
167};
168pub use refs::{
169    RefFileOutcome, RefFileStatus, RefItemOutcome, RefItemStatus, RefLogRecord, RefLogReplay,
170    RefPointerSummary, RefPublication, RefPublicationIssue, RefRecoveryCandidate, RefStore,
171    validate_local_branch_ref, validate_local_tag_ref,
172};
173#[cfg(feature = "test-support")]
174pub use refs::{
175    force_ref_pointer_to_arbitrary_state_for_test_support,
176    remove_ref_pointer_entry_for_test_support,
177};
178#[cfg(feature = "test-support")]
179pub use rfc111_seal_simulation::simulate_one_seal_for_test_support;
180pub use rollback_draft::{RollbackDraftReport, append_rollback_draft};
181pub use rollback_preview::{
182    RollbackPreviewChange, RollbackPreviewChangeKind, RollbackPreviewPlan, prepare_rollback_preview,
183};
184pub use rollback_verify::{RollbackDraftVerification, verify_active_rollback_draft};
185pub use seal_from_accepted::{SealFromAcceptedOutcome, seal_from_accepted_claim};
186pub use signature_diagnostics::{SignatureEnvelopeIssue, SignatureEnvelopeSource};
187pub use snapshot::{SnapshotEntry, SnapshotManifest};
188pub use state_root::{
189    StateRootContent, StateRootEntry, compute_state_root, state_leaf_hash, state_leaf_preimage,
190};
191pub use sync_negotiation::{
192    DEFAULT_HAVE_LIST_MAX_PATCH_COUNT, DEFAULT_HAVE_LIST_MAX_TOTAL_BYTES,
193    DEFAULT_SYNC_SUMMARY_MAX_REF_COUNT, DEFAULT_SYNC_SUMMARY_MAX_TOTAL_BYTES, HaveList,
194    SyncArtifactBuildReport, SyncArtifactOutcome, SyncRefComparison, SyncRefComparisonState,
195    SyncSummaryRefEntry, build_have_list, build_sync_artifact, build_sync_summary,
196    compare_sync_summary, compute_sync_delta, decode_have_list, decode_sync_summary,
197};
198pub use tag_travel::{
199    LocalTagCreation, ReceivedTagResolution, ReceivedTagSummary, TagSignatureVerification,
200    adopt_tag, create_local_tag, list_received_tags, received_tag_ids,
201};
202pub use trust::{
203    AdoptedMaintainerKey, MaintainerTrustPolicy, PublicationTrustIssue, add_trusted_maintainer,
204    load_maintainer_trust_policy, remove_trusted_maintainer, verify_signer_trusted,
205    verify_trusted_publication_envelope,
206};
207pub use unlock::{HeldLock, PidLiveness, clear_lock, find_held_lock, list_held_locks};
208pub use verify::{
209    ActiveWalMetadataStatus, ActiveWalOrderingIssue, AuthorSignatureVerification,
210    BlockSealVerification, ObjectItemOutcome, ObjectItemStatus, ObjectVerification,
211    RepositoryVerification, StageOutcome, StageStatus, VerificationStage, VerifyOptions,
212    verify_repository, verify_repository_with_options,
213};
214pub use wal::{Wal, WalRecord, WalRepair, WalReplay};
215pub use worktree::{SnapshotMaterializationReport, materialize_snapshot_checkout};
216pub use worktree_patch::{
217    DEFAULT_ACTIVE_PATCH_LIMIT, WorktreePatchCommitOptions, WorktreePatchCommitReport,
218    WorktreePatchOperationKind, WorktreePatchOperationSummary, commit_worktree_changes_signed,
219};
220pub use worktree_status::{
221    WorktreeChange, WorktreeChangeKind, WorktreeStatusReport, worktree_status,
222};