commit 2abc7f5c370201d18306f3e97c01fd98be557036
parent 729bfba53ef37bf784ffa82fdb660797f2645c33
Author: triesap <tyson@radroots.org>
Date: Tue, 4 Aug 2026 20:15:48 +0000
sdk: pin unpublished lib dependencies by revision
- Resolve every cross-repository Lib crate from the pushed immutable master revision.
- Retain exact alpha versions while removing obsolete local Lib patch overrides.
- Update the lockfile to record the single reviewed Git source for 21 packages.
- Align feature-gated reducer tests with source-bound rebuild lifecycle contracts.
Diffstat:
5 files changed, 73 insertions(+), 54 deletions(-)
diff --git a/.cargo/config.toml b/.cargo/config.toml
@@ -1,30 +1,7 @@
[alias]
xtask = "run -p radroots_sdk_xtask --"
-# Migration-only local development overrides. Release manifests contain only
-# registry identities; package-realistic checks run extracted crates without
-# this repository configuration.
+# Same-repository facade overrides for local workspace development.
[patch.crates-io]
radroots_sdk = { path = "crates/sdk" }
radroots = { path = "crates/radroots" }
-radroots_blossom = { path = "../lib/crates/blossom" }
-radroots_core = { path = "../lib/crates/core" }
-radroots_event = { path = "../lib/crates/event" }
-radroots_event_codec = { path = "../lib/crates/event_codec" }
-radroots_geonames = { path = "../lib/crates/geonames" }
-radroots_identity = { path = "../lib/crates/identity" }
-radroots_nostr = { path = "../lib/crates/nostr" }
-radroots_nostr_connect = { path = "../lib/crates/nostr_connect" }
-radroots_protocol = { path = "../lib/crates/protocol" }
-radroots_secrets = { path = "../lib/crates/secrets" }
-radroots_signing = { path = "../lib/crates/signing" }
-radroots_storage = { path = "../lib/crates/storage" }
-radroots_storage_sqlite = { path = "../lib/crates/storage_sqlite" }
-radroots_sync = { path = "../lib/crates/sync" }
-radroots_transport = { path = "../lib/crates/transport" }
-radroots_transport_nostr = { path = "../lib/crates/transport_nostr" }
-radroots_replica_store = { path = "../lib/crates/replica_store" }
-radroots_replica_schema = { path = "../lib/crates/replica_schema" }
-radroots_replica_sync = { path = "../lib/crates/replica_sync" }
-radroots_sql_core = { path = "../lib/crates/sql_core" }
-radroots_trade = { path = "../lib/crates/trade" }
diff --git a/Cargo.lock b/Cargo.lock
@@ -1795,6 +1795,7 @@ dependencies = [
[[package]]
name = "radroots_blossom"
version = "0.1.0-alpha"
+source = "git+https://github.com/radrootslabs/lib.git?rev=74f5c91cbc80248df1f51f644004daaf8ae8e9be#74f5c91cbc80248df1f51f644004daaf8ae8e9be"
dependencies = [
"mediatype",
"serde",
@@ -1806,6 +1807,7 @@ dependencies = [
[[package]]
name = "radroots_core"
version = "0.1.0-alpha"
+source = "git+https://github.com/radrootslabs/lib.git?rev=74f5c91cbc80248df1f51f644004daaf8ae8e9be#74f5c91cbc80248df1f51f644004daaf8ae8e9be"
dependencies = [
"rust_decimal",
"serde",
@@ -1823,6 +1825,7 @@ dependencies = [
[[package]]
name = "radroots_event"
version = "0.1.0-alpha"
+source = "git+https://github.com/radrootslabs/lib.git?rev=74f5c91cbc80248df1f51f644004daaf8ae8e9be#74f5c91cbc80248df1f51f644004daaf8ae8e9be"
dependencies = [
"hex",
"jiff-tzdb",
@@ -1848,6 +1851,7 @@ dependencies = [
[[package]]
name = "radroots_event_codec"
version = "0.1.0-alpha"
+source = "git+https://github.com/radrootslabs/lib.git?rev=74f5c91cbc80248df1f51f644004daaf8ae8e9be#74f5c91cbc80248df1f51f644004daaf8ae8e9be"
dependencies = [
"hex",
"radroots_blossom",
@@ -1879,6 +1883,7 @@ dependencies = [
[[package]]
name = "radroots_geonames"
version = "0.1.0-alpha"
+source = "git+https://github.com/radrootslabs/lib.git?rev=74f5c91cbc80248df1f51f644004daaf8ae8e9be#74f5c91cbc80248df1f51f644004daaf8ae8e9be"
dependencies = [
"fs2",
"rusqlite",
@@ -1890,6 +1895,7 @@ dependencies = [
[[package]]
name = "radroots_identity"
version = "0.1.0-alpha"
+source = "git+https://github.com/radrootslabs/lib.git?rev=74f5c91cbc80248df1f51f644004daaf8ae8e9be#74f5c91cbc80248df1f51f644004daaf8ae8e9be"
dependencies = [
"k256",
"serde",
@@ -1907,6 +1913,7 @@ dependencies = [
[[package]]
name = "radroots_nostr"
version = "0.1.0-alpha"
+source = "git+https://github.com/radrootslabs/lib.git?rev=74f5c91cbc80248df1f51f644004daaf8ae8e9be#74f5c91cbc80248df1f51f644004daaf8ae8e9be"
dependencies = [
"nostr",
"radroots_event",
@@ -1921,6 +1928,7 @@ dependencies = [
[[package]]
name = "radroots_nostr_connect"
version = "0.1.0-alpha"
+source = "git+https://github.com/radrootslabs/lib.git?rev=74f5c91cbc80248df1f51f644004daaf8ae8e9be#74f5c91cbc80248df1f51f644004daaf8ae8e9be"
dependencies = [
"nostr",
"radroots_event",
@@ -1936,6 +1944,7 @@ dependencies = [
[[package]]
name = "radroots_protocol"
version = "0.1.0-alpha"
+source = "git+https://github.com/radrootslabs/lib.git?rev=74f5c91cbc80248df1f51f644004daaf8ae8e9be#74f5c91cbc80248df1f51f644004daaf8ae8e9be"
dependencies = [
"serde",
]
@@ -1943,6 +1952,7 @@ dependencies = [
[[package]]
name = "radroots_replica_schema"
version = "0.1.0-alpha"
+source = "git+https://github.com/radrootslabs/lib.git?rev=74f5c91cbc80248df1f51f644004daaf8ae8e9be#74f5c91cbc80248df1f51f644004daaf8ae8e9be"
dependencies = [
"dto_bindgen_core",
"serde",
@@ -1960,6 +1970,7 @@ dependencies = [
[[package]]
name = "radroots_replica_store"
version = "0.1.0-alpha"
+source = "git+https://github.com/radrootslabs/lib.git?rev=74f5c91cbc80248df1f51f644004daaf8ae8e9be#74f5c91cbc80248df1f51f644004daaf8ae8e9be"
dependencies = [
"hex",
"radroots_replica_schema",
@@ -1989,6 +2000,7 @@ dependencies = [
[[package]]
name = "radroots_replica_sync"
version = "0.1.0-alpha"
+source = "git+https://github.com/radrootslabs/lib.git?rev=74f5c91cbc80248df1f51f644004daaf8ae8e9be#74f5c91cbc80248df1f51f644004daaf8ae8e9be"
dependencies = [
"base64",
"hex",
@@ -2095,6 +2107,7 @@ dependencies = [
[[package]]
name = "radroots_secrets"
version = "0.1.0-alpha"
+source = "git+https://github.com/radrootslabs/lib.git?rev=74f5c91cbc80248df1f51f644004daaf8ae8e9be#74f5c91cbc80248df1f51f644004daaf8ae8e9be"
dependencies = [
"chacha20poly1305",
"zeroize",
@@ -2103,6 +2116,7 @@ dependencies = [
[[package]]
name = "radroots_signing"
version = "0.1.0-alpha"
+source = "git+https://github.com/radrootslabs/lib.git?rev=74f5c91cbc80248df1f51f644004daaf8ae8e9be#74f5c91cbc80248df1f51f644004daaf8ae8e9be"
dependencies = [
"radroots_event",
"radroots_identity",
@@ -2112,6 +2126,7 @@ dependencies = [
[[package]]
name = "radroots_sql_core"
version = "0.1.0-alpha"
+source = "git+https://github.com/radrootslabs/lib.git?rev=74f5c91cbc80248df1f51f644004daaf8ae8e9be#74f5c91cbc80248df1f51f644004daaf8ae8e9be"
dependencies = [
"chrono",
"serde",
@@ -2122,6 +2137,7 @@ dependencies = [
[[package]]
name = "radroots_storage"
version = "0.1.0-alpha"
+source = "git+https://github.com/radrootslabs/lib.git?rev=74f5c91cbc80248df1f51f644004daaf8ae8e9be#74f5c91cbc80248df1f51f644004daaf8ae8e9be"
dependencies = [
"radroots_event",
"radroots_protocol",
@@ -2132,6 +2148,7 @@ dependencies = [
[[package]]
name = "radroots_storage_sqlite"
version = "0.1.0-alpha"
+source = "git+https://github.com/radrootslabs/lib.git?rev=74f5c91cbc80248df1f51f644004daaf8ae8e9be#74f5c91cbc80248df1f51f644004daaf8ae8e9be"
dependencies = [
"fs2",
"radroots_event_codec",
@@ -2144,6 +2161,7 @@ dependencies = [
[[package]]
name = "radroots_sync"
version = "0.1.0-alpha"
+source = "git+https://github.com/radrootslabs/lib.git?rev=74f5c91cbc80248df1f51f644004daaf8ae8e9be#74f5c91cbc80248df1f51f644004daaf8ae8e9be"
dependencies = [
"radroots_event",
"radroots_event_codec",
@@ -2158,6 +2176,7 @@ dependencies = [
[[package]]
name = "radroots_trade"
version = "0.1.0-alpha"
+source = "git+https://github.com/radrootslabs/lib.git?rev=74f5c91cbc80248df1f51f644004daaf8ae8e9be#74f5c91cbc80248df1f51f644004daaf8ae8e9be"
dependencies = [
"hex",
"radroots_core",
@@ -2175,6 +2194,7 @@ version = "0.1.0-alpha"
[[package]]
name = "radroots_transport"
version = "0.1.0-alpha"
+source = "git+https://github.com/radrootslabs/lib.git?rev=74f5c91cbc80248df1f51f644004daaf8ae8e9be#74f5c91cbc80248df1f51f644004daaf8ae8e9be"
dependencies = [
"radroots_event",
"radroots_identity",
@@ -2185,6 +2205,7 @@ dependencies = [
[[package]]
name = "radroots_transport_nostr"
version = "0.1.0-alpha"
+source = "git+https://github.com/radrootslabs/lib.git?rev=74f5c91cbc80248df1f51f644004daaf8ae8e9be#74f5c91cbc80248df1f51f644004daaf8ae8e9be"
dependencies = [
"async-wsocket",
"nostr-relay-pool",
diff --git a/Cargo.toml b/Cargo.toml
@@ -47,32 +47,32 @@ unimplemented = "deny"
dto_bindgen = { version = "0.1.0" }
dto_bindgen_backend_ts = { version = "0.1.0" }
dto_bindgen_core = { version = "0.1.0" }
-radroots_blossom = { package = "radroots_blossom", version = "=0.1.0-alpha", default-features = false }
-radroots_core = { package = "radroots_core", version = "=0.1.0-alpha", default-features = false }
-radroots_event = { package = "radroots_event", version = "=0.1.0-alpha", default-features = false }
-radroots_event_codec = { package = "radroots_event_codec", version = "=0.1.0-alpha", default-features = false }
+radroots_blossom = { package = "radroots_blossom", git = "https://github.com/radrootslabs/lib.git", rev = "74f5c91cbc80248df1f51f644004daaf8ae8e9be", version = "=0.1.0-alpha", default-features = false }
+radroots_core = { package = "radroots_core", git = "https://github.com/radrootslabs/lib.git", rev = "74f5c91cbc80248df1f51f644004daaf8ae8e9be", version = "=0.1.0-alpha", default-features = false }
+radroots_event = { package = "radroots_event", git = "https://github.com/radrootslabs/lib.git", rev = "74f5c91cbc80248df1f51f644004daaf8ae8e9be", version = "=0.1.0-alpha", default-features = false }
+radroots_event_codec = { package = "radroots_event_codec", git = "https://github.com/radrootslabs/lib.git", rev = "74f5c91cbc80248df1f51f644004daaf8ae8e9be", version = "=0.1.0-alpha", default-features = false }
radroots_sdk_ffi = { path = "crates/ffi", version = "=0.1.0-alpha" }
-radroots_geonames = { package = "radroots_geonames", version = "=0.1.0-alpha", default-features = false }
-radroots_identity = { package = "radroots_identity", version = "=0.1.0-alpha", default-features = false, features = [
+radroots_geonames = { package = "radroots_geonames", git = "https://github.com/radrootslabs/lib.git", rev = "74f5c91cbc80248df1f51f644004daaf8ae8e9be", version = "=0.1.0-alpha", default-features = false }
+radroots_identity = { package = "radroots_identity", git = "https://github.com/radrootslabs/lib.git", rev = "74f5c91cbc80248df1f51f644004daaf8ae8e9be", version = "=0.1.0-alpha", default-features = false, features = [
"std",
] }
-radroots_nostr = { package = "radroots_nostr", version = "=0.1.0-alpha", default-features = false }
-radroots_nostr_connect = { package = "radroots_nostr_connect", version = "=0.1.0-alpha", default-features = false }
-radroots_protocol = { version = "=0.1.0-alpha", default-features = false }
-radroots_secrets = { package = "radroots_secrets", version = "=0.1.0-alpha", default-features = false }
-radroots_signing = { package = "radroots_signing", version = "=0.1.0-alpha", default-features = false }
-radroots_storage = { package = "radroots_storage", version = "=0.1.0-alpha", default-features = false }
-radroots_storage_sqlite = { package = "radroots_storage_sqlite", version = "=0.1.0-alpha", default-features = false }
-radroots_sync = { package = "radroots_sync", version = "=0.1.0-alpha", default-features = false }
-radroots_transport = { package = "radroots_transport", version = "=0.1.0-alpha", default-features = false }
-radroots_transport_nostr = { package = "radroots_transport_nostr", version = "=0.1.0-alpha", default-features = false }
-radroots_replica_store = { version = "=0.1.0-alpha", default-features = false }
-radroots_replica_schema = { version = "=0.1.0-alpha", default-features = false }
-radroots_replica_sync = { version = "=0.1.0-alpha", default-features = false }
+radroots_nostr = { package = "radroots_nostr", git = "https://github.com/radrootslabs/lib.git", rev = "74f5c91cbc80248df1f51f644004daaf8ae8e9be", version = "=0.1.0-alpha", default-features = false }
+radroots_nostr_connect = { package = "radroots_nostr_connect", git = "https://github.com/radrootslabs/lib.git", rev = "74f5c91cbc80248df1f51f644004daaf8ae8e9be", version = "=0.1.0-alpha", default-features = false }
+radroots_protocol = { git = "https://github.com/radrootslabs/lib.git", rev = "74f5c91cbc80248df1f51f644004daaf8ae8e9be", version = "=0.1.0-alpha", default-features = false }
+radroots_secrets = { package = "radroots_secrets", git = "https://github.com/radrootslabs/lib.git", rev = "74f5c91cbc80248df1f51f644004daaf8ae8e9be", version = "=0.1.0-alpha", default-features = false }
+radroots_signing = { package = "radroots_signing", git = "https://github.com/radrootslabs/lib.git", rev = "74f5c91cbc80248df1f51f644004daaf8ae8e9be", version = "=0.1.0-alpha", default-features = false }
+radroots_storage = { package = "radroots_storage", git = "https://github.com/radrootslabs/lib.git", rev = "74f5c91cbc80248df1f51f644004daaf8ae8e9be", version = "=0.1.0-alpha", default-features = false }
+radroots_storage_sqlite = { package = "radroots_storage_sqlite", git = "https://github.com/radrootslabs/lib.git", rev = "74f5c91cbc80248df1f51f644004daaf8ae8e9be", version = "=0.1.0-alpha", default-features = false }
+radroots_sync = { package = "radroots_sync", git = "https://github.com/radrootslabs/lib.git", rev = "74f5c91cbc80248df1f51f644004daaf8ae8e9be", version = "=0.1.0-alpha", default-features = false }
+radroots_transport = { package = "radroots_transport", git = "https://github.com/radrootslabs/lib.git", rev = "74f5c91cbc80248df1f51f644004daaf8ae8e9be", version = "=0.1.0-alpha", default-features = false }
+radroots_transport_nostr = { package = "radroots_transport_nostr", git = "https://github.com/radrootslabs/lib.git", rev = "74f5c91cbc80248df1f51f644004daaf8ae8e9be", version = "=0.1.0-alpha", default-features = false }
+radroots_replica_store = { git = "https://github.com/radrootslabs/lib.git", rev = "74f5c91cbc80248df1f51f644004daaf8ae8e9be", version = "=0.1.0-alpha", default-features = false }
+radroots_replica_schema = { git = "https://github.com/radrootslabs/lib.git", rev = "74f5c91cbc80248df1f51f644004daaf8ae8e9be", version = "=0.1.0-alpha", default-features = false }
+radroots_replica_sync = { git = "https://github.com/radrootslabs/lib.git", rev = "74f5c91cbc80248df1f51f644004daaf8ae8e9be", version = "=0.1.0-alpha", default-features = false }
radroots_sdk = { path = "crates/sdk", version = "=0.1.0-alpha", default-features = false }
radroots_sdk_sql_wasm_runtime = { path = "crates/sql_wasm_runtime", version = "=0.1.0-alpha" }
-radroots_sql_core = { version = "=0.1.0-alpha", default-features = false }
-radroots_trade = { package = "radroots_trade", version = "=0.1.0-alpha", default-features = false, features = [
+radroots_sql_core = { git = "https://github.com/radrootslabs/lib.git", rev = "74f5c91cbc80248df1f51f644004daaf8ae8e9be", version = "=0.1.0-alpha", default-features = false }
+radroots_trade = { package = "radroots_trade", git = "https://github.com/radrootslabs/lib.git", rev = "74f5c91cbc80248df1f51f644004daaf8ae8e9be", version = "=0.1.0-alpha", default-features = false, features = [
"json",
"std",
] }
diff --git a/crates/sdk/src/sync.rs b/crates/sdk/src/sync.rs
@@ -202,7 +202,9 @@ mod tests {
journal::IdempotencyKey,
memory::MemoryStorage,
outbox::LeaseOwner,
- projection::{ProjectionGeneration, ProjectionId},
+ projection::{
+ ProjectionGeneration, ProjectionId, RawSourceDigest, RebuildFailure, RebuildTicketId,
+ },
};
use radroots_sync::{
Engine, PullRequest, PushRequest,
@@ -286,14 +288,32 @@ mod tests {
self.generation
}
+ fn begin_rebuild(
+ &self,
+ _ticket_id: RebuildTicketId,
+ _source_generation: SourceGeneration,
+ _source_digest: RawSourceDigest,
+ ) -> Result<(), ReducerError> {
+ Ok(())
+ }
+
fn reduce(
&self,
events: &[StoredVisibleEvent],
prior_projected_rows: u64,
+ _rebuild_ticket: Option<RebuildTicketId>,
) -> Result<u64, ReducerError> {
assert!(events.is_empty());
Ok(prior_projected_rows)
}
+
+ fn abort_rebuild(
+ &self,
+ _ticket_id: RebuildTicketId,
+ _failure: RebuildFailure,
+ ) -> Result<(), ReducerError> {
+ Ok(())
+ }
}
fn target() -> Target {
diff --git a/crates/sdk/src/transport.rs b/crates/sdk/src/transport.rs
@@ -487,13 +487,10 @@ impl DaemonDelivery {
#[cfg(test)]
mod tests {
- use radroots_event::{SignedEvent, wire::v1::Nip01EventWire};
use radroots_transport::{
- DeliveryRequest, Error, FetchRequest, TARGET_SET_MAX_ITEMS, Target,
+ Error, TARGET_SET_MAX_ITEMS, Target,
capability::{Availability, Maturity},
policy::{SatisfactionClass, SatisfactionPolicy, TargetPolicy},
- sink::DeliveryPayload,
- source::FetchBounds,
target::TargetFingerprint,
};
@@ -503,10 +500,11 @@ mod tests {
Target::nostr_relay(format!("wss://relay-{index}.example")).expect("target")
}
- fn signed_event() -> SignedEvent {
+ #[cfg(feature = "nostr")]
+ fn signed_event() -> radroots_event::SignedEvent {
let raw = r#"{"id":"56bfc78223bb2221bad82b539efdec1ade0f56d0eb0e1f592fd387df4b2ceee0","pubkey":"585591529da0bab31b3b1b1f986611cf5f435dca84f978c89ee8a40cca7103df","created_at":1700000001,"kind":0,"tags":[],"content":"{}","sig":"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"}"#;
- let wire = Nip01EventWire::parse_json(raw).expect("wire event");
- SignedEvent::from_wire_verified_id(wire, raw).expect("signed event")
+ let wire = radroots_event::wire::v1::Nip01EventWire::parse_json(raw).expect("wire event");
+ radroots_event::SignedEvent::from_wire_verified_id(wire, raw).expect("signed event")
}
#[test]
@@ -698,7 +696,10 @@ mod tests {
#[cfg(feature = "nostr")]
#[tokio::test]
async fn empty_nostr_slot_reports_unavailable_and_rejects_operations() {
- use radroots_transport::{EventSink as _, EventSource as _};
+ use radroots_transport::{
+ DeliveryRequest, EventSink as _, EventSource as _, FetchRequest, sink::DeliveryPayload,
+ source::FetchBounds,
+ };
let slot = NostrSlot::new(RelayUrlPolicy::Local);
let source = radroots_transport::EventSource::status(&slot)