rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5 heartwood7322e3ac61669ba6dbde16bb0f7d30edf1ee85ce
{
"request": "trigger",
"version": 1,
"event_type": "patch",
"repository": {
"id": "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5",
"name": "heartwood",
"description": "Radicle Heartwood Protocol & Stack",
"private": false,
"default_branch": "master",
"delegates": [
"did:key:z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT",
"did:key:z6MktaNvN1KVFMkSRAiN4qK5yvX1zuEEaseeX5sffhzPZRZW",
"did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"did:key:z6MkgFq6z5fkF2hioLLSNu1zP2qEL1aHXHZzGH1FLFGAnBGz",
"did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz"
]
},
"action": "Created",
"patch": {
"id": "3219ef871dd44c7ef51693f4aeba4c2c5c0c5c7b",
"author": {
"id": "did:key:z6MkmiJDUjPwusmFndWci1Gx46iSvPx5zfZCtJ4SPmkTV5sS",
"alias": "istankovic"
},
"title": "Remove predefined bootstrap nodes",
"state": {
"status": "open",
"conflicts": []
},
"before": "f5fa84fac6736d2e31ec20c9b844ff12e6414d14",
"after": "7322e3ac61669ba6dbde16bb0f7d30edf1ee85ce",
"commits": [
"7322e3ac61669ba6dbde16bb0f7d30edf1ee85ce",
"674aaebb21590b14b391cb3b0919a5ab14c26206"
],
"target": "6cfed884bf37cba1e0d8e97fa8b0e94df4a04b1f",
"labels": [],
"assignees": [],
"revisions": [
{
"id": "3219ef871dd44c7ef51693f4aeba4c2c5c0c5c7b",
"author": {
"id": "did:key:z6MkmiJDUjPwusmFndWci1Gx46iSvPx5zfZCtJ4SPmkTV5sS",
"alias": "istankovic"
},
"description": "Instead, expect a \"network\" field that names a network file that must exist\nunder $RAD_HOME/networks.\n\nA network file is a JSON file containing nodes and preferred nodes, e.g.\n\n {\n \"nodes\": {\n \"seed.radicle.xyz\": \"z6MksmpU5b1dS7oaqF2bHXhQi1DWy2hB7Mh9CuN7y1DN6QSz@seed.radicle.xyz:8776\",\n \"seed.radicle.garden\", \"z6MkrLMMsiPWUcNPHcRajuMi9mDfYckSoJyPwwnknocNYPm7@seed.radicle.garden:8776\",\n \"ash.radicle.garden\", \"z6Mkmqogy2qEM2ummccUthFEaaHvyYmYBYh3dbe9W4ebScxo@ash.radicle.garden:8776\"\n },\n \"preferredNodes\": [\"seed.radicle.xyz\"]\n }",
"base": "74336f961a5f6cfbb30f867a9eacfd5da579f597",
"oid": "e46acdc3cbcebaf3552b97babf6d6bec953ea230",
"timestamp": 1722634346
},
{
"id": "1d23961eeb8247bc29ea02db5c475642b81868ad",
"author": {
"id": "did:key:z6MkmiJDUjPwusmFndWci1Gx46iSvPx5zfZCtJ4SPmkTV5sS",
"alias": "istankovic"
},
"description": "",
"base": "c8fbcf2a7aeb0dc8b5c2f709532ae464fedc3677",
"oid": "b96908a5b04926bf42cd2e7b657326c3f34556fa",
"timestamp": 1724509992
},
{
"id": "38969304ecf11a97070328f074ed93915fb9c003",
"author": {
"id": "did:key:z6MkmiJDUjPwusmFndWci1Gx46iSvPx5zfZCtJ4SPmkTV5sS",
"alias": "istankovic"
},
"description": "",
"base": "3b5fac178eaf9bca639fbd0c1df0c68619a7f51f",
"oid": "34463b0031d6da1578cd5d45d1e683309ef3a3d3",
"timestamp": 1744061017
},
{
"id": "263374575f2a74b428c3c78d594df78edc3802ff",
"author": {
"id": "did:key:z6MkmiJDUjPwusmFndWci1Gx46iSvPx5zfZCtJ4SPmkTV5sS",
"alias": "istankovic"
},
"description": "",
"base": "ffc86f8a9687a1a085f955abe058c7f1cb65daa6",
"oid": "3782686c36c00f643eb4ef3f93db29155063d848",
"timestamp": 1744478283
},
{
"id": "602ee13f09319b2bd660ecdf16f3d5950d259ec5",
"author": {
"id": "did:key:z6MkmiJDUjPwusmFndWci1Gx46iSvPx5zfZCtJ4SPmkTV5sS",
"alias": "istankovic"
},
"description": "",
"base": "ffc86f8a9687a1a085f955abe058c7f1cb65daa6",
"oid": "653dd9d53b7f31330707b2473609e15120863e05",
"timestamp": 1744492675
},
{
"id": "e2d02d3bdaae0941620906c3a8542b617d21a8df",
"author": {
"id": "did:key:z6MkmiJDUjPwusmFndWci1Gx46iSvPx5zfZCtJ4SPmkTV5sS",
"alias": "istankovic"
},
"description": "",
"base": "ffc86f8a9687a1a085f955abe058c7f1cb65daa6",
"oid": "e9d51d65c3b3f836bd5cd25478d90e4e994d443a",
"timestamp": 1744574174
},
{
"id": "eaf5e0b423bb9a919e627dd8a73828046b95fb98",
"author": {
"id": "did:key:z6MkmiJDUjPwusmFndWci1Gx46iSvPx5zfZCtJ4SPmkTV5sS",
"alias": "istankovic"
},
"description": "",
"base": "47c785b9160c31ab360e15c7b2f849e5225ecc66",
"oid": "3273d81f73bcb510c595510c36a48a57fdab2822",
"timestamp": 1744844180
},
{
"id": "43076f3ce705d2d45c0197f0c125304b743fa0d4",
"author": {
"id": "did:key:z6MkmiJDUjPwusmFndWci1Gx46iSvPx5zfZCtJ4SPmkTV5sS",
"alias": "istankovic"
},
"description": "",
"base": "433483e07aaee791c3c7ca6e9ffff1f24060ce26",
"oid": "0a8f0b2a99e9c7ec22d2c7bba20d17c6f8127913",
"timestamp": 1745237998
},
{
"id": "7ffde3dd1e00bce7012624813949571149c11b25",
"author": {
"id": "did:key:z6MkmiJDUjPwusmFndWci1Gx46iSvPx5zfZCtJ4SPmkTV5sS",
"alias": "istankovic"
},
"description": "",
"base": "8fd044833e40440e7b9d7a2c08281f404e5f5ed7",
"oid": "a260405f7b121905e24d37a72ee088e6a0a34fcf",
"timestamp": 1745238057
},
{
"id": "854cf69f63cdd526be0fade57f4ccc2669a58e0f",
"author": {
"id": "did:key:z6MkmiJDUjPwusmFndWci1Gx46iSvPx5zfZCtJ4SPmkTV5sS",
"alias": "istankovic"
},
"description": "",
"base": "8fd044833e40440e7b9d7a2c08281f404e5f5ed7",
"oid": "0fc788768082521d1d8e11f3338dd58eab815cf2",
"timestamp": 1745238387
},
{
"id": "982302c3e6e41d6cc700a13c2f06bb733748164a",
"author": {
"id": "did:key:z6MkmiJDUjPwusmFndWci1Gx46iSvPx5zfZCtJ4SPmkTV5sS",
"alias": "istankovic"
},
"description": "",
"base": "8fd044833e40440e7b9d7a2c08281f404e5f5ed7",
"oid": "2a2b2d613aa07bbf4bec7ff619bd10bdb0aa67a7",
"timestamp": 1745240871
},
{
"id": "28ea60d89fb24e1bc77e9711885c27d509e9d3cb",
"author": {
"id": "did:key:z6MkmiJDUjPwusmFndWci1Gx46iSvPx5zfZCtJ4SPmkTV5sS",
"alias": "istankovic"
},
"description": "",
"base": "8fd044833e40440e7b9d7a2c08281f404e5f5ed7",
"oid": "d6f14205e6a631b74e7d8efa60ae4792779013a5",
"timestamp": 1745345979
},
{
"id": "e908a107af0cf0a4e29202627ce1dfb875046885",
"author": {
"id": "did:key:z6MkmiJDUjPwusmFndWci1Gx46iSvPx5zfZCtJ4SPmkTV5sS",
"alias": "istankovic"
},
"description": "",
"base": "8fd044833e40440e7b9d7a2c08281f404e5f5ed7",
"oid": "7eddb63cfed766cafa70579abd9bcc815ec610ec",
"timestamp": 1745347056
},
{
"id": "c53abe9ba40da6407ead0bd103e2ddad4389235b",
"author": {
"id": "did:key:z6MkmiJDUjPwusmFndWci1Gx46iSvPx5zfZCtJ4SPmkTV5sS",
"alias": "istankovic"
},
"description": "",
"base": "f5fa84fac6736d2e31ec20c9b844ff12e6414d14",
"oid": "7322e3ac61669ba6dbde16bb0f7d30edf1ee85ce",
"timestamp": 1749306161
}
]
}
}
{
"response": "triggered",
"run_id": {
"id": "6887a674-24f1-499a-a07f-a02cd659c2bc"
},
"info_url": "https://cci.rad.levitte.org//6887a674-24f1-499a-a07f-a02cd659c2bc.html"
}
Started at: 2025-10-21 19:17:51.572238+02:00
Commands:
$ rad clone rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5 .
✓ Creating checkout in ./...
✓ Remote cloudhead@z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT added
✓ Remote-tracking branch cloudhead@z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT/master created for z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT
✓ Remote cloudhead@z6MktaNvN1KVFMkSRAiN4qK5yvX1zuEEaseeX5sffhzPZRZW added
✓ Remote-tracking branch cloudhead@z6MktaNvN1KVFMkSRAiN4qK5yvX1zuEEaseeX5sffhzPZRZW/master created for z6MktaNvN1KVFMkSRAiN4qK5yvX1zuEEaseeX5sffhzPZRZW
✓ Remote fintohaps@z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM added
✓ Remote-tracking branch fintohaps@z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM/master created for z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM
✓ Remote erikli@z6MkgFq6z5fkF2hioLLSNu1zP2qEL1aHXHZzGH1FLFGAnBGz added
✓ Remote-tracking branch erikli@z6MkgFq6z5fkF2hioLLSNu1zP2qEL1aHXHZzGH1FLFGAnBGz/master created for z6MkgFq6z5fkF2hioLLSNu1zP2qEL1aHXHZzGH1FLFGAnBGz
✓ Remote lorenz@z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz added
✓ Remote-tracking branch lorenz@z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz/master created for z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz
✓ Repository successfully cloned under /opt/radcis/ci.rad.levitte.org/cci/state/6887a674-24f1-499a-a07f-a02cd659c2bc/w/
╭────────────────────────────────────╮
│ heartwood │
│ Radicle Heartwood Protocol & Stack │
│ 125 issues · 15 patches │
╰────────────────────────────────────╯
Run `cd ./.` to go to the repository directory.
Exit code: 0
$ rad patch checkout 3219ef871dd44c7ef51693f4aeba4c2c5c0c5c7b
✓ Switched to branch patch/3219ef8 at revision c53abe9
✓ Branch patch/3219ef8 setup to track rad/patches/3219ef871dd44c7ef51693f4aeba4c2c5c0c5c7b
Exit code: 0
$ git config advice.detachedHead false
Exit code: 0
$ git checkout 7322e3ac61669ba6dbde16bb0f7d30edf1ee85ce
HEAD is now at 7322e3ac node, cli: remove predefined bootstrap nodes
Exit code: 0
$ git show 7322e3ac61669ba6dbde16bb0f7d30edf1ee85ce
commit 7322e3ac61669ba6dbde16bb0f7d30edf1ee85ce
Author: Ivan Stanković <istankovic@posteo.net>
Date: Tue May 14 12:05:24 2024 +0000
node, cli: remove predefined bootstrap nodes
Instead, expect a "network" field that names a network file that must exist
under $RAD_HOME/networks.
A network file is a JSON file containing nodes and preferred nodes, e.g.
{
"nodes": {
"seed.radicle.xyz": "z6MksmpU5b1dS7oaqF2bHXhQi1DWy2hB7Mh9CuN7y1DN6QSz@seed.radicle.xyz:8776",
"seed.radicle.garden", "z6MkrLMMsiPWUcNPHcRajuMi9mDfYckSoJyPwwnknocNYPm7@seed.radicle.garden:8776",
"ash.radicle.garden", "z6Mkmqogy2qEM2ummccUthFEaaHvyYmYBYh3dbe9W4ebScxo@ash.radicle.garden:8776"
},
"preferredNodes": ["seed.radicle.garden"]
}
diff --git a/radicle-cli/examples/rad-config.md b/radicle-cli/examples/rad-config.md
index 7e4dc39c..f8c8a3c1 100644
--- a/radicle-cli/examples/rad-config.md
+++ b/radicle-cli/examples/rad-config.md
@@ -5,10 +5,7 @@ In its simplest form, `rad config` prints the current configuration.
$ rad config
{
"publicExplorer": "https://app.radicle.xyz/nodes/$host/$rid$path",
- "preferredSeeds": [
- "z6MkrLMMsiPWUcNPHcRajuMi9mDfYckSoJyPwwnknocNYPm7@seed.radicle.garden:8776",
- "z6MksmpU5b1dS7oaqF2bHXhQi1DWy2hB7Mh9CuN7y1DN6QSz@seed.radicle.xyz:8776"
- ],
+ "preferredSeeds": [],
"web": {
"pinned": {
"repositories": []
@@ -64,8 +61,6 @@ You can also get any value in the configuration by path, eg.
$ rad config get node.alias
alice
$ rad config get preferredSeeds
-z6MkrLMMsiPWUcNPHcRajuMi9mDfYckSoJyPwwnknocNYPm7@seed.radicle.garden:8776
-z6MksmpU5b1dS7oaqF2bHXhQi1DWy2hB7Mh9CuN7y1DN6QSz@seed.radicle.xyz:8776
$ rad config get node.limits.routingMaxSize
1000
```
diff --git a/radicle-cli/tests/commands.rs b/radicle-cli/tests/commands.rs
index cfaadc49..b5008458 100644
--- a/radicle-cli/tests/commands.rs
+++ b/radicle-cli/tests/commands.rs
@@ -5,7 +5,6 @@ use std::{net, thread, time};
use radicle::git;
use radicle::node;
use radicle::node::address::Store as _;
-use radicle::node::config::seeds::{RADICLE_COMMUNITY_NODE, RADICLE_TEAM_NODE};
use radicle::node::config::DefaultSeedingPolicy;
use radicle::node::routing::Store as _;
use radicle::node::Handle as _;
@@ -30,7 +29,7 @@ const RAD_SEED: &str = "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
mod config {
use super::*;
- use radicle::node::config::{Config, Limits, Network, RateLimit, RateLimits};
+ use radicle::node::config::{Config, Limits, RateLimit, RateLimits};
use radicle::profile;
/// Configuration for a test seed node.
@@ -41,7 +40,7 @@ mod config {
/// messages from being dropped.
pub fn seed(alias: &'static str) -> Config {
Config {
- network: Network::Test,
+ network: "test".to_string(),
relay: node::config::Relay::Always,
limits: Limits {
rate: RateLimits {
@@ -413,10 +412,7 @@ fn rad_inspect() {
fn rad_config() {
let mut environment = Environment::new();
let alias = Alias::new("alice");
- let profile = environment.profile(profile::Config {
- preferred_seeds: vec![RADICLE_COMMUNITY_NODE.clone(), RADICLE_TEAM_NODE.clone()],
- ..profile::Config::new(alias)
- });
+ let profile = environment.profile(profile::Config::new(alias));
let working = tempfile::tempdir().unwrap();
test(
diff --git a/radicle-node/src/lib.rs b/radicle-node/src/lib.rs
index 768b3b9a..29da26fd 100644
--- a/radicle-node/src/lib.rs
+++ b/radicle-node/src/lib.rs
@@ -39,7 +39,7 @@ pub mod prelude {
pub use crate::identity::{Did, RepoId};
pub use crate::node::Address;
pub use crate::service::filter::Filter;
- pub use crate::service::{DisconnectReason, Event, Message, Network, NodeId};
+ pub use crate::service::{DisconnectReason, Event, Message, NodeId};
pub use crate::storage::refs::Refs;
pub use crate::storage::WriteStorage;
pub use crate::{LocalDuration, LocalTime, Timestamp};
diff --git a/radicle-node/src/main.rs b/radicle-node/src/main.rs
index f62a9988..dcd81f45 100644
--- a/radicle-node/src/main.rs
+++ b/radicle-node/src/main.rs
@@ -1,14 +1,14 @@
use std::io;
use std::{env, fs, net, path::PathBuf, process};
-use anyhow::Context;
+use anyhow::{bail, Context};
use crossbeam_channel as chan;
use radicle::logger;
use radicle::prelude::Signer;
use radicle::profile;
use radicle_node::crypto::ssh::keystore::{Keystore, MemorySigner};
-use radicle_node::{Runtime, VERSION};
+use radicle_node::{runtime, Runtime, VERSION};
use radicle_signals as signals;
pub const HELP_MSG: &str = r#"
@@ -93,6 +93,11 @@ fn execute() -> anyhow::Result<()> {
logger::init(options.log.unwrap_or(config.node.log))?;
+ let networks = profile::Networks::load(&home)?;
+ let Some(network) = networks.get(&config.node.network.to_owned().into()) else {
+ bail!(runtime::Error::UnknownNetwork(config.node.network));
+ };
+
log::info!(target: "node", "Starting node..");
log::info!(target: "node", "Version {} ({})", env!("RADICLE_VERSION"), env!("GIT_HEAD"));
log::info!(target: "node", "Unlocking node keystore..");
@@ -123,7 +128,7 @@ fn execute() -> anyhow::Result<()> {
log::debug!(target: "node", "Removing existing control socket..");
fs::remove_file(home.socket()).ok();
}
- Runtime::init(home, config.node, listen, signals, signer)?.run()?;
+ Runtime::init(home, network, config.node, listen, signals, signer)?.run()?;
Ok(())
}
diff --git a/radicle-node/src/runtime.rs b/radicle-node/src/runtime.rs
index 0abfcc13..f6a901e2 100644
--- a/radicle-node/src/runtime.rs
+++ b/radicle-node/src/runtime.rs
@@ -21,7 +21,7 @@ use radicle::node::address::Store as _;
use radicle::node::notifications;
use radicle::node::Handle as _;
use radicle::node::UserAgent;
-use radicle::profile::Home;
+use radicle::profile::{Home, Network};
use radicle::{cob, git, storage, Storage};
use crate::control;
@@ -87,6 +87,9 @@ pub enum Error {
/// A git version error.
#[error("git version error: {0}")]
GitVersion(#[from] git::VersionError),
+ /// An unknown network was referenced.
+ #[error("unknown network: {0}")]
+ UnknownNetwork(String),
}
/// Wraps a [`UnixListener`] but tracks its origin.
@@ -116,6 +119,7 @@ impl Runtime {
/// This function spawns threads.
pub fn init<G>(
home: Home,
+ network: &Network,
config: service::Config,
listen: Vec<net::SocketAddr>,
signals: chan::Receiver<Signal>,
@@ -127,7 +131,6 @@ impl Runtime {
let id = *signer.public_key();
let alias = config.alias.clone();
let node_dir = home.node();
- let network = config.network;
let rng = fastrand::Rng::new();
let clock = LocalTime::now();
let timestamp = clock.into();
@@ -155,7 +158,7 @@ impl Runtime {
}
log::info!(target: "node", "Default seeding policy set to '{}'", &policy);
- log::info!(target: "node", "Initializing service ({:?})..", network);
+ log::info!(target: "node", "Using network {}", network.name());
let announcement = if let Some(ann) = fs::read(node_dir.join(node::NODE_ANNOUNCEMENT_FILE))
.ok()
@@ -210,14 +213,15 @@ impl Runtime {
if config.connect.is_empty() && stores.addresses().is_empty()? {
log::info!(target: "node", "Address book is empty. Adding bootstrap nodes..");
- for (alias, version, addr) in config.network.bootstrap() {
- let (id, addr) = addr.into();
+ let version = 1;
+ for (alias, addr) in network.nodes() {
+ let (id, addr) = addr.clone().into();
stores.addresses_mut().insert(
&id,
version,
radicle::node::Features::SEED,
- &alias,
+ alias,
0,
&UserAgent::default(),
clock.into(),
diff --git a/radicle-node/src/service.rs b/radicle-node/src/service.rs
index db08f00d..f68486ad 100644
--- a/radicle-node/src/service.rs
+++ b/radicle-node/src/service.rs
@@ -59,7 +59,7 @@ use crate::Link;
use crate::{crypto, PROTOCOL_VERSION};
pub use crate::node::events::{Event, Events};
-pub use crate::node::{config::Network, Config, NodeId};
+pub use crate::node::{Config, NodeId};
pub use crate::service::message::{Message, ZeroBytes};
pub use crate::service::session::{QueuedFetch, Session};
diff --git a/radicle-node/src/test/environment.rs b/radicle-node/src/test/environment.rs
index 4fc6fb52..fe4adb17 100644
--- a/radicle-node/src/test/environment.rs
+++ b/radicle-node/src/test/environment.rs
@@ -22,7 +22,7 @@ use radicle::node::seed::Store as _;
use radicle::node::{Alias, Database, UserAgent, POLICIES_DB_FILE};
use radicle::node::{ConnectOptions, Handle as _};
use radicle::profile;
-use radicle::profile::{env, Home, Profile};
+use radicle::profile::{env, Home, Network, Profile};
use radicle::rad;
use radicle::storage::{ReadStorage as _, RemoteRepository as _, SignRepository as _};
use radicle::test::fixtures;
@@ -512,8 +512,10 @@ impl<G: cyphernet::Ecdh<Pk = NodeId> + Signer + Clone> Node<G> {
pub fn spawn(self) -> NodeHandle<G> {
let listen = vec![([0, 0, 0, 0], 0).into()];
let (_, signals) = chan::bounded(1);
+ let network = Network::new("test");
let rt = Runtime::init(
self.home.clone(),
+ &network,
self.config,
listen,
signals,
diff --git a/radicle/src/node.rs b/radicle/src/node.rs
index 669fa832..7ec6b451 100644
--- a/radicle/src/node.rs
+++ b/radicle/src/node.rs
@@ -291,7 +291,9 @@ impl AsRef<str> for UserAgent {
}
/// Node alias.
-#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, serde::Serialize, serde::Deserialize)]
+#[derive(
+ Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Hash, serde::Serialize, serde::Deserialize,
+)]
#[serde(try_from = "String", into = "String")]
pub struct Alias(String);
diff --git a/radicle/src/node/config.rs b/radicle/src/node/config.rs
index 15571df2..db4f7b61 100644
--- a/radicle/src/node/config.rs
+++ b/radicle/src/node/config.rs
@@ -17,82 +17,6 @@ pub type ProtocolVersion = u8;
/// Default number of workers to spawn.
pub const DEFAULT_WORKERS: usize = 8;
-/// Configured public seeds.
-pub mod seeds {
- use std::str::FromStr;
-
- use super::{ConnectAddress, PeerAddr};
- use once_cell::sync::Lazy;
-
- /// The radicle public community seed node.
- pub static RADICLE_COMMUNITY_NODE: Lazy<ConnectAddress> = Lazy::new(|| {
- // SAFETY: `ConnectAddress` is known at compile time.
- #[allow(clippy::unwrap_used)]
- PeerAddr::from_str(
- "z6MkrLMMsiPWUcNPHcRajuMi9mDfYckSoJyPwwnknocNYPm7@seed.radicle.garden:8776",
- )
- .unwrap()
- .into()
- });
-
- /// The radicle public `ash` seed node.
- pub static RADICLE_ASH_NODE: Lazy<ConnectAddress> = Lazy::new(|| {
- // SAFETY: `ConnectAddress` is known at compile time.
- #[allow(clippy::unwrap_used)]
- PeerAddr::from_str(
- "z6Mkmqogy2qEM2ummccUthFEaaHvyYmYBYh3dbe9W4ebScxo@ash.radicle.garden:8776",
- )
- .unwrap()
- .into()
- });
-
- /// The radicle team node.
- pub static RADICLE_TEAM_NODE: Lazy<ConnectAddress> = Lazy::new(|| {
- // SAFETY: `ConnectAddress` is known at compile time.
- #[allow(clippy::unwrap_used)]
- PeerAddr::from_str("z6MksmpU5b1dS7oaqF2bHXhQi1DWy2hB7Mh9CuN7y1DN6QSz@seed.radicle.xyz:8776")
- .unwrap()
- .into()
- });
-}
-
-/// Peer-to-peer network.
-#[derive(Default, Debug, Copy, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
-#[serde(rename_all = "camelCase")]
-pub enum Network {
- #[default]
- Main,
- Test,
-}
-
-impl Network {
- /// Bootstrap nodes for this network.
- pub fn bootstrap(&self) -> Vec<(Alias, ProtocolVersion, ConnectAddress)> {
- match self {
- Self::Main => [
- ("seed.radicle.garden", seeds::RADICLE_COMMUNITY_NODE.clone()),
- ("seed.radicle.xyz", seeds::RADICLE_TEAM_NODE.clone()),
- ]
- .into_iter()
- .map(|(a, s)| (Alias::new(a), 1, s))
- .collect(),
-
- Self::Test => vec![],
- }
- }
-
- /// Public seeds for this network.
- pub fn public_seeds(&self) -> Vec<ConnectAddress> {
- match self {
- Self::Main => vec![
- seeds::RADICLE_COMMUNITY_NODE.clone(),
- seeds::RADICLE_ASH_NODE.clone(),
- ],
- Self::Test => vec![],
- }
- }
-}
-
/// Configuration parameters defining attributes of minima and maxima.
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "camelCase")]
@@ -404,8 +328,7 @@ pub struct Config {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub onion: Option<AddressConfig>,
/// Peer-to-peer network.
- #[serde(default)]
- pub network: Network,
+ pub network: String,
/// Log level.
#[serde(default = "defaults::log")]
#[serde(with = "crate::serde_ext::string")]
@@ -430,7 +353,7 @@ pub struct Config {
impl Config {
pub fn test(alias: Alias) -> Self {
Self {
- network: Network::Test,
+ network: "test".to_string(),
..Self::new(alias)
}
}
@@ -442,7 +365,7 @@ impl Config {
listen: vec![],
connect: HashSet::default(),
external_addresses: vec![],
- network: Network::default(),
+ network: "main".to_string(),
proxy: None,
onion: None,
relay: Relay::default(),
diff --git a/radicle/src/profile.rs b/radicle/src/profile.rs
index a854abae..b2bb0f34 100644
--- a/radicle/src/profile.rs
+++ b/radicle/src/profile.rs
@@ -13,6 +13,8 @@
pub mod config;
pub use config::{Config, ConfigError, ConfigPath, RawConfig};
+pub mod networks;
+pub use networks::{Network, Networks};
use std::collections::{BTreeMap, BTreeSet};
use std::path::{Path, PathBuf};
@@ -217,6 +219,7 @@ impl Profile {
key: public_key,
},
)?;
+
// Create DBs.
home.policies_mut()?;
home.notifications_mut()?;
@@ -494,7 +497,13 @@ impl Home {
path: path.canonicalize()?,
};
- for dir in &[home.storage(), home.keys(), home.node(), home.cobs()] {
+ for dir in &[
+ home.storage(),
+ home.keys(),
+ home.node(),
+ home.cobs(),
+ home.networks(),
+ ] {
if !dir.exists() {
fs::create_dir_all(dir)?;
}
@@ -527,6 +536,10 @@ impl Home {
self.path.join("cobs")
}
+ pub fn networks(&self) -> PathBuf {
+ self.path.join("networks")
+ }
+
pub fn socket(&self) -> PathBuf {
env::var_os(env::RAD_SOCKET)
.map(PathBuf::from)
diff --git a/radicle/src/profile/config.rs b/radicle/src/profile/config.rs
index f00d5d3b..57057501 100644
--- a/radicle/src/profile/config.rs
+++ b/radicle/src/profile/config.rs
@@ -50,7 +50,7 @@ impl Config {
Self {
public_explorer: Explorer::default(),
- preferred_seeds: node.network.public_seeds(),
+ preferred_seeds: vec![],
web: web::Config::default(),
cli: cli::Config::default(),
node,
diff --git a/radicle/src/profile/networks.rs b/radicle/src/profile/networks.rs
new file mode 100644
index 00000000..4a86c8cc
--- /dev/null
+++ b/radicle/src/profile/networks.rs
@@ -0,0 +1,82 @@
+use std::collections::HashMap;
+use std::fs;
+use std::path::Path;
+
+use crate::node::config::ConnectAddress;
+use crate::node::Alias;
+use crate::profile::config::ConfigError;
+use crate::profile::Home;
+
+#[derive(Debug, Default, Display, Hash, Eq, PartialEq)]
+#[display(inner)]
+pub struct NetworkName(String);
+
+#[derive(Debug, serde::Serialize, serde::Deserialize)]
+pub struct Network {
+ #[serde(skip)]
+ name: NetworkName,
+ // A map node-alias -> node-address
+ nodes: HashMap<Alias, ConnectAddress>,
+ preferred_nodes: Vec<Alias>,
+}
+
+impl<T> From<T> for NetworkName
+where
+ T: Into<String>,
+{
+ fn from(name: T) -> NetworkName {
+ NetworkName(name.into())
+ }
+}
+
+impl Network {
+ pub fn new(name: impl Into<NetworkName>) -> Network {
+ Network {
+ name: name.into(),
+ nodes: HashMap::new(),
+ preferred_nodes: vec![],
+ }
+ }
+
+ pub fn add_node(&mut self, alias: Alias, addr: ConnectAddress) {
+ self.nodes.insert(alias, addr);
+ }
+
+ pub fn nodes(&self) -> impl Iterator<Item = (&Alias, &ConnectAddress)> {
+ self.nodes.iter()
+ }
+
+ pub fn name(&self) -> &NetworkName {
+ &self.name
+ }
+
+ pub fn from_file(name: &str, path: impl AsRef<Path>) -> Result<Network, ConfigError> {
+ let file = fs::File::open(&path)?;
+ let mut network: Network = serde_json::from_reader(file)?;
+ network.name = name.into();
+ Ok(network)
+ }
+}
+
+#[derive(Debug)]
+pub struct Networks(HashMap<NetworkName, Network>);
+
+impl Networks {
+ pub fn load(home: &Home) -> Result<Networks, ConfigError> {
+ let mut networks = HashMap::new();
+
+ for entry in fs::read_dir(home.networks())? {
+ let path = entry?.path();
+ if let Some(name) = path.file_name().and_then(|x| x.to_str()) {
+ let network = Network::from_file(name, &path)?;
+ networks.insert(name.into(), network);
+ }
+ }
+
+ Ok(Networks(networks))
+ }
+
+ pub fn get(&self, name: &NetworkName) -> Option<&Network> {
+ self.0.get(name)
+ }
+}
Exit code: 0
shell: 'cargo --version rustc --version cargo fmt --check cargo clippy --all-targets --workspace -- --deny warnings cargo build --all-targets --workspace cargo doc --workspace --no-deps cargo test --workspace --no-fail-fast '
Commands:
$ podman run --name 6887a674-24f1-499a-a07f-a02cd659c2bc -v /opt/radcis/ci.rad.levitte.org/cci/state/6887a674-24f1-499a-a07f-a02cd659c2bc/s:/6887a674-24f1-499a-a07f-a02cd659c2bc/s:ro -v /opt/radcis/ci.rad.levitte.org/cci/state/6887a674-24f1-499a-a07f-a02cd659c2bc/w:/6887a674-24f1-499a-a07f-a02cd659c2bc/w -w /6887a674-24f1-499a-a07f-a02cd659c2bc/w -v /opt/radcis/ci.rad.levitte.org/.radicle:/${id}/.radicle:ro -e RAD_HOME=/${id}/.radicle rust:bookworm bash /6887a674-24f1-499a-a07f-a02cd659c2bc/s/script.sh
+ cargo --version
info: syncing channel updates for '1.85-x86_64-unknown-linux-gnu'
info: latest update on 2025-03-18, rust version 1.85.1 (4eb161250 2025-03-15)
info: downloading component 'cargo'
info: downloading component 'clippy'
info: downloading component 'rust-docs'
info: downloading component 'rust-src'
info: downloading component 'rust-std'
info: downloading component 'rustc'
info: downloading component 'rustfmt'
info: installing component 'cargo'
info: installing component 'clippy'
info: installing component 'rust-docs'
info: installing component 'rust-src'
info: installing component 'rust-std'
info: installing component 'rustc'
info: installing component 'rustfmt'
cargo 1.85.1 (d73d2caf9 2024-12-31)
+ rustc --version
rustc 1.85.1 (4eb161250 2025-03-15)
+ cargo fmt --check
+ cargo clippy --all-targets --workspace -- --deny warnings
Updating crates.io index
Downloading crates ...
Downloaded amplify v4.6.0
Downloaded gix-object v0.46.1
Downloaded errno v0.3.9
Downloaded cc v1.2.2
Downloaded tar v0.4.40
Downloaded radicle-git-ext v0.8.0
Downloaded gix-actor v0.33.2
Downloaded data-encoding v2.5.0
Downloaded cyphergraphy v0.3.0
Downloaded block-buffer v0.10.4
Downloaded bytesize v2.0.1
Downloaded anstyle-query v1.0.2
Downloaded aho-corasick v1.1.3
Downloaded lazy_static v1.5.0
Downloaded gix-odb v0.66.0
Downloaded yansi v0.5.1
Downloaded regex-syntax v0.8.5
Downloaded amplify_syn v2.0.1
Downloaded rand v0.8.5
Downloaded rsa v0.9.6
Downloaded rand_core v0.6.4
Downloaded rand_chacha v0.3.1
Downloaded amplify_derive v4.0.0
Downloaded aes-gcm v0.10.3
Downloaded adler2 v2.0.0
Downloaded ecdsa v0.16.9
Downloaded p256 v0.13.2
Downloaded amplify_num v0.5.2
Downloaded numtoa v0.1.0
Downloaded elliptic-curve v0.13.8
Downloaded escargot v0.5.10
Downloaded ed25519 v1.5.3
Downloaded filetime v0.2.23
Downloaded bloomy v1.2.0
Downloaded ssh-cipher v0.2.0
Downloaded scopeguard v1.2.0
Downloaded tinystr v0.7.6
Downloaded writeable v0.5.5
Downloaded yoke v0.7.5
Downloaded thiserror v2.0.12
Downloaded unicode-width v0.1.11
Downloaded ssh-key v0.6.6
Downloaded tree-sitter-go v0.23.4
Downloaded subtle v2.5.0
Downloaded git-ref-format v0.3.0
Downloaded smallvec v1.13.2
Downloaded tree-sitter-md v0.3.2
Downloaded universal-hash v0.5.1
Downloaded regex v1.11.1
Downloaded lock_api v0.4.11
Downloaded syn v2.0.89
Downloaded url v2.5.4
Downloaded tinyvec v1.6.0
Downloaded bstr v1.9.1
Downloaded zerovec-derive v0.10.3
Downloaded sha3 v0.10.8
Downloaded walkdir v2.5.0
Downloaded crc32fast v1.4.0
Downloaded base64 v0.13.1
Downloaded unicode-ident v1.0.12
Downloaded der v0.7.9
Downloaded utf8parse v0.2.1
Downloaded crossbeam-utils v0.8.19
Downloaded ct-codecs v1.1.1
Downloaded block-padding v0.3.3
Downloaded base32 v0.4.0
Downloaded winnow v0.6.26
Downloaded gix-validate v0.9.4
Downloaded unicode-normalization v0.1.23
Downloaded yoke-derive v0.7.5
Downloaded cypheraddr v0.4.0
Downloaded cpufeatures v0.2.12
Downloaded keccak v0.1.5
Downloaded group v0.13.0
Downloaded gix-packetline v0.18.4
Downloaded icu_provider_macros v1.5.0
Downloaded zerofrom v0.1.6
Downloaded base64 v0.22.1
Downloaded chacha20 v0.9.1
Downloaded itoa v1.0.11
Downloaded arc-swap v1.7.1
Downloaded normalize-line-endings v0.3.0
Downloaded const-oid v0.9.6
Downloaded gix-utils v0.1.14
Downloaded jobserver v0.1.31
Downloaded gix-url v0.28.2
Downloaded gix-pack v0.56.0
Downloaded opaque-debug v0.3.1
Downloaded zerovec v0.10.4
Downloaded proc-macro-error-attr v1.0.4
Downloaded tree-sitter-html v0.23.2
Downloaded signature v2.2.0
Downloaded thiserror-impl v2.0.12
Downloaded inout v0.1.3
Downloaded gix-lock v15.0.1
Downloaded nonempty v0.5.0
Downloaded getrandom v0.2.15
Downloaded log v0.4.21
Downloaded iana-time-zone v0.1.60
Downloaded primeorder v0.13.6
Downloaded percent-encoding v2.3.1
Downloaded localtime v1.3.1
Downloaded gix-sec v0.10.12
Downloaded tree-sitter-c v0.23.2
Downloaded qcheck-macros v1.0.0
Downloaded quote v1.0.36
Downloaded jiff v0.2.1
Downloaded gix-transport v0.44.0
Downloaded nonempty v0.9.0
Downloaded icu_locid v1.5.0
Downloaded tree-sitter-python v0.23.4
Downloaded tree-sitter-toml-ng v0.6.0
Downloaded same-file v1.0.6
Downloaded libm v0.2.8
Downloaded linux-raw-sys v0.4.13
Downloaded popol v3.0.0
Downloaded lexopt v0.3.0
Downloaded pkcs8 v0.10.2
Downloaded serde v1.0.219
Downloaded tinyvec_macros v0.1.1
Downloaded gix-tempfile v15.0.0
Downloaded once_cell v1.19.0
Downloaded memmap2 v0.9.4
Downloaded num-traits v0.2.18
Downloaded io-reactor v0.5.2
Downloaded indexmap v2.2.6
Downloaded num-integer v0.1.46
Downloaded inquire v0.7.5
Downloaded phf_shared v0.11.3
Downloaded pkg-config v0.3.30
Downloaded icu_normalizer_data v1.5.1
Downloaded socks5-client v0.4.1
Downloaded hashbrown v0.14.3
Downloaded ppv-lite86 v0.2.17
Downloaded gix-revwalk v0.17.0
Downloaded poly1305 v0.8.0
Downloaded gix-quote v0.4.15
Downloaded num-bigint-dig v0.8.4
Downloaded proc-macro2 v1.0.92
Downloaded idna_adapter v1.2.0
Downloaded qcheck v1.0.0
Downloaded newline-converter v0.3.0
Downloaded gix-traverse v0.43.1
Downloaded num-iter v0.1.44
Downloaded xattr v1.3.1
Downloaded icu_normalizer v1.5.0
Downloaded pem-rfc7468 v0.7.0
Downloaded hmac v0.12.1
Downloaded icu_locid_transform v1.5.0
Downloaded gix-ref v0.49.1
Downloaded miniz_oxide v0.8.8
Downloaded synstructure v0.13.1
Downloaded p521 v0.13.3
Downloaded radicle-surf v0.22.0
Downloaded p384 v0.13.0
Downloaded siphasher v0.3.11
Downloaded gix-shallow v0.1.0
Downloaded rustix v0.38.34
Downloaded libc v0.2.155
Downloaded write16 v1.0.0
Downloaded proc-macro-error v1.0.4
Downloaded unicode-segmentation v1.11.0
Downloaded thiserror-impl v1.0.69
Downloaded idna v1.0.3
Downloaded tree-sitter v0.24.4
Downloaded vcpkg v0.2.15
Downloaded tree-sitter-bash v0.23.3
Downloaded signals_receipts v0.2.0
Downloaded icu_collections v1.5.0
Downloaded utf8_iter v1.0.4
Downloaded ssh-encoding v0.2.0
Downloaded parking_lot_core v0.9.9
Downloaded zerofrom-derive v0.1.6
Downloaded tree-sitter-css v0.23.1
Downloaded libz-sys v1.1.16
Downloaded gix-path v0.10.15
Downloaded polyval v0.6.2
Downloaded tempfile v3.10.1
Downloaded shlex v1.3.0
Downloaded gix-prompt v0.9.1
Downloaded gix-protocol v0.47.0
Downloaded tree-sitter-typescript v0.23.2
Downloaded netservices v0.8.0
Downloaded pkcs1 v0.7.5
Downloaded parking_lot v0.12.1
Downloaded gix-refspec v0.27.0
Downloaded sqlite3-src v0.5.1
Downloaded maybe-async v0.2.10
Downloaded icu_locid_transform_data v1.5.1
Downloaded gix-revision v0.31.1
Downloaded prodash v29.0.2
Downloaded signature v1.6.4
Downloaded pbkdf2 v0.12.2
Downloaded version_check v0.9.4
Downloaded sha1_smol v1.0.0
Downloaded icu_provider v1.5.0
Downloaded phf v0.11.3
Downloaded pretty_assertions v1.4.0
Downloaded multibase v0.9.1
Downloaded streaming-iterator v0.1.9
Downloaded noise-framework v0.4.0
Downloaded home v0.5.9
Downloaded radicle-std-ext v0.1.0
Downloaded zeroize v1.7.0
Downloaded icu_properties v1.5.1
Downloaded litemap v0.7.5
Downloaded memchr v2.7.2
Downloaded icu_properties_data v1.5.1
Downloaded gix-trace v0.1.12
Downloaded spin v0.9.8
Downloaded unicode-display-width v0.3.0
Downloaded either v1.11.0
Downloaded cyphernet v0.5.2
Downloaded syn v1.0.109
Downloaded snapbox-macros v0.3.8
Downloaded scrypt v0.11.0
Downloaded regex-automata v0.4.9
Downloaded crossbeam-channel v0.5.15
Downloaded colored v2.1.0
Downloaded aead v0.5.2
Downloaded tree-sitter-language v0.1.2
Downloaded tree-sitter-highlight v0.24.4
Downloaded gix-date v0.9.4
Downloaded displaydoc v0.2.5
Downloaded ascii v1.1.0
Downloaded anstyle v1.0.6
Downloaded aes v0.8.4
Downloaded similar v2.5.0
Downloaded sem_safe v0.2.0
Downloaded rfc6979 v0.4.0
Downloaded cbc v0.1.2
Downloaded byteorder v1.5.0
Downloaded bcrypt-pbkdf v0.10.0
Downloaded base-x v0.2.11
Downloaded anstyle-parse v0.2.3
Downloaded anstream v0.6.13
Downloaded utf16_iter v1.0.5
Downloaded typenum v1.17.0
Downloaded tree-sitter-ruby v0.23.1
Downloaded tree-sitter-json v0.24.8
Downloaded gix-command v0.4.1
Downloaded git2 v0.19.0
Downloaded form_urlencoded v1.2.1
Downloaded equivalent v1.0.1
Downloaded dyn-clone v1.0.17
Downloaded digest v0.10.7
Downloaded diff v0.1.13
Downloaded data-encoding-macro-internal v0.1.12
Downloaded data-encoding-macro v0.1.14
Downloaded crypto-bigint v0.5.5
Downloaded base64 v0.21.7
Downloaded base16ct v0.2.0
Downloaded anyhow v1.0.82
Downloaded gix-hash v0.15.1
Downloaded tree-sitter-rust v0.23.2
Downloaded termion v2.0.3
Downloaded snapbox v0.4.17
Downloaded gix-diff v0.49.0
Downloaded gix-credentials v0.26.0
Downloaded gix-config-value v0.14.12
Downloaded gix-commitgraph v0.25.1
Downloaded gix-chunk v0.4.11
Downloaded git-ref-format-macro v0.3.0
Downloaded git-ref-format-core v0.3.0
Downloaded faster-hex v0.9.0
Downloaded emojis v0.6.4
Downloaded chrono v0.4.38
Downloaded cfg-if v1.0.0
Downloaded blowfish v0.9.1
Downloaded autocfg v1.2.0
Downloaded termion v3.0.0
Downloaded ctr v0.9.2
Downloaded ghash v0.5.1
Downloaded ff v0.13.0
Downloaded serde_json v1.0.116
Downloaded gix-negotiate v0.17.0
Downloaded libgit2-sys v0.17.0+1.8.1
Downloaded gix-hashtable v0.6.0
Downloaded gix-features v0.39.1
Downloaded fastrand v2.1.0
Downloaded bitflags v2.5.0
Downloaded base64ct v1.6.0
Downloaded stable_deref_trait v1.2.0
Downloaded sqlite v0.32.0
Downloaded gix-fs v0.12.1
Downloaded generic-array v0.14.7
Downloaded ec25519 v0.1.0
Downloaded crypto-common v0.1.6
Downloaded cipher v0.4.4
Downloaded socket2 v0.5.7
Downloaded ryu v1.0.17
Downloaded flate2 v1.1.1
Downloaded chacha20poly1305 v0.10.1
Downloaded timeago v0.4.2
Downloaded thiserror v1.0.69
Downloaded sqlite3-sys v0.15.2
Downloaded sha2 v0.10.8
Downloaded fxhash v0.2.1
Downloaded colorchoice v1.0.0
Downloaded siphasher v1.0.1
Downloaded shell-words v1.1.0
Downloaded serde_derive v1.0.219
Downloaded sec1 v0.7.3
Downloaded spki v0.7.3
Downloaded salsa20 v0.10.2
Compiling libc v0.2.155
Compiling proc-macro2 v1.0.92
Compiling unicode-ident v1.0.12
Checking cfg-if v1.0.0
Compiling shlex v1.3.0
Compiling version_check v0.9.4
Checking memchr v2.7.2
Compiling typenum v1.17.0
Compiling generic-array v0.14.7
Compiling quote v1.0.36
Compiling syn v2.0.89
Checking getrandom v0.2.15
Checking aho-corasick v1.1.3
Compiling jobserver v0.1.31
Compiling cc v1.2.2
Checking regex-syntax v0.8.5
Compiling serde v1.0.219
Checking rand_core v0.6.4
Checking smallvec v1.13.2
Checking crypto-common v0.1.6
Checking log v0.4.21
Checking fastrand v2.1.0
Compiling autocfg v1.2.0
Checking subtle v2.5.0
Checking regex-automata v0.4.9
Checking bitflags v2.5.0
Compiling syn v1.0.109
Checking once_cell v1.19.0
Compiling synstructure v0.13.1
Checking stable_deref_trait v1.2.0
Checking zeroize v1.7.0
Checking cpufeatures v0.2.12
Checking tinyvec_macros v0.1.1
Checking tinyvec v1.6.0
Compiling crc32fast v1.4.0
Checking bstr v1.9.1
Compiling serde_derive v1.0.219
Compiling zerofrom-derive v0.1.6
Compiling yoke-derive v0.7.5
Checking zerofrom v0.1.6
Compiling zerovec-derive v0.10.3
Checking yoke v0.7.5
Compiling displaydoc v0.2.5
Checking unicode-normalization v0.1.23
Checking block-padding v0.3.3
Checking writeable v0.5.5
Checking zerovec v0.10.4
Compiling icu_locid_transform_data v1.5.1
Checking litemap v0.7.5
Checking inout v0.1.3
Compiling icu_provider_macros v1.5.0
Checking block-buffer v0.10.4
Compiling icu_properties_data v1.5.1
Compiling pkg-config v0.3.30
Checking digest v0.10.7
Checking tinystr v0.7.6
Checking cipher v0.4.4
Checking icu_locid v1.5.0
Compiling icu_normalizer_data v1.5.1
Checking icu_collections v1.5.0
Checking icu_provider v1.5.0
Compiling thiserror v1.0.69
Checking icu_locid_transform v1.5.0
Compiling thiserror-impl v1.0.69
Checking write16 v1.0.0
Checking icu_properties v1.5.1
Checking utf16_iter v1.0.5
Checking utf8_iter v1.0.4
Compiling rustix v0.38.34
Checking sha2 v0.10.8
Checking itoa v1.0.11
Checking hashbrown v0.14.3
Checking percent-encoding v2.3.1
Checking linux-raw-sys v0.4.13
Checking form_urlencoded v1.2.1
Checking universal-hash v0.5.1
Checking opaque-debug v0.3.1
Compiling vcpkg v0.2.15
Compiling amplify_syn v2.0.1
Checking icu_normalizer v1.5.0
Checking idna_adapter v1.2.0
Checking idna v1.0.3
Compiling libz-sys v1.1.16
Checking url v2.5.4
Compiling data-encoding v2.5.0
Checking byteorder v1.5.0
Compiling amplify_derive v4.0.0
Checking amplify_num v0.5.2
Compiling data-encoding-macro-internal v0.1.12
Checking ascii v1.1.0
Checking signature v1.6.4
Checking ed25519 v1.5.3
Checking data-encoding-macro v0.1.14
Checking tempfile v3.10.1
Compiling libgit2-sys v0.17.0+1.8.1
Checking aead v0.5.2
Compiling proc-macro-error-attr v1.0.4
Checking ct-codecs v1.1.1
Checking base-x v0.2.11
Checking ec25519 v0.1.0
Checking multibase v0.9.1
Checking poly1305 v0.8.0
Checking chacha20 v0.9.1
Compiling proc-macro-error v1.0.4
Checking amplify v4.6.0
Checking keccak v0.1.5
Checking cyphergraphy v0.3.0
Compiling git-ref-format-core v0.3.0
Checking sha3 v0.10.8
Checking polyval v0.6.2
Compiling sqlite3-src v0.5.1
Checking hmac v0.12.1
Checking ppv-lite86 v0.2.17
Checking base64ct v1.6.0
Checking base32 v0.4.0
Compiling thiserror v2.0.12
Checking cypheraddr v0.4.0
Checking pem-rfc7468 v0.7.0
Checking rand_chacha v0.3.1
Checking pbkdf2 v0.12.2
Compiling git-ref-format-macro v0.3.0
Checking ghash v0.5.1
Checking chacha20poly1305 v0.10.1
Checking ctr v0.9.2
Checking aes v0.8.4
Compiling thiserror-impl v2.0.12
Compiling crossbeam-utils v0.8.19
Checking aes-gcm v0.10.3
Checking git-ref-format v0.3.0
Checking noise-framework v0.4.0
Checking rand v0.8.5
Checking ssh-encoding v0.2.0
Checking socks5-client v0.4.1
Checking blowfish v0.9.1
Checking cbc v0.1.2
Checking radicle-std-ext v0.1.0
Checking bcrypt-pbkdf v0.10.0
Checking ssh-cipher v0.2.0
Checking cyphernet v0.5.2
Checking signature v2.2.0
Checking ssh-key v0.6.6
Checking crossbeam-channel v0.5.15
Checking qcheck v1.0.0
Checking radicle-ssh v0.9.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-ssh)
Compiling num-traits v0.2.18
Compiling serde_json v1.0.116
Checking equivalent v1.0.1
Checking indexmap v2.2.6
Checking tree-sitter-language v0.1.2
Checking ryu v1.0.17
Checking siphasher v1.0.1
Checking nonempty v0.9.0
Compiling lock_api v0.4.11
Checking radicle-dag v0.10.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-dag)
Compiling anyhow v1.0.82
Checking lazy_static v1.5.0
Compiling parking_lot_core v0.9.9
Checking gix-trace v0.1.12
Checking scopeguard v1.2.0
Checking iana-time-zone v0.1.60
Checking anstyle-query v1.0.2
Checking chrono v0.4.38
Checking colored v2.1.0
Checking bytesize v2.0.1
Checking localtime v1.3.1
Checking base64 v0.21.7
Checking utf8parse v0.2.1
Checking parking_lot v0.12.1
Checking anstyle-parse v0.2.3
Checking faster-hex v0.9.0
Checking errno v0.3.9
Checking sem_safe v0.2.0
Checking anstyle v1.0.6
Checking colorchoice v1.0.0
Checking signals_receipts v0.2.0
Checking anstream v0.6.13
Checking gix-utils v0.1.14
Checking adler2 v2.0.0
Checking snapbox-macros v0.3.8
Checking miniz_oxide v0.8.8
Checking gix-hash v0.15.1
Checking similar v2.5.0
Checking normalize-line-endings v0.3.0
Checking same-file v1.0.6
Checking walkdir v2.5.0
Checking snapbox v0.4.17
Checking flate2 v1.1.1
Checking radicle-signals v0.11.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-signals)
Checking prodash v29.0.2
Compiling tree-sitter v0.24.4
Checking sha1_smol v1.0.0
Checking gix-features v0.39.1
Checking diff v0.1.13
Checking numtoa v0.1.0
Checking yansi v0.5.1
Checking unicode-segmentation v1.11.0
Checking pretty_assertions v1.4.0
Compiling xattr v1.3.1
Compiling filetime v0.2.23
Compiling escargot v0.5.10
Checking lexopt v0.3.0
Checking home v0.5.9
Compiling tar v0.4.40
Checking gix-path v0.10.15
Checking newline-converter v0.3.0
Checking termion v2.0.3
Checking fxhash v0.2.1
Checking regex v1.11.1
Checking unicode-width v0.1.11
Checking dyn-clone v1.0.17
Checking sqlite3-sys v0.15.2
Checking streaming-iterator v0.1.9
Checking inquire v0.7.5
Checking sqlite v0.32.0
Compiling radicle-surf v0.22.0
Checking unicode-display-width v0.3.0
Checking termion v3.0.0
Compiling tree-sitter-md v0.3.2
Compiling tree-sitter-rust v0.23.2
Compiling tree-sitter-python v0.23.4
Compiling tree-sitter-c v0.23.2
Compiling tree-sitter-ruby v0.23.1
Compiling tree-sitter-typescript v0.23.2
Compiling tree-sitter-css v0.23.1
Compiling tree-sitter-toml-ng v0.6.0
Compiling tree-sitter-html v0.23.2
Compiling tree-sitter-bash v0.23.3
Compiling tree-sitter-go v0.23.4
Compiling tree-sitter-json v0.24.8
Checking nonempty v0.5.0
Compiling radicle-cli v0.12.1 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-cli)
Checking base64 v0.13.1
Checking tree-sitter-highlight v0.24.4
Checking timeago v0.4.2
Checking jiff v0.2.1
Checking winnow v0.6.26
Checking gix-hashtable v0.6.0
Checking gix-validate v0.9.4
Checking memmap2 v0.9.4
Checking gix-chunk v0.4.11
Checking gix-fs v0.12.1
Checking gix-commitgraph v0.25.1
Checking gix-tempfile v15.0.0
Checking shell-words v1.1.0
Checking gix-lock v15.0.1
Checking gix-command v0.4.1
Checking gix-url v0.28.2
Checking gix-date v0.9.4
Checking gix-config-value v0.14.12
Checking gix-actor v0.33.2
Checking gix-quote v0.4.15
Checking gix-sec v0.10.12
Checking gix-object v0.46.1
Checking gix-prompt v0.9.1
Checking gix-packetline v0.18.4
Checking gix-credentials v0.26.0
Checking gix-transport v0.44.0
Checking gix-shallow v0.1.0
Compiling maybe-async v0.2.10
Checking arc-swap v1.7.1
Checking popol v3.0.0
Checking either v1.11.0
Checking gix-revwalk v0.17.0
Checking gix-diff v0.49.0
Checking gix-traverse v0.43.1
Checking gix-revision v0.31.1
Checking gix-negotiate v0.17.0
Checking gix-ref v0.49.1
Checking gix-pack v0.56.0
Checking gix-refspec v0.27.0
Checking io-reactor v0.5.2
Checking salsa20 v0.10.2
Checking socket2 v0.5.7
Checking gix-protocol v0.47.0
Checking siphasher v0.3.11
Compiling radicle-node v0.10.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-node)
Checking gix-odb v0.66.0
Checking bloomy v1.2.0
Checking netservices v0.8.0
Checking scrypt v0.11.0
Checking radicle-systemd v0.9.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-systemd)
Compiling qcheck-macros v1.0.0
Compiling radicle-remote-helper v0.10.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-remote-helper)
Checking phf_shared v0.11.3
Checking phf v0.11.3
Checking emojis v0.6.4
Checking git2 v0.19.0
Checking radicle-git-ext v0.8.0
Checking radicle-term v0.12.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-term)
Checking radicle-crypto v0.11.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-crypto)
Checking radicle-cob v0.13.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-cob)
Checking radicle-crdt v0.1.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-crdt)
Checking radicle v0.14.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle)
Checking radicle-cli-test v0.10.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-cli-test)
Checking radicle-fetch v0.10.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-fetch)
Checking radicle-tools v0.9.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-tools)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 45.87s
+ cargo build --all-targets --workspace
Compiling cfg-if v1.0.0
Compiling libc v0.2.155
Compiling shlex v1.3.0
Compiling memchr v2.7.2
Compiling typenum v1.17.0
Compiling regex-syntax v0.8.5
Compiling jobserver v0.1.31
Compiling getrandom v0.2.15
Compiling cc v1.2.2
Compiling aho-corasick v1.1.3
Compiling rand_core v0.6.4
Compiling generic-array v0.14.7
Compiling smallvec v1.13.2
Compiling serde v1.0.219
Compiling regex-automata v0.4.9
Compiling crypto-common v0.1.6
Compiling log v0.4.21
Compiling fastrand v2.1.0
Compiling bitflags v2.5.0
Compiling subtle v2.5.0
Compiling zerofrom v0.1.6
Compiling once_cell v1.19.0
Compiling stable_deref_trait v1.2.0
Compiling yoke v0.7.5
Compiling zeroize v1.7.0
Compiling cpufeatures v0.2.12
Compiling bstr v1.9.1
Compiling zerovec v0.10.4
Compiling tinyvec_macros v0.1.1
Compiling tinyvec v1.6.0
Compiling tinystr v0.7.6
Compiling block-padding v0.3.3
Compiling writeable v0.5.5
Compiling litemap v0.7.5
Compiling unicode-normalization v0.1.23
Compiling icu_locid v1.5.0
Compiling inout v0.1.3
Compiling block-buffer v0.10.4
Compiling adler2 v2.0.0
Compiling miniz_oxide v0.8.8
Compiling digest v0.10.7
Compiling crc32fast v1.4.0
Compiling icu_provider v1.5.0
Compiling cipher v0.4.4
Compiling icu_locid_transform_data v1.5.1
Compiling icu_locid_transform v1.5.0
Compiling icu_properties_data v1.5.1
Compiling icu_collections v1.5.0
Compiling icu_normalizer_data v1.5.1
Compiling write16 v1.0.0
Compiling utf16_iter v1.0.5
Compiling utf8_iter v1.0.4
Compiling thiserror v1.0.69
Compiling sha2 v0.10.8
Compiling linux-raw-sys v0.4.13
Compiling icu_properties v1.5.1
Compiling hashbrown v0.14.3
Compiling itoa v1.0.11
Compiling percent-encoding v2.3.1
Compiling rustix v0.38.34
Compiling form_urlencoded v1.2.1
Compiling universal-hash v0.5.1
Compiling opaque-debug v0.3.1
Compiling libz-sys v1.1.16
Compiling byteorder v1.5.0
Compiling data-encoding v2.5.0
Compiling icu_normalizer v1.5.0
Compiling amplify_num v0.5.2
Compiling idna_adapter v1.2.0
Compiling idna v1.0.3
Compiling url v2.5.4
Compiling signature v1.6.4
Compiling ascii v1.1.0
Compiling ed25519 v1.5.3
Compiling tempfile v3.10.1
Compiling data-encoding-macro v0.1.14
Compiling libgit2-sys v0.17.0+1.8.1
Compiling amplify v4.6.0
Compiling aead v0.5.2
Compiling ct-codecs v1.1.1
Compiling base-x v0.2.11
Compiling multibase v0.9.1
Compiling ec25519 v0.1.0
Compiling poly1305 v0.8.0
Compiling chacha20 v0.9.1
Compiling cyphergraphy v0.3.0
Compiling keccak v0.1.5
Compiling polyval v0.6.2
Compiling sha3 v0.10.8
Compiling git-ref-format-core v0.3.0
Compiling hmac v0.12.1
Compiling sqlite3-src v0.5.1
Compiling ppv-lite86 v0.2.17
Compiling base64ct v1.6.0
Compiling base32 v0.4.0
Compiling cypheraddr v0.4.0
Compiling pem-rfc7468 v0.7.0
Compiling rand_chacha v0.3.1
Compiling git-ref-format-macro v0.3.0
Compiling pbkdf2 v0.12.2
Compiling ghash v0.5.1
Compiling chacha20poly1305 v0.10.1
Compiling ctr v0.9.2
Compiling aes v0.8.4
Compiling thiserror v2.0.12
Compiling git-ref-format v0.3.0
Compiling noise-framework v0.4.0
Compiling aes-gcm v0.10.3
Compiling rand v0.8.5
Compiling ssh-encoding v0.2.0
Compiling socks5-client v0.4.1
Compiling blowfish v0.9.1
Compiling cbc v0.1.2
Compiling radicle-std-ext v0.1.0
Compiling ssh-cipher v0.2.0
Compiling bcrypt-pbkdf v0.10.0
Compiling cyphernet v0.5.2
Compiling crossbeam-utils v0.8.19
Compiling signature v2.2.0
Compiling ssh-key v0.6.6
Compiling crossbeam-channel v0.5.15
Compiling qcheck v1.0.0
Compiling radicle-ssh v0.9.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-ssh)
Compiling equivalent v1.0.1
Compiling indexmap v2.2.6
Compiling ryu v1.0.17
Compiling tree-sitter-language v0.1.2
Compiling serde_json v1.0.116
Compiling num-traits v0.2.18
Compiling siphasher v1.0.1
Compiling radicle-dag v0.10.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-dag)
Compiling nonempty v0.9.0
Compiling lazy_static v1.5.0
Compiling scopeguard v1.2.0
Compiling gix-trace v0.1.12
Compiling iana-time-zone v0.1.60
Compiling anstyle-query v1.0.2
Compiling chrono v0.4.38
Compiling lock_api v0.4.11
Compiling parking_lot_core v0.9.9
Compiling colored v2.1.0
Compiling localtime v1.3.1
Compiling bytesize v2.0.1
Compiling utf8parse v0.2.1
Compiling base64 v0.21.7
Compiling anstyle-parse v0.2.3
Compiling parking_lot v0.12.1
Compiling anyhow v1.0.82
Compiling faster-hex v0.9.0
Compiling errno v0.3.9
Compiling sem_safe v0.2.0
Compiling colorchoice v1.0.0
Compiling anstyle v1.0.6
Compiling signals_receipts v0.2.0
Compiling anstream v0.6.13
Compiling gix-utils v0.1.14
Compiling snapbox-macros v0.3.8
Compiling gix-hash v0.15.1
Compiling same-file v1.0.6
Compiling normalize-line-endings v0.3.0
Compiling similar v2.5.0
Compiling walkdir v2.5.0
Compiling snapbox v0.4.17
Compiling radicle-signals v0.11.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-signals)
Compiling prodash v29.0.2
Compiling flate2 v1.1.1
Compiling tree-sitter v0.24.4
Compiling sha1_smol v1.0.0
Compiling gix-features v0.39.1
Compiling sqlite3-sys v0.15.2
Compiling sqlite v0.32.0
Compiling diff v0.1.13
Compiling unicode-segmentation v1.11.0
Compiling numtoa v0.1.0
Compiling yansi v0.5.1
Compiling pretty_assertions v1.4.0
Compiling xattr v1.3.1
Compiling filetime v0.2.23
Compiling lexopt v0.3.0
Compiling home v0.5.9
Compiling tar v0.4.40
Compiling gix-path v0.10.15
Compiling termion v2.0.3
Compiling newline-converter v0.3.0
Compiling fxhash v0.2.1
Compiling regex v1.11.1
Compiling streaming-iterator v0.1.9
Compiling unicode-width v0.1.11
Compiling dyn-clone v1.0.17
Compiling inquire v0.7.5
Compiling radicle-surf v0.22.0
Compiling escargot v0.5.10
Compiling termion v3.0.0
Compiling unicode-display-width v0.3.0
Compiling tree-sitter-css v0.23.1
Compiling tree-sitter-md v0.3.2
Compiling tree-sitter-toml-ng v0.6.0
Compiling tree-sitter-c v0.23.2
Compiling tree-sitter-python v0.23.4
Compiling tree-sitter-go v0.23.4
Compiling tree-sitter-bash v0.23.3
Compiling tree-sitter-html v0.23.2
Compiling tree-sitter-ruby v0.23.1
Compiling tree-sitter-typescript v0.23.2
Compiling tree-sitter-json v0.24.8
Compiling tree-sitter-rust v0.23.2
Compiling base64 v0.13.1
Compiling nonempty v0.5.0
Compiling radicle-cli v0.12.1 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-cli)
Compiling tree-sitter-highlight v0.24.4
Compiling timeago v0.4.2
Compiling jiff v0.2.1
Compiling winnow v0.6.26
Compiling gix-hashtable v0.6.0
Compiling gix-validate v0.9.4
Compiling memmap2 v0.9.4
Compiling gix-chunk v0.4.11
Compiling gix-fs v0.12.1
Compiling gix-commitgraph v0.25.1
Compiling gix-tempfile v15.0.0
Compiling shell-words v1.1.0
Compiling gix-lock v15.0.1
Compiling gix-command v0.4.1
Compiling gix-url v0.28.2
Compiling gix-date v0.9.4
Compiling gix-config-value v0.14.12
Compiling gix-actor v0.33.2
Compiling gix-quote v0.4.15
Compiling gix-object v0.46.1
Compiling gix-sec v0.10.12
Compiling gix-prompt v0.9.1
Compiling gix-packetline v0.18.4
Compiling gix-transport v0.44.0
Compiling gix-revwalk v0.17.0
Compiling gix-traverse v0.43.1
Compiling gix-revision v0.31.1
Compiling gix-diff v0.49.0
Compiling gix-refspec v0.27.0
Compiling gix-pack v0.56.0
Compiling gix-negotiate v0.17.0
Compiling gix-ref v0.49.1
Compiling gix-credentials v0.26.0
Compiling gix-shallow v0.1.0
Compiling arc-swap v1.7.1
Compiling gix-odb v0.66.0
Compiling gix-protocol v0.47.0
Compiling popol v3.0.0
Compiling either v1.11.0
Compiling io-reactor v0.5.2
Compiling salsa20 v0.10.2
Compiling socket2 v0.5.7
Compiling radicle-node v0.10.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-node)
Compiling siphasher v0.3.11
Compiling netservices v0.8.0
Compiling scrypt v0.11.0
Compiling bloomy v1.2.0
Compiling radicle-systemd v0.9.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-systemd)
Compiling radicle-remote-helper v0.10.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-remote-helper)
Compiling phf_shared v0.11.3
Compiling phf v0.11.3
Compiling emojis v0.6.4
Compiling git2 v0.19.0
Compiling radicle-git-ext v0.8.0
Compiling radicle-term v0.12.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-term)
Compiling radicle-crypto v0.11.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-crypto)
Compiling radicle-cob v0.13.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-cob)
Compiling radicle-crdt v0.1.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-crdt)
Compiling radicle v0.14.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle)
Compiling radicle-cli-test v0.10.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-cli-test)
Compiling radicle-fetch v0.10.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-fetch)
Compiling radicle-tools v0.9.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-tools)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 14s
+ cargo doc --workspace --no-deps
Compiling syn v1.0.109
Checking radicle-ssh v0.9.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-ssh)
Checking radicle-dag v0.10.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-dag)
Checking radicle-signals v0.11.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-signals)
Compiling radicle-cli v0.12.1 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-cli)
Checking radicle-term v0.12.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-term)
Compiling radicle-node v0.10.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-node)
Checking radicle-systemd v0.9.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-systemd)
Documenting radicle-term v0.12.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-term)
Documenting radicle-signals v0.11.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-signals)
Documenting radicle-ssh v0.9.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-ssh)
Documenting radicle-dag v0.10.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-dag)
Documenting radicle-systemd v0.9.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-systemd)
Compiling amplify_syn v2.0.1
Compiling proc-macro-error v1.0.4
Compiling data-encoding-macro-internal v0.1.12
Compiling git-ref-format-macro v0.3.0
Compiling amplify_derive v4.0.0
Checking data-encoding-macro v0.1.14
Checking git-ref-format v0.3.0
Checking multibase v0.9.1
Checking radicle-git-ext v0.8.0
Checking radicle-surf v0.22.0
Checking amplify v4.6.0
Checking cyphergraphy v0.3.0
Checking io-reactor v0.5.2
Checking cypheraddr v0.4.0
Checking noise-framework v0.4.0
Checking socks5-client v0.4.1
Checking cyphernet v0.5.2
Checking radicle-crypto v0.11.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-crypto)
Checking netservices v0.8.0
Documenting radicle-crypto v0.11.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-crypto)
Checking radicle-cob v0.13.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-cob)
Documenting radicle-cob v0.13.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-cob)
Documenting radicle-crdt v0.1.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-crdt)
Checking radicle v0.14.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle)
Documenting radicle v0.14.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle)
Checking radicle-cli-test v0.10.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-cli-test)
Checking radicle-fetch v0.10.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-fetch)
Documenting radicle-cli-test v0.10.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-cli-test)
Documenting radicle-fetch v0.10.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-fetch)
Documenting radicle-cli v0.12.1 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-cli)
Documenting radicle-node v0.10.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-node)
Documenting radicle-remote-helper v0.10.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-remote-helper)
Checking radicle-remote-helper v0.10.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-remote-helper)
Documenting radicle-tools v0.9.0 (/6887a674-24f1-499a-a07f-a02cd659c2bc/w/radicle-tools)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 11.02s
Generated /6887a674-24f1-499a-a07f-a02cd659c2bc/w/target/doc/radicle/index.html and 22 other files
+ cargo test --workspace --no-fail-fast
Finished `test` profile [unoptimized + debuginfo] target(s) in 0.17s
Running unittests src/lib.rs (target/debug/deps/radicle-cbcedab996359b3f)
running 171 tests
test canonical::formatter::test::ascii_control_characters ... ok
test canonical::formatter::test::ordered_nested_object ... ok
test canonical::formatter::test::securesystemslib_asserts ... ok
test cob::cache::migrations::_2::tests::test_patch_json_deserialization ... ok
test cob::cache::migrations::_2::tests::test_migration_2 ... ok
test cob::cache::tests::test_check_version ... ok
test cob::common::test::test_color ... ok
test cob::cache::tests::test_migrate_to ... ok
test cob::common::test::test_emojis ... ok
test cob::identity::test::prop_json_eq_str ... ok
test cob::identity::test::test_identity_redact_revision ... ok
test cob::identity::test::test_identity_update_rejected ... ok
test cob::identity::test::test_identity_remove_delegate_concurrent ... ok
test cob::identity::test::test_identity_reject_concurrent ... ok
test cob::identity::test::test_identity_updates ... ok
test cob::issue::cache::tests::test_counts ... ok
test cob::issue::cache::tests::test_get ... ok
test cob::issue::cache::tests::test_is_empty ... ok
test cob::issue::cache::tests::test_list ... ok
test cob::issue::cache::tests::test_list_by_status ... ok
test cob::issue::cache::tests::test_remove ... ok
test cob::identity::test::test_valid_identity ... ok
test cob::identity::test::test_identity_updates_concurrent ... ok
test cob::issue::test::test_embeds ... ok
test cob::issue::test::test_embeds_edit ... ok
test cob::issue::test::test_invalid_actions ... ok
test cob::identity::test::test_identity_updates_concurrent_outdated ... ok
test cob::issue::test::test_concurrency ... ok
test cob::issue::test::test_invalid_tx ... ok
test cob::issue::test::test_invalid_tx_reference ... ok
test cob::issue::test::test_issue_all ... ok
test cob::issue::test::test_invalid_cob ... ok
test cob::issue::test::test_issue_comment ... ok
test cob::issue::test::test_issue_comment_redact ... ok
test cob::issue::test::test_issue_create_and_assign ... ok
test cob::issue::test::test_issue_create_and_get ... ok
test cob::issue::test::test_issue_create_and_change_state ... ok
test cob::issue::test::test_issue_create_and_unassign ... ok
test cob::issue::test::test_issue_edit ... ok
test cob::issue::test::test_issue_create_and_reassign ... ok
test cob::issue::test::test_issue_edit_description ... ok
test cob::issue::test::test_issue_label ... ok
test cob::issue::test::test_issue_state_serde ... ok
test cob::issue::test::test_ordering ... ok
test cob::issue::test::test_issue_multilines ... ok
test cob::issue::test::test_issue_react ... ok
test cob::issue::test::test_issue_reply ... ok
test cob::patch::cache::tests::test_is_empty ... ok
test cob::patch::cache::tests::test_get ... ok
test cob::patch::cache::tests::test_list_by_status ... ok
test cob::patch::cache::tests::test_list ... ok
test cob::patch::test::test_json ... ok
test cob::patch::test::test_json_serialization ... ok
test cob::patch::test::test_patch_create_and_get ... ok
test cob::patch::cache::tests::test_remove ... ok
test cob::patch::test::test_patch_discussion ... ok
test cob::patch::test::test_patch_merge ... ok
test cob::patch::cache::tests::test_counts ... ok
test cob::patch::test::test_patch_review ... ok
test cob::patch::test::test_patch_review_comment ... ok
test cob::patch::test::test_patch_review_duplicate ... ok
test cob::patch::test::test_patch_redact ... ok
test cob::patch::test::test_patch_review_edit ... ok
test cob::patch::test::test_patch_review_remove_summary ... ok
test cob::patch::test::test_patch_review_edit_comment ... ok
test cob::patch::test::test_reactions_json_serialization ... ok
test cob::patch::test::test_revision_edit_redact ... ok
test cob::patch::test::test_revision_reaction ... ok
test cob::patch::test::test_revision_review_merge_redacted ... ok
test cob::patch::test::test_patch_review_revision_redact ... ok
test cob::thread::tests::test_comment_edit_missing ... ok
test cob::thread::tests::test_comment_edit_redacted ... ok
test cob::thread::tests::test_comment_redact_missing ... ok
test cob::thread::tests::test_duplicate_comments ... ok
test cob::thread::tests::test_edit_comment ... ok
test cob::thread::tests::test_redact_comment ... ok
test cob::thread::tests::test_timeline ... ok
test cob::patch::test::test_patch_update ... ok
test git::canonical::tests::test_quorum_merges ... ok
test git::canonical::tests::test_quorum ... ok
test git::test::test_version_from_str ... ok
test git::test::test_version_ord ... ok
test identity::did::test::test_did_encode_decode ... ok
test identity::did::test::test_did_vectors ... ok
test identity::doc::id::test::prop_from_str ... ok
test git::canonical::tests::test_quorum_properties ... ok
test identity::doc::test::test_canonical_doc ... ok
test identity::doc::test::test_canonical_example ... ok
test identity::doc::test::test_duplicate_dids ... ok
test identity::doc::test::test_future_version_error ... ok
test identity::doc::test::test_is_valid_version ... ok
test cob::thread::tests::prop_ordering ... ok
test identity::doc::test::test_not_found ... ok
test identity::doc::test::test_parse_version ... ok
test identity::doc::test::test_visibility_json ... ok
test identity::project::test::test_project_name ... ok
test node::address::store::test::test_alias ... ok
test node::address::store::test::test_disconnected ... ok
test node::address::store::test::test_disconnected_ban ... ok
test node::address::store::test::test_empty ... ok
test node::address::store::test::test_entries ... ok
test node::address::store::test::test_get_none ... ok
test node::address::store::test::test_insert_and_get ... ok
test node::address::store::test::test_insert_and_remove ... ok
test node::address::store::test::test_insert_and_update ... ok
test node::address::store::test::test_insert_duplicate ... ok
test node::address::store::test::test_node_aliases ... ok
test node::address::store::test::test_remove_nothing ... ok
test node::db::test::test_version ... ok
test node::features::test::test_operations ... ok
test node::notifications::store::test::test_branch_notifications ... ok
test node::notifications::store::test::test_clear ... ok
test node::notifications::store::test::test_cob_notifications ... ok
test node::notifications::store::test::test_counts_by_repo ... ok
test node::notifications::store::test::test_duplicate_notifications ... ok
test node::notifications::store::test::test_notification_status ... ok
test node::policy::store::test::test_follow_and_unfollow_node ... ok
test node::policy::store::test::test_node_aliases ... ok
test node::policy::store::test::test_node_policies ... ok
test node::policy::store::test::test_node_policy ... ok
test node::policy::store::test::test_repo_policies ... ok
test node::policy::store::test::test_repo_policy ... ok
test node::policy::store::test::test_seed_and_unseed_repo ... ok
test node::policy::store::test::test_update_alias ... ok
test node::policy::store::test::test_update_scope ... ok
test node::refs::store::test::test_count ... ok
test node::refs::store::test::test_set_and_delete ... ok
test node::refs::store::test::test_set_and_get ... ok
test node::routing::test::test_count ... ok
test node::routing::test::test_entries ... ok
test node::routing::test::test_insert_and_get ... ok
test node::routing::test::test_insert_and_get_resources ... ok
test node::routing::test::test_insert_and_remove ... ok
test node::routing::test::test_insert_duplicate ... ok
test node::routing::test::test_insert_existing_updated_time ... ok
test node::routing::test::test_len ... ok
test identity::doc::test::test_max_delegates ... ok
test node::routing::test::test_remove_many ... ok
test node::routing::test::test_remove_redundant ... ok
test node::routing::test::test_update_existing_multi ... ok
test node::test::test_alias ... ok
test node::test::test_command_result ... ok
test node::test::test_user_agent ... ok
test node::timestamp::tests::test_timestamp_max ... ok
test node::routing::test::test_prune ... ok
test profile::test::test_config ... ok
test profile::test::canonicalize_home ... ok
test rad::tests::test_fork ... ok
test rad::tests::test_checkout ... ok
test serde_ext::test::test_localtime ... ok
test serde_ext::test::test_localtime_ext ... ok
test rad::tests::test_init ... ok
test storage::git::tests::test_references_of ... ok
test storage::git::tests::test_sign_refs ... ok
test storage::git::transport::local::url::test::test_url_parse ... ok
test storage::git::transport::local::url::test::test_url_to_string ... ok
test storage::git::transport::remote::url::test::test_url_parse ... ok
test storage::refs::tests::prop_canonical_roundtrip ... ok
test storage::git::tests::test_remote_refs ... ok
test storage::tests::test_storage ... ok
test test::assert::test::assert_with_message ... ok
test test::assert::test::test_assert_no_move ... ok
test test::assert::test::test_assert_panic_0 - should panic ... ok
test test::assert::test::test_assert_panic_1 - should panic ... ok
test test::assert::test::test_assert_panic_2 - should panic ... ok
test test::assert::test::test_assert_succeed ... ok
test test::assert::test::test_panic_message ... ok
test version::test::test_version ... ok
test storage::refs::tests::test_rid_verification ... ok
test identity::doc::test::prop_encode_decode ... ok
test cob::patch::cache::tests::test_find_by_revision ... ok
test result: ok. 171 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.22s
Running unittests src/lib.rs (target/debug/deps/radicle_cli-251748f5cc5248ac)
running 14 tests
test commands::rad_patch::review::builder::tests::test_review_comments_basic ... ok
test commands::rad_inspect::test::test_tree ... ok
test commands::rad_patch::review::builder::tests::test_review_comments_before ... ok
test commands::rad_patch::review::builder::tests::test_review_comments_multiline ... ok
test commands::rad_patch::review::builder::tests::test_review_comments_split_hunk ... ok
test git::ddiff::tests::diff_encode_decode_ddiff_hunk ... ok
test git::pretty_diff::test::test_pretty ... ignored
test git::unified_diff::test::test_diff_encode_decode_diff ... ok
test git::unified_diff::test::test_diff_content_encode_decode_content ... ok
test terminal::format::test::test_bytes ... ok
test terminal::format::test::test_strip_comments ... ok
test terminal::patch::test::test_edit_display_message ... ok
test terminal::patch::test::test_create_display_message ... ok
test terminal::patch::test::test_update_display_message ... ok
test result: ok. 13 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running unittests src/main.rs (target/debug/deps/rad-01072814f956d8cf)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/commands.rs (target/debug/deps/commands-e9a839806588f1b1)
running 96 tests
test framework_home ... ok
test git_push_and_fetch ... ok
test git_push_amend ... ok
test git_push_diverge ... ok
test rad_auth ... ok
test rad_auth_errors ... ok
test rad_block ... ok
test rad_checkout ... ok
test git_tag ... ok
test git_push_rollback ... ok
test rad_clone ... ok
test rad_clean ... ok
test git_push_converge ... ok
test rad_clone_all ... ok
test rad_clone_unknown ... ok
test rad_clone_directory ... ok
test rad_clone_connect ... ok
test rad_cob_multiset ... ok
test rad_cob_log ... ok
test rad_clone_partial_fail ... ok
test rad_cob_migrate ... ok
test rad_cob_show ... ok
test rad_cob_update_identity ... ok
test rad_config ... ok
test rad_diff ... ok
test rad_cob_update ... ok
test rad_id_collaboration ... ignored, slow
test rad_id ... ok
test rad_id_conflict ... ok
test rad_id_private ... ok
test rad_id_threshold ... ok
test rad_id_multi_delegate ... ok
test rad_id_unknown_field ... ok
test rad_id_threshold_soft_fork ... ok
test rad_id_update_delete_field ... ok
test rad_init ... ok
test rad_init_existing ... ok
test rad_init_no_git ... ok
test rad_init_no_seed ... ok
test rad_init_private ... ok
test rad_fork ... ok
test rad_fetch ... ok
test rad_init_private_clone ... ok
test rad_init_private_no_seed ... ok
test rad_inbox ... ok
test rad_init_sync_not_connected ... ok
test rad_init_private_clone_seed ... ok
test rad_init_private_seed ... ok
test rad_init_sync_preferred ... ok
test rad_init_with_existing_remote ... ok
test rad_inspect ... ok
test rad_issue ... ok
test rad_job ... ok
test rad_merge_after_update ... ok
test rad_merge_no_ff ... ok
test rad_merge_via_push ... ok
test rad_node_connect ... ok
test rad_patch ... ok
test rad_node ... ok
test rad_patch_change_base ... ok
test rad_patch_ahead_behind ... ok
test rad_patch_checkout ... ok
test rad_patch_checkout_revision ... ok
test rad_patch_checkout_force ... ok
test rad_patch_detached_head ... ok
test rad_init_sync_and_clone ... ok
test rad_init_sync_timeout ... ok
test rad_patch_diff ... ok
test rad_patch_draft ... ok
test rad_patch_edit ... ok
test rad_patch_fetch_2 ... ok
test rad_patch_merge_draft ... ok
test rad_patch_fetch_1 ... ok
test rad_patch_revert_merge ... ok
test rad_patch_delete ... ok
test rad_patch_update ... ok
test rad_patch_open_explore ... ok
test rad_publish ... ok
test rad_patch_via_push ... ok
test rad_review_by_hunk ... ok
test rad_seed_and_follow ... ok
test rad_remote ... ok
test rad_self ... ok
test rad_seed_many ... ok
test rad_push_and_pull_patches ... ok
test rad_unseed ... ok
test rad_sync_without_node ... ok
test rad_unseed_many ... ok
test rad_watch ... ok
test test_clone_without_seeds ... ok
test rad_sync ... ok
test test_cob_deletion ... ok
test test_cob_replication ... ok
test rad_workflow ... ok
test rad_patch_pull_update ... ok
test test_replication_via_seed ... ok
test result: ok. 95 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 77.85s
Running unittests src/lib.rs (target/debug/deps/radicle_cli_test-019416717c61773a)
running 3 tests
test tests::test_parse ... ok
test tests::test_run ... ok
test tests::test_example_spaced_brackets ... ok
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running unittests src/lib.rs (target/debug/deps/radicle_cob-51e2cb672c60c662)
running 8 tests
test object::tests::test_serde ... ok
test tests::parse_refstr ... ok
test tests::invalid_parse_refstr ... ok
test tests::roundtrip ... ok
test type_name::test::valid_typenames ... ok
test tests::traverse_cobs ... ok
test tests::list_cobs ... ok
test tests::update_cob ... ok
test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
Running unittests src/lib.rs (target/debug/deps/radicle_crdt-7e149ccf4e56bbfc)
running 24 tests
test immutable::test::test_merge_inequal - should panic ... ok
test immutable::test::test_merge_equal ... ok
test lwwmap::tests::test_insert ... ok
test lwwmap::tests::test_insert_remove ... ok
test lwwmap::tests::test_is_empty ... ok
test lwwmap::tests::test_remove_insert ... ok
test lwwreg::tests::prop_semilattice ... ok
test lwwreg::tests::test_merge ... ok
test lwwreg::tests::test_set_get ... ok
test gset::tests::prop_semilattice ... ok
test lwwset::tests::test_insert ... ok
test lwwset::tests::test_insert_remove ... ok
test lwwset::tests::test_remove_insert ... ok
test redactable::test::prop_invariants ... ok
test redactable::test::test_both_present ... ok
test redactable::test::test_redacted ... ok
test test::test_generator ... ok
test tests::prop_bool_laws ... ok
test tests::prop_option_laws ... ok
test tests::test_bool ... ok
test tests::test_option ... ok
test lwwset::tests::prop_semilattice ... ok
test gmap::tests::prop_semilattice ... ok
test lwwmap::tests::prop_semilattice ... ok
test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s
Running unittests src/lib.rs (target/debug/deps/radicle_crypto-636ff488446c56b4)
running 12 tests
test ssh::fmt::test::test_fingerprint ... ok
test ssh::fmt::test::test_key ... ok
test ssh::keystore::tests::test_init_no_passphrase ... ok
test ssh::test::prop_encode_decode_sk ... ok
test ssh::test::test_agent_encoding_remove ... ok
test ssh::test::test_agent_encoding_sign ... ok
test tests::prop_encode_decode ... ok
test tests::test_e25519_dh ... ok
test tests::test_encode_decode ... ok
test tests::prop_key_equality ... ok
test ssh::keystore::tests::test_signer ... ok
test ssh::keystore::tests::test_init_passphrase ... ok
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.98s
Running unittests src/lib.rs (target/debug/deps/radicle_dag-569b0a6854e86d64)
running 20 tests
test tests::test_dependencies ... ok
test tests::test_contains ... ok
test tests::test_diamond ... ok
test tests::test_fold_diamond ... ok
test tests::test_fold_multiple_roots ... ok
test tests::test_fold_reject ... ok
test tests::test_fold_sorting_1 ... ok
test tests::test_fold_sorting_2 ... ok
test tests::test_get ... ok
test tests::test_is_empty ... ok
test tests::test_len ... ok
test tests::test_merge_1 ... ok
test tests::test_merge_2 ... ok
test tests::test_cycle ... ok
test tests::test_prune_1 ... ok
test tests::test_prune_2 ... ok
test tests::test_prune_by_sorting ... ok
test tests::test_complex ... ok
test tests::test_remove ... ok
test tests::test_siblings ... ok
test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_fetch-05fcd46c986cb4cd)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_node-a9151bc25a4f93b5)
running 113 tests
test deserializer::test::prop_decode_next ... ok
test deserializer::test::test_decode_next ... ok
test deserializer::test::test_unparsed ... ok
test service::filter::test::test_parameters ... ok
test service::gossip::store::test::test_announced ... ok
test control::tests::test_control_socket ... ok
test service::filter::test::test_sizes ... ok
test service::limiter::test::test_limitter_different_rates ... ok
test service::limiter::test::test_limitter_refill ... ok
test service::limiter::test::test_limitter_multi ... ok
test control::tests::test_seed_unseed ... ok
test service::message::tests::test_ref_remote_limit ... ok
test service::message::tests::test_inventory_limit ... ok
test service::message::tests::prop_refs_announcement_signing ... ok
test tests::e2e::missing_default_branch ... ok
test tests::e2e::missing_delegate_default_branch ... ok
test tests::e2e::test_background_foreground_fetch ... ok
test tests::e2e::test_channel_reader_limit ... ok
test tests::e2e::test_catchup_on_refs_announcements ... ok
test tests::e2e::test_clone ... ok
test service::message::tests::test_node_announcement_validate ... ok
test tests::e2e::test_dont_fetch_owned_refs ... ok
test tests::e2e::test_fetch_followed_remotes ... ok
test tests::e2e::test_fetch_preserve_owned_refs ... ok
test tests::e2e::test_connection_crossing ... ok
test tests::e2e::test_fetch_unseeded ... ok
test tests::e2e::test_concurrent_fetches ... ok
test tests::e2e::test_fetch_up_to_date ... ok
test tests::e2e::test_inventory_sync_basic ... ok
test tests::e2e::test_large_fetch ... ok
test tests::e2e::test_migrated_clone ... ok
test tests::e2e::test_missing_remote ... ok
test tests::e2e::test_multiple_offline_inits ... ok
test tests::e2e::test_non_fastforward_sigrefs ... ok
test tests::e2e::test_outdated_delegate_sigrefs ... ok
test tests::e2e::test_outdated_sigrefs ... ok
test tests::e2e::test_replication ... ok
test tests::e2e::test_inventory_sync_bridge ... ok
test tests::e2e::test_inventory_sync_ring ... ok
test tests::e2e::test_replication_invalid ... ok
test tests::e2e::test_replication_ref_in_sigrefs ... ok
test tests::e2e::test_inventory_sync_star ... ok
test tests::test_announcement_rebroadcast_duplicates ... ok
test tests::test_announcement_rebroadcast ... ok
test tests::test_announcement_relay ... ok
test tests::test_connection_kept_alive ... ok
test tests::test_announcement_rebroadcast_timestamp_filtered ... ok
test tests::test_disconnecting_unresponsive_peer ... ok
test tests::test_fetch_missing_inventory_on_gossip ... ok
test tests::test_fetch_missing_inventory_on_schedule ... ok
test tests::test_inbound_connection ... ok
test tests::test_inventory_decode ... ok
test tests::test_init_and_seed ... ok
test tests::test_inventory_relay ... ok
test tests::test_inventory_relay_bad_timestamp ... ok
test tests::test_inventory_sync ... ok
test tests::test_maintain_connections ... ok
test tests::test_maintain_connections_failed_attempt ... ok
test tests::test_maintain_connections_transient ... ok
test tests::test_inventory_pruning ... ok
test tests::test_persistent_peer_connect ... ok
test tests::test_outbound_connection ... ok
test tests::test_persistent_peer_reconnect_success ... ok
test tests::test_persistent_peer_reconnect_attempt ... ok
test tests::test_ping_response ... ok
test tests::test_queued_fetch_from_ann_same_rid ... ok
test tests::test_queued_fetch_from_command_same_rid ... ok
test tests::test_queued_fetch_max_capacity ... ok
test tests::test_redundant_connect ... ok
test tests::test_refs_announcement_followed ... ok
test tests::test_refs_announcement_fetch_trusted_no_inventory ... ok
test tests::test_refs_announcement_no_subscribe ... ok
test tests::test_refs_announcement_offline ... ok
test tests::test_refs_announcement_relay_private ... ok
test tests::test_refs_synced_event ... ok
test tests::test_seed_repo_subscribe ... ok
test tests::test_refs_announcement_relay_public ... ok
test wire::frame::test::test_stream_id ... ok
test wire::message::tests::prop_addr ... ok
test tests::test_seeding ... ok
test wire::message::tests::prop_message_encode_decode ... ok
test wire::message::tests::prop_zero_bytes_encode_decode ... ok
test wire::message::tests::test_inv_ann_max_size ... ok
test wire::message::tests::test_node_ann_max_size ... ok
test wire::message::tests::test_pingpong_encode_max_size ... ok
test wire::message::tests::test_pingpong_encode_size_overflow ... ok
test wire::message::tests::test_refs_ann_max_size ... ok
test wire::protocol::test::test_inventory_ann_with_extension ... ok
test wire::protocol::test::test_pong_message_with_extension ... ok
test wire::tests::prop_filter ... ok
test wire::tests::prop_id ... ok
test wire::tests::prop_oid ... ok
test wire::tests::prop_pubkey ... ok
test wire::tests::prop_refs ... ok
test wire::tests::prop_signature ... ok
test wire::tests::prop_signed_refs ... ok
test wire::tests::prop_string ... ok
test wire::tests::prop_tuple ... ok
test wire::tests::prop_u16 ... ok
test wire::tests::prop_u32 ... ok
test wire::tests::prop_u64 ... ok
test wire::tests::prop_u8 ... ok
test wire::tests::prop_vec ... ok
test wire::tests::test_alias ... ok
test wire::tests::test_bounded_vec_limit ... ok
test wire::tests::test_filter_invalid ... ok
test wire::tests::test_string ... ok
test wire::varint::test::prop_encode_decode ... ok
test wire::varint::test::test_encode_overflow - should panic ... ok
test wire::varint::test::test_encoding ... ok
test wire::message::tests::prop_message_decoder ... ok
test tests::prop_inventory_exchange_dense ... ok
test tests::test_announcement_message_amplification ... ok
test result: ok. 113 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 20.12s
Running unittests src/main.rs (target/debug/deps/radicle_node-4820984cdb5701fb)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_remote_helper-ec4b110573be437b)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/git-remote-rad.rs (target/debug/deps/git_remote_rad-6e1e6e7941f73781)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_signals-85fbd454a3bf0ac6)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_ssh-9b2e5dfee304f504)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_systemd-1b4159ebc8f1d2b1)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_term-96f7925768df62cb)
running 20 tests
test ansi::tests::colors_enabled ... ok
test ansi::tests::wrapping ... ok
test ansi::tests::colors_disabled ... ok
test element::test::test_width ... ok
test cell::test::test_width ... ok
test element::test::test_truncate ... ok
test table::test::test_table ... ok
test table::test::test_table_border_maximized ... ok
test table::test::test_table_border ... ok
test table::test::test_table_unicode ... ok
test table::test::test_table_border_truncated ... ok
test table::test::test_table_unicode_truncate ... ok
test table::test::test_table_truncate ... ok
test table::test::test_truncate ... ok
test textarea::test::test_wrapping_code_block ... ok
test textarea::test::test_wrapping ... ok
test textarea::test::test_wrapping_paragraphs ... ok
test vstack::test::test_vstack ... ok
test vstack::test::test_vstack_maximize ... ok
test textarea::test::test_wrapping_fenced_block ... ok
test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/rad-agent.rs (target/debug/deps/rad_agent-ebde29902276e4db)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/rad-cli-demo.rs (target/debug/deps/rad_cli_demo-b4888d9c25fd0e5a)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/rad-init.rs (target/debug/deps/rad_init-247a667ed33dcb00)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/rad-merge.rs (target/debug/deps/rad_merge-02c7555617034abf)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/rad-push.rs (target/debug/deps/rad_push-3ff35bc35af21c62)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/rad-self.rs (target/debug/deps/rad_self-b8e8c77c09a2ee71)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/rad-set-canonical-refs.rs (target/debug/deps/rad_set_canonical_refs-81969bf711bec567)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_cli
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_cli_test
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_cob
running 1 test
test radicle-cob/src/backend/git/stable.rs - backend::git::stable::with_advanced_timestamp (line 56) ... ignored
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_crdt
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_crypto
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_dag
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_fetch
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_node
running 6 tests
test radicle-node/src/bounded.rs - bounded::BoundedVec<T,N>::max (line 96) ... ok
test radicle-node/src/bounded.rs - bounded::BoundedVec<T,N>::collect_from (line 30) ... ok
test radicle-node/src/bounded.rs - bounded::BoundedVec<T,N>::truncate (line 50) ... ok
test radicle-node/src/bounded.rs - bounded::BoundedVec<T,N>::unbound (line 149) ... ok
test radicle-node/src/bounded.rs - bounded::BoundedVec<T,N>::push (line 122) ... ok
test radicle-node/src/bounded.rs - bounded::BoundedVec<T,N>::with_capacity (line 66) ... ok
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.70s
Doc-tests radicle_remote_helper
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_signals
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_ssh
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_systemd
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_term
running 1 test
test radicle-term/src/table.rs - table (line 4) ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.44s
Exit code: 0
{
"response": "finished",
"result": "success"
}