rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5 heartwood0e8ecce342ade013a4fb406289972df1b4922826
{
"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:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz"
]
},
"action": "Created",
"patch": {
"id": "fdf773da9739ee3527ca88a4088f817ea02eb24d",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": null
},
"title": "radicle-core",
"state": {
"status": "merged",
"conflicts": []
},
"before": "af3f07627b05dac4a68b102e2908da23b061a631",
"after": "0e8ecce342ade013a4fb406289972df1b4922826",
"commits": [
"0e8ecce342ade013a4fb406289972df1b4922826",
"674a3b5b3f23e352a9458e117ff31d78feddbaf9",
"cdd7b2a92f549569e73f5e40d42f775b99d49ac5",
"4d1a9ac2f4faced78ab388e0b9855eabaf3b38f8"
],
"target": "3fc92f83fe089263c470b328414d923227cf0e4a",
"labels": [],
"assignees": [],
"revisions": [
{
"id": "fdf773da9739ee3527ca88a4088f817ea02eb24d",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": null
},
"description": "The main goal of this patch is to define core Radicle types so that\ncrates do not have to use `radicle` as the main dependency, when all\nthey need are a few core types.\n\nThis will eventually result in smaller crates that are scoped to\nwell-defined concepts, eventually resulting in untangling the\n`radicle` crate, so that it simply re-exports all the smaller crates.\n\nThe first two types in this crate are `RepoId` and `NodeId`, since\nthey are ubuiquitous to all other functionality.",
"base": "cf023f750dee2681eb73e4e0704da137ea2195ef",
"oid": "6ece60cf6fb6729c84b5234b729152e7e39a5451",
"timestamp": 1767085901
},
{
"id": "c3ef319d0a54b892e93c06cf211ee9a098403413",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": null
},
"description": "Review",
"base": "af3f07627b05dac4a68b102e2908da23b061a631",
"oid": "52c346e0b9055f91ba43879f4c3683eaf5838803",
"timestamp": 1767956800
},
{
"id": "5250431b53b160a7a6af72422a525970bf839ea8",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": null
},
"description": "Accept Review Changes",
"base": "af3f07627b05dac4a68b102e2908da23b061a631",
"oid": "0e8ecce342ade013a4fb406289972df1b4922826",
"timestamp": 1767959482
},
{
"id": "526e9702074ff7c4b2f6a11d2bc75bd6625ba1c9",
"author": {
"id": "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"alias": null
},
"description": "Minor rewordings of commit messages",
"base": "af3f07627b05dac4a68b102e2908da23b061a631",
"oid": "02318f199c6f29a2eede1f282e1f9b99927d27ec",
"timestamp": 1767964895
}
]
}
}
{
"response": "triggered",
"run_id": {
"id": "c9ca2a0e-b231-4894-a036-abbde693ede1"
},
"info_url": "https://cci.rad.levitte.org//c9ca2a0e-b231-4894-a036-abbde693ede1.html"
}
Started at: 2026-09-08 06:06:32.392058+02:00
Commands:
$ rad clone rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5 .
✓ Creating checkout in ./...
✓ Remote cloudhead@z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT added
✓ Remote-tracking branch cloudhead@z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT/master created for z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT
✓ Remote fintohaps@z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM added
✓ Remote-tracking branch fintohaps@z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM/master created for z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM
✓ 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/c9ca2a0e-b231-4894-a036-abbde693ede1/w/
╭────────────────────────────────────╮
│ heartwood │
│ Radicle Heartwood Protocol & Stack │
│ 189 issues · 38 patches │
╰────────────────────────────────────╯
Run `cd ./.` to go to the repository directory.
Exit code: 0
$ rad patch checkout fdf773da9739ee3527ca88a4088f817ea02eb24d
✓ Switched to branch patch/fdf773d at revision 5250431
✓ Branch patch/fdf773d setup to track rad/patches/fdf773da9739ee3527ca88a4088f817ea02eb24d
Exit code: 0
$ git config advice.detachedHead false
Exit code: 0
$ git checkout 0e8ecce342ade013a4fb406289972df1b4922826
HEAD is now at 0e8ecce3 radicle: re-export radicle_core::RepoId
Exit code: 0
$ rad patch show fdf773da9739ee3527ca88a4088f817ea02eb24d -p
╭─────────────────────────────────────────────────────────────────────────────────╮
│ Title radicle-core │
│ Patch fdf773da9739ee3527ca88a4088f817ea02eb24d │
│ Author fintohaps z6Mkire…SQZ3voM │
│ Head 0e8ecce342ade013a4fb406289972df1b4922826 │
│ Base af3f07627b05dac4a68b102e2908da23b061a631 │
│ Target master │
│ Branches patch/fdf773d │
│ Commits ahead 4, behind 632 │
│ Status merged │
│ │
│ The main goal of this patch is to define core Radicle types so that │
│ crates do not have to use `radicle` as the main dependency, when all │
│ they need are a few core types. │
│ │
│ This will eventually result in smaller crates that are scoped to │
│ well-defined concepts, eventually resulting in untangling the │
│ `radicle` crate, so that it simply re-exports all the smaller crates. │
│ │
│ The first two types in this crate are `RepoId` and `NodeId`, since │
│ they are ubuiquitous to all other functionality. │
├─────────────────────────────────────────────────────────────────────────────────┤
│ 0e8ecce radicle: re-export radicle_core::RepoId │
│ 674a3b5 radicle: re-export radicle_core::NodeId │
│ cdd7b2a core: introduce NodeId │
│ 4d1a9ac core: RepoId │
├─────────────────────────────────────────────────────────────────────────────────┤
│ ● Revision fdf773d @ cf023f7..6ece60c by fintohaps z6Mkire…SQZ3voM 8 months ago │
│ └─ ⋄ reviewed by levitte z6Mku8h…Fo9XVAx 8 months ago │
│ ↑ Revision c3ef319 @ af3f076..52c346e by lorenz z6MkkPv…WX5sTEz 7 months ago │
│ ↑ Revision 5250431 @ af3f076..0e8ecce by fintohaps z6Mkire…SQZ3voM 7 months ago │
│ ↑ Revision 526e970 @ af3f076..02318f1 by lorenz z6MkkPv…WX5sTEz 7 months ago │
│ └─ ✓ merged by lorenz z6MkkPv…WX5sTEz │
╰─────────────────────────────────────────────────────────────────────────────────╯
commit 0e8ecce342ade013a4fb406289972df1b4922826
Author: Fintan Halpenny <fintan.halpenny@gmail.com>
Date: Tue Dec 30 08:58:01 2025 +0000
radicle: re-export radicle_core::RepoId
diff --git a/crates/radicle/Cargo.toml b/crates/radicle/Cargo.toml
index 8b79ea538..d7dab0072 100644
--- a/crates/radicle/Cargo.toml
+++ b/crates/radicle/Cargo.toml
@@ -13,7 +13,16 @@ rust-version.workspace = true
default = []
test = ["tempfile", "qcheck", "radicle-crypto/test", "radicle-cob/test"]
logger = ["colored", "chrono"]
-schemars = ["radicle-oid/schemars", "radicle-localtime/schemars", "dep:schemars"]
+qcheck = [
+ "radicle-core/qcheck",
+ "dep:qcheck"
+]
+schemars = [
+ "radicle-oid/schemars",
+ "radicle-core/schemars",
+ "radicle-localtime/schemars",
+ "dep:schemars"
+]
[dependencies]
amplify = { workspace = true, features = ["std"] }
@@ -33,7 +42,7 @@ multibase = { workspace = true }
nonempty = { workspace = true, features = ["serialize"] }
qcheck = { workspace = true, optional = true }
radicle-cob = { workspace = true, features = ["git2"] }
-radicle-core = { workspace = true, features = ["git2"] }
+radicle-core = { workspace = true, features = ["git2", "serde", "sqlite"] }
radicle-crypto = { workspace = true, features = ["git-ref-format-core", "ssh", "sqlite", "cyphernet"] }
radicle-git-ref-format = { workspace = true, features = ["macro", "serde"] }
radicle-localtime = { workspace = true, features = ["serde"] }
diff --git a/crates/radicle/src/identity/doc.rs b/crates/radicle/src/identity/doc.rs
index 3ecd0b5c0..02e38bc02 100644
--- a/crates/radicle/src/identity/doc.rs
+++ b/crates/radicle/src/identity/doc.rs
@@ -1,7 +1,5 @@
pub mod update;
-mod id;
-
use std::collections::{BTreeMap, BTreeSet};
use std::fmt;
use std::num::{NonZeroU32, NonZeroUsize};
@@ -29,7 +27,7 @@ use crate::storage;
use crate::storage::{ReadRepository, RepositoryError};
pub use crypto::PublicKey;
-pub use id::*;
+pub use radicle_core::repo::*;
use super::crefs::{self, RawCanonicalRefs};
use super::CanonicalRefs;
diff --git a/crates/radicle/src/sql.rs b/crates/radicle/src/sql.rs
index f6dada6c3..57818ff0b 100644
--- a/crates/radicle/src/sql.rs
+++ b/crates/radicle/src/sql.rs
@@ -4,7 +4,6 @@ use std::str::FromStr;
use sqlite as sql;
use sqlite::Value;
-use crate::identity::RepoId;
use crate::node;
use crate::node::{Address, UserAgent};
@@ -28,29 +27,6 @@ pub fn transaction<T, E: From<sql::Error>>(
}
}
-impl TryFrom<&Value> for RepoId {
- type Error = sql::Error;
-
- fn try_from(value: &Value) -> Result<Self, Self::Error> {
- match value {
- Value::String(id) => RepoId::from_urn(id).map_err(|e| sql::Error {
- code: None,
- message: Some(e.to_string()),
- }),
- _ => Err(sql::Error {
- code: None,
- message: Some(format!("sql: invalid type `{:?}` for id", value.kind())),
- }),
- }
- }
-}
-
-impl sqlite::BindableWithIndex for &RepoId {
- fn bind<I: sql::ParameterIndex>(self, stmt: &mut sql::Statement<'_>, i: I) -> sql::Result<()> {
- self.urn().as_str().bind(stmt, i)
- }
-}
-
impl sql::BindableWithIndex for node::Features {
fn bind<I: sql::ParameterIndex>(self, stmt: &mut sql::Statement<'_>, i: I) -> sql::Result<()> {
(*self.deref() as i64).bind(stmt, i)
diff --git a/crates/radicle/src/test/arbitrary.rs b/crates/radicle/src/test/arbitrary.rs
index 1df2cd9db..a9af6bf3d 100644
--- a/crates/radicle/src/test/arbitrary.rs
+++ b/crates/radicle/src/test/arbitrary.rs
@@ -270,15 +270,6 @@ impl Arbitrary for storage::Remote<crypto::Unverified> {
}
}
-impl Arbitrary for RepoId {
- fn arbitrary(g: &mut qcheck::Gen) -> Self {
- let bytes = <[u8; 20]>::arbitrary(g);
- let oid = crate::git::Oid::from_sha1(bytes);
-
- RepoId::from(oid)
- }
-}
-
impl Arbitrary for AddressType {
fn arbitrary(g: &mut qcheck::Gen) -> Self {
let t = *g.choose(&[1, 2, 3, 4]).unwrap() as u8;
commit 674a3b5b3f23e352a9458e117ff31d78feddbaf9
Author: Fintan Halpenny <fintan.halpenny@gmail.com>
Date: Tue Dec 30 08:42:44 2025 +0000
radicle: re-export radicle_core::NodeId
diff --git a/Cargo.lock b/Cargo.lock
index 09e7233d2..ebe36335f 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2825,6 +2825,7 @@ dependencies = [
"qcheck",
"qcheck-macros",
"radicle-cob",
+ "radicle-core",
"radicle-crypto",
"radicle-git-metadata",
"radicle-git-ref-format",
diff --git a/Cargo.toml b/Cargo.toml
index e456fb30b..cf07d16cf 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -45,6 +45,7 @@ radicle = { version = "0.20", path = "crates/radicle" }
radicle-cli = { version = "0.17", path = "crates/radicle-cli" }
radicle-cli-test = { path = "crates/radicle-cli-test" }
radicle-cob = { version = "0.17", path = "crates/radicle-cob" }
+radicle-core = { version = "0.1", path = "crates/radicle-core" }
radicle-crypto = { version = "0.14", path = "crates/radicle-crypto" }
radicle-dag = { version = "0.10", path = "crates/radicle-dag" }
radicle-fetch = { version = "0.16", path = "crates/radicle-fetch" }
diff --git a/crates/radicle/Cargo.toml b/crates/radicle/Cargo.toml
index 1a41d54a6..8b79ea538 100644
--- a/crates/radicle/Cargo.toml
+++ b/crates/radicle/Cargo.toml
@@ -33,6 +33,7 @@ multibase = { workspace = true }
nonempty = { workspace = true, features = ["serialize"] }
qcheck = { workspace = true, optional = true }
radicle-cob = { workspace = true, features = ["git2"] }
+radicle-core = { workspace = true, features = ["git2"] }
radicle-crypto = { workspace = true, features = ["git-ref-format-core", "ssh", "sqlite", "cyphernet"] }
radicle-git-ref-format = { workspace = true, features = ["macro", "serde"] }
radicle-localtime = { workspace = true, features = ["serde"] }
diff --git a/crates/radicle/src/node.rs b/crates/radicle/src/node.rs
index f179f04a1..8f761fb5b 100644
--- a/crates/radicle/src/node.rs
+++ b/crates/radicle/src/node.rs
@@ -50,6 +50,7 @@ pub use cyphernet::addr::{HostName, PeerAddr, PeerAddrParseError};
pub use db::Database;
pub use events::{Event, Events};
pub use features::Features;
+pub use radicle_core::NodeId;
pub use seed::SyncedAt;
pub use timestamp::Timestamp;
@@ -1002,9 +1003,6 @@ impl<T: DeserializeOwned> Iterator for LineIter<T> {
}
}
-/// Public node & device identifier.
-pub type NodeId = PublicKey;
-
/// Node controller.
#[derive(Debug, Clone)]
pub struct Node {
commit cdd7b2a92f549569e73f5e40d42f775b99d49ac5
Author: Fintan Halpenny <fintan.halpenny@gmail.com>
Date: Thu Nov 6 09:06:46 2025 +0000
core: introduce NodeId
diff --git a/Cargo.lock b/Cargo.lock
index bb5de26b1..09e7233d2 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2935,6 +2935,7 @@ dependencies = [
"multibase",
"proptest",
"qcheck",
+ "radicle-crypto",
"radicle-git-ref-format",
"radicle-oid",
"schemars",
diff --git a/crates/radicle-core/Cargo.toml b/crates/radicle-core/Cargo.toml
index 63d20755d..3a45e1c16 100644
--- a/crates/radicle-core/Cargo.toml
+++ b/crates/radicle-core/Cargo.toml
@@ -22,6 +22,7 @@ gix-hash = { workspace = true, optional = true }
multibase = { workspace = true }
proptest = { workspace = true, optional = true }
qcheck = { workspace = true, optional = true }
+radicle-crypto = { workspace = true }
radicle-git-ref-format = { workspace = true, optional = true }
radicle-oid = { workspace = true, default-features = false, features = ["sha1"] }
schemars = { workspace = true, optional = true, default-features = false, features = ["derive"] }
diff --git a/crates/radicle-core/src/lib.rs b/crates/radicle-core/src/lib.rs
index 3fe21ac88..f78fd9d76 100644
--- a/crates/radicle-core/src/lib.rs
+++ b/crates/radicle-core/src/lib.rs
@@ -71,5 +71,8 @@ extern crate std as doc_std;
extern crate alloc;
+pub mod node;
+pub use node::NodeId;
+
pub mod repo;
pub use repo::RepoId;
diff --git a/crates/radicle-core/src/node.rs b/crates/radicle-core/src/node.rs
new file mode 100644
index 000000000..1fb977779
--- /dev/null
+++ b/crates/radicle-core/src/node.rs
@@ -0,0 +1,24 @@
+//! A Radicle node on the network is identified by its [`NodeId`], which in turn
+//! is a Ed25519 public key.
+//!
+//! The human-readable format is a multibase-encoded format of the underlying Ed25519 public key, i.e.
+//! ```
+//! MULTIBASE(base58-btc, MULTICODEC(public-key-type, raw-public-key-bytes))
+//! ```
+//! which results in strings that look like:
+//! ```
+//! z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
+//! ```
+
+use radicle_crypto::PublicKey;
+
+/// Public identifier of a node device in the network.
+///
+/// # Legacy
+///
+/// This is a type alias, providing little protection around evolving a [`NodeId`]
+/// and having it very tightly coupled with a [`PublicKey`].
+///
+/// Future iterations will change this to provide a better API for working with
+/// [`NodeId`]'s and their usage in the protocol.
+pub type NodeId = PublicKey;
commit 4d1a9ac2f4faced78ab388e0b9855eabaf3b38f8
Author: Fintan Halpenny <fintan.halpenny@gmail.com>
Date: Thu Nov 6 08:52:30 2025 +0000
core: RepoId
Introduce `radicle-core` for housing core data types to the Radicle protocol..
The initial data type being added is `RepoId`. To make the crate as lightweight
as possible it introduces many of the dependencies using feature flags.
diff --git a/Cargo.lock b/Cargo.lock
index 69c2c6b8f..bb5de26b1 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -637,7 +637,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76"
dependencies = [
"generic-array",
- "rand_core",
+ "rand_core 0.6.4",
"subtle",
"zeroize",
]
@@ -649,7 +649,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
dependencies = [
"generic-array",
- "rand_core",
+ "rand_core 0.6.4",
"typenum",
]
@@ -878,7 +878,7 @@ dependencies = [
"generic-array",
"group",
"pkcs8",
- "rand_core",
+ "rand_core 0.6.4",
"sec1",
"subtle",
"zeroize",
@@ -1006,7 +1006,7 @@ version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449"
dependencies = [
- "rand_core",
+ "rand_core 0.6.4",
"subtle",
]
@@ -1044,6 +1044,12 @@ dependencies = [
"serde",
]
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
[[package]]
name = "form_urlencoded"
version = "1.2.1"
@@ -1675,7 +1681,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
dependencies = [
"ff",
- "rand_core",
+ "rand_core 0.6.4",
"subtle",
]
@@ -2347,7 +2353,7 @@ dependencies = [
"num-integer",
"num-iter",
"num-traits",
- "rand",
+ "rand 0.8.5",
"smallvec",
"zeroize",
]
@@ -2493,7 +2499,7 @@ dependencies = [
"ecdsa",
"elliptic-curve",
"primeorder",
- "rand_core",
+ "rand_core 0.6.4",
"sha2",
]
@@ -2724,13 +2730,32 @@ dependencies = [
"parking_lot",
]
+[[package]]
+name = "proptest"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40"
+dependencies = [
+ "bit-set",
+ "bit-vec",
+ "bitflags 2.9.1",
+ "num-traits",
+ "rand 0.9.2",
+ "rand_chacha 0.9.0",
+ "rand_xorshift",
+ "regex-syntax 0.8.5",
+ "rusty-fork",
+ "tempfile",
+ "unarray",
+]
+
[[package]]
name = "qcheck"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b439bd4242da51d62d18c95e6a6add749346756b0d1a587dfd0cc22fa6b5f3f0"
dependencies = [
- "rand",
+ "rand 0.8.5",
]
[[package]]
@@ -2744,6 +2769,12 @@ dependencies = [
"syn 1.0.109",
]
+[[package]]
+name = "quick-error"
+version = "1.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
+
[[package]]
name = "quick-xml"
version = "0.38.1"
@@ -2895,6 +2926,24 @@ dependencies = [
"thiserror 2.0.17",
]
+[[package]]
+name = "radicle-core"
+version = "0.1.0"
+dependencies = [
+ "git2",
+ "gix-hash",
+ "multibase",
+ "proptest",
+ "qcheck",
+ "radicle-git-ref-format",
+ "radicle-oid",
+ "schemars",
+ "serde",
+ "serde_json",
+ "sqlite",
+ "thiserror 2.0.17",
+]
+
[[package]]
name = "radicle-crypto"
version = "0.14.0"
@@ -3158,8 +3207,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
dependencies = [
"libc",
- "rand_chacha",
- "rand_core",
+ "rand_chacha 0.3.1",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
+dependencies = [
+ "rand_chacha 0.9.0",
+ "rand_core 0.9.3",
]
[[package]]
@@ -3169,7 +3228,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
dependencies = [
"ppv-lite86",
- "rand_core",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
+dependencies = [
+ "ppv-lite86",
+ "rand_core 0.9.3",
]
[[package]]
@@ -3181,6 +3250,24 @@ dependencies = [
"getrandom 0.2.15",
]
+[[package]]
+name = "rand_core"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
+dependencies = [
+ "getrandom 0.3.3",
+]
+
+[[package]]
+name = "rand_xorshift"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a"
+dependencies = [
+ "rand_core 0.9.3",
+]
+
[[package]]
name = "redox_syscall"
version = "0.4.1"
@@ -3300,7 +3387,7 @@ dependencies = [
"num-traits",
"pkcs1",
"pkcs8",
- "rand_core",
+ "rand_core 0.6.4",
"sha2",
"signature 2.2.0",
"spki",
@@ -3346,6 +3433,18 @@ version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2"
+[[package]]
+name = "rusty-fork"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc6bf79ff24e648f6da1f8d1f011e9cac26491b619e6b9280f2b47f1774e6ee2"
+dependencies = [
+ "fnv",
+ "quick-error",
+ "tempfile",
+ "wait-timeout",
+]
+
[[package]]
name = "ryu"
version = "1.0.17"
@@ -3630,7 +3729,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de"
dependencies = [
"digest",
- "rand_core",
+ "rand_core 0.6.4",
]
[[package]]
@@ -3789,7 +3888,7 @@ dependencies = [
"p256",
"p384",
"p521",
- "rand_core",
+ "rand_core 0.6.4",
"rsa",
"sec1",
"sha2",
@@ -4376,6 +4475,12 @@ version = "1.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
+[[package]]
+name = "unarray"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94"
+
[[package]]
name = "unicode-display-width"
version = "0.3.0"
@@ -4543,6 +4648,15 @@ version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64"
+[[package]]
+name = "wait-timeout"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11"
+dependencies = [
+ "libc",
+]
+
[[package]]
name = "walkdir"
version = "2.5.0"
@@ -4984,7 +5098,7 @@ checksum = "1ccf671d62d1bd0c913d9059e69bb4a6b51f7a4c899ab83c62d921e35f206053"
dependencies = [
"defer-heavy",
"log",
- "rand",
+ "rand 0.8.5",
"sync-ptr",
"windows",
]
diff --git a/Cargo.toml b/Cargo.toml
index 21e0514c8..e456fb30b 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -38,6 +38,7 @@ log = "0.4.17"
multibase = "0.9.1"
nonempty = "0.9.0"
pretty_assertions = "1.3.0"
+proptest = "1.9"
qcheck = { version = "1", default-features = false }
qcheck-macros = { version = "1", default-features = false }
radicle = { version = "0.20", path = "crates/radicle" }
@@ -65,7 +66,7 @@ signature = "2.2"
snapbox = "0.4.3"
sqlite = "0.32.0"
tempfile = "3.3.0"
-thiserror = "2"
+thiserror = { version = "2", default-features = false }
winpipe = "0.1.1"
zeroize = "1.5.7"
diff --git a/crates/radicle-cli-test/Cargo.toml b/crates/radicle-cli-test/Cargo.toml
index 0dc9e9eb5..60c15811c 100644
--- a/crates/radicle-cli-test/Cargo.toml
+++ b/crates/radicle-cli-test/Cargo.toml
@@ -18,4 +18,4 @@ pretty_assertions = { workspace = true }
radicle = { workspace = true, features = ["logger", "test"]}
shlex = { workspace = true }
snapbox = { workspace = true }
-thiserror = { workspace = true }
\ No newline at end of file
+thiserror = { workspace = true, default-features = true }
\ No newline at end of file
diff --git a/crates/radicle-cli/Cargo.toml b/crates/radicle-cli/Cargo.toml
index 402afdfc4..e147155d2 100644
--- a/crates/radicle-cli/Cargo.toml
+++ b/crates/radicle-cli/Cargo.toml
@@ -35,7 +35,7 @@ serde = { workspace = true }
serde_json = { workspace = true }
shlex = { workspace = true }
tempfile = { workspace = true }
-thiserror = { workspace = true }
+thiserror = { workspace = true, default-features = true }
timeago = { version = "0.4.2", default-features = false }
tree-sitter = "0.24.4"
tree-sitter-bash = "0.23.3"
diff --git a/crates/radicle-cob/Cargo.toml b/crates/radicle-cob/Cargo.toml
index 59c216e58..029a41fce 100644
--- a/crates/radicle-cob/Cargo.toml
+++ b/crates/radicle-cob/Cargo.toml
@@ -32,7 +32,7 @@ radicle-oid = { workspace = true, features = ["git2", "serde", "std"] }
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true }
signature = { workspace = true }
-thiserror = { workspace = true }
+thiserror = { workspace = true, default-features = true }
[dev-dependencies]
fastrand = { workspace = true }
diff --git a/crates/radicle-core/Cargo.toml b/crates/radicle-core/Cargo.toml
new file mode 100644
index 000000000..63d20755d
--- /dev/null
+++ b/crates/radicle-core/Cargo.toml
@@ -0,0 +1,37 @@
+[package]
+name = "radicle-core"
+description = "Radicle core data type definitions"
+homepage.workspace = true
+repository.workspace = true
+version = "0.1.0"
+edition.workspace = true
+license.workspace = true
+keywords = ["radicle", "git", "data types"]
+rust-version.workspace = true
+
+# For documentation of features refer to the module documentation in `./lib.rs`
+[features]
+default = ["std"]
+git2 = ["dep:git2", "radicle-oid/git2"]
+gix = ["dep:gix-hash", "radicle-oid/gix"]
+std = ["radicle-oid/std", "thiserror/std", "schemars/std", "serde/std"]
+
+[dependencies]
+git2 = { workspace = true, optional = true }
+gix-hash = { workspace = true, optional = true }
+multibase = { workspace = true }
+proptest = { workspace = true, optional = true }
+qcheck = { workspace = true, optional = true }
+radicle-git-ref-format = { workspace = true, optional = true }
+radicle-oid = { workspace = true, default-features = false, features = ["sha1"] }
+schemars = { workspace = true, optional = true, default-features = false, features = ["derive"] }
+serde = { workspace = true, optional = true, default-features = false }
+sqlite = { workspace = true, optional = true }
+thiserror = { workspace = true, default-features = false }
+
+[dev-dependencies]
+proptest = { workspace = true }
+serde_json = { workspace = true }
+
+[lints]
+workspace = true
diff --git a/crates/radicle-core/src/lib.rs b/crates/radicle-core/src/lib.rs
new file mode 100644
index 000000000..3fe21ac88
--- /dev/null
+++ b/crates/radicle-core/src/lib.rs
@@ -0,0 +1,75 @@
+#![no_std]
+
+//! This a crate for defining core data type for the Radicle protocol, such as
+//! [`RepoId`].
+//!
+//! # Feature Flags
+//!
+//! The only default feature is `std`.
+//!
+//! ## `std`
+//!
+//! [`OsString`]: ::doc_std::ffi::OsString
+//!
+//! Provides implementation of [`TryFrom<OsString>`].
+//!
+//! Enabled by default, since it is expected that most dependents will use the
+//! standard library.
+//!
+//! ## `git2`
+//!
+//! [`git2::Oid`]: ::git2::Oid
+//!
+//! Provides conversion from a [`git2::Oid`] to a [`RepoId`].
+//!
+//! ## `gix`
+//!
+//! [`ObjectId`]: ::gix_hash::ObjectId
+//!
+//! Provides conversion from a [`ObjectId`] to a [`RepoId`].
+//!
+//! ## `radicle-git-ref-format`
+//!
+//! Provides conversions from data types defined in `radicle-core` into valid
+//! reference components and/or strings.
+//!
+//! ## `serde`
+//!
+//! [`Serialize`]: ::serde::ser::Serialize
+//! [`Deserialize`]: ::serde::de::Deserialize
+//!
+//! Provides implementations of [`Serialize`] and [`Deserialize`].
+//!
+//! ## `schemars`
+//!
+//! [`JsonSchema`]: ::schemars::JsonSchema
+//!
+//! Provides implementations of [`JsonSchema`].
+//!
+//! ## `proptest`
+//!
+//! [`proptest::Strategy`]: ::proptest::strategy::Strategy
+//!
+//! Provides functions for generating different types of [`proptest::Strategy`].
+//!
+//! ## `qcheck`
+//!
+//! [`qcheck::Arbitrary`]: ::qcheck::Arbitrary
+//!
+//! Provides implementations of [`qcheck::Arbitrary`].
+//!
+//! ## `sqlite`
+//!
+//! [`sqlite::BindableWithIndex`]: ::sqlite::BindableWithIndex
+//! [`sqlite::Value`]: ::sqlite::Value
+//!
+//! Provides implementations of [`sqlite::BindableWithIndex`] and `TryFrom`
+//! implementations from the [`sqlite::Value`] type to the domain type.
+
+#[cfg(doc)]
+extern crate std as doc_std;
+
+extern crate alloc;
+
+pub mod repo;
+pub use repo::RepoId;
diff --git a/crates/radicle-core/src/repo.rs b/crates/radicle-core/src/repo.rs
new file mode 100644
index 000000000..82a637b63
--- /dev/null
+++ b/crates/radicle-core/src/repo.rs
@@ -0,0 +1,294 @@
+use alloc::string::String;
+use alloc::string::ToString as _;
+use alloc::vec::Vec;
+
+use radicle_oid::Oid;
+use thiserror::Error;
+
+/// Radicle identifier prefix.
+pub const RAD_PREFIX: &str = "rad:";
+
+#[derive(Error, Debug)]
+pub enum IdError {
+ #[error(transparent)]
+ Multibase(#[from] multibase::Error),
+ #[error("invalid length: expected {expected} bytes, got {actual} bytes")]
+ Length { expected: usize, actual: usize },
+}
+
+/// A repository identifier.
+#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord)]
+#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
+pub struct RepoId(
+ #[cfg_attr(feature = "schemars", schemars(
+ with = "String",
+ description = "A repository identifier. Starts with \"rad:\", followed by a multibase Base58 encoded Git object identifier.",
+ regex(pattern = r"rad:z[1-9a-km-zA-HJ-NP-Z]+"),
+ length(min = 5),
+ example = &"rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5",
+ ))]
+ Oid,
+);
+
+impl core::fmt::Display for RepoId {
+ fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
+ f.write_str(self.urn().as_str())
+ }
+}
+
+impl core::fmt::Debug for RepoId {
+ fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
+ write!(f, "RepoId({self})")
+ }
+}
+
+impl RepoId {
+ /// Format the identifier as a human-readable URN.
+ ///
+ /// Eg. `rad:z3XncAdkZjeK9mQS5Sdc4qhw98BUX`.
+ ///
+ pub fn urn(&self) -> String {
+ RAD_PREFIX.to_string() + &self.canonical()
+ }
+
+ /// Parse an identifier from the human-readable URN format.
+ /// Accepts strings without the radicle prefix as well,
+ /// for convenience.
+ pub fn from_urn(s: &str) -> Result<Self, IdError> {
+ let s = s.strip_prefix(RAD_PREFIX).unwrap_or(s);
+ let id = Self::from_canonical(s)?;
+
+ Ok(id)
+ }
+
+ /// Format the identifier as a multibase string.
+ ///
+ /// Eg. `z3XncAdkZjeK9mQS5Sdc4qhw98BUX`.
+ ///
+ pub fn canonical(&self) -> String {
+ multibase::encode(multibase::Base::Base58Btc, AsRef::<[u8]>::as_ref(&self.0))
+ }
+
+ pub fn from_canonical(input: &str) -> Result<Self, IdError> {
+ const EXPECTED_LEN: usize = 20;
+ let (_, bytes) = multibase::decode(input)?;
+ let bytes: [u8; EXPECTED_LEN] =
+ bytes.try_into().map_err(|bytes: Vec<u8>| IdError::Length {
+ expected: EXPECTED_LEN,
+ actual: bytes.len(),
+ })?;
+ Ok(Self(Oid::from_sha1(bytes)))
+ }
+}
+
+impl core::str::FromStr for RepoId {
+ type Err = IdError;
+
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ Self::from_urn(s)
+ }
+}
+
+#[cfg(feature = "std")]
+mod std_impls {
+ extern crate std;
+
+ use super::{IdError, RepoId};
+
+ use std::ffi::OsString;
+
+ impl TryFrom<OsString> for RepoId {
+ type Error = IdError;
+
+ fn try_from(value: OsString) -> Result<Self, Self::Error> {
+ let string = value.to_string_lossy();
+ Self::from_canonical(&string)
+ }
+ }
+
+ impl std::hash::Hash for RepoId {
+ fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
+ self.0.hash(state)
+ }
+ }
+}
+
+impl From<Oid> for RepoId {
+ fn from(oid: Oid) -> Self {
+ Self(oid)
+ }
+}
+
+impl core::ops::Deref for RepoId {
+ type Target = Oid;
+
+ fn deref(&self) -> &Self::Target {
+ &self.0
+ }
+}
+
+#[cfg(feature = "git2")]
+mod git2_impls {
+ use super::RepoId;
+
+ impl From<git2::Oid> for RepoId {
+ fn from(oid: git2::Oid) -> Self {
+ Self(oid.into())
+ }
+ }
+}
+
+#[cfg(feature = "gix")]
+mod gix_impls {
+ use super::RepoId;
+
+ impl From<gix_hash::ObjectId> for RepoId {
+ fn from(oid: gix_hash::ObjectId) -> Self {
+ Self(oid.into())
+ }
+ }
+}
+
+#[cfg(feature = "radicle-git-ref-format")]
+mod radicle_git_ref_format_impls {
+ use alloc::string::ToString;
+
+ use radicle_git_ref_format::{Component, RefString};
+
+ use super::RepoId;
+
+ impl From<&RepoId> for Component<'_> {
+ fn from(id: &RepoId) -> Self {
+ let refstr = RefString::try_from(id.0.to_string())
+ .expect("repository id's are valid ref strings");
+ Component::from_refstr(refstr).expect("repository id's are valid refname components")
+ }
+ }
+}
+
+#[cfg(feature = "serde")]
+mod serde_impls {
+ use alloc::string::String;
+
+ use serde::{de, Deserialize, Deserializer, Serialize};
+
+ use super::RepoId;
+
+ impl Serialize for RepoId {
+ fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+ where
+ S: serde::Serializer,
+ {
+ serializer.collect_str(&self.urn())
+ }
+ }
+
+ impl<'de> Deserialize<'de> for RepoId {
+ fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+ where
+ D: Deserializer<'de>,
+ {
+ String::deserialize(deserializer)?
+ .parse()
+ .map_err(de::Error::custom)
+ }
+ }
+
+ #[cfg(test)]
+ mod test {
+ use proptest::proptest;
+
+ use super::super::*;
+
+ fn prop_roundtrip_serde_json(rid: RepoId) {
+ let encoded = serde_json::to_string(&rid).unwrap();
+ let decoded = serde_json::from_str(&encoded).unwrap();
+
+ assert_eq!(rid, decoded);
+ }
+
+ proptest! {
+ #[test]
+ fn assert_prop_roundtrip_serde_json(rid in arbitrary::rid()) {
+ prop_roundtrip_serde_json(rid)
+ }
+ }
+ }
+}
+
+#[cfg(feature = "sqlite")]
+mod sqlite_impls {
+ use alloc::format;
+ use alloc::string::ToString;
+
+ use super::RepoId;
+
+ use sqlite::{BindableWithIndex, Error, ParameterIndex, Statement, Value};
+
+ impl TryFrom<&Value> for RepoId {
+ type Error = Error;
+
+ fn try_from(value: &Value) -> Result<Self, Self::Error> {
+ match value {
+ Value::String(id) => RepoId::from_urn(id).map_err(|e| Error {
+ code: None,
+ message: Some(e.to_string()),
+ }),
+ _ => Err(Error {
+ code: None,
+ message: Some(format!("sql: invalid type `{:?}` for id", value.kind())),
+ }),
+ }
+ }
+ }
+
+ impl BindableWithIndex for &RepoId {
+ fn bind<I: ParameterIndex>(self, stmt: &mut Statement<'_>, i: I) -> sqlite::Result<()> {
+ self.urn().as_str().bind(stmt, i)
+ }
+ }
+}
+
+#[cfg(any(test, feature = "proptest"))]
+pub mod arbitrary {
+ use proptest::prelude::Strategy;
+
+ use super::RepoId;
+
+ pub fn rid() -> impl Strategy<Value = RepoId> {
+ proptest::array::uniform20(proptest::num::u8::ANY)
+ .prop_map(|bytes| RepoId::from(radicle_oid::Oid::from_sha1(bytes)))
+ }
+}
+
+#[cfg(feature = "qcheck")]
+impl qcheck::Arbitrary for RepoId {
+ fn arbitrary(g: &mut qcheck::Gen) -> Self {
+ let bytes = <[u8; 20]>::arbitrary(g);
+ let oid = radicle_oid::Oid::from_sha1(bytes);
+
+ RepoId::from(oid)
+ }
+}
+
+#[cfg(test)]
+#[allow(clippy::unwrap_used)]
+mod test {
+ use super::*;
+ use proptest::proptest;
+
+ fn prop_roundtrip_parse(rid: RepoId) {
+ use core::str::FromStr as _;
+ let encoded = rid.to_string();
+ let decoded = RepoId::from_str(&encoded).unwrap();
+
+ assert_eq!(rid, decoded);
+ }
+
+ proptest! {
+ #[test]
+ fn assert_prop_roundtrip_parse(rid in arbitrary::rid()) {
+ prop_roundtrip_parse(rid)
+ }
+ }
+}
diff --git a/crates/radicle-crypto/Cargo.toml b/crates/radicle-crypto/Cargo.toml
index 2315128f3..58f945e0e 100644
--- a/crates/radicle-crypto/Cargo.toml
+++ b/crates/radicle-crypto/Cargo.toml
@@ -29,7 +29,7 @@ serde = { workspace = true, features = ["derive", "std"] }
signature = { workspace = true }
sqlite = { workspace = true, features = ["bundled"], optional = true }
ssh-key = { version = "0.6.3", default-features = false, features = ["std", "encryption", "getrandom"], optional = true }
-thiserror = { workspace = true }
+thiserror = { workspace = true, default-features = true }
zeroize = { workspace = true }
[dev-dependencies]
diff --git a/crates/radicle-fetch/Cargo.toml b/crates/radicle-fetch/Cargo.toml
index e6aa11e93..f4dfa1361 100644
--- a/crates/radicle-fetch/Cargo.toml
+++ b/crates/radicle-fetch/Cargo.toml
@@ -22,4 +22,4 @@ nonempty = { workspace = true }
radicle = { workspace = true }
radicle-oid = { workspace = true, features = ["gix"] }
radicle-git-ref-format = { workspace = true, features = ["bstr"] }
-thiserror = { workspace = true }
\ No newline at end of file
+thiserror = { workspace = true, default-features = true }
\ No newline at end of file
diff --git a/crates/radicle-git-metadata/Cargo.toml b/crates/radicle-git-metadata/Cargo.toml
index ab58b3f08..86b175ac8 100644
--- a/crates/radicle-git-metadata/Cargo.toml
+++ b/crates/radicle-git-metadata/Cargo.toml
@@ -10,4 +10,4 @@ keywords = ["radicle", "git", "metadata"]
rust-version.workspace = true
[dependencies]
-thiserror = { workspace = true }
\ No newline at end of file
+thiserror = { workspace = true, default-features = true }
\ No newline at end of file
diff --git a/crates/radicle-node/Cargo.toml b/crates/radicle-node/Cargo.toml
index a9b6aa944..1ff3e2132 100644
--- a/crates/radicle-node/Cargo.toml
+++ b/crates/radicle-node/Cargo.toml
@@ -41,7 +41,7 @@ snapbox = { workspace = true, optional = true }
socket2 = { version = "0.5.7", features = ["all"], optional = true }
structured-logger = { version = "1.0.4", optional = true }
tempfile = { workspace = true }
-thiserror = { workspace = true }
+thiserror = { workspace = true, default-features = true }
[target.'cfg(target_os = "linux")'.dependencies]
radicle-systemd = { workspace = true, optional = true }
diff --git a/crates/radicle-protocol/Cargo.toml b/crates/radicle-protocol/Cargo.toml
index 2d0858950..40cc183cb 100644
--- a/crates/radicle-protocol/Cargo.toml
+++ b/crates/radicle-protocol/Cargo.toml
@@ -27,7 +27,7 @@ sqlite = { workspace = true, features = ["bundled"] }
scrypt = { version = "0.11.0", default-features = false }
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true, features = ["preserve_order"] }
-thiserror = { workspace = true }
+thiserror = { workspace = true, default-features = true }
[dev-dependencies]
paste = "1.0.15"
diff --git a/crates/radicle-remote-helper/Cargo.toml b/crates/radicle-remote-helper/Cargo.toml
index 418956853..411c005fb 100644
--- a/crates/radicle-remote-helper/Cargo.toml
+++ b/crates/radicle-remote-helper/Cargo.toml
@@ -19,4 +19,4 @@ log = { workspace = true }
radicle = { workspace = true }
radicle-cli = { workspace = true }
radicle-crypto = { workspace = true }
-thiserror = { workspace = true }
\ No newline at end of file
+thiserror = { workspace = true, default-features = true }
\ No newline at end of file
diff --git a/crates/radicle-ssh/Cargo.toml b/crates/radicle-ssh/Cargo.toml
index 392de1b75..17c32abd1 100644
--- a/crates/radicle-ssh/Cargo.toml
+++ b/crates/radicle-ssh/Cargo.toml
@@ -14,7 +14,7 @@ edition.workspace = true
rust-version.workspace = true
[dependencies]
-thiserror = { workspace = true }
+thiserror = { workspace = true, default-features = true }
zeroize = { workspace = true }
[target.'cfg(windows)'.dependencies]
diff --git a/crates/radicle-term/Cargo.toml b/crates/radicle-term/Cargo.toml
index 512e43583..a128c0bb0 100644
--- a/crates/radicle-term/Cargo.toml
+++ b/crates/radicle-term/Cargo.toml
@@ -20,7 +20,7 @@ inquire = { version = "0.7.4", default-features = false, features = [
"crossterm",
"editor",
] }
-thiserror = { workspace = true }
+thiserror = { workspace = true, default-features = true }
unicode-display-width = "0.3.0"
unicode-segmentation = "1.7.1"
zeroize = { workspace = true }
diff --git a/crates/radicle/Cargo.toml b/crates/radicle/Cargo.toml
index 75eeb03fb..1a41d54a6 100644
--- a/crates/radicle/Cargo.toml
+++ b/crates/radicle/Cargo.toml
@@ -45,7 +45,7 @@ serde-untagged = "0.1.7"
siphasher = "1.0.0"
sqlite = { workspace = true, features = ["bundled"] }
tempfile = { workspace = true, optional = true }
-thiserror = { workspace = true }
+thiserror = { workspace = true, default-features = true }
unicode-normalization = { version = "0.1" }
[target.'cfg(unix)'.dependencies]
Exit code: 0
shell: 'export RUSTDOCFLAGS=''-D warnings'' cargo --version rustc --version cargo fmt --check cargo clippy --all-targets --workspace -- --deny warnings cargo build --all-targets --workspace cargo doc --workspace --no-deps --all-features cargo test --workspace --no-fail-fast '
Commands:
$ podman run --name c9ca2a0e-b231-4894-a036-abbde693ede1 -v /opt/radcis/ci.rad.levitte.org/cci/state/c9ca2a0e-b231-4894-a036-abbde693ede1/s:/c9ca2a0e-b231-4894-a036-abbde693ede1/s:ro -v /opt/radcis/ci.rad.levitte.org/cci/state/c9ca2a0e-b231-4894-a036-abbde693ede1/w:/c9ca2a0e-b231-4894-a036-abbde693ede1/w -w /c9ca2a0e-b231-4894-a036-abbde693ede1/w -v /opt/radcis/ci.rad.levitte.org/.radicle:/${id}/.radicle:ro -e RAD_HOME=/${id}/.radicle rust:trixie bash /c9ca2a0e-b231-4894-a036-abbde693ede1/s/script.sh
+ export 'RUSTDOCFLAGS=-D warnings'
+ RUSTDOCFLAGS='-D warnings'
+ cargo --version
info: syncing channel updates for '1.90-x86_64-unknown-linux-gnu'
info: latest update on 2025-09-18, rust version 1.90.0 (1159e78c4 2025-09-14)
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.90.0 (840b83a10 2025-07-30)
+ rustc --version
rustc 1.90.0 (1159e78c4 2025-09-14)
+ cargo fmt --check
+ cargo clippy --all-targets --workspace -- --deny warnings
Updating crates.io index
Downloading crates ...
Downloaded git-ref-format v0.6.0
Downloaded filetime v0.2.23
Downloaded base32 v0.4.0
Downloaded fluent-uri v0.3.2
Downloaded gix-shallow v0.5.0
Downloaded flate2 v1.1.1
Downloaded log v0.4.27
Downloaded lexopt v0.3.0
Downloaded memmap2 v0.9.8
Downloaded jiff-static v0.2.15
Downloaded keccak v0.1.5
Downloaded hash32 v0.3.1
Downloaded gix-fs v0.16.1
Downloaded matchers v0.1.0
Downloaded gix-negotiate v0.21.0
Downloaded gix-revwalk v0.21.0
Downloaded outref v0.5.2
Downloaded pbkdf2 v0.12.2
Downloaded litemap v0.7.5
Downloaded nu-ansi-term v0.46.0
Downloaded pem-rfc7468 v0.7.0
Downloaded qcheck-macros v1.0.0
Downloaded parking_lot_core v0.9.12
Downloaded ref-cast v1.0.24
Downloaded qcheck v1.0.0
Downloaded rand_core v0.9.3
Downloaded same-file v1.0.6
Downloaded bytesize v2.0.1
Downloaded bit-vec v0.8.0
Downloaded scopeguard v1.2.0
Downloaded sha1 v0.10.6
Downloaded ref-cast-impl v1.0.24
Downloaded siphasher v0.3.11
Downloaded siphasher v1.0.1
Downloaded socks5-client v0.4.1
Downloaded stable_deref_trait v1.2.0
Downloaded sqlite v0.32.0
Downloaded sval_dynamic v2.14.1
Downloaded sval_ref v2.14.1
Downloaded snapbox v0.4.17
Downloaded test-log v0.2.18
Downloaded test-log-macros v0.2.18
Downloaded spin v0.9.8
Downloaded tinyvec_macros v0.1.1
Downloaded similar v2.5.0
Downloaded thread_local v1.1.9
Downloaded synstructure v0.13.1
Downloaded tree-sitter-language v0.1.2
Downloaded toml_datetime v0.7.0
Downloaded thiserror-impl v2.0.17
Downloaded unit-prefix v0.5.1
Downloaded uuid-simd v0.8.0
Downloaded unicode-display-width v0.3.0
Downloaded utf8parse v0.2.1
Downloaded thiserror v1.0.69
Downloaded zerofrom v0.1.6
Downloaded radicle-surf v0.26.0
Downloaded zerofrom-derive v0.1.6
Downloaded utf16_iter v1.0.5
Downloaded toml v0.9.5
Downloaded vsimd v0.8.0
Downloaded yansi v0.5.1
Downloaded writeable v0.5.5
Downloaded unicode-width v0.1.11
Downloaded parking_lot v0.12.5
Downloaded tracing-log v0.2.0
Downloaded portable-atomic v1.11.0
Downloaded uuid v1.16.0
Downloaded ryu v1.0.17
Downloaded typeid v1.0.3
Downloaded tree-sitter-html v0.23.2
Downloaded signals_receipts v0.2.0
Downloaded yoke v0.7.5
Downloaded walkdir v2.5.0
Downloaded zerovec-derive v0.10.3
Downloaded zeroize v1.7.0
Downloaded chacha20poly1305 v0.10.1
Downloaded arc-swap v1.7.1
Downloaded typenum v1.17.0
Downloaded value-bag v1.11.1
Downloaded sharded-slab v0.1.7
Downloaded tracing-core v0.1.34
Downloaded fancy-regex v0.14.0
Downloaded unicode-normalization v0.1.23
Downloaded prodash v30.0.1
Downloaded memchr v2.7.2
Downloaded url v2.5.4
Downloaded tree-sitter-python v0.23.4
Downloaded tracing-subscriber v0.3.19
Downloaded zerocopy v0.7.35
Downloaded unicode-segmentation v1.11.0
Downloaded zerovec v0.10.4
Downloaded unicode-width v0.2.1
Downloaded zlib-rs v0.5.2
Downloaded winnow v0.7.13
Downloaded tree-sitter-md v0.3.2
Downloaded regex v1.11.1
Downloaded tree-sitter-rust v0.23.2
Downloaded chrono v0.4.38
Downloaded bloomy v1.2.0
Downloaded syn v2.0.106
Downloaded bstr v1.12.0
Downloaded tree-sitter-bash v0.23.3
Downloaded rustix v0.38.34
Downloaded tree-sitter-c v0.23.2
Downloaded regex-syntax v0.8.5
Downloaded tree-sitter-ruby v0.23.1
Downloaded rustix v1.0.7
Downloaded jiff v0.2.15
Downloaded regex-automata v0.4.9
Downloaded clap_builder v4.5.44
Downloaded aho-corasick v1.1.3
Downloaded libc v0.2.174
Downloaded vcpkg v0.2.15
Downloaded syn v1.0.109
Downloaded aes-gcm v0.10.3
Downloaded tree-sitter-go v0.23.4
Downloaded p521 v0.13.3
Downloaded sha1-checked v0.10.0
Downloaded emojis v0.6.4
Downloaded aes v0.8.4
Downloaded tree-sitter-typescript v0.23.2
Downloaded tokio v1.47.1
Downloaded num-bigint v0.4.6
Downloaded mio v0.8.11
Downloaded cyphernet v0.5.2
Downloaded regex-syntax v0.6.29
Downloaded crossbeam-channel v0.5.15
Downloaded base64 v0.21.7
Downloaded tree-sitter v0.24.4
Downloaded tracing v0.1.41
Downloaded sha3 v0.10.8
Downloaded object v0.36.7
Downloaded cc v1.2.2
Downloaded derive_more-impl v2.0.1
Downloaded der v0.7.9
Downloaded backtrace v0.3.75
Downloaded proc-macro2 v1.0.101
Downloaded p384 v0.13.0
Downloaded base64 v0.22.1
Downloaded tree-sitter-css v0.23.1
Downloaded derive_more v2.0.1
Downloaded crypto-bigint v0.5.5
Downloaded bytes v1.10.1
Downloaded tinyvec v1.6.0
Downloaded icu_properties_data v1.5.1
Downloaded elliptic-curve v0.13.8
Downloaded clap v4.5.44
Downloaded proptest v1.9.0
Downloaded tree-sitter-highlight v0.24.4
Downloaded linux-raw-sys v0.4.13
Downloaded serde_json v1.0.140
Downloaded clap_complete v4.5.60
Downloaded ahash v0.8.11
Downloaded ssh-key v0.6.6
Downloaded toml_writer v1.0.2
Downloaded streaming-iterator v0.1.9
Downloaded num-integer v0.1.46
Downloaded wait-timeout v0.2.1
Downloaded signal-hook-registry v1.4.5
Downloaded unicode-ident v1.0.12
Downloaded unarray v0.1.4
Downloaded tempfile v3.23.0
Downloaded sec1 v0.7.3
Downloaded crossterm v0.25.0
Downloaded tar v0.4.40
Downloaded yoke-derive v0.7.5
Downloaded xattr v1.3.1
Downloaded rusty-fork v0.3.1
Downloaded convert_case v0.7.1
Downloaded write16 v1.0.0
Downloaded version_check v0.9.4
Downloaded value-bag-sval2 v1.11.1
Downloaded value-bag-serde1 v1.11.1
Downloaded diff v0.1.13
Downloaded clap_derive v4.5.41
Downloaded bitflags v2.9.1
Downloaded crossbeam-utils v0.8.19
Downloaded crc32fast v1.5.0
Downloaded const-oid v0.9.6
Downloaded ascii v1.1.0
Downloaded utf8_iter v1.0.4
Downloaded tree-sitter-toml-ng v0.6.0
Downloaded socket2 v0.5.7
Downloaded amplify_derive v4.0.0
Downloaded universal-hash v0.5.1
Downloaded timeago v0.4.2
Downloaded regex-automata v0.1.10
Downloaded strsim v0.11.1
Downloaded rfc6979 v0.4.0
Downloaded tinystr v0.7.6
Downloaded tree-sitter-json v0.24.8
Downloaded num-complex v0.4.6
Downloaded thiserror-impl v1.0.69
Downloaded thiserror v2.0.17
Downloaded systemd-journal-logger v2.2.2
Downloaded ssh-encoding v0.2.0
Downloaded snapbox-macros v0.3.8
Downloaded signature v1.6.4
Downloaded serde_derive v1.0.219
Downloaded schemars v1.0.4
Downloaded rand v0.9.2
Downloaded addr2line v0.24.2
Downloaded smallvec v1.15.1
Downloaded signal-hook v0.3.18
Downloaded serde v1.0.219
Downloaded scrypt v0.11.0
Downloaded anyhow v1.0.82
Downloaded data-encoding v2.5.0
Downloaded base64ct v1.6.0
Downloaded anstyle v1.0.11
Downloaded sval_serde v2.14.1
Downloaded console v0.16.0
Downloaded amplify v4.6.0
Downloaded sval_nested v2.14.1
Downloaded sval_buffer v2.14.1
Downloaded sval v2.14.1
Downloaded structured-logger v1.0.4
Downloaded idna v1.0.3
Downloaded erased-serde v0.4.6
Downloaded ecdsa v0.16.9
Downloaded colored v2.1.0
Downloaded rand v0.8.5
Downloaded pretty_assertions v1.4.0
Downloaded num-bigint-dig v0.8.4
Downloaded either v1.11.0
Downloaded displaydoc v0.2.5
Downloaded cypheraddr v0.4.0
Downloaded aead v0.5.2
Downloaded sval_json v2.14.1
Downloaded sval_fmt v2.14.1
Downloaded subtle v2.5.0
Downloaded spki v0.7.3
Downloaded rsa v0.9.6
Downloaded env_logger v0.11.8
Downloaded ed25519 v1.5.3
Downloaded ctr v0.9.2
Downloaded cipher v0.4.4
Downloaded ssh-cipher v0.2.0
Downloaded libm v0.2.8
Downloaded chacha20 v0.9.1
Downloaded sqlite3-sys v0.15.2
Downloaded jsonschema v0.30.0
Downloaded itertools v0.14.0
Downloaded escargot v0.5.10
Downloaded email_address v0.2.9
Downloaded anstream v0.6.13
Downloaded shlex v1.3.0
Downloaded shell-words v1.1.0
Downloaded sha2 v0.10.8
Downloaded serde_derive_internals v0.29.1
Downloaded bit-set v0.8.0
Downloaded signature v2.2.0
Downloaded serde-untagged v0.1.7
Downloaded mio v1.0.4
Downloaded ec25519 v0.1.0
Downloaded digest v0.10.7
Downloaded signal-hook-mio v0.2.4
Downloaded sem_safe v0.2.0
Downloaded gix-pack v0.60.0
Downloaded amplify_num v0.5.2
Downloaded radicle-git-ext v0.11.0
Downloaded pkcs1 v0.7.5
Downloaded num-cmp v0.1.0
Downloaded icu_collections v1.5.0
Downloaded hashbrown v0.14.3
Downloaded serde_spanned v1.0.0
Downloaded serde_fmt v1.0.3
Downloaded schemars_derive v1.0.4
Downloaded rustc-demangle v0.1.26
Downloaded referencing v0.30.0
Downloaded poly1305 v0.8.0
Downloaded num-iter v0.1.45
Downloaded num v0.4.3
Downloaded nonempty v0.9.0
Downloaded newline-converter v0.3.0
Downloaded hashbrown v0.15.5
Downloaded rand_xorshift v0.4.0
Downloaded primeorder v0.13.6
Downloaded ppv-lite86 v0.2.17
Downloaded noise-framework v0.4.0
Downloaded byteorder v1.5.0
Downloaded salsa20 v0.10.2
Downloaded indexmap v2.2.6
Downloaded gix-ref v0.53.1
Downloaded cbc v0.1.2
Downloaded rand_core v0.6.4
Downloaded rand_chacha v0.9.0
Downloaded radicle-std-ext v0.2.0
Downloaded quote v1.0.41
Downloaded proc-macro-error2 v2.0.1
Downloaded polyval v0.6.2
Downloaded pkcs8 v0.10.2
Downloaded pin-project-lite v0.2.16
Downloaded p256 v0.13.2
Downloaded miniz_oxide v0.8.8
Downloaded indicatif v0.18.0
Downloaded icu_properties v1.5.1
Downloaded data-encoding-macro-internal v0.1.12
Downloaded pkg-config v0.3.30
Downloaded num-traits v0.2.19
Downloaded rand_chacha v0.3.1
Downloaded quick-error v1.2.3
Downloaded phf_shared v0.11.3
Downloaded phf v0.11.3
Downloaded heapless v0.8.0
Downloaded gix-transport v0.48.0
Downloaded gix-object v0.50.2
Downloaded errno v0.3.13
Downloaded env_filter v0.1.3
Downloaded once_cell v1.21.3
Downloaded base16ct v0.2.0
Downloaded proc-macro-error-attr2 v2.0.0
Downloaded percent-encoding v2.3.1
Downloaded inquire v0.7.5
Downloaded icu_locid v1.5.0
Downloaded gix-protocol v0.51.0
Downloaded gix-odb v0.70.0
Downloaded getrandom v0.2.15
Downloaded adler2 v2.0.0
Downloaded paste v1.0.15
Downloaded overload v0.1.1
Downloaded os_info v3.12.0
Downloaded num-rational v0.4.2
Downloaded libz-rs-sys v0.5.2
Downloaded faster-hex v0.10.0
Downloaded dunce v1.0.5
Downloaded crypto-common v0.1.6
Downloaded icu_normalizer v1.5.0
Downloaded gix-credentials v0.30.0
Downloaded fraction v0.15.3
Downloaded fastrand v2.3.0
Downloaded autocfg v1.2.0
Downloaded jobserver v0.1.31
Downloaded icu_locid_transform v1.5.0
Downloaded iana-time-zone v0.1.60
Downloaded gix-url v0.32.0
Downloaded gix-revision v0.35.0
Downloaded gix-prompt v0.11.1
Downloaded generic-array v0.14.7
Downloaded maybe-async v0.2.10
Downloaded idna_adapter v1.2.0
Downloaded data-encoding-macro v0.1.14
Downloaded colorchoice v1.0.0
Downloaded opaque-debug v0.3.1
Downloaded normalize-line-endings v0.3.0
Downloaded multibase v0.9.1
Downloaded lock_api v0.4.14
Downloaded cyphergraphy v0.3.0
Downloaded clap_lex v0.7.5
Downloaded base-x v0.2.11
Downloaded form_urlencoded v1.2.1
Downloaded fast-glob v0.3.3
Downloaded lazy_static v1.5.0
Downloaded human-panic v2.0.3
Downloaded fxhash v0.2.1
Downloaded document-features v0.2.11
Downloaded block-padding v0.3.3
Downloaded gix-lock v18.0.0
Downloaded gix-hashtable v0.9.0
Downloaded git-ref-format-core v0.6.0
Downloaded itoa v1.0.11
Downloaded inout v0.1.3
Downloaded gix-trace v0.1.13
Downloaded gix-refspec v0.31.0
Downloaded ghash v0.5.1
Downloaded anstyle-parse v0.2.3
Downloaded gix-traverse v0.47.0
Downloaded gix-diff v0.53.0
Downloaded git2 v0.19.0
Downloaded git-ref-format-macro v0.6.0
Downloaded equivalent v1.0.1
Downloaded bytecount v0.6.8
Downloaded litrs v0.4.1
Downloaded heck v0.5.0
Downloaded gix-validate v0.10.0
Downloaded gix-tempfile v18.0.0
Downloaded gix-sec v0.12.0
Downloaded gix-quote v0.6.0
Downloaded gix-packetline v0.19.1
Downloaded gix-date v0.10.5
Downloaded gix-chunk v0.4.11
Downloaded gix-actor v0.35.4
Downloaded fnv v1.0.7
Downloaded icu_provider v1.5.0
Downloaded icu_normalizer_data v1.5.1
Downloaded hmac v0.12.1
Downloaded group v0.13.0
Downloaded gix-hash v0.19.0
Downloaded getrandom v0.3.3
Downloaded cfg-if v1.0.0
Downloaded block-buffer v0.10.4
Downloaded icu_provider_macros v1.5.0
Downloaded icu_locid_transform_data v1.5.1
Downloaded home v0.5.9
Downloaded gix-utils v0.3.0
Downloaded gix-path v0.10.20
Downloaded gix-features v0.43.1
Downloaded gix-config-value v0.15.1
Downloaded gix-commitgraph v0.29.0
Downloaded gix-command v0.6.2
Downloaded ct-codecs v1.1.1
Downloaded crossterm v0.29.0
Downloaded cpufeatures v0.2.12
Downloaded borrow-or-share v0.2.2
Downloaded dyn-clone v1.0.17
Downloaded bitflags v1.3.2
Downloaded gimli v0.31.1
Downloaded bcrypt-pbkdf v0.10.0
Downloaded anstyle-query v1.0.2
Downloaded amplify_syn v2.0.1
Downloaded ff v0.13.0
Downloaded blowfish v0.9.1
Downloaded libgit2-sys v0.17.0+1.8.1
Downloaded linux-raw-sys v0.9.4
Downloaded sqlite3-src v0.5.1
Downloaded libz-sys v1.1.16
Compiling libc v0.2.174
Compiling proc-macro2 v1.0.101
Compiling quote v1.0.41
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
Checking getrandom v0.2.15
Compiling syn v2.0.106
Compiling jobserver v0.1.31
Compiling typenum v1.17.0
Compiling generic-array v0.14.7
Compiling cc v1.2.2
Checking rand_core v0.6.4
Compiling serde v1.0.219
Checking regex-syntax v0.8.5
Checking crypto-common v0.1.6
Checking aho-corasick v1.1.3
Checking smallvec v1.15.1
Compiling thiserror v2.0.17
Checking subtle v2.5.0
Checking stable_deref_trait v1.2.0
Checking once_cell v1.21.3
Checking fastrand v2.3.0
Checking cpufeatures v0.2.12
Compiling parking_lot_core v0.9.12
Checking scopeguard v1.2.0
Checking lock_api v0.4.14
Checking block-buffer v0.10.4
Checking parking_lot v0.12.5
Checking regex-automata v0.4.9
Checking digest v0.10.7
Compiling crc32fast v1.5.0
Checking tinyvec_macros v0.1.1
Checking byteorder v1.5.0
Checking bitflags v2.9.1
Checking tinyvec v1.6.0
Compiling typeid v1.0.3
Checking gix-trace v0.1.13
Checking home v0.5.9
Checking zlib-rs v0.5.2
Checking unicode-normalization v0.1.23
Checking gix-utils v0.3.0
Compiling synstructure v0.13.1
Checking libz-rs-sys v0.5.2
Checking bstr v1.12.0
Checking same-file v1.0.6
Checking walkdir v2.5.0
Checking flate2 v1.1.1
Checking prodash v30.0.1
Checking itoa v1.0.11
Compiling getrandom v0.3.3
Compiling heapless v0.8.0
Checking hash32 v0.3.1
Compiling serde_derive v1.0.219
Compiling thiserror-impl v2.0.17
Compiling zerofrom-derive v0.1.6
Compiling yoke-derive v0.7.5
Compiling zerovec-derive v0.10.3
Checking gix-validate v0.10.0
Checking zerofrom v0.1.6
Checking gix-path v0.10.20
Checking yoke v0.7.5
Checking gix-features v0.43.1
Compiling displaydoc v0.2.5
Checking zeroize v1.7.0
Checking zerovec v0.10.4
Compiling icu_locid_transform_data v1.5.1
Checking writeable v0.5.5
Compiling rustix v1.0.7
Checking litemap v0.7.5
Checking tinystr v0.7.6
Compiling pkg-config v0.3.30
Checking icu_locid v1.5.0
Checking faster-hex v0.10.0
Compiling icu_provider_macros v1.5.0
Checking linux-raw-sys v0.9.4
Compiling icu_properties_data v1.5.1
Checking icu_provider v1.5.0
Checking sha1 v0.10.6
Checking block-padding v0.3.3
Compiling icu_normalizer_data v1.5.1
Checking inout v0.1.3
Checking sha1-checked v0.10.0
Checking icu_locid_transform v1.5.0
Checking icu_collections v1.5.0
Compiling syn v1.0.109
Checking icu_properties v1.5.1
Checking gix-hash v0.19.0
Checking cipher v0.4.4
Checking utf16_iter v1.0.5
Checking erased-serde v0.4.6
Checking serde_fmt v1.0.3
Checking utf8_iter v1.0.4
Checking write16 v1.0.0
Checking value-bag-serde1 v1.11.1
Checking value-bag v1.11.1
Checking log v0.4.27
Checking percent-encoding v2.3.1
Checking icu_normalizer v1.5.0
Compiling thiserror v1.0.69
Checking idna_adapter v1.2.0
Compiling thiserror-impl v1.0.69
Checking idna v1.0.3
Checking form_urlencoded v1.2.1
Checking sha2 v0.10.8
Compiling vcpkg v0.2.15
Checking url v2.5.4
Checking tempfile v3.23.0
Checking universal-hash v0.5.1
Checking hashbrown v0.14.3
Compiling libz-sys v1.1.16
Compiling serde_json v1.0.140
Checking equivalent v1.0.1
Checking opaque-debug v0.3.1
Checking ryu v1.0.17
Compiling autocfg v1.2.0
Compiling ref-cast v1.0.24
Checking indexmap v2.2.6
Compiling amplify_syn v2.0.1
Compiling num-traits v0.2.19
Compiling libgit2-sys v0.17.0+1.8.1
Compiling ref-cast-impl v1.0.24
Checking signature v1.6.4
Checking ed25519 v1.5.3
Checking aead v0.5.2
Checking ct-codecs v1.1.1
Checking ascii v1.1.0
Checking dyn-clone v1.0.17
Compiling amplify_derive v4.0.0
Checking amplify_num v0.5.2
Checking ec25519 v0.1.0
Checking git-ref-format-core v0.6.0
Checking poly1305 v0.8.0
Checking chacha20 v0.9.1
Checking polyval v0.6.2
Compiling sqlite3-src v0.5.1
Compiling serde_derive_internals v0.29.1
Checking hmac v0.12.1
Checking keccak v0.1.5
Checking amplify v4.6.0
Checking base64ct v1.6.0
Checking pem-rfc7468 v0.7.0
Checking cyphergraphy v0.3.0
Checking sha3 v0.10.8
Checking pbkdf2 v0.12.2
Checking ghash v0.5.1
Compiling schemars_derive v1.0.4
Checking ctr v0.9.2
Checking aes v0.8.4
Checking rand v0.8.5
Checking base32 v0.4.0
Compiling data-encoding v2.5.0
Compiling data-encoding-macro-internal v0.1.12
Checking schemars v1.0.4
Checking cypheraddr v0.4.0
Checking qcheck v1.0.0
Checking aes-gcm v0.10.3
Checking ssh-encoding v0.2.0
Checking chacha20poly1305 v0.10.1
Checking cbc v0.1.2
Checking blowfish v0.9.1
Checking bcrypt-pbkdf v0.10.0
Checking data-encoding-macro v0.1.14
Checking ssh-cipher v0.2.0
Checking noise-framework v0.4.0
Checking socks5-client v0.4.1
Compiling crossbeam-utils v0.8.19
Checking base-x v0.2.11
Checking signature v2.2.0
Checking ssh-key v0.6.6
Checking multibase v0.9.1
Checking cyphernet v0.5.2
Checking radicle-ssh v0.10.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-ssh)
Checking jiff v0.2.15
Checking crossbeam-channel v0.5.15
Checking lazy_static v1.5.0
Checking nonempty v0.9.0
Checking siphasher v1.0.1
Checking anstyle-query v1.0.2
Checking radicle-git-metadata v0.1.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-git-metadata)
Checking radicle-dag v0.10.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-dag)
Checking winnow v0.7.13
Checking utf8parse v0.2.1
Checking hashbrown v0.15.5
Checking gix-date v0.10.5
Checking gix-actor v0.35.4
Checking anstyle-parse v0.2.3
Checking gix-hashtable v0.9.0
Checking radicle-git-ref-format v0.1.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-git-ref-format)
Checking base64 v0.21.7
Checking anstyle v1.0.11
Checking colorchoice v1.0.0
Checking iana-time-zone v0.1.60
Checking anstream v0.6.13
Checking chrono v0.4.38
Checking gix-object v0.50.2
Checking colored v2.1.0
Checking radicle-localtime v0.1.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-localtime)
Checking serde-untagged v0.1.7
Checking bytesize v2.0.1
Checking memmap2 v0.9.8
Checking dunce v1.0.5
Checking tree-sitter-language v0.1.2
Checking fast-glob v0.3.3
Checking gix-chunk v0.4.11
Checking gix-fs v0.16.1
Checking gix-commitgraph v0.29.0
Checking gix-tempfile v18.0.0
Checking gix-revwalk v0.21.0
Checking mio v1.0.4
Checking gix-quote v0.6.0
Checking sem_safe v0.2.0
Checking errno v0.3.13
Checking shell-words v1.1.0
Checking either v1.11.0
Checking gix-command v0.6.2
Checking signals_receipts v0.2.0
Compiling signal-hook v0.3.18
Compiling object v0.36.7
Checking gix-lock v18.0.0
Checking gix-url v0.32.0
Checking gix-config-value v0.15.1
Checking gix-sec v0.12.0
Checking signal-hook-registry v1.4.5
Checking gimli v0.31.1
Checking adler2 v2.0.0
Compiling rustix v0.38.34
Checking miniz_oxide v0.8.8
Checking gix-prompt v0.11.1
Checking addr2line v0.24.2
Checking radicle-signals v0.11.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-signals)
Checking gix-revision v0.35.0
Checking gix-traverse v0.47.0
Checking gix-diff v0.53.0
Checking mio v0.8.11
Checking gix-packetline v0.19.1
Compiling tree-sitter v0.24.4
Checking rustc-demangle v0.1.26
Compiling linux-raw-sys v0.4.13
Compiling anyhow v1.0.82
Compiling unicode-segmentation v1.11.0
Compiling convert_case v0.7.1
Checking backtrace v0.3.75
Checking gix-transport v0.48.0
Checking signal-hook-mio v0.2.4
Checking gix-pack v0.60.0
Checking gix-refspec v0.31.0
Checking gix-credentials v0.30.0
Checking gix-ref v0.53.1
Checking gix-shallow v0.5.0
Checking gix-negotiate v0.21.0
Compiling maybe-async v0.2.10
Checking regex v1.11.1
Compiling proc-macro-error-attr2 v2.0.0
Compiling portable-atomic v1.11.0
Checking arc-swap v1.7.1
Checking gix-odb v0.70.0
Compiling proc-macro-error2 v2.0.1
Checking gix-protocol v0.51.0
Compiling xattr v1.3.1
Compiling derive_more-impl v2.0.1
Compiling filetime v0.2.23
Checking uuid v1.16.0
Checking bytes v1.10.1
Checking unicode-width v0.2.1
Checking bitflags v1.3.2
Compiling litrs v0.4.1
Checking crossterm v0.25.0
Compiling document-features v0.2.11
Checking console v0.16.0
Checking derive_more v2.0.1
Compiling tar v0.4.40
Compiling git-ref-format-macro v0.6.0
Checking newline-converter v0.3.0
Checking sqlite3-sys v0.15.2
Checking sqlite v0.32.0
Checking radicle-crypto v0.14.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-crypto)
Checking snapbox-macros v0.3.8
Checking salsa20 v0.10.2
Checking fxhash v0.2.1
Checking siphasher v0.3.11
Checking similar v2.5.0
Compiling heck v0.5.0
Checking strsim v0.11.1
Checking clap_lex v0.7.5
Checking normalize-line-endings v0.3.0
Checking unit-prefix v0.5.1
Checking unicode-width v0.1.11
Checking streaming-iterator v0.1.9
Checking indicatif v0.18.0
Checking inquire v0.7.5
Checking snapbox v0.4.17
Checking clap_builder v4.5.44
Compiling clap_derive v4.5.41
Checking bloomy v1.2.0
Checking scrypt v0.11.0
Compiling radicle-surf v0.26.0
Checking git-ref-format v0.6.0
Checking crossterm v0.29.0
Checking unicode-display-width v0.3.0
Checking systemd-journal-logger v2.2.2
Checking serde_spanned v1.0.0
Checking toml_datetime v0.7.0
Compiling tree-sitter-bash v0.23.3
Compiling tree-sitter-md v0.3.2
Compiling tree-sitter-json v0.24.8
Compiling tree-sitter-typescript v0.23.2
Compiling tree-sitter-ruby v0.23.1
Compiling tree-sitter-toml-ng v0.6.0
Compiling tree-sitter-css v0.23.1
Compiling tree-sitter-rust v0.23.2
Compiling tree-sitter-python v0.23.4
Compiling tree-sitter-go v0.23.4
Compiling tree-sitter-c v0.23.2
Compiling tree-sitter-html v0.23.2
Checking pin-project-lite v0.2.16
Checking toml_writer v1.0.2
Checking radicle-std-ext v0.2.0
Checking toml v0.9.5
Checking tokio v1.47.1
Checking clap v4.5.44
Checking os_info v3.12.0
Checking yansi v0.5.1
Compiling radicle-cli v0.17.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-cli)
Compiling radicle-node v0.16.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-node)
Checking diff v0.1.13
Checking pretty_assertions v1.4.0
Checking human-panic v2.0.3
Checking structured-logger v1.0.4
Checking clap_complete v4.5.60
Checking radicle-systemd v0.11.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-systemd)
Checking tree-sitter-highlight v0.24.4
Checking itertools v0.14.0
Checking num-integer v0.1.46
Compiling qcheck-macros v1.0.0
Checking socket2 v0.5.7
Checking lexopt v0.3.0
Compiling escargot v0.5.10
Checking timeago v0.4.2
Checking bit-vec v0.8.0
Checking bit-set v0.8.0
Checking num-bigint v0.4.6
Checking rand_core v0.9.3
Compiling ahash v0.8.11
Checking num-iter v0.1.45
Checking num-complex v0.4.6
Checking env_filter v0.1.3
Checking zerocopy v0.7.35
Checking borrow-or-share v0.2.2
Checking fluent-uri v0.3.2
Checking num-rational v0.4.2
Checking env_logger v0.11.8
Checking phf_shared v0.11.3
Checking num v0.4.3
Compiling test-log-macros v0.2.18
Checking wait-timeout v0.2.1
Compiling paste v1.0.15
Checking quick-error v1.2.3
Checking ppv-lite86 v0.2.17
Checking fnv v1.0.7
Checking vsimd v0.8.0
Checking outref v0.5.2
Compiling radicle-remote-helper v0.14.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-remote-helper)
Checking rand_chacha v0.9.0
Checking uuid-simd v0.8.0
Checking rusty-fork v0.3.1
Checking test-log v0.2.18
Checking phf v0.11.3
Checking fraction v0.15.3
Checking referencing v0.30.0
Checking rand v0.9.2
Checking rand_xorshift v0.4.0
Checking fancy-regex v0.14.0
Checking email_address v0.2.9
Checking bytecount v0.6.8
Checking unarray v0.1.4
Checking base64 v0.22.1
Checking num-cmp v0.1.0
Checking proptest v1.9.0
Checking emojis v0.6.4
Checking jsonschema v0.30.0
Checking git2 v0.19.0
Checking radicle-oid v0.1.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-oid)
Checking radicle-git-ext v0.11.0
Checking radicle-term v0.16.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-term)
Checking radicle-cob v0.17.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-cob)
Checking radicle-core v0.1.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-core)
Checking radicle v0.20.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle)
Checking radicle-fetch v0.16.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-fetch)
Checking radicle-cli-test v0.13.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-cli-test)
Checking radicle-schemars v0.6.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-schemars)
Checking radicle-protocol v0.4.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-protocol)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 49.87s
+ cargo build --all-targets --workspace
Compiling libc v0.2.174
Compiling cfg-if v1.0.0
Compiling shlex v1.3.0
Compiling memchr v2.7.2
Compiling typenum v1.17.0
Compiling serde v1.0.219
Compiling jobserver v0.1.31
Compiling cc v1.2.2
Compiling getrandom v0.2.15
Compiling generic-array v0.14.7
Compiling rand_core v0.6.4
Compiling regex-syntax v0.8.5
Compiling crypto-common v0.1.6
Compiling aho-corasick v1.1.3
Compiling smallvec v1.15.1
Compiling thiserror v2.0.17
Compiling subtle v2.5.0
Compiling once_cell v1.21.3
Compiling stable_deref_trait v1.2.0
Compiling fastrand v2.3.0
Compiling cpufeatures v0.2.12
Compiling scopeguard v1.2.0
Compiling lock_api v0.4.14
Compiling parking_lot_core v0.9.12
Compiling regex-automata v0.4.9
Compiling block-buffer v0.10.4
Compiling bitflags v2.9.1
Compiling digest v0.10.7
Compiling parking_lot v0.12.5
Compiling tinyvec_macros v0.1.1
Compiling byteorder v1.5.0
Compiling tinyvec v1.6.0
Compiling crc32fast v1.5.0
Compiling gix-trace v0.1.13
Compiling typeid v1.0.3
Compiling home v0.5.9
Compiling erased-serde v0.4.6
Compiling serde_fmt v1.0.3
Compiling zlib-rs v0.5.2
Compiling unicode-normalization v0.1.23
Compiling value-bag-serde1 v1.11.1
Compiling same-file v1.0.6
Compiling walkdir v2.5.0
Compiling gix-utils v0.3.0
Compiling zerofrom v0.1.6
Compiling value-bag v1.11.1
Compiling prodash v30.0.1
Compiling bstr v1.12.0
Compiling itoa v1.0.11
Compiling log v0.4.27
Compiling yoke v0.7.5
Compiling gix-validate v0.10.0
Compiling gix-path v0.10.20
Compiling zerovec v0.10.4
Compiling hash32 v0.3.1
Compiling zeroize v1.7.0
Compiling libz-rs-sys v0.5.2
Compiling flate2 v1.1.1
Compiling gix-features v0.43.1
Compiling tinystr v0.7.6
Compiling heapless v0.8.0
Compiling getrandom v0.3.3
Compiling writeable v0.5.5
Compiling litemap v0.7.5
Compiling faster-hex v0.10.0
Compiling linux-raw-sys v0.9.4
Compiling icu_locid v1.5.0
Compiling icu_locid_transform_data v1.5.1
Compiling sha1 v0.10.6
Compiling icu_provider v1.5.0
Compiling block-padding v0.3.3
Compiling inout v0.1.3
Compiling sha1-checked v0.10.0
Compiling rustix v1.0.7
Compiling icu_locid_transform v1.5.0
Compiling icu_properties_data v1.5.1
Compiling icu_collections v1.5.0
Compiling gix-hash v0.19.0
Compiling icu_properties v1.5.1
Compiling cipher v0.4.4
Compiling icu_normalizer_data v1.5.1
Compiling utf16_iter v1.0.5
Compiling utf8_iter v1.0.4
Compiling write16 v1.0.0
Compiling percent-encoding v2.3.1
Compiling sha2 v0.10.8
Compiling form_urlencoded v1.2.1
Compiling libz-sys v1.1.16
Compiling thiserror v1.0.69
Compiling universal-hash v0.5.1
Compiling hashbrown v0.14.3
Compiling opaque-debug v0.3.1
Compiling equivalent v1.0.1
Compiling ryu v1.0.17
Compiling indexmap v2.2.6
Compiling tempfile v3.23.0
Compiling icu_normalizer v1.5.0
Compiling serde_json v1.0.140
Compiling libgit2-sys v0.17.0+1.8.1
Compiling signature v1.6.4
Compiling idna_adapter v1.2.0
Compiling idna v1.0.3
Compiling url v2.5.4
Compiling ed25519 v1.5.3
Compiling ref-cast v1.0.24
Compiling aead v0.5.2
Compiling ct-codecs v1.1.1
Compiling ascii v1.1.0
Compiling amplify_num v0.5.2
Compiling dyn-clone v1.0.17
Compiling ec25519 v0.1.0
Compiling num-traits v0.2.19
Compiling poly1305 v0.8.0
Compiling amplify v4.6.0
Compiling git-ref-format-core v0.6.0
Compiling chacha20 v0.9.1
Compiling cyphergraphy v0.3.0
Compiling polyval v0.6.2
Compiling sqlite3-src v0.5.1
Compiling hmac v0.12.1
Compiling base64ct v1.6.0
Compiling keccak v0.1.5
Compiling pbkdf2 v0.12.2
Compiling pem-rfc7468 v0.7.0
Compiling sha3 v0.10.8
Compiling ghash v0.5.1
Compiling aes v0.8.4
Compiling ctr v0.9.2
Compiling rand v0.8.5
Compiling base32 v0.4.0
Compiling cypheraddr v0.4.0
Compiling qcheck v1.0.0
Compiling aes-gcm v0.10.3
Compiling schemars v1.0.4
Compiling ssh-encoding v0.2.0
Compiling chacha20poly1305 v0.10.1
Compiling cbc v0.1.2
Compiling blowfish v0.9.1
Compiling data-encoding v2.5.0
Compiling bcrypt-pbkdf v0.10.0
Compiling ssh-cipher v0.2.0
Compiling data-encoding-macro v0.1.14
Compiling noise-framework v0.4.0
Compiling socks5-client v0.4.1
Compiling base-x v0.2.11
Compiling signature v2.2.0
Compiling multibase v0.9.1
Compiling ssh-key v0.6.6
Compiling cyphernet v0.5.2
Compiling radicle-ssh v0.10.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-ssh)
Compiling crossbeam-utils v0.8.19
Compiling crossbeam-channel v0.5.15
Compiling lazy_static v1.5.0
Compiling jiff v0.2.15
Compiling nonempty v0.9.0
Compiling anstyle-query v1.0.2
Compiling siphasher v1.0.1
Compiling radicle-dag v0.10.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-dag)
Compiling radicle-git-metadata v0.1.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-git-metadata)
Compiling winnow v0.7.13
Compiling hashbrown v0.15.5
Compiling utf8parse v0.2.1
Compiling anstyle-parse v0.2.3
Compiling gix-hashtable v0.9.0
Compiling radicle-git-ref-format v0.1.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-git-ref-format)
Compiling base64 v0.21.7
Compiling gix-date v0.10.5
Compiling gix-actor v0.35.4
Compiling iana-time-zone v0.1.60
Compiling anstyle v1.0.11
Compiling colorchoice v1.0.0
Compiling anstream v0.6.13
Compiling chrono v0.4.38
Compiling gix-object v0.50.2
Compiling colored v2.1.0
Compiling radicle-localtime v0.1.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-localtime)
Compiling serde-untagged v0.1.7
Compiling bytesize v2.0.1
Compiling memmap2 v0.9.8
Compiling fast-glob v0.3.3
Compiling tree-sitter-language v0.1.2
Compiling dunce v1.0.5
Compiling gix-chunk v0.4.11
Compiling adler2 v2.0.0
Compiling gix-commitgraph v0.29.0
Compiling gix-fs v0.16.1
Compiling gix-revwalk v0.21.0
Compiling gix-tempfile v18.0.0
Compiling gix-quote v0.6.0
Compiling mio v1.0.4
Compiling sem_safe v0.2.0
Compiling errno v0.3.13
Compiling either v1.11.0
Compiling shell-words v1.1.0
Compiling unicode-segmentation v1.11.0
Compiling gix-command v0.6.2
Compiling signals_receipts v0.2.0
Compiling gix-lock v18.0.0
Compiling gix-url v0.32.0
Compiling gix-config-value v0.15.1
Compiling gix-sec v0.12.0
Compiling signal-hook-registry v1.4.5
Compiling gimli v0.31.1
Compiling signal-hook v0.3.18
Compiling gix-prompt v0.11.1
Compiling radicle-signals v0.11.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-signals)
Compiling object v0.36.7
Compiling addr2line v0.24.2
Compiling gix-traverse v0.47.0
Compiling gix-revision v0.35.0
Compiling miniz_oxide v0.8.8
Compiling gix-diff v0.53.0
Compiling gix-packetline v0.19.1
Compiling mio v0.8.11
Compiling tree-sitter v0.24.4
Compiling rustc-demangle v0.1.26
Compiling sqlite3-sys v0.15.2
Compiling rustix v0.38.34
Compiling sqlite v0.32.0
Compiling radicle-crypto v0.14.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-crypto)
Compiling backtrace v0.3.75
Compiling signal-hook-mio v0.2.4
Compiling gix-transport v0.48.0
Compiling gix-pack v0.60.0
Compiling gix-refspec v0.31.0
Compiling gix-credentials v0.30.0
Compiling gix-shallow v0.5.0
Compiling gix-ref v0.53.1
Compiling convert_case v0.7.1
Compiling gix-negotiate v0.21.0
Compiling regex v1.11.1
Compiling arc-swap v1.7.1
Compiling gix-protocol v0.51.0
Compiling gix-odb v0.70.0
Compiling derive_more-impl v2.0.1
Compiling xattr v1.3.1
Compiling uuid v1.16.0
Compiling filetime v0.2.23
Compiling unicode-width v0.2.1
Compiling bytes v1.10.1
Compiling bitflags v1.3.2
Compiling console v0.16.0
Compiling crossterm v0.25.0
Compiling tar v0.4.40
Compiling git-ref-format-macro v0.6.0
Compiling derive_more v2.0.1
Compiling anyhow v1.0.82
Compiling portable-atomic v1.11.0
Compiling newline-converter v0.3.0
Compiling snapbox-macros v0.3.8
Compiling salsa20 v0.10.2
Compiling fxhash v0.2.1
Compiling similar v2.5.0
Compiling normalize-line-endings v0.3.0
Compiling unicode-width v0.1.11
Compiling siphasher v0.3.11
Compiling unit-prefix v0.5.1
Compiling streaming-iterator v0.1.9
Compiling strsim v0.11.1
Compiling clap_lex v0.7.5
Compiling clap_builder v4.5.44
Compiling snapbox v0.4.17
Compiling bloomy v1.2.0
Compiling indicatif v0.18.0
Compiling inquire v0.7.5
Compiling scrypt v0.11.0
Compiling radicle-surf v0.26.0
Compiling crossterm v0.29.0
Compiling git-ref-format v0.6.0
Compiling unicode-display-width v0.3.0
Compiling systemd-journal-logger v2.2.2
Compiling tree-sitter-html v0.23.2
Compiling tree-sitter-typescript v0.23.2
Compiling tree-sitter-go v0.23.4
Compiling tree-sitter-json v0.24.8
Compiling tree-sitter-toml-ng v0.6.0
Compiling tree-sitter-c v0.23.2
Compiling tree-sitter-ruby v0.23.1
Compiling tree-sitter-rust v0.23.2
Compiling tree-sitter-bash v0.23.3
Compiling tree-sitter-css v0.23.1
Compiling tree-sitter-python v0.23.4
Compiling tree-sitter-md v0.3.2
Compiling toml_datetime v0.7.0
Compiling serde_spanned v1.0.0
Compiling radicle-std-ext v0.2.0
Compiling toml_writer v1.0.2
Compiling pin-project-lite v0.2.16
Compiling tokio v1.47.1
Compiling toml v0.9.5
Compiling clap v4.5.44
Compiling os_info v3.12.0
Compiling yansi v0.5.1
Compiling radicle-node v0.16.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-node)
Compiling diff v0.1.13
Compiling radicle-cli v0.17.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-cli)
Compiling pretty_assertions v1.4.0
Compiling human-panic v2.0.3
Compiling clap_complete v4.5.60
Compiling structured-logger v1.0.4
Compiling radicle-systemd v0.11.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-systemd)
Compiling tree-sitter-highlight v0.24.4
Compiling itertools v0.14.0
Compiling num-integer v0.1.46
Compiling socket2 v0.5.7
Compiling lexopt v0.3.0
Compiling timeago v0.4.2
Compiling bit-vec v0.8.0
Compiling escargot v0.5.10
Compiling bit-set v0.8.0
Compiling num-bigint v0.4.6
Compiling rand_core v0.9.3
Compiling num-iter v0.1.45
Compiling num-complex v0.4.6
Compiling env_filter v0.1.3
Compiling num-rational v0.4.2
Compiling zerocopy v0.7.35
Compiling borrow-or-share v0.2.2
Compiling num v0.4.3
Compiling ahash v0.8.11
Compiling fluent-uri v0.3.2
Compiling env_logger v0.11.8
Compiling phf_shared v0.11.3
Compiling wait-timeout v0.2.1
Compiling fnv v1.0.7
Compiling outref v0.5.2
Compiling quick-error v1.2.3
Compiling ppv-lite86 v0.2.17
Compiling vsimd v0.8.0
Compiling radicle-remote-helper v0.14.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-remote-helper)
Compiling rand_chacha v0.9.0
Compiling uuid-simd v0.8.0
Compiling rusty-fork v0.3.1
Compiling test-log v0.2.18
Compiling phf v0.11.3
Compiling referencing v0.30.0
Compiling fraction v0.15.3
Compiling rand_xorshift v0.4.0
Compiling rand v0.9.2
Compiling fancy-regex v0.14.0
Compiling email_address v0.2.9
Compiling unarray v0.1.4
Compiling base64 v0.22.1
Compiling num-cmp v0.1.0
Compiling git2 v0.19.0
Compiling bytecount v0.6.8
Compiling proptest v1.9.0
Compiling jsonschema v0.30.0
Compiling emojis v0.6.4
Compiling radicle-oid v0.1.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-oid)
Compiling radicle-cob v0.17.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-cob)
Compiling radicle-core v0.1.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-core)
Compiling radicle-git-ext v0.11.0
Compiling radicle v0.20.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle)
Compiling radicle-term v0.16.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-term)
Compiling radicle-fetch v0.16.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-fetch)
Compiling radicle-protocol v0.4.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-protocol)
Compiling radicle-cli-test v0.13.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-cli-test)
Compiling radicle-schemars v0.6.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-schemars)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 07s
+ cargo doc --workspace --no-deps --all-features
Checking regex-automata v0.4.9
Compiling syn v1.0.109
Checking idna v1.0.3
Compiling num-traits v0.2.19
Checking radicle-ssh v0.10.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-ssh)
Checking url v2.5.4
Checking git2 v0.19.0
Checking proptest v1.9.0
Checking bstr v1.12.0
Checking gix-validate v0.10.0
Checking gix-path v0.10.20
Checking gix-features v0.43.1
Checking git-ref-format-core v0.6.0
Checking gix-hash v0.19.0
Compiling amplify_syn v2.0.1
Compiling data-encoding-macro-internal v0.1.12
Checking gix-date v0.10.5
Checking radicle-git-ref-format v0.1.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-git-ref-format)
Checking radicle-oid v0.1.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-oid)
Checking data-encoding-macro v0.1.14
Checking multibase v0.9.1
Checking gix-actor v0.35.4
Checking gix-hashtable v0.9.0
Checking radicle-dag v0.10.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-dag)
Checking radicle-git-metadata v0.1.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-git-metadata)
Checking chrono v0.4.38
Checking gix-object v0.50.2
Compiling amplify_derive v4.0.0
Checking gix-commitgraph v0.29.0
Checking radicle-localtime v0.1.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-localtime)
Checking gix-revwalk v0.21.0
Checking gix-fs v0.16.1
Checking gix-quote v0.6.0
Checking gix-tempfile v18.0.0
Checking gix-command v0.6.2
Checking gix-url v0.32.0
Checking gix-lock v18.0.0
Checking gix-config-value v0.15.1
Checking radicle-signals v0.11.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-signals)
Checking gix-revision v0.35.0
Checking gix-traverse v0.47.0
Checking gix-prompt v0.11.1
Checking gix-diff v0.53.0
Checking gix-packetline v0.19.1
Checking regex v1.11.1
Checking gix-pack v0.60.0
Checking gix-transport v0.48.0
Checking tree-sitter v0.24.4
Checking amplify v4.6.0
Checking gix-credentials v0.30.0
Checking gix-refspec v0.31.0
Checking cyphergraphy v0.3.0
Checking gix-ref v0.53.1
Checking gix-shallow v0.5.0
Checking cypheraddr v0.4.0
Checking noise-framework v0.4.0
Checking socks5-client v0.4.1
Checking git-ref-format v0.6.0
Checking gix-negotiate v0.21.0
Checking gix-odb v0.70.0
Checking cyphernet v0.5.2
Checking radicle-crypto v0.14.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-crypto)
Checking radicle-git-ext v0.11.0
Checking gix-protocol v0.51.0
Checking radicle-cob v0.17.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-cob)
Checking radicle-core v0.1.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-core)
Checking uuid v1.16.0
Compiling radicle-cli v0.17.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-cli)
Checking radicle-surf v0.26.0
Checking radicle v0.20.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle)
Checking tree-sitter-toml-ng v0.6.0
Checking radicle-term v0.16.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-term)
Checking human-panic v2.0.3
Checking tree-sitter-highlight v0.24.4
Checking radicle-systemd v0.11.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-systemd)
Documenting radicle-systemd v0.11.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-systemd)
Documenting radicle v0.20.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle)
Documenting radicle-cob v0.17.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-cob)
Documenting radicle-core v0.1.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-core)
Documenting radicle-crypto v0.14.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-crypto)
Documenting radicle-term v0.16.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-term)
Documenting radicle-signals v0.11.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-signals)
Documenting radicle-oid v0.1.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-oid)
Documenting radicle-git-ref-format v0.1.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-git-ref-format)
Documenting radicle-localtime v0.1.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-localtime)
Documenting radicle-ssh v0.10.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-ssh)
Documenting radicle-dag v0.10.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-dag)
Documenting radicle-git-metadata v0.1.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-git-metadata)
Checking radicle-fetch v0.16.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-fetch)
Documenting radicle-cli v0.17.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-cli)
Documenting radicle-cli-test v0.13.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-cli-test)
Checking radicle-protocol v0.4.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-protocol)
Documenting radicle-protocol v0.4.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-protocol)
Documenting radicle-node v0.16.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-node)
Documenting radicle-fetch v0.16.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-fetch)
Documenting radicle-schemars v0.6.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-schemars)
Documenting radicle-remote-helper v0.14.0 (/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-remote-helper)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 12.12s
Generated /c9ca2a0e-b231-4894-a036-abbde693ede1/w/target/doc/radicle/index.html and 20 other files
+ cargo test --workspace --no-fail-fast
Finished `test` profile [unoptimized + debuginfo] target(s) in 0.14s
Running unittests src/lib.rs (target/debug/deps/radicle-17353fb59e43dcb4)
running 236 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::tests::test_migrate_to ... ok
test cob::common::test::test_color ... ok
test cob::cache::tests::test_check_version ... ok
test cob::common::test::test_emojis ... ok
test cob::common::test::test_title ... ok
test cob::cache::migrations::_2::tests::test_migration_2 ... ok
test cob::identity::test::prop_json_eq_str ... 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_redact_revision ... ok
test cob::identity::test::test_identity_updates ... ok
test cob::identity::test::test_identity_reject_concurrent ... 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::identity::test::test_identity_updates_concurrent_outdated ... ok
test cob::issue::test::test_concurrency ... ok
test cob::issue::test::test_invalid_actions ... ok
test cob::issue::test::test_invalid_tx ... ok
test cob::issue::test::test_invalid_tx_reference ... ok
test cob::issue::test::test_invalid_cob ... ok
test cob::issue::test::test_issue_comment ... ok
test cob::issue::test::test_issue_all ... ok
test cob::issue::test::test_issue_comment_redact ... 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_assign ... ok
test cob::issue::test::test_issue_create_and_reassign ... ok
test cob::issue::test::test_issue_edit ... ok
test cob::issue::test::test_issue_create_and_unassign ... ok
test cob::issue::test::test_issue_edit_description ... ok
test cob::issue::test::test_issue_multilines ... ok
test cob::issue::test::test_issue_state_serde ... ok
test cob::issue::test::test_ordering ... ok
test cob::patch::actions::test::test_review_edit ... ok
test cob::issue::test::test_issue_label ... ok
test cob::issue::test::test_issue_react ... ok
test cob::patch::cache::tests::test_counts ... ok
test cob::patch::cache::tests::test_is_empty ... ok
test cob::patch::cache::tests::test_get ... ok
test cob::issue::test::test_issue_reply ... ok
test cob::patch::cache::tests::test_remove ... ok
test cob::patch::encoding::review::test::test_review_deserialize_summary_migration_null_summary ... ok
test cob::patch::encoding::review::test::test_review_deserialize_summary_migration_with_summary ... ok
test cob::patch::encoding::review::test::test_review_deserialize_summary_migration_without_summary ... ok
test cob::patch::encoding::review::test::test_review_deserialize_summary_v2 ... ok
test cob::patch::encoding::review::test::test_review_summary ... ok
test cob::patch::test::test_json ... ok
test cob::patch::test::test_json_serialization ... ok
test cob::patch::cache::tests::test_list_by_status ... ok
test cob::patch::cache::tests::test_find_by_revision ... ok
test cob::patch::cache::tests::test_list ... ok
test cob::patch::test::test_patch_create_and_get ... ok
test cob::patch::test::test_patch_discussion ... ok
test cob::patch::test::test_patch_merge ... ok
test cob::patch::test::test_patch_redact ... 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_review_edit ... ok
test cob::patch::test::test_patch_review_remove_summary ... 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_edit_comment ... ok
test cob::stream::tests::test_all_from ... ok
test cob::stream::tests::test_all_from_until ... ok
test cob::patch::test::test_patch_review_revision_redact ... ok
test cob::stream::tests::test_all_until ... ok
test cob::stream::tests::test_regression_from_until ... 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::stream::tests::test_from_until ... 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 git::canonical::quorum::test::merge_base_commutative ... ok
test git::canonical::quorum::test::test_merge_bases ... ok
test cob::thread::tests::test_timeline ... ok
test git::canonical::rules::tests::test_deserialization ... ok
test git::canonical::rules::tests::test_deserialize_extensions ... ok
test git::canonical::rules::tests::test_order ... ok
test git::canonical::rules::tests::test_roundtrip ... ok
test git::canonical::rules::tests::test_canonical ... ok
test git::canonical::rules::tests::test_rule_validate_success ... ok
test git::canonical::rules::tests::test_special_branches ... ok
test git::canonical::tests::test_commit_quorum_fork_of_a_fork ... ok
test git::canonical::tests::test_commit_quorum_forked_merge_commits ... ok
test git::canonical::tests::test_commit_quorum_groups ... ok
test git::canonical::tests::test_commit_quorum_linear ... ok
test git::canonical::tests::test_commit_quorum_merges ... ok
test git::canonical::tests::test_commit_quorum_single ... ok
test git::canonical::tests::test_commit_quorum_three_way_fork ... ok
test git::canonical::tests::test_commit_quorum_two_way_fork ... ok
test git::canonical::tests::test_quorum_different_types ... ok
test git::canonical::rules::tests::test_rule_validate_failures ... ok
test git::canonical::tests::test_tag_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 cob::patch::test::test_patch_update ... 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 identity::doc::test::test_max_delegates ... 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::doc::update::test::test_can_update_crefs ... ok
test identity::doc::update::test::test_cannot_include_default_branch_rule ... ok
test identity::doc::update::test::test_default_branch_rule_exists_after_verification ... 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::command::test::command_result ... ok
test node::config::test::partial ... 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 node::routing::test::test_prune ... 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::sync::announce::test::all_synced_nodes_are_preferred_seeds ... ok
test node::sync::announce::test::announcer_adapts_target_to_reach ... ok
test node::sync::announce::test::announcer_preferred_seeds_or_replica_factor ... ok
test node::sync::announce::test::announcer_reached_max_replication_target ... ok
test git::canonical::tests::test_quorum_properties ... ok
test node::sync::announce::test::announcer_reached_preferred_seeds ... ok
test node::sync::announce::test::announcer_reached_min_replication_target ... ok
test node::sync::announce::test::announcer_synced_with_unknown_node ... ok
test node::sync::announce::test::announcer_with_replication_factor_zero_and_preferred_seeds ... ok
test node::sync::announce::test::announcer_timed_out ... ok
test node::sync::announce::test::cannot_construct_announcer ... ok
test node::sync::announce::test::construct_node_appears_in_multiple_input_sets ... ok
test node::sync::announce::test::construct_only_preferred_seeds_provided ... ok
test node::sync::announce::test::invariant_progress_should_match_state ... ok
test node::sync::announce::test::local_node_in_preferred_seeds ... ok
test node::sync::announce::test::local_node_in_multiple_sets ... ok
test node::sync::announce::test::local_node_in_unsynced_set ... ok
test node::sync::announce::test::local_node_in_synced_set ... ok
test node::sync::announce::test::local_node_only_in_all_sets_results_in_no_seeds_error ... ok
test node::sync::announce::test::synced_with_local_node_is_ignored ... ok
test node::sync::announce::test::synced_with_same_node_multiple_times ... ok
test node::sync::announce::test::preferred_seeds_already_synced ... ok
test node::sync::announce::test::timed_out_after_reaching_success ... ok
test node::sync::fetch::test::all_nodes_are_candidates ... ok
test node::sync::fetch::test::all_nodes_are_fetchable ... ok
test node::sync::fetch::test::could_not_reach_target ... ok
test cob::thread::tests::prop_ordering ... ok
test node::sync::fetch::test::ignores_duplicates_and_local_node ... ok
test node::sync::fetch::test::preferred_seeds_target_returned_over_replicas ... ok
test node::sync::fetch::test::reaches_target_of_max_replicas ... ok
test node::sync::fetch::test::reaches_target_of_preferred_seeds ... ok
test node::sync::fetch::test::reaches_target_of_replicas ... ok
test node::sync::test::replicas_constrain_to ... ok
test node::test::test_alias ... ok
test node::test::test_command_result ... ok
test node::sync::test::ensure_replicas_construction ... ok
test node::test::test_user_agent ... ok
test node::timestamp::tests::test_timestamp_max ... ok
test profile::test::canonicalize_home ... ok
test profile::test::test_config ... ok
test rad::tests::test_fork ... ok
test rad::tests::test_checkout ... ok
test rad::tests::test_init ... ok
test storage::git::tests::test_references_of ... ok
test profile::config::test::schema ... 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_sign_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::git::tests::test_remote_refs ... ok
test storage::refs::tests::test_rid_verification ... ok
test identity::doc::test::prop_encode_decode ... ok
test result: ok. 236 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.05s
Running unittests src/lib.rs (target/debug/deps/radicle_cli-d2c4450d5febafa6)
running 46 tests
test commands::block::args::test::should_parse_rid ... ok
test commands::block::args::test::should_parse_nid ... ok
test commands::clone::args::test::should_parse_rid_url ... ok
test commands::block::args::test::should_not_parse ... ok
test commands::clone::args::test::should_parse_rid_urn ... ok
test commands::clone::args::test::should_parse_rid_non_urn ... ok
test commands::cob::args::test::should_allow_log_pretty_format ... ok
test commands::cob::args::test::should_allow_show_json_format ... ok
test commands::cob::args::test::should_allow_update_json_format ... ok
test commands::cob::args::test::should_not_allow_show_pretty_format ... ok
test commands::fork::args::test::should_not_parse_rid_url ... ok
test commands::cob::args::test::should_not_allow_update_pretty_format ... ok
test commands::fork::args::test::should_parse_rid_non_urn ... ok
test commands::cob::args::test::should_allow_log_json_format ... ok
test commands::fork::args::test::should_parse_rid_urn ... ok
test commands::id::args::test::should_not_parse_into_payload - should panic ... ok
test commands::id::args::test::should_parse_into_payload ... ok
test commands::id::args::test::should_not_parse_single_payload ... ok
test commands::id::args::test::should_parse_multiple_payloads ... ok
test commands::id::args::test::should_not_clobber_payload_args ... ok
test commands::id::args::test::should_parse_single_payload ... ok
test commands::init::args::test::should_not_parse_rid_url ... ok
test commands::init::args::test::should_parse_rid_non_urn ... ok
test commands::id::args::test::should_not_parse_single_payloads ... ok
test commands::init::args::test::should_parse_rid_urn ... ok
test commands::patch::review::builder::tests::test_review_comments_basic ... ok
test commands::patch::review::builder::tests::test_review_comments_before ... ok
test commands::patch::review::builder::tests::test_review_comments_split_hunk ... ok
test commands::patch::review::builder::tests::test_review_comments_multiline ... ok
test commands::inspect::test::test_tree ... ok
test commands::publish::args::test::should_not_parse_rid_url ... ok
test commands::publish::args::test::should_parse_rid_non_urn ... ok
test git::pretty_diff::test::test_pretty ... ignored
test commands::watch::args::test::should_parse_ref_str ... ok
test git::unified_diff::test::test_diff_content_encode_decode_content ... ok
test git::ddiff::tests::diff_encode_decode_ddiff_hunk ... ok
test commands::publish::args::test::should_parse_rid_urn ... ok
test git::unified_diff::test::test_diff_encode_decode_diff ... ok
test terminal::args::test::should_parse_rid ... ok
test terminal::args::test::should_not_parse ... ok
test terminal::args::test::should_parse_nid ... 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. 45 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running unittests src/main.rs (target/debug/deps/rad-df8ebba3143147f5)
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-644825449840c903)
running 110 tests
test framework_home ... ok
test git_push_and_fetch ... ok
test git_push_amend ... ok
test git_push_canonical_annotated_tags ... ok
test git_push_canonical_lightweight_tags ... ok
test git_push_force_with_lease ... 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_push_rollback ... ok
test git_tag ... ok
test git_push_converge ... ok
test rad_clone ... ok
test rad_clone_bare ... ok
test rad_clean ... ok
test rad_clone_directory ... ok
test rad_clone_all ... ok
test rad_clone_connect ... ok
test rad_clone_unknown ... 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_operations ... ok
test rad_config ... ok
test rad_cob_update_identity ... ok
test rad_cob_show ... ok
test rad_diff ... ok
test rad_cob_update ... ok
test rad_help ... ok
test rad_id_collaboration ... ignored, slow
test rad_id ... ok
test rad_id_conflict ... ok
test rad_id_private ... ok
test rad_id_multi_delegate ... ok
test rad_id_threshold ... ok
test rad_id_unknown_field ... ok
test rad_id_update_delete_field ... ok
test rad_id_threshold_soft_fork ... ok
test rad_init ... ignored, part of many other tests
test rad_init_bare ... ok
test rad_init_detached_head ... ok
test rad_init_existing ... ok
test rad_init_existing_bare ... ok
test rad_init_no_git ... ok
test rad_init_no_seed ... ok
test rad_init_private ... ok
test rad_inbox ... ok
test rad_init_private_clone ... ok
test rad_init_private_no_seed ... ok
test rad_fork ... ok
test rad_fetch ... ok
test rad_init_private_clone_seed ... ok
test rad_init_sync_not_connected ... ok
test rad_init_sync_preferred ... ok
test rad_init_private_seed ... ok
test rad_init_with_existing_remote ... ok
test rad_inspect ... ok
test rad_issue ... ok
test rad_jj_bare ... ok
test rad_jj_colocated_patch ... ok
test rad_issue_list ... ok
test rad_key_mismatch ... 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_node_connect_without_address ... ok
test rad_patch ... ok
test rad_node ... ok
test rad_patch_ahead_behind ... ok
test rad_patch_change_base ... 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_timeout ... ok
test rad_init_sync_and_clone ... ok
test rad_patch_diff ... ok
test rad_patch_draft ... ok
test rad_patch_edit ... ok
test rad_patch_fetch_2 ... FAILED
test rad_patch_merge_draft ... ok
test rad_patch_fetch_1 ... ok
test rad_patch_revert_merge ... ok
test rad_patch_open_explore ... ok
test rad_patch_delete ... ok
test rad_patch_update ... ok
test rad_patch_via_push ... FAILED
test rad_publish ... ok
test rad_review_by_hunk ... ok
test rad_seed_and_follow ... ok
test rad_seed_many ... ok
test rad_remote ... ok
test rad_self ... ok
test rad_push_and_pull_patches ... ok
test rad_sync_without_node ... ok
test rad_unseed ... ok
test rad_warn_old_nodes ... ok
test rad_unseed_many ... ok
test rad_watch ... ok
test rad_sync ... ok
test test_clone_without_seeds ... ok
test test_cob_deletion ... ok
test test_cob_replication ... ok
test rad_patch_pull_update ... ok
test rad_workflow ... ok
test test_replication_via_seed ... ok
failures:
---- rad_patch_fetch_2 stdout ----
1788840600 test: Using PATH ["/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-cli/target/debug", "/usr/local/cargo/bin", "/usr/local/sbin", "/usr/local/bin", "/usr/sbin", "/usr/bin", "/sbin", "/bin", "/tmp/.tmpvSTrMn/alice/work"]
1788840600 test: rad-init.md: Running `/c9ca2a0e-b231-4894-a036-abbde693ede1/w/target/debug/rad` with ["init", "--name", "heartwood", "--description", "Radicle Heartwood Protocol & Stack", "--no-confirm", "--public", "-v"] in `/tmp/.tmpvSTrMn/alice/work`..
1788840600 test: rad-init.md: Running `/c9ca2a0e-b231-4894-a036-abbde693ede1/w/target/debug/rad` with ["init"] in `/tmp/.tmpvSTrMn/alice/work`..
1788840600 test: rad-init.md: Running `/c9ca2a0e-b231-4894-a036-abbde693ede1/w/target/debug/rad` with ["ls"] in `/tmp/.tmpvSTrMn/alice/work`..
1788840600 test: rad-init.md: Running `/c9ca2a0e-b231-4894-a036-abbde693ede1/w/target/debug/rad` with ["node", "inventory"] in `/tmp/.tmpvSTrMn/alice/work`..
1788840600 test: Using PATH ["/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-cli/target/debug", "/usr/local/cargo/bin", "/usr/local/sbin", "/usr/local/bin", "/usr/sbin", "/usr/bin", "/sbin", "/bin", "/tmp/.tmpvSTrMn/alice/work"]
1788840600 test: rad-patch-fetch-2.md: Running `git` with ["checkout", "-b", "alice/1", "-q"] in `/tmp/.tmpvSTrMn/alice/work`..
1788840600 test: rad-patch-fetch-2.md: Running `git` with ["commit", "--allow-empty", "-m", "Changes #1", "-q"] in `/tmp/.tmpvSTrMn/alice/work`..
1788840600 test: rad-patch-fetch-2.md: Running `git` with ["push", "rad", "-o", "patch.message=Changes", "HEAD:refs/patches"] in `/tmp/.tmpvSTrMn/alice/work`..
1788840600 test: rad-patch-fetch-2.md: Running `git` with ["checkout", "master", "-q"] in `/tmp/.tmpvSTrMn/alice/work`..
1788840600 test: rad-patch-fetch-2.md: Running `git` with ["branch", "-D", "alice/1", "-q"] in `/tmp/.tmpvSTrMn/alice/work`..
1788840600 test: rad-patch-fetch-2.md: Running `git` with ["update-ref", "-d", "refs/remotes/rad/alice/1"] in `/tmp/.tmpvSTrMn/alice/work`..
1788840600 test: rad-patch-fetch-2.md: Running `git` with ["update-ref", "-d", "refs/remotes/rad/patches/5e2dedcc5d515fcbc1cca483d3376609fe889bfb"] in `/tmp/.tmpvSTrMn/alice/work`..
1788840600 test: rad-patch-fetch-2.md: Running `git` with ["gc", "--prune=now"] in `/tmp/.tmpvSTrMn/alice/work`..
1788840600 test: rad-patch-fetch-2.md: Running `git` with ["branch", "-r"] in `/tmp/.tmpvSTrMn/alice/work`..
1788840600 test: rad-patch-fetch-2.md: Running `git` with ["pull"] in `/tmp/.tmpvSTrMn/alice/work`..
1788840600 test: rad-patch-fetch-2.md: Running `git` with ["branch", "-r"] in `/tmp/.tmpvSTrMn/alice/work`..
thread 'rad_patch_fetch_2' panicked at crates/radicle-cli-test/src/lib.rs:503:36:
--- Expected
++++ actual: stdout
1 - rad/HEAD -> rad/master
2 1 | rad/master
3 2 | rad/patches/5e2dedcc5d515fcbc1cca483d3376609fe889bfb
Exit status: 0
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
---- rad_patch_via_push stdout ----
1788840601 test: Using PATH ["/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-cli/target/debug", "/usr/local/cargo/bin", "/usr/local/sbin", "/usr/local/bin", "/usr/sbin", "/usr/bin", "/sbin", "/bin", "/tmp/.tmp0JrHIe/alice/work"]
1788840601 test: rad-init.md: Running `/c9ca2a0e-b231-4894-a036-abbde693ede1/w/target/debug/rad` with ["init", "--name", "heartwood", "--description", "Radicle Heartwood Protocol & Stack", "--no-confirm", "--public", "-v"] in `/tmp/.tmp0JrHIe/alice/work`..
1788840601 test: rad-init.md: Running `/c9ca2a0e-b231-4894-a036-abbde693ede1/w/target/debug/rad` with ["init"] in `/tmp/.tmp0JrHIe/alice/work`..
1788840601 test: rad-init.md: Running `/c9ca2a0e-b231-4894-a036-abbde693ede1/w/target/debug/rad` with ["ls"] in `/tmp/.tmp0JrHIe/alice/work`..
1788840601 test: rad-init.md: Running `/c9ca2a0e-b231-4894-a036-abbde693ede1/w/target/debug/rad` with ["node", "inventory"] in `/tmp/.tmp0JrHIe/alice/work`..
1788840601 test: Using PATH ["/c9ca2a0e-b231-4894-a036-abbde693ede1/w/crates/radicle-cli/target/debug", "/usr/local/cargo/bin", "/usr/local/sbin", "/usr/local/bin", "/usr/sbin", "/usr/bin", "/sbin", "/bin", "/tmp/.tmp0JrHIe/alice/work"]
1788840601 test: rad-patch-via-push.md: Running `git` with ["checkout", "-b", "feature/1"] in `/tmp/.tmp0JrHIe/alice/work`..
1788840601 test: rad-patch-via-push.md: Running `git` with ["commit", "-a", "-m", "Add things", "-q", "--allow-empty"] in `/tmp/.tmp0JrHIe/alice/work`..
1788840601 test: rad-patch-via-push.md: Running `git` with ["push", "-o", "patch.message=Add things #1", "-o", "patch.message=See commits for details.", "rad", "HEAD:refs/patches"] in `/tmp/.tmp0JrHIe/alice/work`..
1788840601 test: rad-patch-via-push.md: Running `/c9ca2a0e-b231-4894-a036-abbde693ede1/w/target/debug/rad` with ["patch", "show", "6035d2f582afbe01ff23ea87528ae523d76875b6"] in `/tmp/.tmp0JrHIe/alice/work`..
1788840601 test: rad-patch-via-push.md: Running `git` with ["branch", "-vv"] in `/tmp/.tmp0JrHIe/alice/work`..
1788840601 test: rad-patch-via-push.md: Running `git` with ["status", "--short", "--branch"] in `/tmp/.tmp0JrHIe/alice/work`..
1788840601 test: rad-patch-via-push.md: Running `git` with ["fetch"] in `/tmp/.tmp0JrHIe/alice/work`..
1788840601 test: rad-patch-via-push.md: Running `git` with ["push"] in `/tmp/.tmp0JrHIe/alice/work`..
1788840601 test: rad-patch-via-push.md: Running `git` with ["show-ref"] in `/tmp/.tmp0JrHIe/alice/work`..
thread 'rad_patch_via_push' panicked at crates/radicle-cli-test/src/lib.rs:503:36:
--- Expected
++++ actual: stdout
1 1 | 42d894a83c9c356552a57af09ccdbd5587a99045 refs/heads/feature/1
2 2 | f2de534b5e81d7c6e2dcaf58c3dd91573c0a0354 refs/heads/master
3 - f2de534b5e81d7c6e2dcaf58c3dd91573c0a0354 refs/remotes/rad/HEAD
4 3 | f2de534b5e81d7c6e2dcaf58c3dd91573c0a0354 refs/remotes/rad/master
5 4 | 42d894a83c9c356552a57af09ccdbd5587a99045 refs/remotes/rad/patches/6035d2f582afbe01ff23ea87528ae523d76875b6
Exit status: 0
failures:
rad_patch_fetch_2
rad_patch_via_push
test result: FAILED. 106 passed; 2 failed; 2 ignored; 0 measured; 0 filtered out; finished in 77.81s
error: test failed, to rerun pass `-p radicle-cli --test commands`
Running unittests src/lib.rs (target/debug/deps/radicle_cli_test-271eee1f80c41c0d)
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-84c4e41a69174119)
running 8 tests
test object::tests::test_serde ... ok
test tests::git::roundtrip ... ok
test tests::invalid_parse_refstr ... ok
test tests::parse_refstr ... ok
test type_name::test::valid_typenames ... ok
test tests::git::list_cobs ... ok
test tests::git::traverse_cobs ... ok
test tests::git::update_cob ... ok
test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running unittests src/lib.rs (target/debug/deps/radicle_core-ef9dfc09b2e6d61d)
running 2 tests
test repo::serde_impls::test::assert_prop_roundtrip_serde_json ... ok
test repo::test::assert_prop_roundtrip_parse ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_crypto-2cdf91f3179b3527)
running 12 tests
test ssh::fmt::test::test_key ... ok
test ssh::fmt::test::test_fingerprint ... ok
test ssh::keystore::tests::test_init_no_passphrase ... ok
test ssh::test::test_agent_encoding_remove ... ok
test ssh::test::prop_encode_decode_sk ... 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.84s
Running unittests src/lib.rs (target/debug/deps/radicle_dag-05f7457e7194a495)
running 20 tests
test tests::test_contains ... ok
test tests::test_cycle ... ok
test tests::test_dependencies ... 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_complex ... 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_remove ... ok
test tests::test_prune_1 ... ok
test tests::test_prune_by_sorting ... ok
test tests::test_prune_2 ... 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-55beca16093fba7c)
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_git_metadata-ccdb6d430095148e)
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_git_ref_format-b808ac22aa3ddce7)
running 9 tests
test test::component ... ok
test test::pattern ... ok
test test::component_invalid - should panic ... ok
test test::qualified ... ok
test test::qualified_pattern ... ok
test test::qualified_pattern_invalid - should panic ... ok
test test::refname ... ok
test test::refname_invalid - should panic ... ok
test test::qualified_invalid - should panic ... ok
test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_localtime-b324a722f6463902)
running 1 test
test serde_impls::test::test_localtime ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_node-01418340137b57ac)
running 74 tests
test reactor::timer::tests::test_next ... ok
test reactor::timer::tests::test_wake ... ok
test reactor::timer::tests::test_wake_exact ... ok
test control::tests::test_control_socket ... ok
test control::tests::test_seed_unseed ... ok
test fingerprint::tests::matching ... ok
test tests::e2e::missing_default_branch ... ok
test tests::e2e::missing_delegate_default_branch ... ok
test tests::e2e::test_catchup_on_refs_announcements ... ok
test tests::e2e::test_background_foreground_fetch ... ok
test tests::e2e::test_channel_reader_limit ... ok
test tests::e2e::test_clone ... ok
test tests::e2e::test_dont_fetch_owned_refs ... ok
test tests::e2e::test_connection_crossing ... ok
test tests::e2e::test_fetch_followed_remotes ... ok
test tests::e2e::test_concurrent_fetches ... ok
test tests::e2e::test_fetch_preserve_owned_refs ... ok
test tests::e2e::test_fetch_unseeded ... ok
test tests::e2e::test_fetch_up_to_date ... ok
test tests::e2e::test_inventory_sync_basic ... ok
test tests::e2e::test_fetch_emits_canonical_ref_update ... 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_replication_invalid ... ok
test tests::e2e::test_inventory_sync_bridge ... ok
test tests::e2e::test_replication_ref_in_sigrefs ... ok
test tests::e2e::test_inventory_sync_ring ... ok
test tests::e2e::test_inventory_sync_star ... ok
test tests::test_announcement_rebroadcast ... ok
test tests::test_announcement_rebroadcast_duplicates ... ok
test tests::test_announcement_relay ... ok
test tests::test_announcement_rebroadcast_timestamp_filtered ... ok
test tests::test_connection_kept_alive ... 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_outbound_connection ... ok
test tests::test_persistent_peer_connect ... ok
test tests::test_inventory_pruning ... 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_max_capacity ... ok
test tests::test_queued_fetch_from_command_same_rid ... 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_announcement_relay_public ... ok
test tests::test_refs_synced_event ... ok
test tests::test_seed_repo_subscribe ... ok
test wire::test::test_inventory_ann_with_extension ... ok
test wire::test::test_pong_message_with_extension ... ok
test tests::test_seeding ... ok
test tests::prop_inventory_exchange_dense ... ok
test tests::test_announcement_message_amplification ... ok
test result: ok. 74 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 16.84s
Running unittests src/main.rs (target/debug/deps/radicle_node-5f2550719b5c8458)
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_oid-d6586171c5e5bfc1)
running 10 tests
test fmt::test::fixture ... ok
test fmt::test::git2 ... ok
test fmt::test::gix ... ok
test fmt::test::zero ... ok
test git2::test::zero ... ok
test gix::test::zero ... ok
test str::test::fixture ... ok
test str::test::git2_roundtrip ... ok
test str::test::gix_roundrip ... ok
test str::test::zero ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_protocol-be1e4f2918a857c6)
running 46 tests
test deserializer::test::test_unparsed ... ok
test deserializer::test::prop_decode_next ... ok
test service::filter::test::compatible ... ok
test deserializer::test::test_decode_next ... ok
test service::filter::test::test_parameters ... ok
test service::limiter::test::test_limitter_multi ... ok
test service::gossip::store::test::test_announced ... ok
test service::limiter::test::test_limitter_different_rates ... ok
test service::limiter::test::test_limitter_refill ... ok
test service::filter::test::test_sizes ... ok
test service::message::tests::test_ref_remote_limit ... ok
test service::message::tests::test_inventory_limit ... ok
test wire::frame::test::test_encode_git_large ... ok
test wire::frame::test::test_stream_id ... ok
test wire::message::tests::prop_roundtrip_address ... ok
test service::message::tests::prop_refs_announcement_signing ... 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_ping_encode_size_overflow - should panic ... ok
test wire::message::tests::test_pingpong_encode_max_size ... ok
test wire::message::tests::test_pong_encode_size_overflow - should panic ... ok
test wire::message::tests::prop_roundtrip_message ... ok
test wire::tests::prop_oid ... ok
test wire::tests::prop_roundtrip_filter ... ok
test wire::tests::prop_roundtrip_publickey ... ok
test wire::tests::prop_roundtrip_refs ... ok
test wire::tests::prop_roundtrip_repoid ... ok
test wire::tests::prop_roundtrip_signed_refs ... ok
test wire::tests::prop_roundtrip_tuple ... ok
test wire::tests::prop_roundtrip_u16 ... ok
test wire::tests::prop_roundtrip_u32 ... ok
test wire::tests::prop_roundtrip_u64 ... ok
test wire::tests::prop_roundtrip_vec ... ok
test wire::tests::prop_signature ... ok
test wire::tests::prop_string ... 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_roundtrip_varint ... ok
test wire::varint::test::test_encode_overflow - should panic ... ok
test wire::varint::test::test_encoding ... ok
test wire::message::tests::test_refs_ann_max_size ... ok
test wire::message::tests::prop_message_decoder ... ok
test service::message::tests::test_node_announcement_validate ... ok
test result: ok. 46 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.41s
Running unittests src/main.rs (target/debug/deps/git_remote_rad-403bd130a4109572)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/main.rs (target/debug/deps/radicle_schemars-3814598870a0c326)
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-bb66f1d798396f61)
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-ced840136c32d8e4)
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-36e3b0b1253d2879)
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-fac874e5460320c3)
running 21 tests
test ansi::tests::colors_disabled ... ok
test cell::test::test_width ... ok
test ansi::tests::wrapping ... ok
test ansi::tests::colors_enabled ... ok
test element::test::test_spaced ... ok
test element::test::test_width ... ok
test table::test::test_table ... ok
test element::test::test_truncate ... ok
test table::test::test_table_border ... ok
test table::test::test_table_truncate ... ok
test table::test::test_table_border_maximized ... ok
test table::test::test_table_border_truncated ... ok
test table::test::test_table_unicode ... ok
test table::test::test_truncate ... ok
test textarea::test::test_wrapping_code_block ... ok
test table::test::test_table_unicode_truncate ... ok
test textarea::test::test_wrapping_fenced_block ... ok
test textarea::test::test_wrapping ... ok
test textarea::test::test_wrapping_paragraphs ... ok
test vstack::test::test_vstack_maximize ... ok
test vstack::test::test_vstack ... ok
test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle
running 1 test
test crates/radicle/src/cob/patch/encoding/review.rs - cob::patch::encoding::review::Review (line 23) ... ignored
test result: ok. 0 passed; 0 failed; 1 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 crates/radicle-cob/src/backend/stable.rs - backend::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_core
running 2 tests
test crates/radicle-core/src/node.rs - node (line 9) ... FAILED
test crates/radicle-core/src/node.rs - node (line 5) ... FAILED
failures:
---- crates/radicle-core/src/node.rs - node (line 9) stdout ----
error[E0425]: cannot find value `z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi` in this scope
--> crates/radicle-core/src/node.rs:10:1
|
3 | z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not found in this scope
error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0425`.
Couldn't compile the test.
---- crates/radicle-core/src/node.rs - node (line 5) stdout ----
error: expected expression, found keyword `type`
--> crates/radicle-core/src/node.rs:6:45
|
3 | MULTIBASE(base58-btc, MULTICODEC(public-key-type, raw-public-key-bytes))
| ^^^^ expected expression
error[E0425]: cannot find value `base58` in this scope
--> crates/radicle-core/src/node.rs:6:11
|
3 | MULTIBASE(base58-btc, MULTICODEC(public-key-type, raw-public-key-bytes))
| ^^^^^^ not found in this scope
error[E0425]: cannot find value `btc` in this scope
--> crates/radicle-core/src/node.rs:6:18
|
3 | MULTIBASE(base58-btc, MULTICODEC(public-key-type, raw-public-key-bytes))
| ^^^ not found in this scope
error[E0425]: cannot find function, tuple struct or tuple variant `MULTIBASE` in this scope
--> crates/radicle-core/src/node.rs:6:1
|
3 | MULTIBASE(base58-btc, MULTICODEC(public-key-type, raw-public-key-bytes))
| ^^^^^^^^^ not found in this scope
error: aborting due to 4 previous errors
For more information about this error, try `rustc --explain E0425`.
Couldn't compile the test.
failures:
crates/radicle-core/src/node.rs - node (line 5)
crates/radicle-core/src/node.rs - node (line 9)
test result: FAILED. 0 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
error: doctest failed, to rerun pass `-p radicle-core --doc`
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_git_metadata
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_git_ref_format
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_localtime
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 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_oid
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_protocol
running 6 tests
test crates/radicle-protocol/src/bounded.rs - bounded::BoundedVec<T,N>::truncate (line 50) ... ok
test crates/radicle-protocol/src/bounded.rs - bounded::BoundedVec<T,N>::collect_from (line 30) ... ok
test crates/radicle-protocol/src/bounded.rs - bounded::BoundedVec<T,N>::max (line 96) ... ok
test crates/radicle-protocol/src/bounded.rs - bounded::BoundedVec<T,N>::push (line 122) ... ok
test crates/radicle-protocol/src/bounded.rs - bounded::BoundedVec<T,N>::unbound (line 149) ... ok
test crates/radicle-protocol/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.42s
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 crates/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.15s
error: 2 targets failed:
`-p radicle-cli --test commands`
`-p radicle-core --doc`
Exit code: 101
{
"response": "finished",
"result": "failure"
}