commit 4e17d13854a1a0f0a377047bf9f3cb5a05422fa1
parent 194d57ea6c089349476f459e98e3f0ac83b1db7b
Author: triesap <tyson@radroots.org>
Date: Tue, 4 Aug 2026 11:37:54 +0000
build(release): stage lower crate publication
- enable only the seventeen approved lower crates
- preserve private and preview publication blocks
- record the dependency-first local publish order
- validate the exact crates.io registry allowlist
Diffstat:
19 files changed, 44 insertions(+), 22 deletions(-)
diff --git a/contracts/releases/publish_policy.toml b/contracts/releases/publish_policy.toml
@@ -2,7 +2,7 @@
version = "1.0.0-alpha.1"
[publication]
-frozen = true
+frozen = false
registry = "crates-io"
final_enablement_step = 305
spec_id = "radroots.crates.release.v1"
@@ -96,4 +96,22 @@ retired = [
]
[publish_order]
-crates = []
+crates = [
+ "radroots_core",
+ "radroots_identity",
+ "radroots_blossom",
+ "radroots_protocol",
+ "radroots_event",
+ "radroots_event_codec",
+ "radroots_trade",
+ "radroots_signing",
+ "radroots_transport",
+ "radroots_nostr",
+ "radroots_nostr_connect",
+ "radroots_secrets",
+ "radroots_storage",
+ "radroots_storage_sqlite",
+ "radroots_transport_nostr",
+ "radroots_sync",
+ "radroots_geonames",
+]
diff --git a/crates/blossom/Cargo.toml b/crates/blossom/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "radroots_blossom"
-publish = false
+publish = ["crates-io"]
version = "0.1.0-alpha"
edition.workspace = true
authors.workspace = true
diff --git a/crates/core/Cargo.toml b/crates/core/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "radroots_core"
-publish = false
+publish = ["crates-io"]
version = "0.1.0-alpha"
edition.workspace = true
authors.workspace = true
diff --git a/crates/event/Cargo.toml b/crates/event/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "radroots_event"
-publish = false
+publish = ["crates-io"]
version = "0.1.0-alpha"
edition.workspace = true
authors.workspace = true
diff --git a/crates/event_codec/Cargo.toml b/crates/event_codec/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "radroots_event_codec"
-publish = false
+publish = ["crates-io"]
version = "0.1.0-alpha"
edition.workspace = true
authors.workspace = true
diff --git a/crates/geonames/Cargo.toml b/crates/geonames/Cargo.toml
@@ -9,7 +9,7 @@ repository.workspace = true
homepage.workspace = true
authors.workspace = true
readme = "README.md"
-publish = false
+publish = ["crates-io"]
documentation = "https://docs.rs/radroots_geonames"
keywords = ["radroots", "geonames", "geocoding", "locality"]
categories = ["database"]
diff --git a/crates/identity/Cargo.toml b/crates/identity/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "radroots_identity"
-publish = false
+publish = ["crates-io"]
version = "0.1.0-alpha"
edition.workspace = true
authors.workspace = true
diff --git a/crates/nostr/Cargo.toml b/crates/nostr/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "radroots_nostr"
-publish = false
+publish = ["crates-io"]
version = "0.1.0-alpha"
edition.workspace = true
authors.workspace = true
diff --git a/crates/nostr_connect/Cargo.toml b/crates/nostr_connect/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "radroots_nostr_connect"
-publish = false
+publish = ["crates-io"]
version = "0.1.0-alpha"
edition.workspace = true
authors.workspace = true
diff --git a/crates/protocol/Cargo.toml b/crates/protocol/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "radroots_protocol"
-publish = false
+publish = ["crates-io"]
version = "0.1.0-alpha"
edition.workspace = true
authors.workspace = true
diff --git a/crates/secrets/Cargo.toml b/crates/secrets/Cargo.toml
@@ -10,7 +10,7 @@ homepage.workspace = true
authors.workspace = true
readme = "README.md"
documentation = "https://docs.rs/radroots_secrets"
-publish = false
+publish = ["crates-io"]
keywords = ["radroots", "secrets", "encryption", "keyring"]
categories = ["cryptography", "no-std"]
include = ["src/**", "examples/**", "Cargo.toml", "README.md", "LICENSE-APACHE", "LICENSE-MIT"]
diff --git a/crates/signing/Cargo.toml b/crates/signing/Cargo.toml
@@ -10,7 +10,7 @@ homepage.workspace = true
authors.workspace = true
readme = "README.md"
documentation = "https://docs.rs/radroots_signing"
-publish = false
+publish = ["crates-io"]
keywords = ["radroots", "signing", "nostr", "authorization"]
categories = ["cryptography", "no-std"]
include = ["src/**", "examples/**", "Cargo.toml", "README.md", "LICENSE-APACHE", "LICENSE-MIT"]
diff --git a/crates/storage/Cargo.toml b/crates/storage/Cargo.toml
@@ -9,7 +9,7 @@ repository.workspace = true
homepage.workspace = true
authors.workspace = true
readme = "README.md"
-publish = false
+publish = ["crates-io"]
documentation = "https://docs.rs/radroots_storage"
keywords = ["radroots", "storage", "persistence", "events"]
categories = ["database", "data-structures", "no-std"]
diff --git a/crates/storage_sqlite/Cargo.toml b/crates/storage_sqlite/Cargo.toml
@@ -9,7 +9,7 @@ repository.workspace = true
homepage.workspace = true
authors.workspace = true
readme = "README.md"
-publish = false
+publish = ["crates-io"]
documentation = "https://docs.rs/radroots_storage_sqlite"
keywords = ["radroots", "sqlite", "storage", "database"]
categories = ["database"]
diff --git a/crates/sync/Cargo.toml b/crates/sync/Cargo.toml
@@ -9,7 +9,7 @@ repository.workspace = true
homepage.workspace = true
authors.workspace = true
readme = "README.md"
-publish = false
+publish = ["crates-io"]
documentation = "https://docs.rs/radroots_sync"
keywords = ["radroots", "synchronization", "outbox", "events"]
categories = ["asynchronous", "data-structures", "no-std"]
diff --git a/crates/trade/Cargo.toml b/crates/trade/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "radroots_trade"
-publish = false
+publish = ["crates-io"]
version = "0.1.0-alpha"
edition.workspace = true
authors.workspace = true
diff --git a/crates/transport/Cargo.toml b/crates/transport/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "radroots_transport"
-publish = false
+publish = ["crates-io"]
version = "0.1.0-alpha"
edition.workspace = true
authors.workspace = true
diff --git a/crates/transport_nostr/Cargo.toml b/crates/transport_nostr/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "radroots_transport_nostr"
-publish = false
+publish = ["crates-io"]
version = "0.1.0-alpha"
edition.workspace = true
authors.workspace = true
diff --git a/tools/xtask/src/architecture.rs b/tools/xtask/src/architecture.rs
@@ -408,9 +408,13 @@ fn validate_public_package_metadata(
"public package {name} must use an existing crate-local {PUBLIC_README}"
));
}
- if package.get("publish").and_then(toml::Value::as_bool) != Some(false) {
+ let publish_registries = package
+ .get("publish")
+ .and_then(toml::Value::as_array)
+ .ok_or_else(|| format!("public package {name} must set publish = [\"crates-io\"]"))?;
+ if publish_registries.len() != 1 || publish_registries[0].as_str() != Some("crates-io") {
return Err(format!(
- "public package {name} must remain publish = false during migration"
+ "public package {name} must set publish = [\"crates-io\"]"
));
}
let inherits_lints = manifest
@@ -1337,7 +1341,7 @@ adr_required = false
complete_workspace_manifest("\"crates/radroots\""),
)
.expect("write workspace manifest");
- let manifest = "[package]\nname = \"radroots\"\nversion.workspace = true\nedition.workspace = true\nrust-version.workspace = true\nlicense.workspace = true\nrepository.workspace = true\nhomepage.workspace = true\nauthors.workspace = true\nreadme = \"README.md\"\npublish = false\n\n[lints]\nworkspace = true\n";
+ let manifest = "[package]\nname = \"radroots\"\nversion.workspace = true\nedition.workspace = true\nrust-version.workspace = true\nlicense.workspace = true\nrepository.workspace = true\nhomepage.workspace = true\nauthors.workspace = true\nreadme = \"README.md\"\npublish = [\"crates-io\"]\n\n[lints]\nworkspace = true\n";
fs::write(root.join("crates/radroots/Cargo.toml"), manifest)
.expect("write public manifest");
fs::write(root.join("crates/radroots/README.md"), "fixture\n")