lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README

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:
Mcontracts/releases/publish_policy.toml | 22++++++++++++++++++++--
Mcrates/blossom/Cargo.toml | 2+-
Mcrates/core/Cargo.toml | 2+-
Mcrates/event/Cargo.toml | 2+-
Mcrates/event_codec/Cargo.toml | 2+-
Mcrates/geonames/Cargo.toml | 2+-
Mcrates/identity/Cargo.toml | 2+-
Mcrates/nostr/Cargo.toml | 2+-
Mcrates/nostr_connect/Cargo.toml | 2+-
Mcrates/protocol/Cargo.toml | 2+-
Mcrates/secrets/Cargo.toml | 2+-
Mcrates/signing/Cargo.toml | 2+-
Mcrates/storage/Cargo.toml | 2+-
Mcrates/storage_sqlite/Cargo.toml | 2+-
Mcrates/sync/Cargo.toml | 2+-
Mcrates/trade/Cargo.toml | 2+-
Mcrates/transport/Cargo.toml | 2+-
Mcrates/transport_nostr/Cargo.toml | 2+-
Mtools/xtask/src/architecture.rs | 10+++++++---
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")