commit 682b62c0650bc6e8478a98f41dce4c9bdfb155c1
parent 2299d0a76221618a94f4c4e661b504c6faf4d4d8
Author: triesap <tyson@radroots.org>
Date: Sun, 2 Aug 2026 16:50:15 +0000
storage-sqlite: align package manifest and module root
- expose the seven approved SQLite backend modules
- retain the exact prerelease identity and publication freeze
- enforce the required dependency and empty feature boundaries
- reject legacy storage and secret packages at the crate boundary
Diffstat:
9 files changed, 49 insertions(+), 1 deletion(-)
diff --git a/crates/storage_sqlite/src/backup.rs b/crates/storage_sqlite/src/backup.rs
@@ -0,0 +1 @@
+//! SQLite backup and restore implementation boundary.
diff --git a/crates/storage_sqlite/src/config.rs b/crates/storage_sqlite/src/config.rs
@@ -0,0 +1 @@
+//! Validated SQLite configuration boundary.
diff --git a/crates/storage_sqlite/src/integrity.rs b/crates/storage_sqlite/src/integrity.rs
@@ -0,0 +1 @@
+//! SQLite integrity validation boundary.
diff --git a/crates/storage_sqlite/src/lib.rs b/crates/storage_sqlite/src/lib.rs
@@ -1 +1,9 @@
-//! SQLite storage backend for Radroots.
+//! Native SQLite implementation of the backend-neutral Radroots storage SPIs.
+
+pub mod backup;
+pub mod config;
+pub mod integrity;
+pub mod lock;
+pub mod migration;
+pub mod open;
+pub mod status;
diff --git a/crates/storage_sqlite/src/lock.rs b/crates/storage_sqlite/src/lock.rs
@@ -0,0 +1 @@
+//! SQLite process and writer locking boundary.
diff --git a/crates/storage_sqlite/src/migration.rs b/crates/storage_sqlite/src/migration.rs
@@ -0,0 +1 @@
+//! Governed SQLite schema migration boundary.
diff --git a/crates/storage_sqlite/src/open.rs b/crates/storage_sqlite/src/open.rs
@@ -0,0 +1 @@
+//! SQLite storage opening boundary.
diff --git a/crates/storage_sqlite/src/status.rs b/crates/storage_sqlite/src/status.rs
@@ -0,0 +1 @@
+//! Passive SQLite storage status boundary.
diff --git a/crates/storage_sqlite/tests/package_boundary.rs b/crates/storage_sqlite/tests/package_boundary.rs
@@ -5,6 +5,18 @@ const ROOT: &str = include_str!("../src/lib.rs");
#[test]
fn sqlite_storage_declares_the_final_backend_boundaries() {
+ for required in [
+ "name = \"radroots_storage_sqlite\"",
+ "version = \"0.1.0-alpha\"",
+ "publish = false",
+ "[lib]\nname = \"radroots_storage_sqlite\"",
+ ] {
+ assert!(
+ MANIFEST.contains(required),
+ "manifest is missing `{required}`"
+ );
+ }
+ assert!(!MANIFEST.contains("[features]"));
assert_eq!(
dependency_keys(MANIFEST),
BTreeSet::from([
@@ -24,6 +36,27 @@ fn sqlite_storage_declares_the_final_backend_boundaries() {
assert!(!MANIFEST.contains(forbidden));
assert!(!ROOT.contains(forbidden));
}
+
+ assert_eq!(
+ public_modules(ROOT),
+ BTreeSet::from([
+ "backup",
+ "config",
+ "integrity",
+ "lock",
+ "migration",
+ "open",
+ "status",
+ ])
+ );
+}
+
+fn public_modules(source: &str) -> BTreeSet<&str> {
+ source
+ .lines()
+ .filter_map(|line| line.trim().strip_prefix("pub mod "))
+ .filter_map(|module| module.strip_suffix(';'))
+ .collect()
}
fn dependency_keys(manifest: &str) -> BTreeSet<&str> {