rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5 heartwood8e485c784f130544ca8db244e953c5aff5547241
{
"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": "b938ecde8ef6c81d1df6767ac01be68eec4f517e",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": null
},
"title": "Improve errors during canonical quorum",
"state": {
"status": "merged",
"conflicts": []
},
"before": "c30298fb8a9617a38013a91ce4ba433392b90f16",
"after": "8e485c784f130544ca8db244e953c5aff5547241",
"commits": [
"8e485c784f130544ca8db244e953c5aff5547241",
"51e903cf96f72909f153ff3d1b273c4923c3af8b",
"807216c1c17449160ec8ee7ab2b00e9203932256",
"e8b69e86ca9701f1990193a26e1db6b124dd2135",
"6f78ab9ce592ba42c9a6e7a689a663e1d6718296",
"a78530699656844981763a43fd9543228983cdf2",
"1b8623954357e2df46e477eb1be5249864a4d1e8",
"fc2af6f9cee1dbfa15af31ce8c4490f0eaadc61e"
],
"target": "7e1cb406bb935c3de008d2171e8961f57b4336ea",
"labels": [],
"assignees": [],
"revisions": [
{
"id": "b938ecde8ef6c81d1df6767ac01be68eec4f517e",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": null
},
"description": "The aim of this patch was to explore a scenario discovered in Zulip[^0]. When\npushing to the default branch, an object was missing. To improve this, I needed\nto hunt down where the error was originating from.\n\nThe patch starts with refactoring the cases when the `git push` is not in the\ndelete case. We classify if the push is opening a patch, updating a patch, or\nsimply pushing a ref.\n\nFrom there, we refactor the canonical computation by separating it out into its\nbusiness logic. Here, I was able to refactor the error scenarios, and discovered\nthat it was due to the missing commit during the `converges` calculation. The\npatch adds a check that all the commits are present, and if not, provide a\nbetter error message.\n\nFinally, a test for the scenario outlined in Zulip is added showing how it can\nbe recovered from.\n\n[^0]: https://radicle.zulipchat.com/#narrow/channel/369873-support/topic/.60error.3A.20git.3A.20object.20not.20found.20-.20no.20match.20for.20id.60.20on.20push/with/527912706",
"base": "c30298fb8a9617a38013a91ce4ba433392b90f16",
"oid": "a78530699656844981763a43fd9543228983cdf2",
"timestamp": 1752147835
},
{
"id": "b547c93af104a9e45053b32cce852b77208d6e0a",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": null
},
"description": "Review",
"base": "c30298fb8a9617a38013a91ce4ba433392b90f16",
"oid": "8e485c784f130544ca8db244e953c5aff5547241",
"timestamp": 1752670187
},
{
"id": "db71ef3490cbbd75006c3b0f662c64204d2450d8",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": null
},
"description": "Changes:\n- Rebased\n- Accepted review commits",
"base": "a9f75d47ecca159383fd9df0c3a140f8c063eb57",
"oid": "1fa30e2e88b58e48e8fcadfe416b65a85f916b4a",
"timestamp": 1752925660
}
]
}
}
{
"response": "triggered",
"run_id": {
"id": "ca30dfc1-2179-4d80-9b9b-01e928dfab6f"
},
"info_url": "https://cci.rad.levitte.org//ca30dfc1-2179-4d80-9b9b-01e928dfab6f.html"
}
Started at: 2026-09-08 17:48:32.547351+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/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/
╭────────────────────────────────────╮
│ heartwood │
│ Radicle Heartwood Protocol & Stack │
│ 189 issues · 39 patches │
╰────────────────────────────────────╯
Run `cd ./.` to go to the repository directory.
Exit code: 0
$ rad patch checkout b938ecde8ef6c81d1df6767ac01be68eec4f517e
✓ Switched to branch patch/b938ecd at revision db71ef3
✓ Branch patch/b938ecd setup to track rad/patches/b938ecde8ef6c81d1df6767ac01be68eec4f517e
Exit code: 0
$ git config advice.detachedHead false
Exit code: 0
$ git checkout 8e485c784f130544ca8db244e953c5aff5547241
HEAD is now at 8e485c78 REVIEW: More verbose names to aid understanding
Exit code: 0
$ rad patch show b938ecde8ef6c81d1df6767ac01be68eec4f517e -p
╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Title Improve errors during canonical quorum │
│ Patch b938ecde8ef6c81d1df6767ac01be68eec4f517e │
│ Author fintohaps z6Mkire…SQZ3voM │
│ Head 1fa30e2e88b58e48e8fcadfe416b65a85f916b4a │
│ Base a9f75d47ecca159383fd9df0c3a140f8c063eb57 │
│ Target master │
│ Branches patch/b938ecd │
│ Commits ahead 0, behind 976 │
│ Status merged │
│ │
│ The aim of this patch was to explore a scenario discovered in Zulip[^0]. When │
│ pushing to the default branch, an object was missing. To improve this, I needed │
│ to hunt down where the error was originating from. │
│ │
│ The patch starts with refactoring the cases when the `git push` is not in the │
│ delete case. We classify if the push is opening a patch, updating a patch, or │
│ simply pushing a ref. │
│ │
│ From there, we refactor the canonical computation by separating it out into its │
│ business logic. Here, I was able to refactor the error scenarios, and discovered │
│ that it was due to the missing commit during the `converges` calculation. The │
│ patch adds a check that all the commits are present, and if not, provide a │
│ better error message. │
│ │
│ Finally, a test for the scenario outlined in Zulip is added showing how it can │
│ be recovered from. │
│ │
│ [^0]: │
│ https://radicle.zulipchat.com/#narrow/channel/369873-support/topic/.60error.3A.20git.3A.20object.20not.20found.20-.20no.20match.20for.20id.60.20on.20push/with/527912706 │
├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ 1fa30e2 cli: test missing commits for canonical quorum │
│ afe64d5 remote-helper: improve canonical handling │
│ 14444a4 remote-helper: refactor pushing action │
├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ ● Revision b938ecd @ c30298f..a785306 by fintohaps z6Mkire…SQZ3voM 1 year ago │
│ ↑ Revision b547c93 @ c30298f..8e485c7 by lorenz z6MkkPv…WX5sTEz 1 year ago │
│ ↑ Revision db71ef3 @ a9f75d4..1fa30e2 by fintohaps z6Mkire…SQZ3voM 1 year ago │
│ └─ ✓ merged by fintohaps z6Mkire…SQZ3voM │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
commit 1fa30e2e88b58e48e8fcadfe416b65a85f916b4a
Author: Fintan Halpenny <fintan.halpenny@gmail.com>
Date: Thu Jul 10 08:25:33 2025 +0100
cli: test missing commits for canonical quorum
Test the scenario where 2 delegates are collaborating, where one delegate is
missing the other's commit while pushing to the default branch.
diff --git a/crates/radicle-cli/examples/rad-id-missing-commits.md b/crates/radicle-cli/examples/rad-id-missing-commits.md
new file mode 100644
index 0000000000..f684811e5d
--- /dev/null
+++ b/crates/radicle-cli/examples/rad-id-missing-commits.md
@@ -0,0 +1,90 @@
+Sometimes, commits may appear missing in the working copy when pushing to the
+default branch. In this scenario, we show this happening, and then how to
+recover from the problem.
+
+First, we need to be in a scenario where there is more than one delegate:
+
+``` ~alice
+$ rad id update --title "Add Bob" --description "Add Bob as a delegate" --delegate did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk -q
+7be665f9fccba97abb21b2fa85a6fd3181c72858
+```
+
+``` ~alice
+$ rad follow did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
+✓ Follow policy updated for z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
+$ rad sync
+Fetching rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji from the network, found 1 potential seed(s).
+✓ Target met: 1 seed(s)
+🌱 Fetched from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
+✓ Synced with 1 seed(s)
+$ rad id update --title "Bump threshold" --description "Bumping threshold to 2" --threshold 2 -q
+f515dc5af139b8eb9fa817df3f637f2acc29c12b
+$ rad sync -a
+✓ Synced with 1 seed(s)
+```
+
+``` ~bob
+$ rad id accept f515dc5af139b8eb9fa817df3f637f2acc29c12b -q
+$ rad sync -a
+✓ Synced with 1 seed(s)
+```
+
+At this stage, Bob makes some changes at the same time, updating the default
+branch:
+
+``` ~bob (stderr) RAD_SOCKET=/dev/null
+$ touch README.md
+$ git add README.md
+$ git commit -m "Add README"
+$ git push rad master
+To rad://z42hL2jL4XNk6K8oHQaSWfMgCL7ji/z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
+ f2de534..361f146 master -> master
+```
+
+Alice, is also busy making some changes:
+
+``` ~alice
+$ rad sync -f
+Fetching rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji from the network, found 1 potential seed(s).
+✓ Target met: 1 seed(s)
+🌱 Fetched from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
+```
+
+``` ~alice
+$ touch LICENSE
+$ git add LICENSE
+$ git commit -m "Add LICENSE"
+[master 62d19fd] Add LICENSE
+ 1 file changed, 0 insertions(+), 0 deletions(-)
+ create mode 100644 LICENSE
+```
+
+However, when she goes to push to the default branch she sees an error about a missing commit from Bob:
+
+``` ~alice (fails) (stderr)
+$ git push rad master
+error: the commit 361f146ec7339fffdea1ea586f51410250bec9cf for did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk is missing from the repository [..]
+error: failed to push some refs to 'rad://z42hL2jL4XNk6K8oHQaSWfMgCL7ji/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi'
+```
+
+The reason for this is that when attempting to compute the canonical commit for
+the default branch, there are some checks to see if the delegates agree on the
+new commit. In this case, Bob's commit was not available to perform this check,
+so, Alice must fetch from Bob's state of the repository. She can do this by
+adding him as a remote:
+
+``` ~alice
+$ rad remote add did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk --name "bob"
+✓ Remote bob added
+✓ Remote-tracking branch bob/master created for z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
+```
+
+
+``` ~alice (stderr) RAD_SOCKET=/dev/null
+$ git push rad master
+To rad://z42hL2jL4XNk6K8oHQaSWfMgCL7ji/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
+ f2de534..62d19fd master -> master
+```
+
+Note that if the remote tracking branch already exists, then she can simply `git
+fetch bob/master`.
diff --git a/crates/radicle-cli/tests/commands.rs b/crates/radicle-cli/tests/commands.rs
index b0ff852fed..51699600c1 100644
--- a/crates/radicle-cli/tests/commands.rs
+++ b/crates/radicle-cli/tests/commands.rs
@@ -443,6 +443,47 @@ fn rad_id_threshold_soft_fork() {
.unwrap();
}
+#[test]
+fn rad_id_missing_commits() {
+ let mut environment = Environment::new();
+ let alice = environment.node("alice");
+ let bob = environment.node("bob");
+ let acme = RepoId::from_str("z42hL2jL4XNk6K8oHQaSWfMgCL7ji").unwrap();
+
+ environment.repository(&alice);
+
+ test(
+ "examples/rad-init.md",
+ environment.work(&alice),
+ Some(&alice.home),
+ [],
+ )
+ .unwrap();
+
+ let mut alice = alice.spawn();
+ let mut bob = bob.spawn();
+
+ bob.handle.seed(acme, Scope::All).unwrap();
+ alice.connect(&bob).converge([&bob]);
+
+ bob.fork(acme, environment.work(&bob)).unwrap();
+
+ formula(&environment.tempdir(), "examples/rad-id-missing-commits.md")
+ .unwrap()
+ .home(
+ "alice",
+ environment.work(&alice),
+ [("RAD_HOME", alice.home.path().display())],
+ )
+ .home(
+ "bob",
+ environment.work(&bob).join("heartwood"),
+ [("RAD_HOME", bob.home.path().display())],
+ )
+ .run()
+ .unwrap();
+}
+
#[test]
fn rad_id_update_delete_field() {
Environment::alice(["rad-init", "rad-id-update-delete-field"]);
commit afe64d517533ea86dd10a9fad82da55821236127
Author: Fintan Halpenny <fintan.halpenny@gmail.com>
Date: Thu Jul 10 08:58:17 2025 +0100
remote-helper: improve canonical handling
This set of changes refactors the canonical handling by isolating the business
logic into another type, `Canonical`.
The functionality remains the same, but certain error scenarios are better
handled. Primarily, the commits of the inner `Canonical` type are checked to see
if they exist in the working copy, and if not, provide a more useful message
about which commit was missing or invalid for which DID.
diff --git a/crates/radicle-cli/examples/git/git-push-diverge.md b/crates/radicle-cli/examples/git/git-push-diverge.md
index 5d0ff736c4..39543d7da0 100644
--- a/crates/radicle-cli/examples/git/git-push-diverge.md
+++ b/crates/radicle-cli/examples/git/git-push-diverge.md
@@ -45,7 +45,7 @@ integrate Bob's changes before pushing ours:
$ git push rad
hint: you are attempting to push a commit that would cause your upstream to diverge from the canonical reference refs/heads/master
hint: to integrate the remote changes, run `git pull --rebase` and try again
-error: refusing to update branch to commit that is not a descendant of canonical head
+error: refusing to update canonical reference to commit that is not a descendant of current canonical head
error: failed to push some refs to 'rad://z42hL2jL4XNk6K8oHQaSWfMgCL7ji/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi'
```
diff --git a/crates/radicle-remote-helper/src/push.rs b/crates/radicle-remote-helper/src/push.rs
index 044dbf323b..dab29ac2b2 100644
--- a/crates/radicle-remote-helper/src/push.rs
+++ b/crates/radicle-remote-helper/src/push.rs
@@ -1,5 +1,6 @@
#![allow(clippy::too_many_arguments)]
+mod canonical;
mod error;
use std::collections::HashMap;
@@ -19,7 +20,6 @@ use radicle::cob::patch;
use radicle::cob::patch::cache::Patches as _;
use radicle::crypto;
use radicle::explorer::ExplorerResource;
-use radicle::git::canonical;
use radicle::identity::{CanonicalRefs, Did};
use radicle::node;
use radicle::node::{Handle, NodeId};
@@ -31,7 +31,7 @@ use radicle::{git, rad};
use radicle_cli as cli;
use radicle_cli::terminal as term;
-use crate::{hint, read_line, warn, Options};
+use crate::{hint, read_line, Options};
#[derive(Debug, Error)]
pub enum Error {
@@ -45,9 +45,6 @@ pub enum Error {
/// No public key is given
#[error("no public key given as a remote namespace, perhaps you are attempting to push to restricted refs")]
NoKey,
- /// Head being pushed diverges from canonical head.
- #[error("refusing to update branch to commit that is not a descendant of canonical head")]
- HeadsDiverge(git::Oid, git::Oid),
/// User tried to delete the canonical branch.
#[error("refusing to delete default branch ref '{0}'")]
DeleteForbidden(git::RefString),
@@ -121,6 +118,8 @@ pub enum Error {
CanonicalRefs(#[from] radicle::identity::doc::CanonicalRefsError),
#[error(transparent)]
PushAction(#[from] error::PushAction),
+ #[error(transparent)]
+ Canonical(#[from] error::CanonicalUnrecoverable),
}
/// Push command.
@@ -224,7 +223,7 @@ impl PushAction {
let patch = git::Oid::from_str(oid)
.map_err(|err| error::PushAction::InvalidPatchId {
suffix: oid.to_string(),
- err,
+ source: err,
})
.map(patch::PatchId::from)?;
Ok(Self::UpdatePatch { dst, patch })
@@ -348,46 +347,11 @@ pub fn run(
//
// Note that we *do* allow rolling back to a previous commit on the
// canonical branch.
- if let Some(mut canonical) = rules.canonical(dst.clone(), stored)? {
- if canonical.is_allowed(&me) {
- let head = *src;
- let converges = canonical.converges(&working, (&me, &head))?;
-
- // If `canonical` is empty then we're creating a new reference.
- // If we're the only delegate then we need to modify our vote.
- if converges || canonical.has_no_tips() || canonical.is_only(&me) {
- canonical.modify_vote(me, head);
- }
-
- match canonical.quorum(&working) {
- Ok((dst, canonical_oid)) => {
- // Canonical head is an ancestor of head.
- let is_ff = head == canonical_oid
- || working
- .graph_descendant_of(*head, *canonical_oid)?;
-
- if !is_ff && !converges {
- if hints {
- hint(
- format!("you are attempting to push a commit that would cause \
- your upstream to diverge from the canonical reference {dst}"),
- );
- hint(
- "to integrate the remote changes, run `git pull --rebase` \
- and try again",
- );
- }
- return Err(Error::HeadsDiverge(head, canonical_oid));
- }
- set_canonical_refs
- .push((dst.clone().to_owned(), canonical_oid));
- }
- Err(canonical::QuorumError::Git(e)) => return Err(e.into()),
- Err(e) => {
- warn(e.to_string());
- warn("it is recommended to find a commit to agree upon");
- }
- }
+ if let Some(canonical) = rules.canonical(dst.clone(), stored)? {
+ let canonical = canonical::Canonical::new(me, *src, canonical);
+ match canonical.quorum(&working) {
+ Ok(quorum) => set_canonical_refs.push(quorum),
+ Err(e) => canonical::io::handle_error(e, &dst, hints)?,
}
}
push(src, &dst, *force, &nid, &working, stored, patches, &signer)
diff --git a/crates/radicle-remote-helper/src/push/canonical.rs b/crates/radicle-remote-helper/src/push/canonical.rs
new file mode 100644
index 0000000000..0a50901137
--- /dev/null
+++ b/crates/radicle-remote-helper/src/push/canonical.rs
@@ -0,0 +1,129 @@
+use radicle::git;
+use radicle::git::raw::Repository;
+use radicle::prelude::Did;
+
+use super::error;
+
+pub(crate) struct Vote {
+ did: Did,
+ commit: git::Oid,
+}
+
+/// Validates a vote to update a canonical reference during push.
+pub(crate) struct Canonical<'a, 'b> {
+ vote: Vote,
+ canonical: git::canonical::Canonical<'a, 'b>,
+}
+
+impl<'a, 'b> Canonical<'a, 'b> {
+ pub fn new(me: Did, head: git::Oid, canonical: git::canonical::Canonical<'a, 'b>) -> Self {
+ Self {
+ vote: Vote {
+ did: me,
+ commit: head,
+ },
+ canonical,
+ }
+ }
+
+ /// Calculates the quorum of the [`git::canonical::Canonical`] provided.
+ ///
+ /// In some cases, it ensures that the [`head`] is attempting to converge
+ /// with the set of commits of the other [`Did`]s.
+ ///
+ /// If a quorum is found, then it is also ensured that the new [`head`] is a
+ /// descendant of the current canonical commit, otherwise the commits are
+ /// considered diverging.
+ ///
+ /// # Errors
+ ///
+ /// Ensures that the commits of the other [`Did`]s are in the working
+ /// copy, and that checks that any two commits are related in the graph.
+ ///
+ /// Ensures that the new head and the canonical commit do not diverge.
+ ///
+ /// [`head`]: crate::push::canonical::Canonical::head
+ pub fn quorum(
+ mut self,
+ working: &Repository,
+ ) -> Result<(git::Qualified<'a>, git::Oid), error::Canonical> {
+ let converges = self
+ .canonical
+ .converges(working, (&self.vote.did, &self.vote.commit))?;
+ if converges || self.canonical.has_no_tips() || self.canonical.is_only(&self.vote.did) {
+ self.canonical.modify_vote(self.vote.did, self.vote.commit);
+ }
+
+ match self.canonical.quorum(working) {
+ Ok((cref, quorum_head)) => {
+ // Canonical head is an ancestor of head.
+ let is_ff = self.vote.commit == quorum_head
+ || working
+ .graph_descendant_of(*self.vote.commit, *quorum_head)
+ .map_err(|err| {
+ error::Canonical::graph_descendant(self.vote.commit, quorum_head, err)
+ })?;
+
+ if !is_ff && !converges {
+ Err(error::Canonical::heads_diverge(
+ self.vote.commit,
+ quorum_head,
+ ))
+ } else {
+ Ok((cref, quorum_head))
+ }
+ }
+ Err(err) => Err(err.into()),
+ }
+ }
+}
+
+pub(crate) mod io {
+ use radicle::git;
+ use radicle::git::canonical;
+
+ use crate::push::error;
+ use crate::{hint, warn};
+
+ /// Handle recoverable errors, printing relevant information to the
+ /// terminal. Otherwise, convert the error into an unrecoverable error
+ /// [`error::CanonicalUnrecoverable`].
+ pub fn handle_error(
+ e: error::Canonical,
+ canonical: &git::Qualified,
+ hints: bool,
+ ) -> Result<(), error::CanonicalUnrecoverable> {
+ match e {
+ error::Canonical::GraphDescendant(e) => Err(e.into()),
+ error::Canonical::Converges(e) => Err(e.into()),
+ error::Canonical::HeadsDiverge(e) => {
+ if hints {
+ hint(
+ format!("you are attempting to push a commit that would cause \
+ your upstream to diverge from the canonical reference {canonical}"),
+ );
+ hint(
+ "to integrate the remote changes, run `git pull --rebase` \
+ and try again",
+ );
+ }
+ Err(e.into())
+ }
+ error::Canonical::Quorum(e) => match e {
+ e @ canonical::QuorumError::Diverging { .. } => {
+ warn(e.to_string());
+ warn("it is recommended to find a commit to agree upon");
+ Ok(())
+ }
+ e @ canonical::QuorumError::NoCandidates { .. } => {
+ warn(e.to_string());
+ warn("it is recommended to find a commit to agree upon");
+ Ok(())
+ }
+ canonical::QuorumError::Git(err) => {
+ Err(error::CanonicalUnrecoverable::Git { source: err })
+ }
+ },
+ }
+ }
+}
diff --git a/crates/radicle-remote-helper/src/push/error.rs b/crates/radicle-remote-helper/src/push/error.rs
index 924c226baf..add1635322 100644
--- a/crates/radicle-remote-helper/src/push/error.rs
+++ b/crates/radicle-remote-helper/src/push/error.rs
@@ -1,6 +1,61 @@
-use radicle::storage::git;
+use radicle::git;
+use radicle::git::canonical;
use thiserror::Error;
+#[derive(Debug, Error)]
+pub enum CanonicalUnrecoverable {
+ #[error(transparent)]
+ GraphDescendant(#[from] GraphDescendant),
+ #[error(transparent)]
+ Converges(#[from] canonical::ConvergesError),
+ #[error(transparent)]
+ HeadsDiverge(#[from] HeadsDiverge),
+ #[error("failure while computing canonical reference: {source}")]
+ Git { source: git::raw::Error },
+}
+
+#[derive(Debug, Error)]
+pub enum Canonical {
+ #[error(transparent)]
+ GraphDescendant(GraphDescendant),
+ #[error(transparent)]
+ Converges(#[from] canonical::ConvergesError),
+ #[error(transparent)]
+ HeadsDiverge(HeadsDiverge),
+ #[error(transparent)]
+ Quorum(#[from] canonical::QuorumError),
+}
+
+impl Canonical {
+ pub fn graph_descendant(head: git::Oid, canonical: git::Oid, source: git::raw::Error) -> Self {
+ Self::GraphDescendant(GraphDescendant {
+ head,
+ canonical,
+ source,
+ })
+ }
+
+ pub fn heads_diverge(head: git::Oid, canonical: git::Oid) -> Self {
+ Self::HeadsDiverge(HeadsDiverge { head, canonical })
+ }
+}
+
+#[derive(Debug, Error)]
+#[error("failed to check if {head} is an ancestor of {canonical} due to: {source}")]
+pub struct GraphDescendant {
+ head: git::Oid,
+ canonical: git::Oid,
+ source: git::raw::Error,
+}
+
+#[derive(Debug, Error)]
+/// Head being pushed diverges from canonical head.
+#[error("refusing to update canonical reference to commit that is not a descendant of current canonical head")]
+pub struct HeadsDiverge {
+ head: git::Oid,
+ canonical: git::Oid,
+}
+
#[derive(Debug, Error)]
pub enum PushAction {
#[error("invalid reference {refname}, expected qualified reference starting with `refs/`")]
@@ -8,7 +63,6 @@ pub enum PushAction {
#[error("found refs/heads/patches/{suffix} where {suffix} was an invalid Patch ID")]
InvalidPatchId {
suffix: String,
- #[source]
- err: git::raw::Error,
+ source: git::raw::Error,
},
}
diff --git a/crates/radicle/src/git/canonical.rs b/crates/radicle/src/git/canonical.rs
index eefcfd379a..11a4ae3b97 100644
--- a/crates/radicle/src/git/canonical.rs
+++ b/crates/radicle/src/git/canonical.rs
@@ -2,6 +2,7 @@ pub mod rules;
pub use rules::{MatchedRule, RawRule, Rules, ValidRule};
use std::collections::BTreeMap;
+use std::path::PathBuf;
use raw::Repository;
use thiserror::Error;
@@ -50,6 +51,70 @@ pub enum QuorumError {
Git(#[from] git2::Error),
}
+#[derive(Debug, Error)]
+#[error("failed to check if {head} is an ancestor of {canonical} due to: {source}")]
+pub struct GraphDescendant {
+ head: Oid,
+ canonical: Oid,
+ source: raw::Error,
+}
+
+#[derive(Debug, Error)]
+#[error("the commit {commit} for {did} is missing from the repository {repo:?}")]
+pub struct MissingCommit {
+ repo: PathBuf,
+ did: Did,
+ commit: Oid,
+ source: raw::Error,
+}
+
+#[derive(Debug, Error)]
+#[error("could not determine whether the commit {commit} for {did} is part of the repository {repo:?} due to: {source}")]
+pub struct InvalidCommit {
+ repo: PathBuf,
+ did: Did,
+ commit: Oid,
+ source: raw::Error,
+}
+
+#[derive(Debug, Error)]
+pub enum ConvergesError {
+ #[error(transparent)]
+ GraphDescendant(#[from] GraphDescendant),
+ #[error(transparent)]
+ MissingCommit(#[from] MissingCommit),
+ #[error(transparent)]
+ InvalidCommit(#[from] InvalidCommit),
+}
+
+impl ConvergesError {
+ pub fn graph_descendant(head: Oid, canonical: Oid, source: raw::Error) -> Self {
+ Self::GraphDescendant(GraphDescendant {
+ head,
+ canonical,
+ source,
+ })
+ }
+
+ pub fn missing_commit(repo: PathBuf, did: Did, commit: Oid, err: raw::Error) -> Self {
+ Self::MissingCommit(MissingCommit {
+ repo,
+ did,
+ commit,
+ source: err,
+ })
+ }
+
+ pub fn invalid_commit(repo: PathBuf, did: Did, commit: Oid, err: raw::Error) -> Self {
+ Self::InvalidCommit(InvalidCommit {
+ repo,
+ did,
+ commit,
+ source: err,
+ })
+ }
+}
+
impl<'a, 'b> Canonical<'a, 'b> {
/// Construct the set of canonical tips given for the given `rule` and
/// the reference `refname`.
@@ -124,14 +189,25 @@ impl<'a, 'b> Canonical<'a, 'b> {
pub fn converges(
&self,
repo: &Repository,
- candidate: (&Did, &Oid),
- ) -> Result<bool, raw::Error> {
- for tip in self
- .tips
- .iter()
- .filter_map(|(did, tip)| (did != candidate.0).then_some(tip))
- {
- let (ahead, behind) = repo.graph_ahead_behind(**candidate.1, **tip)?;
+ (candidate, commit): (&Did, &Oid),
+ ) -> Result<bool, ConvergesError> {
+ let heads = {
+ let mut heads = self
+ .tips
+ .iter()
+ .filter_map(|(did, tip)| (did != candidate).then_some((did, tip)));
+ heads.try_fold(
+ Vec::with_capacity(heads.size_hint().0),
+ |mut heads, (did, head)| {
+ heads.push(Self::ensure_commit(*did, *head, repo)?);
+ Ok::<_, ConvergesError>(heads)
+ },
+ )?
+ };
+ for head in heads {
+ let (ahead, behind) = repo
+ .graph_ahead_behind(**commit, *head)
+ .map_err(|err| ConvergesError::graph_descendant(*commit, head, err))?;
if ahead * behind == 0 {
return Ok(true);
}
@@ -225,6 +301,21 @@ impl<'a, 'b> Canonical<'a, 'b> {
fn threshold(&self) -> usize {
(*self.rule.threshold()).into()
}
+
+ fn ensure_commit(from: Did, commit: Oid, working: &Repository) -> Result<Oid, ConvergesError> {
+ match working.find_commit(*commit).map(|_| commit) {
+ Ok(oid) => Ok(oid),
+ Err(err) if err.code() == raw::ErrorCode::NotFound => Err(
+ ConvergesError::missing_commit(working.path().to_path_buf(), from, commit, err),
+ ),
+ Err(err) => Err(ConvergesError::invalid_commit(
+ working.path().to_path_buf(),
+ from,
+ commit,
+ err,
+ )),
+ }
+ }
}
#[cfg(test)]
commit 14444a43eaaf3f0a446090a698e7be4d809f424a
Author: Fintan Halpenny <fintan.halpenny@gmail.com>
Date: Thu Jul 10 08:55:08 2025 +0100
remote-helper: refactor pushing action
Reduce the nesting of if statements by using a `PushAction` enum that is
constructed by checking the `dst` reference and parsing the correct action, one
of:
- `OpenPatch`
- `UpdatePatch`
- `PushRef`
This makes the intent of the code a little bit more clear and reduces the tabbing
of big code blocks. It also captures the error specifically for handling the
parsing of this `dst` reference.
diff --git a/crates/radicle-remote-helper/src/push.rs b/crates/radicle-remote-helper/src/push.rs
index 968ad37865..044dbf323b 100644
--- a/crates/radicle-remote-helper/src/push.rs
+++ b/crates/radicle-remote-helper/src/push.rs
@@ -1,4 +1,7 @@
#![allow(clippy::too_many_arguments)]
+
+mod error;
+
use std::collections::HashMap;
use std::io::IsTerminal;
use std::path::{Path, PathBuf};
@@ -66,9 +69,6 @@ pub enum Error {
/// Invalid reference name.
#[error("invalid ref: {0}")]
InvalidRef(#[from] radicle::git::fmt::Error),
- /// Invalid reference name.
- #[error("invalid qualified ref: {0}")]
- InvalidQualifiedRef(git::RefString),
/// Git error.
#[error("git: {0}")]
Git(#[from] git::raw::Error),
@@ -119,6 +119,8 @@ pub enum Error {
Quorum(#[from] radicle::git::canonical::QuorumError),
#[error(transparent)]
CanonicalRefs(#[from] radicle::identity::doc::CanonicalRefsError),
+ #[error(transparent)]
+ PushAction(#[from] error::PushAction),
}
/// Push command.
@@ -196,6 +198,43 @@ impl Command {
}
}
+enum PushAction {
+ OpenPatch,
+ UpdatePatch {
+ dst: git::Qualified<'static>,
+ patch: patch::PatchId,
+ },
+ PushRef {
+ dst: git::Qualified<'static>,
+ },
+}
+
+impl PushAction {
+ fn new(dst: &git::RefString) -> Result<Self, error::PushAction> {
+ if dst == &*rad::PATCHES_REFNAME {
+ Ok(Self::OpenPatch)
+ } else {
+ let dst = git::Qualified::from_refstr(dst)
+ .ok_or_else(|| error::PushAction::InvalidRef {
+ refname: dst.clone(),
+ })?
+ .to_owned();
+
+ if let Some(oid) = dst.strip_prefix(git::refname!("refs/heads/patches")) {
+ let patch = git::Oid::from_str(oid)
+ .map_err(|err| error::PushAction::InvalidPatchId {
+ suffix: oid.to_string(),
+ err,
+ })
+ .map(patch::PatchId::from)?;
+ Ok(Self::UpdatePatch { dst, patch })
+ } else {
+ Ok(Self::PushRef { dst })
+ }
+ }
+ }
+}
+
/// Run a git push command.
pub fn run(
mut specs: Vec<String>,
@@ -268,9 +307,10 @@ pub fn run(
}
Command::Push(git::Refspec { src, dst, force }) => {
let patches = crate::patches_mut(profile, stored)?;
+ let action = PushAction::new(dst)?;
- if dst == &*rad::PATCHES_REFNAME {
- patch_open(
+ match action {
+ PushAction::OpenPatch => patch_open(
src,
&remote,
&nid,
@@ -280,27 +320,20 @@ pub fn run(
&signer,
profile,
opts.clone(),
- )
- } else {
- let dst = git::Qualified::from_refstr(dst)
- .ok_or_else(|| Error::InvalidQualifiedRef(dst.clone()))?;
-
- if let Some(oid) = dst.strip_prefix(git::refname!("refs/heads/patches")) {
- let oid = git::Oid::from_str(oid)?;
-
- patch_update(
- src,
- &dst,
- *force,
- &oid,
- &nid,
- &working,
- stored,
- patches,
- &signer,
- opts.clone(),
- )
- } else {
+ ),
+ PushAction::UpdatePatch { dst, patch } => patch_update(
+ src,
+ &dst,
+ *force,
+ patch,
+ &nid,
+ &working,
+ stored,
+ patches,
+ &signer,
+ opts.clone(),
+ ),
+ PushAction::PushRef { dst } => {
let identity = stored.identity()?;
let crefs = identity.canonical_refs_or_default(|| {
let rule = identity.doc().default_branch_rule()?;
@@ -573,7 +606,7 @@ fn patch_update<G>(
src: &git::Oid,
dst: &git::Qualified,
force: bool,
- oid: &git::Oid,
+ patch_id: patch::PatchId,
nid: &NodeId,
working: &git::raw::Repository,
stored: &storage::git::Repository,
@@ -588,7 +621,6 @@ where
G: crypto::signature::Signer<crypto::Signature>,
{
let commit = *src;
- let patch_id = radicle::cob::ObjectId::from(oid);
let dst = dst.with_namespace(nid.into());
push_ref(src, &dst, force, working, stored.raw())?;
diff --git a/crates/radicle-remote-helper/src/push/error.rs b/crates/radicle-remote-helper/src/push/error.rs
new file mode 100644
index 0000000000..924c226baf
--- /dev/null
+++ b/crates/radicle-remote-helper/src/push/error.rs
@@ -0,0 +1,14 @@
+use radicle::storage::git;
+use thiserror::Error;
+
+#[derive(Debug, Error)]
+pub enum PushAction {
+ #[error("invalid reference {refname}, expected qualified reference starting with `refs/`")]
+ InvalidRef { refname: git::RefString },
+ #[error("found refs/heads/patches/{suffix} where {suffix} was an invalid Patch ID")]
+ InvalidPatchId {
+ suffix: String,
+ #[source]
+ err: git::raw::Error,
+ },
+}
Exit code: 0
shell: 'cargo --version rustc --version cargo fmt --check cargo clippy --all-targets --workspace -- --deny warnings cargo build --all-targets --workspace cargo doc --workspace --no-deps cargo test --workspace --no-fail-fast '
Commands:
$ podman run --name ca30dfc1-2179-4d80-9b9b-01e928dfab6f -v /opt/radcis/ci.rad.levitte.org/cci/state/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/s:/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/s:ro -v /opt/radcis/ci.rad.levitte.org/cci/state/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w:/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w -w /ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w -v /opt/radcis/ci.rad.levitte.org/.radicle:/${id}/.radicle:ro -e RAD_HOME=/${id}/.radicle rust:trixie bash /ca30dfc1-2179-4d80-9b9b-01e928dfab6f/s/script.sh
+ cargo --version
info: syncing channel updates for '1.85-x86_64-unknown-linux-gnu'
info: latest update on 2025-03-18, rust version 1.85.1 (4eb161250 2025-03-15)
info: downloading component 'cargo'
info: downloading component 'clippy'
info: downloading component 'rust-docs'
info: downloading component 'rust-src'
info: downloading component 'rust-std'
info: downloading component 'rustc'
info: downloading component 'rustfmt'
info: installing component 'cargo'
info: installing component 'clippy'
info: installing component 'rust-docs'
info: installing component 'rust-src'
info: installing component 'rust-std'
info: installing component 'rustc'
info: installing component 'rustfmt'
cargo 1.85.1 (d73d2caf9 2024-12-31)
+ rustc --version
rustc 1.85.1 (4eb161250 2025-03-15)
+ cargo fmt --check
+ cargo clippy --all-targets --workspace -- --deny warnings
Updating crates.io index
Downloading crates ...
Downloaded adler2 v2.0.0
Downloaded aead v0.5.2
Downloaded bytesize v2.0.1
Downloaded base64 v0.21.7
Downloaded phf_shared v0.11.3
Downloaded amplify v4.6.0
Downloaded percent-encoding v2.3.1
Downloaded cfg-if v1.0.0
Downloaded cc v1.2.2
Downloaded phf v0.11.3
Downloaded digest v0.10.7
Downloaded git2 v0.19.0
Downloaded ref-cast-impl v1.0.24
Downloaded escargot v0.5.10
Downloaded tree-sitter v0.24.4
Downloaded tempfile v3.10.1
Downloaded tinyvec v1.6.0
Downloaded lazy_static v1.5.0
Downloaded serde_json v1.0.140
Downloaded timeago v0.4.2
Downloaded gix-quote v0.4.15
Downloaded gix-chunk v0.4.11
Downloaded noise-framework v0.4.0
Downloaded localtime v1.3.1
Downloaded sqlite v0.32.0
Downloaded gix-prompt v0.9.1
Downloaded outref v0.5.2
Downloaded gix-commitgraph v0.25.1
Downloaded tree-sitter-highlight v0.24.4
Downloaded litemap v0.7.5
Downloaded tree-sitter-json v0.24.8
Downloaded gix-negotiate v0.17.0
Downloaded gix-revwalk v0.17.0
Downloaded multibase v0.9.1
Downloaded gix-hash v0.15.1
Downloaded gix-hashtable v0.6.0
Downloaded gix-fs v0.12.1
Downloaded gix-shallow v0.1.0
Downloaded gix-config-value v0.14.12
Downloaded gix-actor v0.33.2
Downloaded tree-sitter-html v0.23.2
Downloaded rsa v0.9.6
Downloaded idna_adapter v1.2.0
Downloaded tree-sitter-toml-ng v0.6.0
Downloaded opaque-debug v0.3.1
Downloaded signal-hook v0.3.18
Downloaded gix-validate v0.9.4
Downloaded inout v0.1.3
Downloaded hmac v0.12.1
Downloaded unicode-display-width v0.3.0
Downloaded normalize-line-endings v0.3.0
Downloaded utf8_iter v1.0.4
Downloaded xattr v1.3.1
Downloaded itoa v1.0.11
Downloaded newline-converter v0.3.0
Downloaded keccak v0.1.5
Downloaded universal-hash v0.5.1
Downloaded utf16_iter v1.0.5
Downloaded lexopt v0.3.0
Downloaded io-reactor v0.5.2
Downloaded num v0.4.3
Downloaded utf8parse v0.2.1
Downloaded nonempty v0.5.0
Downloaded serde v1.0.219
Downloaded unicode-width v0.1.11
Downloaded num-rational v0.4.2
Downloaded writeable v0.5.5
Downloaded num-complex v0.4.6
Downloaded socket2 v0.5.7
Downloaded icu_normalizer_data v1.5.1
Downloaded once_cell v1.21.3
Downloaded icu_provider v1.5.0
Downloaded num-integer v0.1.46
Downloaded gix-transport v0.44.0
Downloaded uuid v1.16.0
Downloaded mio v1.0.4
Downloaded url v2.5.4
Downloaded inquire v0.7.5
Downloaded unicode-segmentation v1.11.0
Downloaded zerovec v0.10.4
Downloaded unicode-normalization v0.1.23
Downloaded hashbrown v0.14.3
Downloaded tree-sitter-c v0.23.2
Downloaded zerocopy v0.7.35
Downloaded p384 v0.13.0
Downloaded vcpkg v0.2.15
Downloaded icu_properties_data v1.5.1
Downloaded syn v2.0.89
Downloaded tree-sitter-md v0.3.2
Downloaded tree-sitter-rust v0.23.2
Downloaded bstr v1.9.1
Downloaded regex-syntax v0.8.5
Downloaded tree-sitter-bash v0.23.3
Downloaded rustix v1.0.7
Downloaded regex v1.11.1
Downloaded bloomy v1.2.0
Downloaded jsonschema v0.30.0
Downloaded idna v1.0.3
Downloaded regex-automata v0.4.9
Downloaded tree-sitter-ruby v0.23.1
Downloaded tree-sitter-python v0.23.4
Downloaded rustix v0.38.34
Downloaded chrono v0.4.38
Downloaded winnow v0.6.26
Downloaded p521 v0.13.3
Downloaded crossterm v0.29.0
Downloaded num-traits v0.2.19
Downloaded indexmap v2.2.6
Downloaded jiff v0.2.1
Downloaded num-bigint-dig v0.8.4
Downloaded memchr v2.7.2
Downloaded cyphernet v0.5.2
Downloaded unicode-ident v1.0.12
Downloaded rand v0.8.5
Downloaded libc v0.2.174
Downloaded tree-sitter-typescript v0.23.2
Downloaded sha3 v0.10.8
Downloaded icu_properties v1.5.1
Downloaded miniz_oxide v0.8.8
Downloaded litrs v0.4.1
Downloaded icu_collections v1.5.0
Downloaded num-bigint v0.4.6
Downloaded emojis v0.6.4
Downloaded mio v0.8.11
Downloaded schemars v1.0.0-alpha.17
Downloaded write16 v1.0.0
Downloaded gix-pack v0.56.0
Downloaded tree-sitter-go v0.23.4
Downloaded icu_locid v1.5.0
Downloaded gix-ref v0.49.1
Downloaded tar v0.4.40
Downloaded signals_receipts v0.2.0
Downloaded uuid-simd v0.8.0
Downloaded jobserver v0.1.31
Downloaded serde_derive v1.0.219
Downloaded chacha20poly1305 v0.10.1
Downloaded icu_normalizer v1.5.0
Downloaded p256 v0.13.2
Downloaded gix-traverse v0.43.1
Downloaded memmap2 v0.9.4
Downloaded iana-time-zone v0.1.60
Downloaded maybe-async v0.2.10
Downloaded nonempty v0.9.0
Downloaded gix-sec v0.10.12
Downloaded gix-lock v15.0.1
Downloaded libm v0.2.8
Downloaded icu_provider_macros v1.5.0
Downloaded group v0.13.0
Downloaded gix-diff v0.49.0
Downloaded gix-protocol v0.47.0
Downloaded gix-url v0.28.2
Downloaded linux-raw-sys v0.4.13
Downloaded gix-trace v0.1.12
Downloaded zerovec-derive v0.10.3
Downloaded zeroize v1.7.0
Downloaded zerofrom v0.1.6
Downloaded yoke v0.7.5
Downloaded yansi v0.5.1
Downloaded icu_locid_transform_data v1.5.1
Downloaded gix-features v0.39.1
Downloaded gix-credentials v0.26.0
Downloaded typenum v1.17.0
Downloaded der v0.7.9
Downloaded gix-utils v0.1.14
Downloaded ryu v1.0.17
Downloaded crossbeam-channel v0.5.15
Downloaded gix-tempfile v15.0.0
Downloaded netservices v0.8.0
Downloaded libgit2-sys v0.17.0+1.8.1
Downloaded icu_locid_transform v1.5.0
Downloaded gix-refspec v0.27.0
Downloaded gix-odb v0.66.0
Downloaded thiserror v2.0.12
Downloaded synstructure v0.13.1
Downloaded spin v0.9.8
Downloaded snapbox v0.4.17
Downloaded smallvec v1.13.2
Downloaded derive_more v2.0.1
Downloaded polyval v0.6.2
Downloaded yoke-derive v0.7.5
Downloaded home v0.5.9
Downloaded gix-date v0.9.4
Downloaded zerofrom-derive v0.1.6
Downloaded schemars_derive v1.0.0-alpha.17
Downloaded tree-sitter-language v0.1.2
Downloaded thiserror v1.0.69
Downloaded spki v0.7.3
Downloaded shlex v1.3.0
Downloaded gix-revision v0.31.1
Downloaded tinystr v0.7.6
Downloaded sha1_smol v1.0.0
Downloaded qcheck-macros v1.0.0
Downloaded linux-raw-sys v0.9.4
Downloaded num-cmp v0.1.0
Downloaded gix-path v0.10.15
Downloaded syn v1.0.109
Downloaded rand_core v0.6.4
Downloaded pkg-config v0.3.30
Downloaded flate2 v1.1.1
Downloaded num-iter v0.1.45
Downloaded gix-object v0.46.1
Downloaded signature v2.2.0
Downloaded scrypt v0.11.0
Downloaded data-encoding v2.5.0
Downloaded gix-packetline v0.18.4
Downloaded subtle v2.5.0
Downloaded scopeguard v1.2.0
Downloaded referencing v0.30.0
Downloaded getrandom v0.2.15
Downloaded ec25519 v0.1.0
Downloaded walkdir v2.5.0
Downloaded log v0.4.21
Downloaded stable_deref_trait v1.2.0
Downloaded ssh-encoding v0.2.0
Downloaded socks5-client v0.4.1
Downloaded siphasher v1.0.1
Downloaded radicle-std-ext v0.1.0
Downloaded radicle-git-ext v0.8.1
Downloaded fraction v0.15.3
Downloaded sqlite3-src v0.5.1
Downloaded crypto-bigint v0.5.5
Downloaded crossbeam-utils v0.8.19
Downloaded gix-command v0.4.1
Downloaded vsimd v0.8.0
Downloaded lock_api v0.4.11
Downloaded tree-sitter-css v0.23.1
Downloaded thiserror-impl v2.0.12
Downloaded thiserror-impl v1.0.69
Downloaded streaming-iterator v0.1.9
Downloaded sqlite3-sys v0.15.2
Downloaded siphasher v0.3.11
Downloaded signature v1.6.4
Downloaded signal-hook-mio v0.2.4
Downloaded shell-words v1.1.0
Downloaded rand_chacha v0.3.1
Downloaded radicle-surf v0.22.0
Downloaded proc-macro-error-attr v1.0.4
Downloaded ecdsa v0.16.9
Downloaded ct-codecs v1.1.1
Downloaded anyhow v1.0.82
Downloaded amplify_syn v2.0.1
Downloaded version_check v0.9.4
Downloaded popol v3.0.0
Downloaded git-ref-format-core v0.3.1
Downloaded fxhash v0.2.1
Downloaded errno v0.3.13
Downloaded serde_derive_internals v0.29.1
Downloaded prodash v29.0.2
Downloaded git-ref-format-macro v0.3.1
Downloaded colored v2.1.0
Downloaded cipher v0.4.4
Downloaded chacha20 v0.9.1
Downloaded ssh-key v0.6.6
Downloaded ssh-cipher v0.2.0
Downloaded similar v2.5.0
Downloaded signal-hook-registry v1.4.5
Downloaded sec1 v0.7.3
Downloaded salsa20 v0.10.2
Downloaded quote v1.0.36
Downloaded qcheck v1.0.0
Downloaded proc-macro-error v1.0.4
Downloaded pretty_assertions v1.4.0
Downloaded pkcs8 v0.10.2
Downloaded pkcs1 v0.7.5
Downloaded ghash v0.5.1
Downloaded form_urlencoded v1.2.1
Downloaded filetime v0.2.23
Downloaded faster-hex v0.9.0
Downloaded document-features v0.2.11
Downloaded colorchoice v1.0.0
Downloaded bcrypt-pbkdf v0.10.0
Downloaded anstyle-parse v0.2.3
Downloaded snapbox-macros v0.3.8
Downloaded sha2 v0.10.8
Downloaded sem_safe v0.2.0
Downloaded ref-cast v1.0.24
Downloaded proc-macro2 v1.0.92
Downloaded primeorder v0.13.6
Downloaded generic-array v0.14.7
Downloaded fluent-uri v0.3.2
Downloaded ed25519 v1.5.3
Downloaded dyn-clone v1.0.17
Downloaded data-encoding-macro-internal v0.1.12
Downloaded data-encoding-macro v0.1.14
Downloaded cypheraddr v0.4.0
Downloaded ctr v0.9.2
Downloaded byteorder v1.5.0
Downloaded base32 v0.4.0
Downloaded arc-swap v1.7.1
Downloaded same-file v1.0.6
Downloaded rfc6979 v0.4.0
Downloaded ppv-lite86 v0.2.17
Downloaded libz-sys v1.1.16
Downloaded equivalent v1.0.1
Downloaded crypto-common v0.1.6
Downloaded crossterm v0.25.0
Downloaded block-buffer v0.10.4
Downloaded ascii v1.1.0
Downloaded tinyvec_macros v0.1.1
Downloaded email_address v0.2.9
Downloaded either v1.11.0
Downloaded cpufeatures v0.2.12
Downloaded convert_case v0.7.1
Downloaded cyphergraphy v0.3.0
Downloaded blowfish v0.9.1
Downloaded amplify_derive v4.0.0
Downloaded ahash v0.8.11
Downloaded poly1305 v0.8.0
Downloaded git-ref-format v0.3.1
Downloaded ff v0.13.0
Downloaded fastrand v2.1.0
Downloaded elliptic-curve v0.13.8
Downloaded displaydoc v0.2.5
Downloaded diff v0.1.13
Downloaded crc32fast v1.4.0
Downloaded derive_more-impl v2.0.1
Downloaded borrow-or-share v0.2.2
Downloaded anstyle v1.0.6
Downloaded anstream v0.6.13
Downloaded pem-rfc7468 v0.7.0
Downloaded parking_lot_core v0.9.9
Downloaded parking_lot v0.12.3
Downloaded fancy-regex v0.14.0
Downloaded const-oid v0.9.6
Downloaded cbc v0.1.2
Downloaded bitflags v1.3.2
Downloaded base64ct v1.6.0
Downloaded base64 v0.13.1
Downloaded base-x v0.2.11
Downloaded autocfg v1.2.0
Downloaded block-padding v0.3.3
Downloaded base64 v0.22.1
Downloaded bitflags v2.9.1
Downloaded anstyle-query v1.0.2
Downloaded aho-corasick v1.1.3
Downloaded pbkdf2 v0.12.2
Downloaded bit-set v0.8.0
Downloaded base16ct v0.2.0
Downloaded aes-gcm v0.10.3
Downloaded bytecount v0.6.8
Downloaded amplify_num v0.5.2
Downloaded bit-vec v0.8.0
Downloaded aes v0.8.4
Compiling libc v0.2.174
Compiling proc-macro2 v1.0.92
Compiling unicode-ident v1.0.12
Checking cfg-if v1.0.0
Compiling shlex v1.3.0
Compiling version_check v0.9.4
Checking memchr v2.7.2
Compiling autocfg v1.2.0
Compiling quote v1.0.36
Compiling syn v2.0.89
Compiling serde v1.0.219
Checking getrandom v0.2.15
Checking smallvec v1.13.2
Checking aho-corasick v1.1.3
Compiling jobserver v0.1.31
Checking regex-syntax v0.8.5
Compiling cc v1.2.2
Compiling typenum v1.17.0
Compiling generic-array v0.14.7
Checking log v0.4.21
Checking regex-automata v0.4.9
Checking rand_core v0.6.4
Checking fastrand v2.1.0
Checking crypto-common v0.1.6
Compiling lock_api v0.4.11
Checking bitflags v2.9.1
Compiling parking_lot_core v0.9.9
Checking scopeguard v1.2.0
Checking subtle v2.5.0
Checking stable_deref_trait v1.2.0
Checking tinyvec_macros v0.1.1
Checking once_cell v1.21.3
Checking parking_lot v0.12.3
Compiling syn v1.0.109
Checking tinyvec v1.6.0
Compiling synstructure v0.13.1
Checking bstr v1.9.1
Checking zeroize v1.7.0
Checking unicode-normalization v0.1.23
Checking cpufeatures v0.2.12
Checking litemap v0.7.5
Compiling crc32fast v1.4.0
Compiling thiserror v2.0.12
Compiling icu_locid_transform_data v1.5.1
Checking writeable v0.5.5
Checking block-padding v0.3.3
Compiling icu_properties_data v1.5.1
Checking inout v0.1.3
Checking block-buffer v0.10.4
Checking hashbrown v0.14.3
Compiling pkg-config v0.3.30
Compiling serde_derive v1.0.219
Compiling zerofrom-derive v0.1.6
Compiling yoke-derive v0.7.5
Checking zerofrom v0.1.6
Compiling zerovec-derive v0.10.3
Checking yoke v0.7.5
Compiling displaydoc v0.2.5
Compiling thiserror-impl v2.0.12
Compiling icu_provider_macros v1.5.0
Checking zerovec v0.10.4
Compiling icu_normalizer_data v1.5.1
Checking tinystr v0.7.6
Checking icu_locid v1.5.0
Checking itoa v1.0.11
Checking icu_collections v1.5.0
Checking digest v0.10.7
Checking icu_provider v1.5.0
Checking cipher v0.4.4
Checking icu_locid_transform v1.5.0
Checking write16 v1.0.0
Checking utf8_iter v1.0.4
Checking utf16_iter v1.0.5
Compiling thiserror v1.0.69
Compiling thiserror-impl v1.0.69
Checking icu_properties v1.5.1
Compiling rustix v0.38.34
Checking percent-encoding v2.3.1
Checking linux-raw-sys v0.4.13
Checking sha2 v0.10.8
Checking form_urlencoded v1.2.1
Checking universal-hash v0.5.1
Compiling vcpkg v0.2.15
Checking opaque-debug v0.3.1
Compiling amplify_syn v2.0.1
Checking icu_normalizer v1.5.0
Compiling libz-sys v1.1.16
Checking idna_adapter v1.2.0
Checking gix-trace v0.1.12
Checking idna v1.0.3
Checking byteorder v1.5.0
Checking url v2.5.4
Compiling data-encoding v2.5.0
Checking tempfile v3.10.1
Compiling amplify_derive v4.0.0
Checking signature v1.6.4
Checking ascii v1.1.0
Checking amplify_num v0.5.2
Checking ed25519 v1.5.3
Compiling data-encoding-macro-internal v0.1.12
Checking faster-hex v0.9.0
Compiling libgit2-sys v0.17.0+1.8.1
Checking aead v0.5.2
Compiling num-traits v0.2.19
Checking data-encoding-macro v0.1.14
Compiling proc-macro-error-attr v1.0.4
Checking ct-codecs v1.1.1
Checking base-x v0.2.11
Checking multibase v0.9.1
Checking ec25519 v0.1.0
Checking poly1305 v0.8.0
Checking chacha20 v0.9.1
Checking gix-utils v0.1.14
Compiling proc-macro-error v1.0.4
Checking adler2 v2.0.0
Checking miniz_oxide v0.8.8
Checking amplify v4.6.0
Checking cyphergraphy v0.3.0
Checking gix-hash v0.15.1
Checking same-file v1.0.6
Checking keccak v0.1.5
Compiling crossbeam-utils v0.8.19
Checking walkdir v2.5.0
Checking sha3 v0.10.8
Checking flate2 v1.1.1
Compiling git-ref-format-core v0.3.1
Checking polyval v0.6.2
Checking hmac v0.12.1
Compiling sqlite3-src v0.5.1
Checking prodash v29.0.2
Checking sha1_smol v1.0.0
Checking ppv-lite86 v0.2.17
Checking base64ct v1.6.0
Checking base32 v0.4.0
Checking equivalent v1.0.1
Compiling serde_json v1.0.140
Checking rand_chacha v0.3.1
Checking pem-rfc7468 v0.7.0
Checking indexmap v2.2.6
Checking cypheraddr v0.4.0
Checking gix-features v0.39.1
Compiling git-ref-format-macro v0.3.1
Checking pbkdf2 v0.12.2
Checking ghash v0.5.1
Checking chacha20poly1305 v0.10.1
Checking aes v0.8.4
Checking ctr v0.9.2
Checking ryu v1.0.17
Checking aes-gcm v0.10.3
Checking git-ref-format v0.3.1
Checking noise-framework v0.4.0
Checking crossbeam-channel v0.5.15
Checking socks5-client v0.4.1
Checking rand v0.8.5
Checking ssh-encoding v0.2.0
Checking blowfish v0.9.1
Checking cbc v0.1.2
Checking home v0.5.9
Checking radicle-std-ext v0.1.0
Compiling ref-cast v1.0.24
Checking gix-path v0.10.15
Checking ssh-cipher v0.2.0
Checking bcrypt-pbkdf v0.10.0
Checking cyphernet v0.5.2
Compiling ref-cast-impl v1.0.24
Checking signature v2.2.0
Checking ssh-key v0.6.6
Checking qcheck v1.0.0
Checking radicle-ssh v0.9.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-ssh)
Checking lazy_static v1.5.0
Checking dyn-clone v1.0.17
Checking siphasher v1.0.1
Checking nonempty v0.9.0
Compiling serde_derive_internals v0.29.1
Checking radicle-dag v0.10.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-dag)
Checking tree-sitter-language v0.1.2
Checking jiff v0.2.1
Compiling schemars_derive v1.0.0-alpha.17
Checking iana-time-zone v0.1.60
Checking chrono v0.4.38
Checking schemars v1.0.0-alpha.17
Checking gix-date v0.9.4
Checking colored v2.1.0
Checking localtime v1.3.1
Checking bytesize v2.0.1
Checking winnow v0.6.26
Compiling anyhow v1.0.82
Checking base64 v0.21.7
Checking gix-hashtable v0.6.0
Checking gix-validate v0.9.4
Checking anstyle-query v1.0.2
Checking memmap2 v0.9.4
Checking gix-chunk v0.4.11
Checking sem_safe v0.2.0
Checking errno v0.3.13
Checking signals_receipts v0.2.0
Checking gix-commitgraph v0.25.1
Checking gix-actor v0.33.2
Checking gix-object v0.46.1
Compiling signal-hook v0.3.18
Checking gix-fs v0.12.1
Checking signal-hook-registry v1.4.5
Checking gix-revwalk v0.17.0
Checking gix-tempfile v15.0.0
Checking radicle-signals v0.11.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-signals)
Checking mio v1.0.4
Checking mio v0.8.11
Compiling tree-sitter v0.24.4
Compiling unicode-segmentation v1.11.0
Compiling convert_case v0.7.1
Checking signal-hook-mio v0.2.4
Checking regex v1.11.1
Compiling rustix v1.0.7
Checking shell-words v1.1.0
Checking gix-command v0.4.1
Compiling xattr v1.3.1
Compiling derive_more-impl v2.0.1
Compiling filetime v0.2.23
Checking linux-raw-sys v0.9.4
Checking bitflags v1.3.2
Checking lexopt v0.3.0
Compiling litrs v0.4.1
Checking utf8parse v0.2.1
Checking anstyle-parse v0.2.3
Checking derive_more v2.0.1
Checking crossterm v0.25.0
Compiling document-features v0.2.11
Compiling tar v0.4.40
Checking newline-converter v0.3.0
Checking gix-lock v15.0.1
Checking gix-url v0.28.2
Checking gix-config-value v0.14.12
Checking gix-quote v0.4.15
Checking fxhash v0.2.1
Checking gix-sec v0.10.12
Checking unicode-width v0.1.11
Checking colorchoice v1.0.0
Checking anstyle v1.0.6
Checking streaming-iterator v0.1.9
Checking anstream v0.6.13
Checking inquire v0.7.5
Checking gix-prompt v0.9.1
Compiling radicle-surf v0.22.0
Checking crossterm v0.29.0
Checking unicode-display-width v0.3.0
Checking gix-traverse v0.43.1
Checking gix-revision v0.31.1
Checking gix-diff v0.49.0
Checking gix-packetline v0.18.4
Compiling tree-sitter-toml-ng v0.6.0
Compiling tree-sitter-python v0.23.4
Compiling tree-sitter-md v0.3.2
Compiling tree-sitter-bash v0.23.3
Compiling tree-sitter-html v0.23.2
Compiling tree-sitter-go v0.23.4
Compiling tree-sitter-typescript v0.23.2
Compiling tree-sitter-ruby v0.23.1
Compiling tree-sitter-c v0.23.2
Compiling tree-sitter-css v0.23.1
Checking sqlite3-sys v0.15.2
Checking sqlite v0.32.0
Compiling tree-sitter-json v0.24.8
Compiling tree-sitter-rust v0.23.2
Checking gix-transport v0.44.0
Checking gix-pack v0.56.0
Checking gix-refspec v0.27.0
Checking gix-credentials v0.26.0
Checking snapbox-macros v0.3.8
Checking gix-shallow v0.1.0
Checking gix-ref v0.49.1
Checking gix-negotiate v0.17.0
Compiling maybe-async v0.2.10
Checking similar v2.5.0
Checking arc-swap v1.7.1
Checking base64 v0.13.1
Compiling radicle-cli v0.13.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-cli)
Checking normalize-line-endings v0.3.0
Checking nonempty v0.5.0
Checking gix-protocol v0.47.0
Checking snapbox v0.4.17
Checking gix-odb v0.66.0
Checking tree-sitter-highlight v0.24.4
Checking popol v3.0.0
Checking timeago v0.4.2
Checking either v1.11.0
Checking io-reactor v0.5.2
Checking salsa20 v0.10.2
Checking socket2 v0.5.7
Compiling radicle-node v0.11.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-node)
Checking siphasher v0.3.11
Checking yansi v0.5.1
Checking diff v0.1.13
Checking netservices v0.8.0
Checking pretty_assertions v1.4.0
Checking bloomy v1.2.0
Checking scrypt v0.11.0
Checking num-integer v0.1.46
Compiling escargot v0.5.10
Checking radicle-systemd v0.9.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-systemd)
Checking num-bigint v0.4.6
Compiling qcheck-macros v1.0.0
Compiling ahash v0.8.11
Compiling radicle-remote-helper v0.10.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-remote-helper)
Checking num-iter v0.1.45
Checking num-complex v0.4.6
Checking num-rational v0.4.2
Checking zerocopy v0.7.35
Checking borrow-or-share v0.2.2
Checking bit-vec v0.8.0
Checking fluent-uri v0.3.2
Checking bit-set v0.8.0
Checking num v0.4.3
Checking phf_shared v0.11.3
Checking uuid v1.16.0
Checking vsimd v0.8.0
Checking outref v0.5.2
Checking referencing v0.30.0
Checking phf v0.11.3
Checking fraction v0.15.3
Checking uuid-simd v0.8.0
Checking fancy-regex v0.14.0
Checking email_address v0.2.9
Checking num-cmp v0.1.0
Checking base64 v0.22.1
Checking bytecount v0.6.8
Checking emojis v0.6.4
Checking jsonschema v0.30.0
Checking git2 v0.19.0
Checking radicle-git-ext v0.8.1
Checking radicle-term v0.12.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-term)
Checking radicle-crypto v0.12.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-crypto)
Checking radicle-cob v0.14.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-cob)
Checking radicle v0.15.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle)
Checking radicle-fetch v0.11.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-fetch)
Checking radicle-cli-test v0.11.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-cli-test)
Checking radicle-schemars v0.1.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-schemars)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 45.58s
+ cargo build --all-targets --workspace
Compiling cfg-if v1.0.0
Compiling libc v0.2.174
Compiling shlex v1.3.0
Compiling memchr v2.7.2
Compiling serde v1.0.219
Compiling smallvec v1.13.2
Compiling aho-corasick v1.1.3
Compiling jobserver v0.1.31
Compiling cc v1.2.2
Compiling getrandom v0.2.15
Compiling regex-syntax v0.8.5
Compiling typenum v1.17.0
Compiling log v0.4.21
Compiling rand_core v0.6.4
Compiling bitflags v2.9.1
Compiling fastrand v2.1.0
Compiling regex-automata v0.4.9
Compiling generic-array v0.14.7
Compiling scopeguard v1.2.0
Compiling lock_api v0.4.11
Compiling zerofrom v0.1.6
Compiling parking_lot_core v0.9.9
Compiling crypto-common v0.1.6
Compiling subtle v2.5.0
Compiling stable_deref_trait v1.2.0
Compiling yoke v0.7.5
Compiling parking_lot v0.12.3
Compiling once_cell v1.21.3
Compiling tinyvec_macros v0.1.1
Compiling tinyvec v1.6.0
Compiling zerovec v0.10.4
Compiling zeroize v1.7.0
Compiling cpufeatures v0.2.12
Compiling writeable v0.5.5
Compiling unicode-normalization v0.1.23
Compiling litemap v0.7.5
Compiling tinystr v0.7.6
Compiling block-padding v0.3.3
Compiling thiserror v2.0.12
Compiling inout v0.1.3
Compiling icu_locid v1.5.0
Compiling icu_locid_transform_data v1.5.1
Compiling block-buffer v0.10.4
Compiling hashbrown v0.14.3
Compiling itoa v1.0.11
Compiling adler2 v2.0.0
Compiling miniz_oxide v0.8.8
Compiling icu_provider v1.5.0
Compiling bstr v1.9.1
Compiling icu_locid_transform v1.5.0
Compiling digest v0.10.7
Compiling cipher v0.4.4
Compiling icu_properties_data v1.5.1
Compiling crc32fast v1.4.0
Compiling icu_collections v1.5.0
Compiling icu_normalizer_data v1.5.1
Compiling utf8_iter v1.0.4
Compiling icu_properties v1.5.1
Compiling utf16_iter v1.0.5
Compiling write16 v1.0.0
Compiling percent-encoding v2.3.1
Compiling linux-raw-sys v0.4.13
Compiling thiserror v1.0.69
Compiling sha2 v0.10.8
Compiling rustix v0.38.34
Compiling form_urlencoded v1.2.1
Compiling universal-hash v0.5.1
Compiling opaque-debug v0.3.1
Compiling icu_normalizer v1.5.0
Compiling libz-sys v1.1.16
Compiling idna_adapter v1.2.0
Compiling idna v1.0.3
Compiling byteorder v1.5.0
Compiling gix-trace v0.1.12
Compiling url v2.5.4
Compiling tempfile v3.10.1
Compiling data-encoding v2.5.0
Compiling signature v1.6.4
Compiling ascii v1.1.0
Compiling amplify_num v0.5.2
Compiling data-encoding-macro v0.1.14
Compiling ed25519 v1.5.3
Compiling libgit2-sys v0.17.0+1.8.1
Compiling aead v0.5.2
Compiling faster-hex v0.9.0
Compiling base-x v0.2.11
Compiling ct-codecs v1.1.1
Compiling multibase v0.9.1
Compiling ec25519 v0.1.0
Compiling poly1305 v0.8.0
Compiling amplify v4.6.0
Compiling chacha20 v0.9.1
Compiling gix-utils v0.1.14
Compiling cyphergraphy v0.3.0
Compiling num-traits v0.2.19
Compiling gix-hash v0.15.1
Compiling keccak v0.1.5
Compiling same-file v1.0.6
Compiling walkdir v2.5.0
Compiling sha3 v0.10.8
Compiling polyval v0.6.2
Compiling git-ref-format-core v0.3.1
Compiling flate2 v1.1.1
Compiling hmac v0.12.1
Compiling sqlite3-src v0.5.1
Compiling prodash v29.0.2
Compiling sha1_smol v1.0.0
Compiling base32 v0.4.0
Compiling base64ct v1.6.0
Compiling equivalent v1.0.1
Compiling ppv-lite86 v0.2.17
Compiling pem-rfc7468 v0.7.0
Compiling rand_chacha v0.3.1
Compiling indexmap v2.2.6
Compiling gix-features v0.39.1
Compiling cypheraddr v0.4.0
Compiling git-ref-format-macro v0.3.1
Compiling pbkdf2 v0.12.2
Compiling ghash v0.5.1
Compiling crossbeam-utils v0.8.19
Compiling chacha20poly1305 v0.10.1
Compiling ctr v0.9.2
Compiling aes v0.8.4
Compiling ryu v1.0.17
Compiling serde_json v1.0.140
Compiling aes-gcm v0.10.3
Compiling git-ref-format v0.3.1
Compiling noise-framework v0.4.0
Compiling crossbeam-channel v0.5.15
Compiling socks5-client v0.4.1
Compiling rand v0.8.5
Compiling ssh-encoding v0.2.0
Compiling blowfish v0.9.1
Compiling cbc v0.1.2
Compiling radicle-std-ext v0.1.0
Compiling home v0.5.9
Compiling gix-path v0.10.15
Compiling ssh-cipher v0.2.0
Compiling bcrypt-pbkdf v0.10.0
Compiling cyphernet v0.5.2
Compiling signature v2.2.0
Compiling ssh-key v0.6.6
Compiling ref-cast v1.0.24
Compiling qcheck v1.0.0
Compiling radicle-ssh v0.9.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-ssh)
Compiling dyn-clone v1.0.17
Compiling lazy_static v1.5.0
Compiling siphasher v1.0.1
Compiling radicle-dag v0.10.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-dag)
Compiling nonempty v0.9.0
Compiling tree-sitter-language v0.1.2
Compiling iana-time-zone v0.1.60
Compiling jiff v0.2.1
Compiling chrono v0.4.38
Compiling schemars v1.0.0-alpha.17
Compiling colored v2.1.0
Compiling bytesize v2.0.1
Compiling gix-date v0.9.4
Compiling localtime v1.3.1
Compiling winnow v0.6.26
Compiling base64 v0.21.7
Compiling gix-actor v0.33.2
Compiling gix-hashtable v0.6.0
Compiling gix-validate v0.9.4
Compiling anstyle-query v1.0.2
Compiling memmap2 v0.9.4
Compiling gix-object v0.46.1
Compiling anyhow v1.0.82
Compiling gix-chunk v0.4.11
Compiling errno v0.3.13
Compiling sem_safe v0.2.0
Compiling unicode-segmentation v1.11.0
Compiling signals_receipts v0.2.0
Compiling gix-commitgraph v0.25.1
Compiling gix-revwalk v0.17.0
Compiling gix-fs v0.12.1
Compiling signal-hook-registry v1.4.5
Compiling gix-tempfile v15.0.0
Compiling signal-hook v0.3.18
Compiling radicle-signals v0.11.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-signals)
Compiling mio v1.0.4
Compiling mio v0.8.11
Compiling tree-sitter v0.24.4
Compiling signal-hook-mio v0.2.4
Compiling convert_case v0.7.1
Compiling regex v1.11.1
Compiling shell-words v1.1.0
Compiling gix-command v0.4.1
Compiling derive_more-impl v2.0.1
Compiling xattr v1.3.1
Compiling filetime v0.2.23
Compiling lexopt v0.3.0
Compiling bitflags v1.3.2
Compiling linux-raw-sys v0.9.4
Compiling utf8parse v0.2.1
Compiling anstyle-parse v0.2.3
Compiling rustix v1.0.7
Compiling derive_more v2.0.1
Compiling crossterm v0.25.0
Compiling tar v0.4.40
Compiling sqlite3-sys v0.15.2
Compiling sqlite v0.32.0
Compiling gix-lock v15.0.1
Compiling newline-converter v0.3.0
Compiling gix-config-value v0.14.12
Compiling gix-url v0.28.2
Compiling gix-quote v0.4.15
Compiling fxhash v0.2.1
Compiling gix-sec v0.10.12
Compiling unicode-width v0.1.11
Compiling anstyle v1.0.6
Compiling streaming-iterator v0.1.9
Compiling colorchoice v1.0.0
Compiling anstream v0.6.13
Compiling radicle-surf v0.22.0
Compiling inquire v0.7.5
Compiling gix-prompt v0.9.1
Compiling crossterm v0.29.0
Compiling gix-traverse v0.43.1
Compiling gix-revision v0.31.1
Compiling unicode-display-width v0.3.0
Compiling gix-diff v0.49.0
Compiling gix-packetline v0.18.4
Compiling tree-sitter-go v0.23.4
Compiling tree-sitter-bash v0.23.3
Compiling tree-sitter-md v0.3.2
Compiling tree-sitter-ruby v0.23.1
Compiling tree-sitter-python v0.23.4
Compiling tree-sitter-css v0.23.1
Compiling tree-sitter-rust v0.23.2
Compiling tree-sitter-toml-ng v0.6.0
Compiling tree-sitter-json v0.24.8
Compiling tree-sitter-c v0.23.2
Compiling tree-sitter-html v0.23.2
Compiling tree-sitter-typescript v0.23.2
Compiling gix-transport v0.44.0
Compiling gix-pack v0.56.0
Compiling gix-refspec v0.27.0
Compiling gix-credentials v0.26.0
Compiling snapbox-macros v0.3.8
Compiling gix-shallow v0.1.0
Compiling gix-ref v0.49.1
Compiling gix-negotiate v0.17.0
Compiling radicle-cli v0.13.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-cli)
Compiling arc-swap v1.7.1
Compiling normalize-line-endings v0.3.0
Compiling similar v2.5.0
Compiling nonempty v0.5.0
Compiling base64 v0.13.1
Compiling snapbox v0.4.17
Compiling gix-odb v0.66.0
Compiling gix-protocol v0.47.0
Compiling tree-sitter-highlight v0.24.4
Compiling popol v3.0.0
Compiling either v1.11.0
Compiling timeago v0.4.2
Compiling io-reactor v0.5.2
Compiling salsa20 v0.10.2
Compiling socket2 v0.5.7
Compiling radicle-node v0.11.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-node)
Compiling yansi v0.5.1
Compiling diff v0.1.13
Compiling siphasher v0.3.11
Compiling pretty_assertions v1.4.0
Compiling netservices v0.8.0
Compiling bloomy v1.2.0
Compiling scrypt v0.11.0
Compiling num-integer v0.1.46
Compiling radicle-systemd v0.9.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-systemd)
Compiling escargot v0.5.10
Compiling num-bigint v0.4.6
Compiling radicle-remote-helper v0.10.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-remote-helper)
Compiling num-iter v0.1.45
Compiling num-complex v0.4.6
Compiling borrow-or-share v0.2.2
Compiling num-rational v0.4.2
Compiling zerocopy v0.7.35
Compiling bit-vec v0.8.0
Compiling ahash v0.8.11
Compiling num v0.4.3
Compiling fluent-uri v0.3.2
Compiling bit-set v0.8.0
Compiling phf_shared v0.11.3
Compiling outref v0.5.2
Compiling vsimd v0.8.0
Compiling uuid v1.16.0
Compiling referencing v0.30.0
Compiling phf v0.11.3
Compiling uuid-simd v0.8.0
Compiling fancy-regex v0.14.0
Compiling fraction v0.15.3
Compiling email_address v0.2.9
Compiling bytecount v0.6.8
Compiling num-cmp v0.1.0
Compiling base64 v0.22.1
Compiling emojis v0.6.4
Compiling jsonschema v0.30.0
Compiling git2 v0.19.0
Compiling radicle-git-ext v0.8.1
Compiling radicle-term v0.12.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-term)
Compiling radicle-crypto v0.12.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-crypto)
Compiling radicle-cob v0.14.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-cob)
Compiling radicle v0.15.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle)
Compiling radicle-fetch v0.11.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-fetch)
Compiling radicle-cli-test v0.11.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-cli-test)
Compiling radicle-schemars v0.1.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-schemars)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 06s
+ cargo doc --workspace --no-deps
Checking regex-automata v0.4.9
Compiling syn v1.0.109
Checking idna v1.0.3
Checking radicle-ssh v0.9.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-ssh)
Compiling num-traits v0.2.19
Checking url v2.5.4
Checking git2 v0.19.0
Checking radicle-dag v0.10.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-dag)
Checking bstr v1.9.1
Checking chrono v0.4.38
Compiling amplify_syn v2.0.1
Compiling proc-macro-error v1.0.4
Checking git-ref-format-core v0.3.1
Checking gix-path v0.10.15
Compiling data-encoding-macro-internal v0.1.12
Compiling git-ref-format-macro v0.3.1
Compiling amplify_derive v4.0.0
Checking gix-date v0.9.4
Checking gix-actor v0.33.2
Checking gix-validate v0.9.4
Checking data-encoding-macro v0.1.14
Checking gix-object v0.46.1
Checking multibase v0.9.1
Checking git-ref-format v0.3.1
Checking radicle-git-ext v0.8.1
Checking gix-commitgraph v0.25.1
Checking radicle-signals v0.11.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-signals)
Checking regex v1.11.1
Checking gix-command v0.4.1
Checking radicle-surf v0.22.0
Checking gix-revwalk v0.17.0
Checking tree-sitter v0.24.4
Compiling radicle-cli v0.13.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-cli)
Checking radicle-term v0.12.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-term)
Checking gix-config-value v0.14.12
Checking tree-sitter-toml-ng v0.6.0
Checking tree-sitter-highlight v0.24.4
Checking gix-url v0.28.2
Checking gix-quote v0.4.15
Checking gix-prompt v0.9.1
Checking gix-traverse v0.43.1
Checking gix-revision v0.31.1
Checking gix-diff v0.49.0
Checking gix-packetline v0.18.4
Checking gix-refspec v0.27.0
Checking gix-pack v0.56.0
Checking amplify v4.6.0
Checking gix-transport v0.44.0
Checking gix-credentials v0.26.0
Checking cyphergraphy v0.3.0
Checking gix-shallow v0.1.0
Checking gix-ref v0.49.1
Checking gix-negotiate v0.17.0
Checking cypheraddr v0.4.0
Checking noise-framework v0.4.0
Checking socks5-client v0.4.1
Checking io-reactor v0.5.2
Checking cyphernet v0.5.2
Compiling radicle-node v0.11.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-node)
Checking radicle-crypto v0.12.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-crypto)
Checking gix-protocol v0.47.0
Checking gix-odb v0.66.0
Checking radicle-cob v0.14.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-cob)
Checking netservices v0.8.0
Checking radicle-systemd v0.9.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-systemd)
Documenting radicle-cob v0.14.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-cob)
Documenting radicle-crypto v0.12.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-crypto)
Documenting radicle-term v0.12.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-term)
Checking radicle v0.15.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle)
Documenting radicle v0.15.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle)
Documenting radicle-signals v0.11.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-signals)
Documenting radicle-ssh v0.9.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-ssh)
Documenting radicle-dag v0.10.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-dag)
Documenting radicle-systemd v0.9.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-systemd)
Documenting radicle-cli v0.13.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-cli)
Checking radicle-fetch v0.11.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-fetch)
Documenting radicle-cli-test v0.11.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-cli-test)
Documenting radicle-node v0.11.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-node)
Documenting radicle-fetch v0.11.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-fetch)
Documenting radicle-schemars v0.1.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-schemars)
Documenting radicle-remote-helper v0.10.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-remote-helper)
Checking radicle-remote-helper v0.10.0 (/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-remote-helper)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 10.04s
Generated /ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/target/doc/radicle/index.html and 15 other files
+ cargo test --workspace --no-fail-fast
Finished `test` profile [unoptimized + debuginfo] target(s) in 0.12s
Running unittests src/lib.rs (target/debug/deps/radicle-f7aabfdef0ad0fc0)
running 188 tests
test canonical::formatter::test::ascii_control_characters ... ok
test canonical::formatter::test::securesystemslib_asserts ... ok
test cob::cache::migrations::_2::tests::test_patch_json_deserialization ... ok
test canonical::formatter::test::ordered_nested_object ... ok
test cob::cache::tests::test_check_version ... ok
test cob::common::test::test_color ... ok
test cob::cache::tests::test_migrate_to ... ok
test cob::cache::migrations::_2::tests::test_migration_2 ... ok
test cob::common::test::test_emojis ... ok
test cob::identity::test::prop_json_eq_str ... ok
test cob::identity::test::test_identity_redact_revision ... ok
test cob::identity::test::test_identity_reject_concurrent ... 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_updates ... ok
test cob::issue::cache::tests::test_counts ... ok
test cob::issue::cache::tests::test_get ... ok
test cob::issue::cache::tests::test_is_empty ... ok
test cob::issue::cache::tests::test_list ... ok
test cob::identity::test::test_valid_identity ... ok
test cob::issue::cache::tests::test_list_by_status ... ok
test cob::issue::cache::tests::test_remove ... ok
test cob::identity::test::test_identity_updates_concurrent ... ok
test cob::issue::test::test_embeds ... ok
test cob::issue::test::test_embeds_edit ... ok
test cob::issue::test::test_invalid_actions ... ok
test cob::identity::test::test_identity_updates_concurrent_outdated ... ok
test cob::issue::test::test_invalid_cob ... ok
test cob::issue::test::test_concurrency ... ok
test cob::issue::test::test_invalid_tx ... ok
test cob::issue::test::test_invalid_tx_reference ... ok
test cob::issue::test::test_issue_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_assign ... ok
test cob::issue::test::test_issue_create_and_get ... ok
test cob::issue::test::test_issue_create_and_change_state ... ok
test cob::issue::test::test_issue_create_and_reassign ... 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_edit ... ok
test cob::issue::test::test_issue_label ... ok
test cob::issue::test::test_issue_state_serde ... ok
test cob::issue::test::test_ordering ... ok
test cob::issue::test::test_issue_multilines ... ok
test cob::issue::test::test_issue_react ... ok
test cob::issue::test::test_issue_reply ... ok
test cob::patch::cache::tests::test_is_empty ... ok
test cob::patch::cache::tests::test_get ... ok
test cob::patch::cache::tests::test_list ... ok
test cob::patch::cache::tests::test_list_by_status ... ok
test cob::patch::test::test_json ... ok
test cob::patch::test::test_json_serialization ... ok
test cob::patch::test::test_patch_create_and_get ... ok
test cob::patch::cache::tests::test_remove ... ok
test cob::patch::cache::tests::test_counts ... 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_edit_comment ... 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_revision_redact ... ok
test cob::thread::tests::test_comment_edit_missing ... ok
test cob::thread::tests::test_comment_edit_redacted ... ok
test cob::thread::tests::test_comment_redact_missing ... ok
test cob::patch::test::test_patch_update ... ok
test cob::thread::tests::test_duplicate_comments ... ok
test cob::thread::tests::test_edit_comment ... ok
test cob::thread::tests::test_timeline ... ok
test cob::thread::tests::test_redact_comment ... ok
test git::canonical::tests::test_quorum_merges ... ok
test git::canonical::tests::test_quorum ... ok
test git::test::test_version_from_str ... ok
test git::test::test_version_ord ... ok
test identity::did::test::test_did_encode_decode ... ok
test identity::did::test::test_did_vectors ... ok
test identity::doc::id::test::prop_from_str ... ok
test cob::patch::cache::tests::test_find_by_revision ... ok
test identity::doc::test::test_canonical_doc ... ok
test git::canonical::tests::test_quorum_properties ... 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_canonical_example ... ok
test identity::doc::test::test_not_found ... ok
test identity::doc::test::test_parse_version ... ok
test identity::doc::test::test_visibility_json ... ok
test identity::project::test::test_project_name ... ok
test node::address::store::test::test_alias ... ok
test node::address::store::test::test_disconnected ... ok
test node::address::store::test::test_disconnected_ban ... ok
test node::address::store::test::test_empty ... ok
test node::address::store::test::test_entries ... ok
test node::address::store::test::test_get_none ... ok
test node::address::store::test::test_insert_and_get ... ok
test node::address::store::test::test_insert_and_remove ... ok
test node::address::store::test::test_insert_and_update ... ok
test node::address::store::test::test_insert_duplicate ... ok
test node::address::store::test::test_node_aliases ... ok
test node::address::store::test::test_remove_nothing ... ok
test node::db::test::test_version ... ok
test node::features::test::test_operations ... ok
test node::notifications::store::test::test_branch_notifications ... ok
test node::notifications::store::test::test_clear ... ok
test node::notifications::store::test::test_cob_notifications ... ok
test node::notifications::store::test::test_counts_by_repo ... ok
test node::notifications::store::test::test_duplicate_notifications ... ok
test node::notifications::store::test::test_notification_status ... ok
test node::policy::store::test::test_follow_and_unfollow_node ... ok
test node::policy::store::test::test_node_aliases ... ok
test node::policy::store::test::test_node_policies ... ok
test node::policy::store::test::test_node_policy ... ok
test node::policy::store::test::test_repo_policies ... ok
test node::policy::store::test::test_repo_policy ... ok
test node::policy::store::test::test_seed_and_unseed_repo ... ok
test node::policy::store::test::test_update_alias ... ok
test node::policy::store::test::test_update_scope ... ok
test node::refs::store::test::test_count ... ok
test node::refs::store::test::test_set_and_delete ... ok
test identity::doc::test::test_max_delegates ... ok
test node::refs::store::test::test_set_and_get ... ok
test node::routing::test::test_entries ... ok
test node::routing::test::test_count ... ok
test node::routing::test::test_insert_and_get_resources ... ok
test node::routing::test::test_insert_and_get ... 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_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::announcer_must_reach_preferred_seeds ... ok
test node::routing::test::test_prune ... ok
test node::sync::announce::test::announcer_reached_max_replication_target ... ok
test node::sync::announce::test::announcer_reached_min_replication_target ... ok
test node::sync::announce::test::announcer_timed_out ... ok
test node::sync::announce::test::cannot_construct_announcer ... ok
test node::sync::announce::test::announcer_will_minimise_replication_factor ... ok
test node::sync::fetch::test::all_nodes_are_candidates ... ok
test node::sync::fetch::test::could_not_reach_target ... 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::all_nodes_are_fetchable ... ok
test node::sync::fetch::test::reaches_target_of_max_replicas ... ok
test node::sync::fetch::test::reaches_target_of_replicas ... ok
test node::sync::fetch::test::reaches_target_of_preferred_seeds ... ok
test node::sync::test::ensure_replicas_construction ... ok
test node::sync::test::replicas_constrain_to ... ok
test node::test::test_alias ... ok
test node::test::test_command_result ... ok
test node::test::test_user_agent ... ok
test node::timestamp::tests::test_timestamp_max ... ok
test profile::test::canonicalize_home ... ok
test profile::test::test_config ... ok
test cob::thread::tests::prop_ordering ... ok
test rad::tests::test_checkout ... ok
test rad::tests::test_init ... ok
test serde_ext::test::test_localtime ... ok
test serde_ext::test::test_localtime_ext ... ok
test rad::tests::test_fork ... ok
test profile::config::test::schema ... ok
test storage::git::tests::test_references_of ... 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 identity::doc::test::prop_encode_decode ... ok
test storage::refs::tests::test_rid_verification ... ok
test result: ok. 188 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.14s
Running unittests src/lib.rs (target/debug/deps/radicle_cli-74153bd6daf7f987)
running 14 tests
test commands::rad_inspect::test::test_tree ... ok
test commands::rad_patch::review::builder::tests::test_review_comments_before ... ok
test commands::rad_patch::review::builder::tests::test_review_comments_basic ... ok
test commands::rad_patch::review::builder::tests::test_review_comments_multiline ... ok
test git::pretty_diff::test::test_pretty ... ignored
test commands::rad_patch::review::builder::tests::test_review_comments_split_hunk ... ok
test terminal::format::test::test_bytes ... ok
test git::ddiff::tests::diff_encode_decode_ddiff_hunk ... ok
test git::unified_diff::test::test_diff_content_encode_decode_content ... ok
test git::unified_diff::test::test_diff_encode_decode_diff ... ok
test terminal::format::test::test_strip_comments ... ok
test terminal::patch::test::test_edit_display_message ... ok
test terminal::patch::test::test_create_display_message ... ok
test terminal::patch::test::test_update_display_message ... ok
test result: ok. 13 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/main.rs (target/debug/deps/rad-fd35f2fedcf16b47)
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-39f585a25cdd31b6)
running 98 tests
test framework_home ... ok
test git_push_and_fetch ... ok
test git_push_amend ... ok
test git_push_diverge ... FAILED
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_connect ... ok
test rad_clean ... ok
test rad_clone_unknown ... ok
test rad_cob_log ... ok
test rad_clone_directory ... ok
test rad_cob_multiset ... ok
test rad_clone_all ... ok
test rad_cob_migrate ... ok
test rad_cob_show ... ok
test rad_cob_update ... ok
test rad_clone_partial_fail ... ok
test rad_config ... ok
test rad_cob_update_identity ... ok
test rad_diff ... ok
test rad_id_collaboration ... ignored, slow
test rad_id ... ok
test rad_id_conflict ... ok
test rad_id_missing_commits ... ok
test rad_id_private ... ok
test rad_id_multi_delegate ... ok
test rad_id_threshold_soft_fork ... ok
test rad_id_threshold ... ok
test rad_id_unknown_field ... ok
test rad_id_update_delete_field ... ok
test rad_init ... ignored, part of many other tests
test rad_init_existing ... ok
test rad_init_no_git ... ok
test rad_init_no_seed ... ok
test rad_init_private ... ok
test rad_init_private_clone ... ok
test rad_inbox ... ok
test rad_fetch ... ok
test rad_init_private_no_seed ... ok
test rad_fork ... 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_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_patch_diff ... ok
test rad_patch_draft ... ok
test rad_init_sync_and_clone ... ok
test rad_patch_edit ... ok
test rad_init_sync_timeout ... ok
test rad_patch_fetch_2 ... ok
test rad_patch_merge_draft ... ok
test rad_patch_delete ... ok
test rad_patch_fetch_1 ... ok
test rad_patch_revert_merge ... ok
test rad_patch_update ... ok
test rad_publish ... ok
test rad_patch_via_push ... ok
test rad_patch_open_explore ... ok
test rad_review_by_hunk ... ok
test rad_seed_and_follow ... ok
test rad_remote ... ok
test rad_seed_many ... ok
test rad_self ... ok
test rad_sync_without_node ... ok
test rad_unseed ... ok
test rad_push_and_pull_patches ... ok
test rad_warn_old_nodes ... FAILED
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_workflow ... ok
test rad_patch_pull_update ... ok
test test_replication_via_seed ... ok
failures:
---- git_push_diverge stdout ----
1788882692 test: Using PATH ["/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-cli/target/debug", "/usr/local/cargo/bin", "/usr/local/sbin", "/usr/local/bin", "/usr/sbin", "/usr/bin", "/sbin", "/bin", "/tmp/radicle-OEVPrq/work/alice"]
1788882692 test: rad-init.md: Running `/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/target/debug/rad` with ["init", "--name", "heartwood", "--description", "Radicle Heartwood Protocol & Stack", "--no-confirm", "--public", "-v"] in `/tmp/radicle-OEVPrq/work/alice`..
1788882692 test: rad-init.md: Running `/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/target/debug/rad` with ["init"] in `/tmp/radicle-OEVPrq/work/alice`..
1788882692 test: rad-init.md: Running `/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/target/debug/rad` with ["ls"] in `/tmp/radicle-OEVPrq/work/alice`..
1788882692 test: rad-init.md: Running `/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/target/debug/rad` with ["node", "inventory"] in `/tmp/radicle-OEVPrq/work/alice`..
1788882692 git_push_diverge node: Opening policy database..
1788882692 git_push_diverge node: Default seeding policy set to 'block (all)'
1788882692 git_push_diverge node: Initializing service (Test)..
1788882692 git_push_diverge node: Opening node database..
1788882692 git_push_diverge node: Address book is empty. Adding bootstrap nodes..
1788882692 git_push_diverge node: 0 nodes added to address book
1788882692 git_push_diverge service: Init @1788882692842
1788882692 git_push_diverge service: Empty refs database, populating from storage..
1788882692 git_push_diverge service: Saved local sync status for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji..
1788882692 git_push_diverge service: Adding refs announcement for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji to historical gossip messages..
1788882692 git_push_diverge service: Not enough available peers to connect to (available=0, wanted=8)
1788882692 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> node: Listening on 0.0.0.0:34067..
1788882692 git_push_diverge node: Binding control socket /tmp/radicle-OEVPrq/home/alice/.radicle/node/control.sock..
1788882692 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <runtime> node: Running node z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi in /tmp/radicle-OEVPrq/home/alice/.radicle..
1788882692 git_push_diverge node: Opening policy database..
1788882692 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <control> control: Control thread listening on socket..
1788882692 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Received command QueryState(..)
1788882692 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <signals> node: Signal notifications channel error: receiving on an empty and disconnected channel
1788882692 git_push_diverge node: Default seeding policy set to 'block (all)'
1788882692 git_push_diverge node: Initializing service (Test)..
1788882692 git_push_diverge node: Opening node database..
1788882692 git_push_diverge node: Address book is empty. Adding bootstrap nodes..
1788882692 git_push_diverge node: 0 nodes added to address book
1788882692 git_push_diverge service: Init @1788882692870
1788882692 git_push_diverge service: Empty refs database, populating from storage..
1788882692 git_push_diverge service: Not enough available peers to connect to (available=0, wanted=8)
1788882692 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> node: Listening on 0.0.0.0:34425..
1788882692 git_push_diverge node: Binding control socket /tmp/radicle-OEVPrq/home/bob/.radicle/node/control.sock..
1788882692 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <runtime> node: Running node z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk in /tmp/radicle-OEVPrq/home/bob/.radicle..
1788882692 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <control> control: Control thread listening on socket..
1788882692 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <signals> node: Signal notifications channel error: receiving on an empty and disconnected channel
1788882692 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Received command QueryState(..)
1788882692 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Received command QueryState(..)
1788882692 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Received command Connect(z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi, 0.0.0.0:34067, ConnectOptions { persistent: false, timeout: 30s })
1788882692 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Connecting to z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi (0.0.0.0:34067)..
1788882692 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Attempted connection to z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi (0.0.0.0:34067)
1788882692 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> wire: Registering outbound transport for z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi (fd=30)..
1788882692 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> wire: Outbound peer resource registered for z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi with id=2 (fd=30)
1788882692 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> wire: Inbound connection from 127.0.0.1:55920 (fd=199)..
1788882692 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> wire: Accepted inbound connection from 127.0.0.1:55920 (fd=199)..
1788882692 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> wire: Inbound peer resource registered with id=2 (fd=199)
1788882692 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> wire: Session established with z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi (id=2) (fd=30) (outbound)
1788882692 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Connected to z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi (0.0.0.0:34067) (Outbound)
1788882692 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Subscribing to messages since timestamp 1788796292897..
1788882692 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> wire: Session established with z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk (id=2) (fd=199) (inbound)
1788882692 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Connected to z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk (127.0.0.1:55920) (Inbound)
1788882692 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Subscribing to messages since timestamp 1788796292897..
1788882692 test: Node z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi has converged
1788882692 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Received node announcement of z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk with 0 address(es) from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk (t=1788882692870)
1788882692 test: Node has missing routes: [(RepoId(rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji), PublicKey(z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi))]
1788882692 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Received node announcement of z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi with 0 address(es) from z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi (t=1788882692842)
1788882692 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Stored announcement from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk to be broadcast in 0 millisecond(s) (t=1788882692870)
1788882692 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Stored announcement from z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi to be broadcast in 0 millisecond(s) (t=1788882692842)
1788882692 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Address store entry for node z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk updated at 1788882692870
1788882692 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Received inventory announcement of z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk with 0 item(s) from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk (t=1788882692871)
1788882692 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Address store entry for node z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi updated at 1788882692842
1788882692 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Received inventory announcement of z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi with 1 item(s) from z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi (t=1788882692844)
1788882692 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Stored announcement from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk to be broadcast in 0 millisecond(s) (t=1788882692871)
1788882692 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Received subscription filter from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
1788882692 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Stored announcement from z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi to be broadcast in 0 millisecond(s) (t=1788882692844)
1788882692 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Routing table updated for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji with seed z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
1788882692 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Received subscription filter from z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
1788882693 test: Node z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk has converged
1788882693 test: Running `rad clone ["rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji"]` in /tmp/radicle-OEVPrq/work/bob..
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <control> control: Received `{"command":"status"}` on control socket
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <control> control: Received `{"command":"seed","rid":"rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji","scope":"all"}` on control socket
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Received command Seed(rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji, all)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Sending subscription filter to z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Received subscription filter from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <control> control: Received `{"command":"seeds","rid":"rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji"}` on control socket
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Received command Seeds(rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Found 1 connected seed(s) and 0 disconnected seed(s) for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <control> control: Received `{"command":"session","nid":"z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi"}` on control socket
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Received command QueryState(..)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <control> control: Received `{"command":"fetch","rid":"rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji","nid":"z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi","timeout":{"secs":9,"nanos":0}}` on control socket
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Received command Fetch(rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji, z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Fetch initiated for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji with z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi [outbound connected] (all remotes)..
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> wire: Opened new stream with id 12 for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji and remote z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#0> worker: Worker processing outgoing fetch for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> wire: Received `open` command for stream 12 from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#0> worker: Worker processing incoming fetch for z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk on stream 12..
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#0> worker: z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk cloning from z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#0> worker: Spawning upload-pack process for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji on stream 12..
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#0> fetch: Fetched rad/id (15ms)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#0> fetch: Fetched data for 1 remote(s) (23ms)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#0> fetch: Fetched data refs for 1 remotes (30ms)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#0> fetch: Sent done signal to remote z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> wire: Received `end-of-file` on stream 12 from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <upload-pack> worker: Exiting upload-pack reader thread for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#0> fetch: Validated 1 remote(s) (30ms)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#0> fetch: Applied updates (31ms)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#0> fetch: Finished clone of rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji from z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi (35ms)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#0> cob: Loading object of type xyz.radicle.id at 0656c217f917c3e06234771e9ecae53aba5e173e
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#0> storage: Setting ref: refs/rad/id -> 0656c217f917c3e06234771e9ecae53aba5e173e
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#0> storage: Setting ref: refs/heads/master -> f2de534b5e81d7c6e2dcaf58c3dd91573c0a0354
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#0> storage: Setting ref: HEAD -> refs/heads/master
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#0> worker: Upload pack finished (37ms)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#0> worker: Upload process on stream 12 exited with result Ok(())
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> wire: Received fetch result from worker for stream 12, remote z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk: Responder { rid: Some(RepoId(rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji)), result: Ok(()) }
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> wire: Stream 12 of z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk closing with 0 byte(s) sent and 0 byte(s) received
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> wire: Peer z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk fetched rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji from us successfully
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> wire: Received `close` command for stream 12 from z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> wire: Stream 12 of z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi closed with 0 byte(s) sent and 0 byte(s) received
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> wire: Received fetch result from worker for stream 12, remote z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi: Initiator { rid: RepoId(rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji), result: Ok(FetchResult { updated: [Created { name: RefString("refs/namespaces/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/refs/rad/id"), oid: Oid(0656c217f917c3e06234771e9ecae53aba5e173e) }, Created { name: RefString("refs/namespaces/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/refs/rad/sigrefs"), oid: Oid(99c549702e2bcfe02b0e68d4a2224fb7a1524529) }, Created { name: RefString("refs/namespaces/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/refs/cobs/xyz.radicle.id/0656c217f917c3e06234771e9ecae53aba5e173e"), oid: Oid(0656c217f917c3e06234771e9ecae53aba5e173e) }, Created { name: RefString("refs/namespaces/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/refs/heads/master"), oid: Oid(f2de534b5e81d7c6e2dcaf58c3dd91573c0a0354) }, Skipped { name: RefString("refs/namespaces/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/refs/rad/id"), oid: Oid(0656c217f917c3e06234771e9ecae53aba5e173e) }, Created { name: RefString("refs/namespaces/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/refs/rad/root"), oid: Oid(0656c217f917c3e06234771e9ecae53aba5e173e) }], namespaces: {PublicKey(z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi)}, clone: true, doc: DocAt { commit: Oid(0656c217f917c3e06234771e9ecae53aba5e173e), blob: Oid(d96f425412c9f8ad5d9a9a05c9831d0728e2338d), doc: Doc { version: Version(1), payload: {PayloadId(TypeName("xyz.radicle.project")): Payload { value: Object {"defaultBranch": String("master"), "description": String("Radicle Heartwood Protocol & Stack"), "name": String("heartwood")} }}, delegates: Delegates(NonEmpty { head: Did("did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi"), tail: [] }), threshold: Threshold(1), visibility: Public } } }) }
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Found existing fetch request from z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi, sending result..
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Sent fetch result for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji from z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi..
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Fetched rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji from z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi successfully
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Ref updated: * 0000000..0656c21 refs/namespaces/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/refs/rad/id for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Ref updated: * 0000000..99c5497 refs/namespaces/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/refs/rad/sigrefs for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Ref updated: * 0000000..0656c21 refs/namespaces/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/refs/cobs/xyz.radicle.id/0656c217f917c3e06234771e9ecae53aba5e173e for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Ref updated: * 0000000..f2de534 refs/namespaces/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/refs/heads/master for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Ref updated: * 0000000..0656c21 refs/namespaces/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/refs/rad/root for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Updating and announcing inventory for cloned repository rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji..
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Sending inventory announcement of z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk with 1 item(s) to z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi (t=1788882693164)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Sending refs announcement of z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji with 1 remote(s) to z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi (t=1788882693165)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Received inventory announcement of z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk with 1 item(s) from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk (t=1788882693164)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Stored announcement from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk to be broadcast in 0 millisecond(s) (t=1788882693164)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Routing table updated for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji with seed z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Received refs announcement of z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji with 1 remote(s) from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk (t=1788882693165)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Stored announcement from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk to be broadcast in 0 millisecond(s) (t=1788882693165)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Refs announcement of z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji contains our own remote at 99c549702e2bcfe02b0e68d4a2224fb7a1524529 (t=1788882693165)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Updating sync status of z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji to 99c549702e2bcfe02b0e68d4a2224fb7a1524529
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Skipping fetch for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji, all refs are already in storage
1788882693 test: rad clone: ✓ Seeding policy updated for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji with scope 'all'
1788882693 test: rad clone: Fetching rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji from the network, found 1 potential seed(s).
1788882693 test: rad clone: ✓ Target met: 1 seed(s)
1788882693 test: rad clone: ✓ Creating checkout in ./heartwood..
1788882693 test: rad clone: ✓ Remote alice@z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi added
1788882693 test: rad clone: ✓ Remote-tracking branch alice@z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/master created for z6MknSL…StBU8Vi
1788882693 test: rad clone: ✓ Repository successfully cloned under /tmp/radicle-OEVPrq/work/bob/heartwood/
1788882693 test: rad clone: ╭────────────────────────────────────╮
1788882693 test: rad clone: │ heartwood │
1788882693 test: rad clone: │ Radicle Heartwood Protocol & Stack │
1788882693 test: rad clone: │ 0 issues · 0 patches │
1788882693 test: rad clone: ╰────────────────────────────────────╯
1788882693 test: rad clone: Run `cd ./heartwood` to go to the repository directory.
1788882693 test: Ran command `rad clone` (status=0)
1788882693 test: Running `rad fork ["rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji"]` in /tmp/radicle-OEVPrq/work/bob..
1788882693 test: rad fork: ✓ Forked repository rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji for z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
1788882693 test: Ran command `rad fork` (status=0)
1788882693 test: Running `rad sync ["rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji", "--announce", "--replicas", "1"]` in /tmp/radicle-OEVPrq/work/bob..
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <control> control: Received `{"command":"status"}` on control socket
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <control> control: Received `{"command":"seeds","rid":"rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji"}` on control socket
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Received command Seeds(rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Found 1 connected seed(s) and 0 disconnected seed(s) for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <control> control: Received `{"command":"subscribe"}` on control socket
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <control> control: Received `{"command":"announceRefs","rid":"rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji"}` on control socket
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Received command AnnounceRefs(rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Announcing own refs for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji to peers (e9f48ef90fe8592e1b1c95f96c21a59ca1495300) (t=1788882693336)..
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Saved local sync status for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji..
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Sending refs announcement of z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji with 1 remote(s) to z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi (t=1788882693336)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Received refs announcement of z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji with 1 remote(s) from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk (t=1788882693336)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Stored announcement from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk to be broadcast in 0 millisecond(s) (t=1788882693336)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Fetch initiated for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji with z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk [inbound connected] (1 remote(s))..
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> wire: Opened new stream with id 13 for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji and remote z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#1> worker: Worker processing outgoing fetch for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> wire: Received `open` command for stream 13 from z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#1> worker: z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi pulling from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#1> worker: Worker processing incoming fetch for z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi on stream 13..
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#1> worker: Spawning upload-pack process for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji on stream 13..
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#1> fetch: Fetched rad/id (3ms)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#1> fetch: Fetched data for 1 remote(s) (17ms)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#1> fetch: Fetched data refs for 1 remotes (17ms)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#1> fetch: Sent done signal to remote z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> wire: Received `end-of-file` on stream 13 from z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#1> fetch: Validated 1 remote(s) (17ms)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#1> fetch: Applied updates (18ms)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#1> fetch: Finished pull of rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji (23ms)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#1> cob: Loading object of type xyz.radicle.id at 0656c217f917c3e06234771e9ecae53aba5e173e
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#1> storage: Setting ref: refs/rad/id -> 0656c217f917c3e06234771e9ecae53aba5e173e
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <upload-pack> worker: Exiting upload-pack reader thread for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#1> worker: Upload pack finished (26ms)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#1> worker: Upload process on stream 13 exited with result Ok(())
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> wire: Received fetch result from worker for stream 13, remote z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi: Responder { rid: Some(RepoId(rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji)), result: Ok(()) }
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> wire: Stream 13 of z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi closing with 0 byte(s) sent and 0 byte(s) received
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> wire: Peer z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi fetched rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji from us successfully
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> wire: Received `close` command for stream 13 from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> wire: Stream 13 of z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk closed with 0 byte(s) sent and 0 byte(s) received
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> wire: Received fetch result from worker for stream 13, remote z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk: Initiator { rid: RepoId(rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji), result: Ok(FetchResult { updated: [Created { name: RefString("refs/namespaces/z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk/refs/rad/sigrefs"), oid: Oid(e9f48ef90fe8592e1b1c95f96c21a59ca1495300) }, Created { name: RefString("refs/namespaces/z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk/refs/heads/master"), oid: Oid(f2de534b5e81d7c6e2dcaf58c3dd91573c0a0354) }, Created { name: RefString("refs/namespaces/z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk/refs/rad/root"), oid: Oid(0656c217f917c3e06234771e9ecae53aba5e173e) }], namespaces: {PublicKey(z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk)}, clone: false, doc: DocAt { commit: Oid(0656c217f917c3e06234771e9ecae53aba5e173e), blob: Oid(d96f425412c9f8ad5d9a9a05c9831d0728e2338d), doc: Doc { version: Version(1), payload: {PayloadId(TypeName("xyz.radicle.project")): Payload { value: Object {"defaultBranch": String("master"), "description": String("Radicle Heartwood Protocol & Stack"), "name": String("heartwood")} }}, delegates: Delegates(NonEmpty { head: Did("did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi"), tail: [] }), threshold: Threshold(1), visibility: Public } } }) }
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Fetched rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk successfully
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Ref updated: * 0000000..e9f48ef refs/namespaces/z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk/refs/rad/sigrefs for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Ref updated: * 0000000..f2de534 refs/namespaces/z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk/refs/heads/master for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Ref updated: * 0000000..0656c21 refs/namespaces/z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk/refs/rad/root for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Sending refs announcement of z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji with 1 remote(s) to z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk (t=1788882693390)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Received refs announcement of z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji with 1 remote(s) from z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi (t=1788882693390)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Stored announcement from z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi to be broadcast in 0 millisecond(s) (t=1788882693390)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Refs announcement of z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji contains our own remote at e9f48ef90fe8592e1b1c95f96c21a59ca1495300 (t=1788882693390)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Updating sync status of z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji to e9f48ef90fe8592e1b1c95f96c21a59ca1495300
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Skipping fetch for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji, all refs are already in storage
1788882693 test: rad sync: ✓ Synced with 1 seed(s)
1788882693 test: Ran command `rad sync` (status=0)
1788882693 test: Waiting for z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi to have rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji/z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
1788882693 test: Node z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi has rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji/z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
1788882693 test: Using PATH ["/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-cli/target/debug", "/usr/local/cargo/bin", "/usr/local/sbin", "/usr/local/bin", "/usr/sbin", "/usr/bin", "/sbin", "/bin", "/tmp/radicle-OEVPrq"]
1788882693 test: git-push-diverge.md: Running `/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/target/debug/rad` with ["id", "update", "--title", "Add Bob", "--description", "", "--delegate", "did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk", "--repo", "rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji", "-q"] in `/tmp/radicle-OEVPrq/work/alice`..
1788882693 test: git-push-diverge.md: Running `/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/target/debug/rad` with ["sync", "--fetch"] in `/tmp/radicle-OEVPrq/work/bob/heartwood`..
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <control> control: Received `{"command":"status"}` on control socket
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <control> control: Received `{"command":"seeds","rid":"rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji"}` on control socket
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Received command Seeds(rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Found 1 connected seed(s) and 1 disconnected seed(s) for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <control> control: Received `{"command":"session","nid":"z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi"}` on control socket
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Received command QueryState(..)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <control> control: Received `{"command":"fetch","rid":"rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji","nid":"z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi","timeout":{"secs":9,"nanos":0}}` on control socket
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Received command Fetch(rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji, z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Fetch initiated for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji with z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi [outbound connected] (all remotes)..
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> wire: Opened new stream with id 20 for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji and remote z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#2> worker: Worker processing outgoing fetch for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> wire: Received `open` command for stream 20 from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#2> worker: Worker processing incoming fetch for z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk on stream 20..
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#2> worker: z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk pulling from z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#2> worker: Spawning upload-pack process for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji on stream 20..
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#2> fetch: Fetched rad/id (10ms)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#2> fetch: Fetched data for 1 remote(s) (23ms)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#2> fetch: Fetched data refs for 1 remotes (23ms)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#2> fetch: Sent done signal to remote z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> wire: Received `end-of-file` on stream 20 from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <upload-pack> worker: Exiting upload-pack reader thread for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#2> worker: Upload pack finished (29ms)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#2> worker: Upload process on stream 20 exited with result Ok(())
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> wire: Received fetch result from worker for stream 20, remote z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk: Responder { rid: Some(RepoId(rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji)), result: Ok(()) }
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> wire: Stream 20 of z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk closing with 0 byte(s) sent and 0 byte(s) received
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> wire: Peer z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk fetched rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji from us successfully
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> wire: Received `close` command for stream 20 from z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> wire: Stream 20 of z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi closed with 0 byte(s) sent and 0 byte(s) received
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#2> fetch: Validated 1 remote(s) (25ms)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#2> fetch: Applied updates (25ms)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#2> fetch: Finished pull of rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji (31ms)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#2> cob: Loading object of type xyz.radicle.id at 0656c217f917c3e06234771e9ecae53aba5e173e
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#2> storage: Setting ref: refs/rad/id -> c036c0d89ce26aef3ad7da402157dba16b5163b4
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> wire: Received fetch result from worker for stream 20, remote z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi: Initiator { rid: RepoId(rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji), result: Ok(FetchResult { updated: [Updated { name: RefString("refs/namespaces/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/refs/rad/id"), old: Oid(0656c217f917c3e06234771e9ecae53aba5e173e), new: Oid(c036c0d89ce26aef3ad7da402157dba16b5163b4) }, Updated { name: RefString("refs/namespaces/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/refs/rad/sigrefs"), old: Oid(99c549702e2bcfe02b0e68d4a2224fb7a1524529), new: Oid(a56a1f4520edee875b8e32bb20e2c851d2bd863e) }, Updated { name: RefString("refs/namespaces/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/refs/cobs/xyz.radicle.id/0656c217f917c3e06234771e9ecae53aba5e173e"), old: Oid(0656c217f917c3e06234771e9ecae53aba5e173e), new: Oid(c036c0d89ce26aef3ad7da402157dba16b5163b4) }, Skipped { name: RefString("refs/namespaces/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/refs/heads/master"), oid: Oid(f2de534b5e81d7c6e2dcaf58c3dd91573c0a0354) }, Skipped { name: RefString("refs/namespaces/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/refs/rad/id"), oid: Oid(c036c0d89ce26aef3ad7da402157dba16b5163b4) }, Skipped { name: RefString("refs/namespaces/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/refs/rad/root"), oid: Oid(0656c217f917c3e06234771e9ecae53aba5e173e) }], namespaces: {PublicKey(z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi)}, clone: false, doc: DocAt { commit: Oid(c036c0d89ce26aef3ad7da402157dba16b5163b4), blob: Oid(93d3009787e5d8a481dffc4dd248ea46af592466), doc: Doc { version: Version(1), payload: {PayloadId(TypeName("xyz.radicle.project")): Payload { value: Object {"defaultBranch": String("master"), "description": String("Radicle Heartwood Protocol & Stack"), "name": String("heartwood")} }}, delegates: Delegates(NonEmpty { head: Did("did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi"), tail: [Did("did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk")] }), threshold: Threshold(1), visibility: Public } } }) }
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Found existing fetch request from z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi, sending result..
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Sent fetch result for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji from z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi..
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Fetched rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji from z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi successfully
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Ref updated: ~ 0656c21..c036c0d refs/namespaces/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/refs/rad/id for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Ref updated: ~ 99c5497..a56a1f4 refs/namespaces/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/refs/rad/sigrefs for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Ref updated: ~ 0656c21..c036c0d refs/namespaces/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/refs/cobs/xyz.radicle.id/0656c217f917c3e06234771e9ecae53aba5e173e for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <control> control: Command returned error: i/o error: invalid input parameter
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Sending refs announcement of z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji with 1 remote(s) to z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi (t=1788882693504)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Received refs announcement of z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji with 1 remote(s) from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk (t=1788882693504)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Stored announcement from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk to be broadcast in 0 millisecond(s) (t=1788882693504)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Refs announcement of z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji contains our own remote at a56a1f4520edee875b8e32bb20e2c851d2bd863e (t=1788882693504)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Updating sync status of z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji to a56a1f4520edee875b8e32bb20e2c851d2bd863e
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Skipping fetch for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji, all refs are already in storage
1788882693 test: git-push-diverge.md: Running `/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/target/debug/rad` with ["inspect", "--delegates"] in `/tmp/radicle-OEVPrq/work/bob/heartwood`..
1788882693 test: git-push-diverge.md: Running `git` with ["commit", "-m", "Third commit", "--allow-empty", "-q"] in `/tmp/radicle-OEVPrq/work/bob/heartwood`..
1788882693 test: git-push-diverge.md: Running `git` with ["push", "rad"] in `/tmp/radicle-OEVPrq/work/bob/heartwood`..
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <control> control: Received `{"command":"status"}` on control socket
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <control> control: Received `{"command":"seeds","rid":"rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji"}` on control socket
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Received command Seeds(rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Found 1 connected seed(s) and 1 disconnected seed(s) for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <control> control: Received `{"command":"subscribe"}` on control socket
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <control> control: Received `{"command":"announceRefs","rid":"rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji"}` on control socket
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Received command AnnounceRefs(rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Announcing own refs for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji to peers (5fa2442614d2bbdb959669c50c0ca799e77c113d) (t=1788882693588)..
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Saved local sync status for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji..
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Sending refs announcement of z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji with 1 remote(s) to z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi (t=1788882693588)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Received refs announcement of z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji with 1 remote(s) from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk (t=1788882693588)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Stored announcement from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk to be broadcast in 0 millisecond(s) (t=1788882693588)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Fetch initiated for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji with z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk [inbound connected] (1 remote(s))..
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> wire: Opened new stream with id 21 for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji and remote z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#3> worker: Worker processing outgoing fetch for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> wire: Received `open` command for stream 21 from z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#3> worker: z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi pulling from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#3> worker: Worker processing incoming fetch for z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi on stream 21..
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#3> worker: Spawning upload-pack process for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji on stream 21..
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#3> fetch: Fetched rad/id (1ms)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#3> fetch: Fetched data for 1 remote(s) (7ms)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#3> fetch: Fetched data refs for 1 remotes (12ms)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#3> fetch: Sent done signal to remote z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> wire: Received `end-of-file` on stream 21 from z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#3> fetch: Validated 1 remote(s) (13ms)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <upload-pack> worker: Exiting upload-pack reader thread for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#3> fetch: Applied updates (13ms)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#3> worker: Upload pack finished (17ms)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <worker#3> worker: Upload process on stream 21 exited with result Ok(())
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> wire: Received fetch result from worker for stream 21, remote z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi: Responder { rid: Some(RepoId(rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji)), result: Ok(()) }
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> wire: Stream 21 of z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi closing with 0 byte(s) sent and 0 byte(s) received
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> wire: Peer z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi fetched rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji from us successfully
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> wire: Received `close` command for stream 21 from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> wire: Stream 21 of z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk closed with 0 byte(s) sent and 0 byte(s) received
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#3> fetch: Finished pull of rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji (18ms)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#3> cob: Loading object of type xyz.radicle.id at 0656c217f917c3e06234771e9ecae53aba5e173e
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#3> storage: Setting ref: refs/rad/id -> c036c0d89ce26aef3ad7da402157dba16b5163b4
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#3> storage: Setting ref: refs/heads/master -> 319a7dc3b195368ded4b099f8c90bbb80addccd3
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <worker#3> storage: Setting ref: HEAD -> refs/heads/master
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> wire: Received fetch result from worker for stream 21, remote z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk: Initiator { rid: RepoId(rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji), result: Ok(FetchResult { updated: [Updated { name: RefString("refs/namespaces/z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk/refs/rad/sigrefs"), old: Oid(e9f48ef90fe8592e1b1c95f96c21a59ca1495300), new: Oid(5fa2442614d2bbdb959669c50c0ca799e77c113d) }, Updated { name: RefString("refs/namespaces/z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk/refs/heads/master"), old: Oid(f2de534b5e81d7c6e2dcaf58c3dd91573c0a0354), new: Oid(319a7dc3b195368ded4b099f8c90bbb80addccd3) }, Skipped { name: RefString("refs/namespaces/z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk/refs/rad/root"), oid: Oid(0656c217f917c3e06234771e9ecae53aba5e173e) }], namespaces: {PublicKey(z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk)}, clone: false, doc: DocAt { commit: Oid(c036c0d89ce26aef3ad7da402157dba16b5163b4), blob: Oid(93d3009787e5d8a481dffc4dd248ea46af592466), doc: Doc { version: Version(1), payload: {PayloadId(TypeName("xyz.radicle.project")): Payload { value: Object {"defaultBranch": String("master"), "description": String("Radicle Heartwood Protocol & Stack"), "name": String("heartwood")} }}, delegates: Delegates(NonEmpty { head: Did("did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi"), tail: [Did("did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk")] }), threshold: Threshold(1), visibility: Public } } }) }
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Fetched rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk successfully
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Ref updated: ~ e9f48ef..5fa2442 refs/namespaces/z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk/refs/rad/sigrefs for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Ref updated: ~ f2de534..319a7dc refs/namespaces/z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk/refs/heads/master for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Sending refs announcement of z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji with 1 remote(s) to z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk (t=1788882693636)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Received refs announcement of z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji with 1 remote(s) from z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi (t=1788882693636)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Stored announcement from z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi to be broadcast in 0 millisecond(s) (t=1788882693636)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Refs announcement of z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji contains our own remote at 5fa2442614d2bbdb959669c50c0ca799e77c113d (t=1788882693636)
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Updating sync status of z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji to 5fa2442614d2bbdb959669c50c0ca799e77c113d
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <service> service: Skipping fetch for rad:z42hL2jL4XNk6K8oHQaSWfMgCL7ji, all refs are already in storage
1788882693 test: git-push-diverge.md: Running `git` with ["branch", "-arv"] in `/tmp/radicle-OEVPrq/work/bob/heartwood`..
1788882693 test: git-push-diverge.md: Running `/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/target/debug/rad` with ["remote", "add", "did:key:z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk", "--fetch", "--no-sync"] in `/tmp/radicle-OEVPrq/work/alice`..
1788882693 test: git-push-diverge.md: Running `git` with ["branch", "-arv"] in `/tmp/radicle-OEVPrq/work/alice`..
1788882693 test: git-push-diverge.md: Running `git` with ["commit", "-m", "Third commit by Alice", "--allow-empty", "-q"] in `/tmp/radicle-OEVPrq/work/alice`..
1788882693 test: git-push-diverge.md: Running `git` with ["push", "rad"] in `/tmp/radicle-OEVPrq/work/alice`..
thread 'git_push_diverge' panicked at crates/radicle-cli-test/src/lib.rs:485:36:
--- Expected
++++ actual: stderr
1 1 | hint: you are attempting to push a commit that would cause your upstream to diverge from the canonical head
2 2 | hint: to integrate the remote changes, run `git pull --rebase` and try again
3 - error: refusing to update branch to commit that is not a descendant of canonical head
3 + error: refusing to update canonical reference to commit that is not a descendant of current canonical head
4 4 | error: failed to push some refs to 'rad://z42hL2jL4XNk6K8oHQaSWfMgCL7ji/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi'
Exit status: 1
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
1788882693 test: Node z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk shutting down..
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <control> control: Received `{"command":"shutdown"}` on control socket
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <control> control: Shutdown requested..
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> wire: Disconnecting peer with id=2: connection reset
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> wire: Transport handover for disconnecting peer with id=2 (fd=199)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Disconnected from z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk (connection reset)
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <service> service: Dropping peer z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk..
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <runtime> pool: Worker pool shutting down..
1788882693 z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk <runtime> node: Node shutdown completed for z6Mkt67GdsW7715MEfRuP4pSZxJRJh6kj6Y48WRqVv4N1tRk
1788882693 test: Node z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi shutting down..
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <control> control: Received `{"command":"shutdown"}` on control socket
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <control> control: Shutdown requested..
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <runtime> pool: Worker pool shutting down..
1788882693 z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi <runtime> node: Node shutdown completed for z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
---- rad_warn_old_nodes stdout ----
1788882711 test: Using PATH ["/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/crates/radicle-cli/target/debug", "/usr/local/cargo/bin", "/usr/local/sbin", "/usr/local/bin", "/usr/sbin", "/usr/bin", "/sbin", "/bin", "/tmp/radicle-kouGwR/work/alice"]
1788882711 test: rad-warn-old-nodes.md: Running `/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/target/debug/rad` with ["config", "push", "preferredSeeds", "z6MkrLMMsiPWUcNPHcRajuMi9mDfYckSoJyPwwnknocNYPm7@seed.radicle.garden:8776"] in `/tmp/radicle-kouGwR/work/alice`..
1788882712 test: rad-warn-old-nodes.md: Running `/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/target/debug/rad` with ["config", "push", "node.connect", "z6Mkmqogy2qEM2ummccUthFEaaHvyYmYBYh3dbe9W4ebScxo@ash.radicle.garden:8776"] in `/tmp/radicle-kouGwR/work/alice`..
1788882712 test: rad-warn-old-nodes.md: Running `/ca30dfc1-2179-4d80-9b9b-01e928dfab6f/w/target/debug/rad` with ["debug"] in `/tmp/radicle-kouGwR/work/alice`..
thread 'rad_warn_old_nodes' panicked at crates/radicle-cli-test/src/lib.rs:487:36:
--- Expected
++++ actual: stdout
1 1 | {
2 2 | "radExe": "[..]",
3 3 | "radVersion": "[..]",
4 - "radicleNodeVersion": "radicle-node [..]",
5 - "gitRemoteRadVersion": "git-remote-rad [..]",
6 - "gitVersion": "git version [..]",
7 - "sshVersion": "[..]",
8 - "gitHead": "[..]",
4 + "radicleNodeVersion": "<unknown>",
5 + "gitRemoteRadVersion": "git-remote-rad pre-release (8e485c78)",
6 + "gitVersion": "git version 2.47.3",
7 + "sshVersion": "OpenSSH_10.0p2 Debian-7, OpenSSL 3.5.4 30 Sep 2025",
8 + "gitHead": "8e485c78",
9 9 | "log": {
10 10 | "filename": "[..]",
11 11 | "exists": false,
12 12 | "len": null
13 13 | },
⋮
29 29 | "warnings": [
30 30 | "Value of configuration option `node.connect` at index 0 mentions node with address 'ash.radicle.garden:8776', which has been renamed to 'rosa.radicle.xyz:8776'. Please update your configuration.",
31 31 | "Value of configuration option `preferred_seeds` at index 0 mentions node with address 'seed.radicle.garden:8776', which has been renamed to 'iris.radicle.xyz:8776'. Please update your configuration."
32 32 | ]
33 33 | }
Exit status: 0
failures:
git_push_diverge
rad_warn_old_nodes
test result: FAILED. 94 passed; 2 failed; 2 ignored; 0 measured; 0 filtered out; finished in 71.23s
error: test failed, to rerun pass `-p radicle-cli --test commands`
Running unittests src/lib.rs (target/debug/deps/radicle_cli_test-414cf954b3e6838e)
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-65db1d3d21109e11)
running 8 tests
test object::tests::test_serde ... ok
test tests::invalid_parse_refstr ... ok
test tests::parse_refstr ... ok
test tests::roundtrip ... ok
test type_name::test::valid_typenames ... ok
test tests::traverse_cobs ... ok
test tests::list_cobs ... ok
test tests::update_cob ... ok
test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running unittests src/lib.rs (target/debug/deps/radicle_crypto-0912e5a263b454ad)
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::prop_encode_decode_sk ... ok
test ssh::test::test_agent_encoding_remove ... ok
test ssh::test::test_agent_encoding_sign ... ok
test tests::prop_encode_decode ... ok
test tests::test_e25519_dh ... ok
test tests::test_encode_decode ... ok
test tests::prop_key_equality ... ok
test ssh::keystore::tests::test_signer ... ok
test ssh::keystore::tests::test_init_passphrase ... ok
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.80s
Running unittests src/lib.rs (target/debug/deps/radicle_dag-20ca1aca3d76c348)
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_complex ... ok
test tests::test_fold_sorting_2 ... ok
test tests::test_get ... ok
test tests::test_is_empty ... ok
test tests::test_len ... ok
test tests::test_prune_1 ... ok
test tests::test_prune_2 ... ok
test tests::test_remove ... ok
test tests::test_siblings ... ok
test tests::test_prune_by_sorting ... ok
test tests::test_merge_1 ... ok
test tests::test_merge_2 ... 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-4b8234984d8609a4)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_node-61fe54fa2ff83004)
running 113 tests
test deserializer::test::test_decode_next ... ok
test deserializer::test::prop_decode_next ... ok
test control::tests::test_control_socket ... ok
test deserializer::test::test_unparsed ... ok
test service::filter::test::test_parameters ... ok
test service::limiter::test::test_limitter_different_rates ... ok
test service::limiter::test::test_limitter_multi ... ok
test service::limiter::test::test_limitter_refill ... ok
test service::filter::test::test_sizes ... ok
test control::tests::test_seed_unseed ... ok
test service::gossip::store::test::test_announced ... ok
test service::message::tests::test_ref_remote_limit ... ok
test service::message::tests::test_inventory_limit ... ok
test service::message::tests::prop_refs_announcement_signing ... ok
test tests::e2e::missing_default_branch ... ok
test tests::e2e::missing_delegate_default_branch ... ok
test tests::e2e::test_background_foreground_fetch ... ok
test tests::e2e::test_channel_reader_limit ... ok
test tests::e2e::test_catchup_on_refs_announcements ... ok
test tests::e2e::test_clone ... ok
test service::message::tests::test_node_announcement_validate ... ok
test tests::e2e::test_dont_fetch_owned_refs ... ok
test tests::e2e::test_fetch_followed_remotes ... ok
test tests::e2e::test_connection_crossing ... FAILED
test tests::e2e::test_fetch_preserve_owned_refs ... ok
test tests::e2e::test_fetch_unseeded ... ok
test tests::e2e::test_concurrent_fetches ... ok
test tests::e2e::test_fetch_up_to_date ... ok
test tests::e2e::test_inventory_sync_basic ... ok
test tests::e2e::test_large_fetch ... ok
test tests::e2e::test_migrated_clone ... ok
test tests::e2e::test_missing_remote ... ok
test tests::e2e::test_multiple_offline_inits ... ok
test tests::e2e::test_non_fastforward_sigrefs ... ok
test tests::e2e::test_outdated_delegate_sigrefs ... ok
test tests::e2e::test_outdated_sigrefs ... ok
test tests::e2e::test_replication ... ok
test tests::e2e::test_replication_invalid ... ok
test tests::e2e::test_replication_ref_in_sigrefs ... ok
test tests::e2e::test_inventory_sync_bridge ... ok
test tests::e2e::test_inventory_sync_ring ... ok
test tests::test_announcement_rebroadcast ... ok
test tests::e2e::test_inventory_sync_star ... ok
test tests::test_announcement_rebroadcast_duplicates ... ok
test tests::test_announcement_rebroadcast_timestamp_filtered ... ok
test tests::test_connection_kept_alive ... ok
test tests::test_announcement_relay ... 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_inventory_pruning ... ok
test tests::test_persistent_peer_connect ... ok
test tests::test_persistent_peer_reconnect_success ... ok
test tests::test_persistent_peer_reconnect_attempt ... ok
test tests::test_ping_response ... ok
test tests::test_queued_fetch_from_ann_same_rid ... ok
test tests::test_queued_fetch_from_command_same_rid ... ok
test tests::test_queued_fetch_max_capacity ... ok
test tests::test_redundant_connect ... ok
test tests::test_refs_announcement_followed ... ok
test tests::test_refs_announcement_fetch_trusted_no_inventory ... ok
test tests::test_refs_announcement_no_subscribe ... ok
test tests::test_refs_announcement_offline ... ok
test tests::test_refs_announcement_relay_private ... ok
test tests::test_refs_announcement_relay_public ... ok
test tests::test_refs_synced_event ... ok
test tests::test_seeding ... ok
test wire::frame::test::test_stream_id ... ok
test wire::message::tests::prop_addr ... ok
test tests::test_seed_repo_subscribe ... ok
test wire::message::tests::prop_message_encode_decode ... ok
test wire::message::tests::prop_zero_bytes_encode_decode ... ok
test wire::message::tests::test_inv_ann_max_size ... ok
test wire::message::tests::test_node_ann_max_size ... ok
test wire::message::tests::test_pingpong_encode_max_size ... ok
test wire::message::tests::test_pingpong_encode_size_overflow ... ok
test tests::prop_inventory_exchange_dense ... ok
test wire::protocol::test::test_inventory_ann_with_extension ... ok
test wire::protocol::test::test_pong_message_with_extension ... ok
test wire::tests::prop_filter ... ok
test wire::tests::prop_id ... ok
test wire::tests::prop_oid ... ok
test wire::tests::prop_pubkey ... ok
test wire::tests::prop_refs ... ok
test wire::tests::prop_signature ... ok
test wire::message::tests::test_refs_ann_max_size ... ok
test wire::tests::prop_string ... ok
test wire::tests::prop_tuple ... ok
test wire::tests::prop_u16 ... ok
test wire::tests::prop_u32 ... ok
test wire::tests::prop_u64 ... ok
test wire::tests::prop_u8 ... ok
test wire::tests::prop_vec ... ok
test wire::tests::test_alias ... ok
test wire::tests::test_bounded_vec_limit ... ok
test wire::tests::test_filter_invalid ... ok
test wire::tests::test_string ... ok
test wire::varint::test::prop_encode_decode ... ok
test wire::varint::test::test_encode_overflow - should panic ... ok
test wire::varint::test::test_encoding ... ok
test wire::tests::prop_signed_refs ... ok
test wire::message::tests::prop_message_decoder ... ok
test tests::test_announcement_message_amplification ... ok
failures:
---- tests::e2e::test_connection_crossing stdout ----
1788882722 test: Node::init alice: z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f
1788882722 test: Node::init bob: z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT
1788882722 tests::e2e::test_connection_crossing node: Opening policy database..
1788882722 tests::e2e::test_connection_crossing node: Migrating COBs cache..
1788882722 tests::e2e::test_connection_crossing node: Migration of COBs cache complete (version=2)..
1788882722 tests::e2e::test_connection_crossing node: Default seeding policy set to 'block (all)'
1788882722 tests::e2e::test_connection_crossing node: Initializing service (Test)..
1788882722 tests::e2e::test_connection_crossing node: Opening node database..
1788882722 tests::e2e::test_connection_crossing node: Address book is empty. Adding bootstrap nodes..
1788882722 tests::e2e::test_connection_crossing node: 0 nodes added to address book
1788882722 tests::e2e::test_connection_crossing service: Init @1788882722576
1788882722 tests::e2e::test_connection_crossing service: Empty refs database, populating from storage..
1788882722 tests::e2e::test_connection_crossing service: Not enough available peers to connect to (available=0, wanted=8)
1788882722 tests::e2e::test_connection_crossing node: Binding control socket /tmp/.tmpQmvPs9/C7iTMQpI/node/control.sock..
1788882722 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <service> node: Listening on 0.0.0.0:38405..
1788882722 tests::e2e::test_connection_crossing node: Opening policy database..
1788882722 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <runtime> node: Running node z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f in /tmp/.tmpQmvPs9/C7iTMQpI..
1788882722 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <signals> node: Signal notifications channel error: receiving on an empty and disconnected channel
1788882722 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <control> control: Control thread listening on socket..
1788882722 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <service> service: Received command QueryState(..)
1788882722 tests::e2e::test_connection_crossing node: Migrating COBs cache..
1788882722 tests::e2e::test_connection_crossing node: Migration of COBs cache complete (version=2)..
1788882722 tests::e2e::test_connection_crossing node: Default seeding policy set to 'block (all)'
1788882722 tests::e2e::test_connection_crossing node: Initializing service (Test)..
1788882722 tests::e2e::test_connection_crossing node: Opening node database..
1788882722 tests::e2e::test_connection_crossing node: Address book is empty. Adding bootstrap nodes..
1788882722 tests::e2e::test_connection_crossing node: 0 nodes added to address book
1788882722 tests::e2e::test_connection_crossing service: Init @1788882722614
1788882722 tests::e2e::test_connection_crossing service: Empty refs database, populating from storage..
1788882722 tests::e2e::test_connection_crossing service: Not enough available peers to connect to (available=0, wanted=8)
1788882722 z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT <service> node: Listening on 0.0.0.0:37135..
1788882722 tests::e2e::test_connection_crossing node: Binding control socket /tmp/.tmpQmvPs9/idjbQI9Z/node/control.sock..
1788882722 test: Preferred peer is z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f
1788882722 z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT <runtime> node: Running node z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT in /tmp/.tmpQmvPs9/idjbQI9Z..
1788882722 z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT <control> control: Control thread listening on socket..
1788882722 z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT <service> service: Received command QueryState(..)
1788882722 z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT <service> service: Received command QueryState(..)
1788882722 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <service> service: Received command QueryState(..)
1788882722 z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT <service> service: Received command Connect(z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f, 0.0.0.0:38405, ConnectOptions { persistent: false, timeout: 30s })
1788882722 z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT <service> service: Connecting to z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f (0.0.0.0:38405)..
1788882722 z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT <service> service: Attempted connection to z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f (0.0.0.0:38405)
1788882722 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <service> wire: Inbound connection from 127.0.0.1:42976 (fd=88)..
1788882722 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <service> wire: Accepted inbound connection from 127.0.0.1:42976 (fd=88)..
1788882722 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <service> wire: Inbound peer resource registered with id=2 (fd=88)
1788882722 z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT <service> wire: Registering outbound transport for z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f (fd=87)..
1788882722 z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT <service> wire: Outbound peer resource registered for z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f with id=2 (fd=87)
1788882722 z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT <service> wire: Session established with z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f (id=2) (fd=87) (outbound)
1788882722 z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT <service> service: Connected to z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f (0.0.0.0:38405) (Outbound)
1788882722 z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT <service> service: Subscribing to messages since timestamp 1788796322663..
1788882722 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <service> wire: Session established with z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT (id=2) (fd=88) (inbound)
1788882722 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <service> service: Connected to z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT (127.0.0.1:42976) (Inbound)
1788882722 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <service> service: Subscribing to messages since timestamp 1788796322663..
1788882722 z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT <signals> node: Signal notifications channel error: receiving on an empty and disconnected channel
1788882722 z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT <service> service: Received node announcement of z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f with 0 address(es) from z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f (t=1788882722576)
1788882722 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <service> service: Received node announcement of z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT with 0 address(es) from z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT (t=1788882722614)
1788882722 z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT <service> service: Stored announcement from z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f to be broadcast in 0 millisecond(s) (t=1788882722576)
1788882722 z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT <service> service: Address store entry for node z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f updated at 1788882722576
1788882722 z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT <service> service: Received inventory announcement of z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f with 0 item(s) from z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f (t=1788882722577)
1788882722 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <service> service: Stored announcement from z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT to be broadcast in 0 millisecond(s) (t=1788882722614)
1788882722 z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT <service> service: Stored announcement from z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f to be broadcast in 0 millisecond(s) (t=1788882722577)
1788882722 z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT <service> service: Received subscription filter from z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f
1788882722 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <service> service: Address store entry for node z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT updated at 1788882722614
1788882722 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <service> service: Received inventory announcement of z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT with 0 item(s) from z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT (t=1788882722615)
1788882722 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <service> service: Stored announcement from z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT to be broadcast in 0 millisecond(s) (t=1788882722615)
1788882722 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <service> service: Received subscription filter from z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT
1788882722 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <service> service: Received command Connect(z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT, 0.0.0.0:37135, ConnectOptions { persistent: false, timeout: 30s })
1788882722 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <service> service: Connecting to z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT (0.0.0.0:37135)..
1788882722 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <service> service: Attempted connection to peer z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT which already has a session
1788882723 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <service> service: Received command QueryState(..)
1788882723 z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT <service> service: Received command QueryState(..)
1788882723 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <service> service: Received command QueryState(..)
1788882723 test: Ok([Session { nid: PublicKey(z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT), link: Inbound, addr: Address(NetAddr { host: Ip(127.0.0.1), port: 42976 }), state: Connected { since: LocalTime { millis: 1788882722663 }, ping: None, fetching: {}, latencies: [], stable: false } }])
1788882723 z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT <service> service: Received command QueryState(..)
1788882723 test: Ok([Session { nid: PublicKey(z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f), link: Outbound, addr: Address(NetAddr { host: Ip(0.0.0.0), port: 38405 }), state: Connected { since: LocalTime { millis: 1788882722663 }, ping: None, fetching: {}, latencies: [], stable: false } }])
thread 'tests::e2e::test_connection_crossing' panicked at crates/radicle-node/src/tests/e2e.rs:866:9:
assertion `left == right` failed
left: Inbound
right: Outbound
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
1788882723 test: Node z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT shutting down..
1788882723 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <service> wire: Disconnecting peer with id=2: connection reset
1788882723 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <service> wire: Transport handover for disconnecting peer with id=2 (fd=88)
1788882723 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <service> service: Disconnected from z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT (connection reset)
1788882723 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <service> service: Dropping peer z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT..
1788882723 z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT <control> control: Received `{"command":"shutdown"}` on control socket
1788882723 z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT <control> control: Shutdown requested..
1788882723 z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT <runtime> pool: Worker pool shutting down..
1788882723 z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT <runtime> node: Node shutdown completed for z6MknEQuMCpCEJURitxNshZfqRXw6JnUZRwirJU8A5Va1eBT
1788882723 test: Node z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f shutting down..
1788882723 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <control> control: Received `{"command":"shutdown"}` on control socket
1788882723 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <control> control: Shutdown requested..
1788882723 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <runtime> pool: Worker pool shutting down..
1788882723 z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f <runtime> node: Node shutdown completed for z6Mku2Hobxi3a423Ch8SDNxAdsnckNVCgUHhzVu2CqZb6q1f
failures:
tests::e2e::test_connection_crossing
test result: FAILED. 112 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 16.75s
error: test failed, to rerun pass `-p radicle-node --lib`
Running unittests src/main.rs (target/debug/deps/radicle_node-6dd4867ccb6b4803)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/lib.rs (target/debug/deps/radicle_remote_helper-7bfde46959c7bd2c)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running unittests src/git-remote-rad.rs (target/debug/deps/git_remote_rad-ccfda0e6b12494a5)
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-3c6475501b3b4eb5)
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-ad41f42c3d3e47ce)
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-02e22359ef9bf046)
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-28e02dc067eac38d)
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-8690075601e9065b)
running 20 tests
test cell::test::test_width ... ok
test ansi::tests::colors_enabled ... ok
test ansi::tests::colors_disabled ... ok
test element::test::test_truncate ... ok
test ansi::tests::wrapping ... ok
test element::test::test_width ... ok
test table::test::test_table ... ok
test table::test::test_table_border_maximized ... ok
test table::test::test_table_border_truncated ... ok
test table::test::test_table_truncate ... ok
test table::test::test_table_border ... ok
test table::test::test_table_unicode ... ok
test table::test::test_table_unicode_truncate ... ok
test table::test::test_truncate ... ok
test textarea::test::test_wrapping_code_block ... ok
test textarea::test::test_wrapping ... ok
test textarea::test::test_wrapping_fenced_block ... ok
test textarea::test::test_wrapping_paragraphs ... ok
test vstack::test::test_vstack ... ok
test vstack::test::test_vstack_maximize ... ok
test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_cli
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_cli_test
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_cob
running 1 test
test crates/radicle-cob/src/backend/git/stable.rs - backend::git::stable::with_advanced_timestamp (line 56) ... ignored
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_crypto
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_dag
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_fetch
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_node
running 6 tests
test crates/radicle-node/src/bounded.rs - bounded::BoundedVec<T,N>::max (line 96) ... ok
test crates/radicle-node/src/bounded.rs - bounded::BoundedVec<T,N>::truncate (line 50) ... ok
test crates/radicle-node/src/bounded.rs - bounded::BoundedVec<T,N>::push (line 122) ... ok
test crates/radicle-node/src/bounded.rs - bounded::BoundedVec<T,N>::unbound (line 149) ... ok
test crates/radicle-node/src/bounded.rs - bounded::BoundedVec<T,N>::collect_from (line 30) ... ok
test crates/radicle-node/src/bounded.rs - bounded::BoundedVec<T,N>::with_capacity (line 66) ... ok
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.51s
Doc-tests radicle_remote_helper
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_signals
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_ssh
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_systemd
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests radicle_term
running 1 test
test 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.42s
error: 2 targets failed:
`-p radicle-cli --test commands`
`-p radicle-node --lib`
Exit code: 101
{
"response": "finished",
"result": "failure"
}