These raw log messages are meant to help Ambient developers figure out problems. You can ignore them.
{
"type": "executor_starts",
"name": "ambient-execute-plan",
"version": "0.14.0@c37ec71",
"timestamp": {
"secs_since_epoch": 1782338189,
"nanos_since_epoch": 30298435
},
"log_source": "Plan"
}{
"type": "runnable_plan",
"steps": [
{
"action": "mkdir",
"pathname": "/ci"
},
{
"action": "mkdir",
"pathname": "/ci/artifacts"
},
{
"action": "tar_extract",
"archive": "/dev/vdc",
"directory": "/ci/src"
},
{
"action": "tar_extract",
"archive": "/dev/vdf",
"directory": "/ci/deps"
},
{
"action": "tar_extract",
"archive": "/dev/vde",
"directory": "/ci/cache"
},
{
"action": "shell",
"shell": "ln -sf /ci /workspace"
},
{
"action": "shell",
"shell": "git config --global user.name 'Ambient CI'"
},
{
"action": "shell",
"shell": "git config --global user.email ambient@example.com"
},
{
"action": "shell",
"shell": "sed -i /components/d rust-toolchain.toml\n\n# Commit this to git so that the Debian package building doesn't\n# see changes outside the debian directory.\ngit config set user.name \"Ambient CI\"\ngit config set user.email \"ambient@example.com\"\ngit commit -m \"remove components from toolchain file\" rust-toolchain.toml\n"
},
{
"action": "cargo_fmt"
},
{
"action": "cargo_clippy"
},
{
"action": "cargo_build"
},
{
"action": "cargo_test"
},
{
"action": "shell",
"shell": "# Because of a (temporary) limitation in Ambient, we need to set\n# these variables manually. Once Ambient manages environment\n# variables better, these can be deleted.\nexport CARGO_TARGET_DIR=/workspace/cache\nexport CARGO_HOME=/workspace/deps\nexport HOME=/root\nexport PATH=\"/root/.cargo/bin:$PATH\"\nexport RUSTDOCFLAGS='-D warnings'\n\ncargo doc --workspace --no-deps --all-features\n"
},
{
"action": "shell",
"shell": "# Because of a (temporary) limitation in Ambient, we need to set\n# these variables manually. Once Ambient manages environment\n# variables better, these can be deleted.\nexport CARGO_TARGET_DIR=/workspace/cache\nexport CARGO_HOME=/workspace/deps\nexport HOME=/root\nexport PATH=\"/root/.cargo/bin:$PATH\"\n\n# These are based on debian/control.\nexport DEBEMAIL=liw@liw.fi\nexport DEBFULLNAME=\"Lars Wirzenius\"\n\n# Clean up after tests and documentation building. The Debian\n# package building tools do not want changes outside the\n# `debian` directory, compared to what is committed to Git, from\n# which the \"upstream tarball\" is created.\ngit reset --hard\ngit clean -fdx\ngit status --ignored\n\n# Update debian/changelog with a new version so that every run\n# creates a newer version. This avoids us having to update the\n# file manually for every CI run.\nV=\"$(dpkg-parsechangelog -SVersion | sed 's/-[^-]*$//')\"\nT=\"$(date -u \"+%Y%m%dT%H%M%S\")\"\nversion=\"$V.ci$T-1\"\ndch -v \"$version\" \"CI build under Ambient.\"\ndch -r ''\n"
},
{
"action": "deb",
"packages": "."
},
{
"action": "tar_create",
"archive": "/dev/vde",
"directory": "/ci/cache"
},
{
"action": "tar_create",
"archive": "/dev/vdd",
"directory": "/ci/artifacts"
}
],
"executor_drive": "/dev/vdb",
"source_drive": "/dev/vdc",
"artifact_drive": "/dev/vdd",
"cache_drive": "/dev/vde",
"deps_drive": "/dev/vdf",
"workspace_dir": "/ci",
"source_dir": "/ci/src",
"deps_dir": "/ci/deps",
"cache_dir": "/ci/cache",
"artifacts_dir": "/ci/artifacts",
"envs": {
"RUSTUP_HOME": [
47,
99,
105,
47,
100,
101,
112,
115,
47,
114,
117,
115,
116,
117,
112
]
},
"timestamp": {
"secs_since_epoch": 1782338189,
"nanos_since_epoch": 31013722
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "mkdir",
"pathname": "/ci",
"timestamp": {
"secs_since_epoch": 1782338189,
"nanos_since_epoch": 31196867
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "mkdir",
"pathname": "/ci",
"timestamp": {
"secs_since_epoch": 1782338189,
"nanos_since_epoch": 31454787
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "mkdir",
"pathname": "/ci/artifacts",
"timestamp": {
"secs_since_epoch": 1782338189,
"nanos_since_epoch": 31602675
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "mkdir",
"pathname": "/ci/artifacts",
"timestamp": {
"secs_since_epoch": 1782338189,
"nanos_since_epoch": 31633572
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "tar_extract",
"archive": "/dev/vdc",
"directory": "/ci/src",
"timestamp": {
"secs_since_epoch": 1782338189,
"nanos_since_epoch": 31814631
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "tar_extract",
"archive": "/dev/vdc",
"directory": "/ci/src",
"timestamp": {
"secs_since_epoch": 1782338189,
"nanos_since_epoch": 182454920
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "tar_extract",
"archive": "/dev/vdf",
"directory": "/ci/deps",
"timestamp": {
"secs_since_epoch": 1782338189,
"nanos_since_epoch": 182913911
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "tar_extract",
"archive": "/dev/vdf",
"directory": "/ci/deps",
"timestamp": {
"secs_since_epoch": 1782338197,
"nanos_since_epoch": 905083480
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "tar_extract",
"archive": "/dev/vde",
"directory": "/ci/cache",
"timestamp": {
"secs_since_epoch": 1782338197,
"nanos_since_epoch": 905548891
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "tar_extract",
"archive": "/dev/vde",
"directory": "/ci/cache",
"timestamp": {
"secs_since_epoch": 1782338212,
"nanos_since_epoch": 929771588
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "shell",
"shell": "ln -sf /ci /workspace",
"timestamp": {
"secs_since_epoch": 1782338212,
"nanos_since_epoch": 932596412
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
98,
97,
115,
104
]
},
{
"Unix": [
45,
99
]
},
{
"Unix": [
115,
101,
116,
32,
45,
120,
101,
117,
111,
32,
112,
105,
112,
101,
102,
97,
105,
108,
10,
108,
110,
32,
45,
115,
102,
32,
47,
99,
105,
32,
47,
119,
111,
114,
107,
115,
112,
97,
99,
101,
10
]
}
],
"timestamp": {
"secs_since_epoch": 1782338212,
"nanos_since_epoch": 935198464
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "",
"stderr": "+ ln -sf /ci /workspace\n",
"timestamp": {
"secs_since_epoch": 1782338212,
"nanos_since_epoch": 943876029
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "shell",
"shell": "ln -sf /ci /workspace",
"timestamp": {
"secs_since_epoch": 1782338212,
"nanos_since_epoch": 946660630
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "shell",
"shell": "git config --global user.name 'Ambient CI'",
"timestamp": {
"secs_since_epoch": 1782338212,
"nanos_since_epoch": 949160869
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
98,
97,
115,
104
]
},
{
"Unix": [
45,
99
]
},
{
"Unix": [
115,
101,
116,
32,
45,
120,
101,
117,
111,
32,
112,
105,
112,
101,
102,
97,
105,
108,
10,
103,
105,
116,
32,
99,
111,
110,
102,
105,
103,
32,
45,
45,
103,
108,
111,
98,
97,
108,
32,
117,
115,
101,
114,
46,
110,
97,
109,
101,
32,
39,
65,
109,
98,
105,
101,
110,
116,
32,
67,
73,
39,
10
]
}
],
"timestamp": {
"secs_since_epoch": 1782338212,
"nanos_since_epoch": 952019919
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "",
"stderr": "+ git config --global user.name 'Ambient CI'\n",
"timestamp": {
"secs_since_epoch": 1782338212,
"nanos_since_epoch": 963225364
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "shell",
"shell": "git config --global user.name 'Ambient CI'",
"timestamp": {
"secs_since_epoch": 1782338212,
"nanos_since_epoch": 966369333
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "shell",
"shell": "git config --global user.email ambient@example.com",
"timestamp": {
"secs_since_epoch": 1782338212,
"nanos_since_epoch": 969100015
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
98,
97,
115,
104
]
},
{
"Unix": [
45,
99
]
},
{
"Unix": [
115,
101,
116,
32,
45,
120,
101,
117,
111,
32,
112,
105,
112,
101,
102,
97,
105,
108,
10,
103,
105,
116,
32,
99,
111,
110,
102,
105,
103,
32,
45,
45,
103,
108,
111,
98,
97,
108,
32,
117,
115,
101,
114,
46,
101,
109,
97,
105,
108,
32,
97,
109,
98,
105,
101,
110,
116,
64,
101,
120,
97,
109,
112,
108,
101,
46,
99,
111,
109,
10
]
}
],
"timestamp": {
"secs_since_epoch": 1782338212,
"nanos_since_epoch": 971840279
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "",
"stderr": "+ git config --global user.email ambient@example.com\n",
"timestamp": {
"secs_since_epoch": 1782338212,
"nanos_since_epoch": 979913351
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "shell",
"shell": "git config --global user.email ambient@example.com",
"timestamp": {
"secs_since_epoch": 1782338212,
"nanos_since_epoch": 980345927
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "shell",
"shell": "sed -i /components/d rust-toolchain.toml\n\n# Commit this to git so that the Debian package building doesn't\n# see changes outside the debian directory.\ngit config set user.name \"Ambient CI\"\ngit config set user.email \"ambient@example.com\"\ngit commit -m \"remove components from toolchain file\" rust-toolchain.toml\n",
"timestamp": {
"secs_since_epoch": 1782338212,
"nanos_since_epoch": 980351717
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
98,
97,
115,
104
]
},
{
"Unix": [
45,
99
]
},
{
"Unix": [
115,
101,
116,
32,
45,
120,
101,
117,
111,
32,
112,
105,
112,
101,
102,
97,
105,
108,
10,
115,
101,
100,
32,
45,
105,
32,
47,
99,
111,
109,
112,
111,
110,
101,
110,
116,
115,
47,
100,
32,
114,
117,
115,
116,
45,
116,
111,
111,
108,
99,
104,
97,
105,
110,
46,
116,
111,
109,
108,
10,
10,
35,
32,
67,
111,
109,
109,
105,
116,
32,
116,
104,
105,
115,
32,
116,
111,
32,
103,
105,
116,
32,
115,
111,
32,
116,
104,
97,
116,
32,
116,
104,
101,
32,
68,
101,
98,
105,
97,
110,
32,
112,
97,
99,
107,
97,
103,
101,
32,
98,
117,
105,
108,
100,
105,
110,
103,
32,
100,
111,
101,
115,
110,
39,
116,
10,
35,
32,
115,
101,
101,
32,
99,
104,
97,
110,
103,
101,
115,
32,
111,
117,
116,
115,
105,
100,
101,
32,
116,
104,
101,
32,
100,
101,
98,
105,
97,
110,
32,
100,
105,
114,
101,
99,
116,
111,
114,
121,
46,
10,
103,
105,
116,
32,
99,
111,
110,
102,
105,
103,
32,
115,
101,
116,
32,
117,
115,
101,
114,
46,
110,
97,
109,
101,
32,
34,
65,
109,
98,
105,
101,
110,
116,
32,
67,
73,
34,
10,
103,
105,
116,
32,
99,
111,
110,
102,
105,
103,
32,
115,
101,
116,
32,
117,
115,
101,
114,
46,
101,
109,
97,
105,
108,
32,
34,
97,
109,
98,
105,
101,
110,
116,
64,
101,
120,
97,
109,
112,
108,
101,
46,
99,
111,
109,
34,
10,
103,
105,
116,
32,
99,
111,
109,
109,
105,
116,
32,
45,
109,
32,
34,
114,
101,
109,
111,
118,
101,
32,
99,
111,
109,
112,
111,
110,
101,
110,
116,
115,
32,
102,
114,
111,
109,
32,
116,
111,
111,
108,
99,
104,
97,
105,
110,
32,
102,
105,
108,
101,
34,
32,
114,
117,
115,
116,
45,
116,
111,
111,
108,
99,
104,
97,
105,
110,
46,
116,
111,
109,
108,
10,
10
]
}
],
"timestamp": {
"secs_since_epoch": 1782338212,
"nanos_since_epoch": 980568942
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "[detached HEAD f88e884ecd] remove components from toolchain file\n 1 file changed, 1 deletion(-)\n",
"stderr": "+ sed -i /components/d rust-toolchain.toml\n+ git config set user.name 'Ambient CI'\n+ git config set user.email ambient@example.com\n+ git commit -m 'remove components from toolchain file' rust-toolchain.toml\n",
"timestamp": {
"secs_since_epoch": 1782338213,
"nanos_since_epoch": 115629455
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "shell",
"shell": "sed -i /components/d rust-toolchain.toml\n\n# Commit this to git so that the Debian package building doesn't\n# see changes outside the debian directory.\ngit config set user.name \"Ambient CI\"\ngit config set user.email \"ambient@example.com\"\ngit commit -m \"remove components from toolchain file\" rust-toolchain.toml\n",
"timestamp": {
"secs_since_epoch": 1782338213,
"nanos_since_epoch": 122210732
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "cargo_fmt",
"timestamp": {
"secs_since_epoch": 1782338213,
"nanos_since_epoch": 128682607
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
99,
97,
114,
103,
111
]
},
{
"Unix": [
45,
45,
118,
101,
114,
115,
105,
111,
110
]
}
],
"timestamp": {
"secs_since_epoch": 1782338213,
"nanos_since_epoch": 130721582
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "cargo 1.95.0 (f2d3ce0bd 2026-03-21)\n",
"stderr": "",
"timestamp": {
"secs_since_epoch": 1782338213,
"nanos_since_epoch": 157445169
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
99,
97,
114,
103,
111
]
},
{
"Unix": [
99,
108,
105,
112,
112,
121
]
},
{
"Unix": [
45,
45,
118,
101,
114,
115,
105,
111,
110
]
}
],
"timestamp": {
"secs_since_epoch": 1782338213,
"nanos_since_epoch": 160275394
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "clippy 0.1.95 (59807616e1 2026-04-14)\n",
"stderr": "",
"timestamp": {
"secs_since_epoch": 1782338213,
"nanos_since_epoch": 212648185
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
114,
117,
115,
116,
99
]
},
{
"Unix": [
45,
45,
118,
101,
114,
115,
105,
111,
110
]
}
],
"timestamp": {
"secs_since_epoch": 1782338213,
"nanos_since_epoch": 215456688
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "rustc 1.95.0 (59807616e 2026-04-14)\n",
"stderr": "",
"timestamp": {
"secs_since_epoch": 1782338213,
"nanos_since_epoch": 232944679
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
99,
97,
114,
103,
111
]
},
{
"Unix": [
102,
109,
116
]
},
{
"Unix": [
45,
45,
99,
104,
101,
99,
107
]
}
],
"timestamp": {
"secs_since_epoch": 1782338213,
"nanos_since_epoch": 233429176
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "",
"stderr": "",
"timestamp": {
"secs_since_epoch": 1782338214,
"nanos_since_epoch": 98480155
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "cargo_fmt",
"timestamp": {
"secs_since_epoch": 1782338214,
"nanos_since_epoch": 100591656
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "cargo_clippy",
"timestamp": {
"secs_since_epoch": 1782338214,
"nanos_since_epoch": 102612253
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
99,
97,
114,
103,
111
]
},
{
"Unix": [
45,
45,
118,
101,
114,
115,
105,
111,
110
]
}
],
"timestamp": {
"secs_since_epoch": 1782338214,
"nanos_since_epoch": 104480945
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "cargo 1.95.0 (f2d3ce0bd 2026-03-21)\n",
"stderr": "",
"timestamp": {
"secs_since_epoch": 1782338214,
"nanos_since_epoch": 115325459
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
99,
97,
114,
103,
111
]
},
{
"Unix": [
99,
108,
105,
112,
112,
121
]
},
{
"Unix": [
45,
45,
118,
101,
114,
115,
105,
111,
110
]
}
],
"timestamp": {
"secs_since_epoch": 1782338214,
"nanos_since_epoch": 118073249
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "clippy 0.1.95 (59807616e1 2026-04-14)\n",
"stderr": "",
"timestamp": {
"secs_since_epoch": 1782338214,
"nanos_since_epoch": 146891037
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
114,
117,
115,
116,
99
]
},
{
"Unix": [
45,
45,
118,
101,
114,
115,
105,
111,
110
]
}
],
"timestamp": {
"secs_since_epoch": 1782338214,
"nanos_since_epoch": 147399763
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "rustc 1.95.0 (59807616e 2026-04-14)\n",
"stderr": "",
"timestamp": {
"secs_since_epoch": 1782338214,
"nanos_since_epoch": 163809661
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
99,
97,
114,
103,
111
]
},
{
"Unix": [
99,
108,
105,
112,
112,
121
]
},
{
"Unix": [
45,
45,
111,
102,
102,
108,
105,
110,
101
]
},
{
"Unix": [
45,
45,
108,
111,
99,
107,
101,
100
]
},
{
"Unix": [
45,
45,
119,
111,
114,
107,
115,
112,
97,
99,
101
]
},
{
"Unix": [
45,
45,
97,
108,
108,
45,
116,
97,
114,
103,
101,
116,
115
]
},
{
"Unix": [
45,
45,
110,
111,
45,
100,
101,
112,
115
]
},
{
"Unix": [
45,
45
]
},
{
"Unix": [
45,
45,
100,
101,
110,
121
]
},
{
"Unix": [
119,
97,
114,
110,
105,
110,
103,
115
]
}
],
"timestamp": {
"secs_since_epoch": 1782338214,
"nanos_since_epoch": 164276841
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "",
"stderr": " Checking radicle-crypto v0.17.0 (/ci/src/crates/radicle-crypto)\n Checking radicle-oid v0.2.0 (/ci/src/crates/radicle-oid)\n Checking radicle-localtime v0.1.0 (/ci/src/crates/radicle-localtime)\n Checking radicle-git-metadata v0.2.0 (/ci/src/crates/radicle-git-metadata)\n Checking radicle-dag v0.10.0 (/ci/src/crates/radicle-dag)\n Checking radicle-git-ref-format v0.1.0 (/ci/src/crates/radicle-git-ref-format)\n Compiling radicle v0.24.0 (/ci/src/crates/radicle)\n Checking radicle-cob v0.20.0 (/ci/src/crates/radicle-cob)\n Checking radicle-core v0.3.0 (/ci/src/crates/radicle-core)\n Checking radicle-signals v0.11.0 (/ci/src/crates/radicle-signals)\n Checking radicle-term v0.18.0 (/ci/src/crates/radicle-term)\n Checking radicle-log v0.1.0 (/ci/src/crates/radicle-log)\n Compiling radicle-node v0.20.0 (/ci/src/crates/radicle-node)\n Compiling radicle-cli v0.21.0 (/ci/src/crates/radicle-cli)\n Checking radicle-systemd v0.13.0 (/ci/src/crates/radicle-systemd)\n Compiling radicle-remote-helper v0.17.0 (/ci/src/crates/radicle-remote-helper)\n Checking radicle-fetch v0.20.0 (/ci/src/crates/radicle-fetch)\n Checking radicle-protocol v0.8.0 (/ci/src/crates/radicle-protocol)\n Checking radicle-cli-test v0.13.0 (/ci/src/crates/radicle-cli-test)\n Checking radicle-schemars v0.8.0 (/ci/src/crates/radicle-schemars)\n Checking radicle-windows v0.1.0 (/ci/src/crates/radicle-windows)\n Finished `dev` profile [unoptimized + debuginfo] target(s) in 11.13s\n",
"timestamp": {
"secs_since_epoch": 1782338225,
"nanos_since_epoch": 373772699
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "cargo_clippy",
"timestamp": {
"secs_since_epoch": 1782338225,
"nanos_since_epoch": 374332303
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "cargo_build",
"timestamp": {
"secs_since_epoch": 1782338225,
"nanos_since_epoch": 374525491
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
99,
97,
114,
103,
111
]
},
{
"Unix": [
45,
45,
118,
101,
114,
115,
105,
111,
110
]
}
],
"timestamp": {
"secs_since_epoch": 1782338225,
"nanos_since_epoch": 374535313
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "cargo 1.95.0 (f2d3ce0bd 2026-03-21)\n",
"stderr": "",
"timestamp": {
"secs_since_epoch": 1782338225,
"nanos_since_epoch": 410446217
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
99,
97,
114,
103,
111
]
},
{
"Unix": [
99,
108,
105,
112,
112,
121
]
},
{
"Unix": [
45,
45,
118,
101,
114,
115,
105,
111,
110
]
}
],
"timestamp": {
"secs_since_epoch": 1782338225,
"nanos_since_epoch": 410882869
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "clippy 0.1.95 (59807616e1 2026-04-14)\n",
"stderr": "",
"timestamp": {
"secs_since_epoch": 1782338225,
"nanos_since_epoch": 441711175
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
114,
117,
115,
116,
99
]
},
{
"Unix": [
45,
45,
118,
101,
114,
115,
105,
111,
110
]
}
],
"timestamp": {
"secs_since_epoch": 1782338225,
"nanos_since_epoch": 442182182
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "rustc 1.95.0 (59807616e 2026-04-14)\n",
"stderr": "",
"timestamp": {
"secs_since_epoch": 1782338225,
"nanos_since_epoch": 454392525
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
99,
97,
114,
103,
111
]
},
{
"Unix": [
98,
117,
105,
108,
100
]
},
{
"Unix": [
45,
45,
111,
102,
102,
108,
105,
110,
101
]
},
{
"Unix": [
45,
45,
108,
111,
99,
107,
101,
100
]
},
{
"Unix": [
45,
45,
119,
111,
114,
107,
115,
112,
97,
99,
101
]
},
{
"Unix": [
45,
45,
97,
108,
108,
45,
116,
97,
114,
103,
101,
116,
115
]
}
],
"timestamp": {
"secs_since_epoch": 1782338225,
"nanos_since_epoch": 454837708
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "",
"stderr": " Compiling radicle-crypto v0.17.0 (/ci/src/crates/radicle-crypto)\n Compiling radicle-oid v0.2.0 (/ci/src/crates/radicle-oid)\n Compiling radicle-localtime v0.1.0 (/ci/src/crates/radicle-localtime)\n Compiling radicle-git-metadata v0.2.0 (/ci/src/crates/radicle-git-metadata)\n Compiling radicle-dag v0.10.0 (/ci/src/crates/radicle-dag)\n Compiling radicle-git-ref-format v0.1.0 (/ci/src/crates/radicle-git-ref-format)\n Compiling radicle v0.24.0 (/ci/src/crates/radicle)\n Compiling radicle-cob v0.20.0 (/ci/src/crates/radicle-cob)\n Compiling radicle-core v0.3.0 (/ci/src/crates/radicle-core)\n Compiling radicle-signals v0.11.0 (/ci/src/crates/radicle-signals)\n Compiling radicle-term v0.18.0 (/ci/src/crates/radicle-term)\n Compiling radicle-log v0.1.0 (/ci/src/crates/radicle-log)\n Compiling radicle-node v0.20.0 (/ci/src/crates/radicle-node)\n Compiling radicle-cli v0.21.0 (/ci/src/crates/radicle-cli)\n Compiling radicle-systemd v0.13.0 (/ci/src/crates/radicle-systemd)\n Compiling radicle-remote-helper v0.17.0 (/ci/src/crates/radicle-remote-helper)\n Compiling radicle-fetch v0.20.0 (/ci/src/crates/radicle-fetch)\n Compiling radicle-protocol v0.8.0 (/ci/src/crates/radicle-protocol)\n Compiling radicle-cli-test v0.13.0 (/ci/src/crates/radicle-cli-test)\n Compiling radicle-schemars v0.8.0 (/ci/src/crates/radicle-schemars)\n Compiling radicle-windows v0.1.0 (/ci/src/crates/radicle-windows)\n Finished `dev` profile [unoptimized + debuginfo] target(s) in 17.70s\n",
"timestamp": {
"secs_since_epoch": 1782338243,
"nanos_since_epoch": 223258118
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "cargo_build",
"timestamp": {
"secs_since_epoch": 1782338243,
"nanos_since_epoch": 223759585
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "cargo_test",
"timestamp": {
"secs_since_epoch": 1782338243,
"nanos_since_epoch": 223954037
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
99,
97,
114,
103,
111
]
},
{
"Unix": [
45,
45,
118,
101,
114,
115,
105,
111,
110
]
}
],
"timestamp": {
"secs_since_epoch": 1782338243,
"nanos_since_epoch": 223963468
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "cargo 1.95.0 (f2d3ce0bd 2026-03-21)\n",
"stderr": "",
"timestamp": {
"secs_since_epoch": 1782338243,
"nanos_since_epoch": 260400701
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
99,
97,
114,
103,
111
]
},
{
"Unix": [
99,
108,
105,
112,
112,
121
]
},
{
"Unix": [
45,
45,
118,
101,
114,
115,
105,
111,
110
]
}
],
"timestamp": {
"secs_since_epoch": 1782338243,
"nanos_since_epoch": 263423988
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "clippy 0.1.95 (59807616e1 2026-04-14)\n",
"stderr": "",
"timestamp": {
"secs_since_epoch": 1782338243,
"nanos_since_epoch": 293692691
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
114,
117,
115,
116,
99
]
},
{
"Unix": [
45,
45,
118,
101,
114,
115,
105,
111,
110
]
}
],
"timestamp": {
"secs_since_epoch": 1782338243,
"nanos_since_epoch": 296778653
},
"log_source": "Plan"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "rustc 1.95.0 (59807616e 2026-04-14)\n",
"stderr": "",
"timestamp": {
"secs_since_epoch": 1782338243,
"nanos_since_epoch": 312374793
},
"log_source": "Plan"
}{
"type": "start_program",
"argv": [
{
"Unix": [
99,
97,
114,
103,
111
]
},
{
"Unix": [
116,
101,
115,
116
]
},
{
"Unix": [
45,
45,
111,
102,
102,
108,
105,
110,
101
]
},
{
"Unix": [
45,
45,
108,
111,
99,
107,
101,
100
]
},
{
"Unix": [
45,
45,
119,
111,
114,
107,
115,
112,
97,
99,
101
]
}
],
"timestamp": {
"secs_since_epoch": 1782338243,
"nanos_since_epoch": 315435379
},
"log_source": "Plan"
}{
"type": "program_failed",
"exit_code": 101,
"stdout": "\nrunning 393 tests\ntest canonical::formatter::test::ascii_control_characters ... ok\ntest canonical::formatter::test::securesystemslib_asserts ... ok\ntest canonical::formatter::test::ordered_nested_object ... ok\ntest cob::cache::migrations::_2::tests::test_patch_json_deserialization ... ok\ntest cob::cache::tests::test_check_version ... ok\ntest cob::cache::migrations::_2::tests::test_migration_2 ... ok\ntest cob::cache::tests::test_migrate_to ... ok\ntest cob::common::test::test_color ... ok\ntest cob::common::test::test_emojis ... ok\ntest cob::common::test::test_title ... ok\ntest cob::identity::test::accepted_sibling_causes_rejection ... ok\ntest cob::identity::test::authorization_based_on_parent_not_current ... ok\ntest cob::identity::test::cannot_redact_previously_accepted_revision ... ok\ntest cob::identity::test::cascading_rejections ... ok\ntest cob::identity::test::evaluates_queued_children ... ok\ntest cob::identity::test::prop_json_eq_str ... ok\ntest cob::identity::test::evaluates_queued_children_with_new_delegate ... ok\ntest cob::identity::test::redact_parent_cascades ... ok\ntest cob::identity::test::reject_concurrent ... ok\ntest cob::identity::test::remove_delegate_concurrent ... FAILED\ntest cob::identity::test::terminal_states_concurrent ... ok\ntest cob::identity::test::test_identity_cannot_redact_terminal_states ... ok\ntest cob::identity::test::test_identity_redact_revision ... ok\ntest cob::identity::test::test_identity_update_rejected ... ok\ntest cob::identity::test::test_identity_updates ... ok\ntest cob::identity::test::test_identity_updates_concurrent ... ok\ntest cob::identity::test::test_identity_updates_concurrent_outdated ... ok\ntest cob::identity::test::test_valid_identity ... ok\ntest cob::issue::cache::tests::test_counts ... ok\ntest cob::issue::cache::tests::test_get ... ok\ntest cob::issue::cache::tests::test_is_empty ... ok\ntest cob::issue::cache::tests::test_list ... ok\ntest cob::issue::cache::tests::test_list_by_status ... ok\ntest cob::issue::cache::tests::test_remove ... ok\ntest cob::issue::test::test_concurrency ... ok\ntest cob::issue::test::test_embeds ... ok\ntest cob::issue::test::test_embeds_edit ... ok\ntest cob::issue::test::test_invalid_actions ... ok\ntest cob::issue::test::test_invalid_cob ... ok\ntest cob::issue::test::test_invalid_tx ... ok\ntest cob::issue::test::test_invalid_tx_reference ... ok\ntest cob::issue::test::test_issue_all ... ok\ntest cob::issue::test::test_issue_comment ... ok\ntest cob::issue::test::test_issue_comment_redact ... ok\ntest cob::issue::test::test_issue_create_and_assign ... ok\ntest cob::issue::test::test_issue_create_and_change_state ... ok\ntest cob::issue::test::test_issue_create_and_get ... ok\ntest cob::issue::test::test_issue_create_and_reassign ... ok\ntest cob::issue::test::test_issue_create_and_unassign ... ok\ntest cob::issue::test::test_issue_edit ... ok\ntest cob::issue::test::test_issue_edit_description ... ok\ntest cob::issue::test::test_issue_label ... ok\ntest cob::issue::test::test_issue_multilines ... ok\ntest cob::issue::test::test_issue_react ... ok\ntest cob::issue::test::test_issue_reply ... ok\ntest cob::issue::test::test_issue_state_serde ... ok\ntest cob::issue::test::test_ordering ... ok\ntest cob::patch::actions::test::test_review_edit ... ok\ntest cob::patch::cache::tests::test_counts ... ok\ntest cob::patch::cache::tests::test_find_by_revision ... ok\ntest cob::patch::cache::tests::test_get ... ok\ntest cob::patch::cache::tests::test_is_empty ... ok\ntest cob::patch::cache::tests::test_list ... ok\ntest cob::patch::cache::tests::test_list_by_status ... ok\ntest cob::patch::cache::tests::test_remove ... ok\ntest cob::patch::encoding::review::test::test_review_deserialize_summary_migration_null_summary ... ok\ntest cob::patch::encoding::review::test::test_review_deserialize_summary_migration_with_summary ... ok\ntest cob::patch::encoding::review::test::test_review_deserialize_summary_migration_without_summary ... ok\ntest cob::patch::encoding::review::test::test_review_deserialize_summary_v2 ... ok\ntest cob::patch::encoding::review::test::test_review_summary ... ok\ntest cob::patch::test::test_json ... ok\ntest cob::patch::test::test_json_serialisation_target ... ok\ntest cob::patch::test::test_json_serialization ... ok\ntest cob::patch::test::test_merge_target_resolution ... ok\ntest cob::patch::test::test_patch_create_and_get ... ok\ntest cob::patch::test::test_patch_discussion ... ok\ntest cob::patch::test::test_patch_merge ... ok\ntest cob::patch::test::test_patch_merge_authorization_ref_formats ... ok\ntest cob::patch::test::test_patch_merge_custom_destination_authorized ... ok\ntest cob::patch::test::test_patch_merge_custom_destination_unauthorized ... ok\ntest cob::patch::test::test_patch_redact ... ok\ntest cob::patch::test::test_patch_review ... ok\ntest cob::patch::test::test_patch_review_comment ... ok\ntest cob::patch::test::test_patch_review_duplicate ... ok\ntest cob::patch::test::test_patch_review_edit ... ok\ntest cob::patch::test::test_patch_review_edit_comment ... ok\ntest cob::patch::test::test_patch_review_remove_summary ... ok\ntest cob::patch::test::test_patch_review_revision_redact ... ok\ntest cob::patch::test::test_patch_update ... ok\ntest cob::patch::test::test_reactions_json_serialization ... ok\ntest cob::patch::test::test_revision_edit_redact ... ok\ntest cob::patch::test::test_revision_reaction ... ok\ntest cob::patch::test::test_revision_review_merge_redacted ... ok\ntest cob::patch::test::test_target_branch ... ok\ntest cob::stream::tests::test_all_from ... ok\ntest cob::stream::tests::test_all_from_until ... ok\ntest cob::stream::tests::test_all_until ... ok\ntest cob::stream::tests::test_from_until ... ok\ntest cob::stream::tests::test_regression_from_until ... ok\ntest cob::thread::tests::prop_ordering ... ok\ntest cob::thread::tests::test_comment_edit_missing ... ok\ntest cob::thread::tests::test_comment_edit_redacted ... ok\ntest cob::thread::tests::test_comment_redact_missing ... ok\ntest cob::thread::tests::test_duplicate_comments ... ok\ntest cob::thread::tests::test_edit_comment ... ok\ntest cob::thread::tests::test_redact_comment ... ok\ntest cob::thread::tests::test_timeline ... ok\ntest git::canonical::protect::tests::refs_rad ... ok\ntest git::canonical::protect::tests::refs_rad_id ... ok\ntest git::canonical::protect::tests::refs_radieschen ... ok\ntest git::canonical::quorum::test::merge_base_commutative ... ok\ntest git::canonical::quorum::test::test_merge_bases ... ok\ntest git::canonical::rules::test::canonical ... ok\ntest git::canonical::rules::test::deserialization ... ok\ntest git::canonical::rules::test::deserialize_extensions ... ok\ntest git::canonical::rules::test::matches_exactly_curly_braces ... ok\ntest git::canonical::rules::test::matches_expands_globs_appropriately ... ok\ntest git::canonical::rules::test::ordering ... ok\ntest git::canonical::rules::test::property::identity ... ok\ntest git::canonical::rules::test::property::prefix ... ok\ntest git::canonical::rules::test::property::prefix_negative ... ok\ntest git::canonical::rules::test::property::suffix ... ok\ntest git::canonical::rules::test::property::suffix_negative ... ok\ntest git::canonical::rules::test::property::trailing_asterisk_partial_component ... ok\ntest git::canonical::rules::test::roundtrip ... ok\ntest git::canonical::rules::test::rule_validate_failures ... ok\ntest git::canonical::rules::test::rule_validate_success ... ok\ntest git::canonical::rules::test::special_branches ... ok\ntest git::canonical::symbolic::test::deserialize_infinite ... ok\ntest git::canonical::symbolic::test::deserialize_order ... ok\ntest git::canonical::symbolic::test::deserialize_valid ... ok\ntest git::canonical::symbolic::test::infinite_extend ... ok\ntest git::canonical::symbolic::test::infinite_multi ... ok\ntest git::canonical::symbolic::test::infinite_single ... ok\ntest git::canonical::symbolic::test::reclassification_combine ... ok\ntest git::canonical::symbolic::test::reclassification_combine_reverse ... ok\ntest git::canonical::symbolic::test::reclassification_diamond ... ok\ntest git::canonical::symbolic::test::reclassification_order_invariant ... ok\ntest git::canonical::symbolic::test::reclassification_reverse_chain ... ok\ntest git::canonical::symbolic::test::resolve_two_hop_chain ... ok\ntest git::canonical::symbolic::test::target_classification ... ok\ntest git::canonical::symbolic::test::target_classification_symbolic ... ok\ntest git::canonical::symbolic::test::target_reclassification ... ok\ntest git::canonical::symbolic::test::target_reclassification_commutative ... ok\ntest git::canonical::tests::test_commit_quorum_fork_of_a_fork ... ok\ntest git::canonical::tests::test_commit_quorum_forked_merge_commits ... ok\ntest git::canonical::tests::test_commit_quorum_groups ... ok\ntest git::canonical::tests::test_commit_quorum_linear ... ok\ntest git::canonical::tests::test_commit_quorum_merges ... ok\ntest git::canonical::tests::test_commit_quorum_single ... ok\ntest git::canonical::tests::test_commit_quorum_three_way_fork ... ok\ntest git::canonical::tests::test_commit_quorum_two_way_fork ... ok\ntest git::canonical::tests::test_quorum_different_types ... ok\ntest git::canonical::tests::test_quorum_properties ... ok\ntest git::canonical::tests::test_tag_quorum ... ok\ntest git::test::test_version_from_str ... ok\ntest git::test::test_version_ord ... ok\ntest identity::crefs::tests::invalid_clash ... ok\ntest identity::crefs::tests::invalid_clash_asterisk_name ... ok\ntest identity::crefs::tests::invalid_dangling ... ok\ntest identity::crefs::tests::omit_symbolic ... ok\ntest identity::crefs::tests::valid ... ok\ntest identity::crefs::tests::valid_asterisk_target ... ok\ntest identity::did::test::test_did_encode_decode ... ok\ntest identity::did::test::test_did_vectors ... ok\ntest identity::doc::test::default_branch_clash ... ok\ntest identity::doc::test::default_branch_without_project ... ok\ntest identity::doc::test::prop_encode_decode ... ok\ntest identity::doc::test::test_canonical_doc ... ok\ntest identity::doc::test::test_canonical_example ... ok\ntest identity::doc::test::test_duplicate_dids ... ok\ntest identity::doc::test::test_future_version_error ... ok\ntest identity::doc::test::test_is_valid_version ... ok\ntest identity::doc::test::test_max_delegates ... ok\ntest identity::doc::test::test_not_found ... ok\ntest identity::doc::test::test_parse_version ... ok\ntest identity::doc::test::test_visibility_json ... ok\ntest identity::doc::update::test::test_can_update_crefs ... ok\ntest identity::doc::update::test::test_cannot_include_default_branch_rule ... ok\ntest identity::doc::update::test::test_default_branch_rule_exists_after_verification ... ok\ntest identity::project::test::test_project_name ... ok\ntest node::address::store::test::skip_invalid_address_type ... ok\ntest node::address::store::test::skip_mismatched_address_type ... ok\ntest node::address::store::test::test_alias ... ok\ntest node::address::store::test::test_disconnected ... ok\ntest node::address::store::test::test_disconnected_ban ... ok\ntest node::address::store::test::test_empty ... ok\ntest node::address::store::test::test_entries ... ok\ntest node::address::store::test::test_entries_skips_unparsable_address ... ok\ntest node::address::store::test::test_get_none ... ok\ntest node::address::store::test::test_insert_and_get ... ok\ntest node::address::store::test::test_insert_and_remove ... ok\ntest node::address::store::test::test_insert_and_update ... ok\ntest node::address::store::test::test_insert_duplicate ... ok\ntest node::address::store::test::test_node_aliases ... ok\ntest node::address::store::test::test_remove_nothing ... ok\ntest node::command::test::command_result ... ok\ntest node::config::test::deserialize_migrating_scope ... ok\ntest node::config::test::fetch_level_min ... ok\ntest node::config::test::onion_absent ... ok\ntest node::config::test::onion_null ... ok\ntest node::config::test::partial ... ok\ntest node::config::test::regression_ipv6_address_brackets ... ok\ntest node::config::test::regression_ipv6_address_no_brackets ... ok\ntest node::config::test::serialize_migrating_scope ... ok\ntest node::config::test::user_agent_custom ... ok\ntest node::config::test::user_agent_default ... ok\ntest node::config::test::user_agent_default_explicit ... ok\ntest node::config::test::user_agent_opt_out ... ok\ntest node::db::config::test::database_config_valid_combinations ... ok\ntest node::db::config::test::invalid ... ok\ntest node::db::test::migration_8::all_ipv6_formatted_dns_addresses_are_retyped ... ok\ntest node::db::test::migration_8::dns_address_starting_with_bracket_but_missing_closing_bracket_colon_is_unaffected ... ok\ntest node::db::test::migration_8::dns_address_with_bracket_not_at_start_is_unaffected ... ok\ntest node::db::test::migration_8::ipv4_address_is_unaffected ... ok\ntest node::db::test::migration_8::ipv6_formatted_dns_address_is_deleted_when_correct_ipv6_row_already_exists ... ok\ntest node::db::test::migration_8::ipv6_formatted_dns_address_is_retyped_to_ipv6 ... ok\ntest node::db::test::migration_8::migration_applies_to_all_nodes ... ok\ntest node::db::test::migration_8::plain_dns_hostname_without_brackets_is_unaffected ... ok\ntest node::db::test::migration_8::retype_preserves_address_metadata ... ok\ntest node::db::test::migration_9::bracketed_non_ipv6_garbage_is_deleted ... ok\ntest node::db::test::migration_9::dns_row_is_unaffected_even_when_inner_part_has_no_colon ... ok\ntest node::db::test::migration_9::empty_brackets_ipv6_row_is_deleted ... ok\ntest node::db::test::migration_9::full_ipv6_address_is_kept ... ok\ntest node::db::test::migration_9::ipv4_row_is_unaffected ... ok\ntest node::db::test::migration_9::loopback_address_is_kept ... ok\ntest node::db::test::migration_9::unspecified_address_is_kept ... ok\ntest node::db::test::test_version ... ok\ntest node::features::test::test_operations ... ok\ntest node::notifications::store::test::test_branch_notifications ... ok\ntest node::notifications::store::test::test_clear ... ok\ntest node::notifications::store::test::test_cob_notifications ... ok\ntest node::notifications::store::test::test_counts_by_repo ... ok\ntest node::notifications::store::test::test_duplicate_notifications ... ok\ntest node::notifications::store::test::test_notification_status ... ok\ntest node::policy::store::test::test_follow_and_unfollow_node ... ok\ntest node::policy::store::test::test_node_aliases ... ok\ntest node::policy::store::test::test_node_policies ... ok\ntest node::policy::store::test::test_node_policy ... ok\ntest node::policy::store::test::test_repo_policies ... ok\ntest node::policy::store::test::test_repo_policy ... ok\ntest node::policy::store::test::test_seed_and_unseed_repo ... ok\ntest node::policy::store::test::test_update_alias ... ok\ntest node::policy::store::test::test_update_scope ... ok\ntest node::refs::store::test::test_count ... ok\ntest node::refs::store::test::test_set_and_delete ... ok\ntest node::refs::store::test::test_set_and_get ... ok\ntest node::routing::test::test_count ... ok\ntest node::routing::test::test_entries ... ok\ntest node::routing::test::test_insert_and_get ... ok\ntest node::routing::test::test_insert_and_get_resources ... ok\ntest node::routing::test::test_insert_and_remove ... ok\ntest node::routing::test::test_insert_duplicate ... ok\ntest node::routing::test::test_insert_existing_updated_time ... ok\ntest node::routing::test::test_len ... ok\ntest node::routing::test::test_prune ... ok\ntest node::routing::test::test_remove_many ... ok\ntest node::routing::test::test_remove_redundant ... ok\ntest node::routing::test::test_update_existing_multi ... ok\ntest node::sync::announce::test::all_synced_nodes_are_preferred_seeds ... ok\ntest node::sync::announce::test::announcer_adapts_target_to_reach ... ok\ntest node::sync::announce::test::announcer_preferred_seeds_or_replica_factor ... ok\ntest node::sync::announce::test::announcer_reached_max_replication_target ... ok\ntest node::sync::announce::test::announcer_reached_min_replication_target ... ok\ntest node::sync::announce::test::announcer_reached_preferred_seeds ... ok\ntest node::sync::announce::test::announcer_synced_with_unknown_node ... ok\ntest node::sync::announce::test::announcer_timed_out ... ok\ntest node::sync::announce::test::announcer_with_replication_factor_zero_and_preferred_seeds ... ok\ntest node::sync::announce::test::cannot_construct_announcer ... ok\ntest node::sync::announce::test::construct_node_appears_in_multiple_input_sets ... ok\ntest node::sync::announce::test::construct_only_preferred_seeds_provided ... ok\ntest node::sync::announce::test::invariant_progress_should_match_state ... ok\ntest node::sync::announce::test::local_node_in_multiple_sets ... ok\ntest node::sync::announce::test::local_node_in_preferred_seeds ... ok\ntest node::sync::announce::test::local_node_in_synced_set ... ok\ntest node::sync::announce::test::local_node_in_unsynced_set ... ok\ntest node::sync::announce::test::local_node_only_in_all_sets_results_in_no_seeds_error ... ok\ntest node::sync::announce::test::preferred_seeds_already_synced ... ok\ntest node::sync::announce::test::synced_with_local_node_is_ignored ... ok\ntest node::sync::announce::test::synced_with_same_node_multiple_times ... ok\ntest node::sync::announce::test::timed_out_after_reaching_success ... ok\ntest node::sync::fetch::test::all_nodes_are_candidates ... ok\ntest node::sync::fetch::test::all_nodes_are_fetchable ... ok\ntest node::sync::fetch::test::could_not_reach_target ... ok\ntest node::sync::fetch::test::ignores_duplicates_and_local_node ... ok\ntest node::sync::fetch::test::preferred_seeds_target_returned_over_replicas ... ok\ntest node::sync::fetch::test::reaches_target_of_max_replicas ... ok\ntest node::sync::fetch::test::reaches_target_of_preferred_seeds ... ok\ntest node::sync::fetch::test::reaches_target_of_replicas ... ok\ntest node::sync::test::ensure_replicas_construction ... ok\ntest node::sync::test::replicas_constrain_to ... ok\ntest node::test::test_address ... ok\ntest node::test::test_alias ... ok\ntest node::test::test_command_result ... ok\ntest node::test::test_user_agent ... ok\ntest node::timestamp::tests::test_timestamp_max ... ok\ntest profile::config::test::schema ... ok\ntest profile::test::canonicalize_home ... ok\ntest profile::test::test_config ... ok\ntest rad::tests::test_checkout ... ok\ntest rad::tests::test_fork ... ok\ntest rad::tests::test_init ... ok\ntest storage::git::tests::test_references_of ... ok\ntest storage::git::tests::test_sign_refs ... ok\ntest storage::git::transport::local::url::test::test_url_parse ... ok\ntest storage::git::transport::local::url::test::test_url_to_string ... ok\ntest storage::git::transport::remote::url::test::test_url_parse ... ok\ntest cob::identity::test::property::prop_invariants ... ok\ntest storage::refs::sigrefs::git::properties::idempotent_write ... ok\ntest storage::refs::sigrefs::git::properties::chain_roundtrip ... ok\ntest storage::refs::sigrefs::git::properties::initial_commit_roundtrip ... ok\ntest storage::refs::sigrefs::property::idempotent ... ok\ntest storage::refs::sigrefs::read::test::commit_reader::identity_root_error ... ok\ntest storage::refs::sigrefs::read::test::commit_reader::missing_commit ... ok\ntest storage::refs::sigrefs::read::test::commit_reader::read_ok ... ok\ntest storage::refs::sigrefs::read::test::commit_reader::too_many_parents ... ok\ntest storage::refs::sigrefs::read::test::commit_reader::tree_error ... ok\ntest storage::refs::sigrefs::read::test::identity_root_reader::doc_blob_error ... ok\ntest storage::refs::sigrefs::read::test::identity_root_reader::missing_identity ... ok\ntest storage::refs::sigrefs::read::test::identity_root_reader::read_ok_none ... ok\ntest storage::refs::sigrefs::read::test::identity_root_reader::read_ok_some ... ok\ntest storage::refs::sigrefs::read::test::resolve_tip::find_reference_error ... ok\ntest storage::refs::sigrefs::read::test::resolve_tip::missing_sigrefs ... ok\ntest storage::refs::sigrefs::read::test::resolve_tip::resolve_tip_ok ... ok\ntest storage::refs::sigrefs::read::test::signed_refs_reader::detect_parent::root_without_parent ... ok\ntest storage::refs::sigrefs::read::test::signed_refs_reader::detect_parent::root_without_root ... ok\ntest storage::refs::sigrefs::read::test::signed_refs_reader::downgrade::parent ... ok\ntest storage::refs::sigrefs::read::test::signed_refs_reader::downgrade::restore ... ok\ntest storage::refs::sigrefs::read::test::signed_refs_reader::downgrade::root ... ok\ntest storage::refs::sigrefs::read::test::signed_refs_reader::downgrade::root_with_parent ... ok\ntest storage::refs::sigrefs::read::test::signed_refs_reader::head_commit_error ... ok\ntest storage::refs::sigrefs::read::test::signed_refs_reader::head_verify_mismatched_identity_error ... ok\ntest storage::refs::sigrefs::read::test::signed_refs_reader::head_verify_signature_error ... ok\ntest storage::refs::sigrefs::read::test::signed_refs_reader::invalid_parent ... ok\ntest storage::refs::sigrefs::read::test::signed_refs_reader::read_ok_no_parent ... ok\ntest storage::refs::sigrefs::read::test::signed_refs_reader::read_ok_parent ... ok\ntest storage::refs::sigrefs::read::test::signed_refs_reader::read_ok_root ... ok\ntest storage::refs::sigrefs::read::test::signed_refs_reader::replay::alternating ... ok\ntest storage::refs::sigrefs::read::test::signed_refs_reader::replay::chain ... ok\ntest storage::refs::sigrefs::read::test::signed_refs_reader::replay::multiple ... ok\ntest storage::refs::sigrefs::read::test::signed_refs_reader::replay::root_at_head ... ok\ntest storage::refs::sigrefs::read::test::signed_refs_reader::single_commit ... ok\ntest storage::refs::sigrefs::read::test::signed_refs_reader::two_commits ... ok\ntest storage::refs::sigrefs::read::test::signed_refs_reader::walk_commit_error ... ok\ntest storage::refs::sigrefs::read::test::signed_refs_reader::walk_verify_error ... ok\ntest storage::refs::sigrefs::read::test::tree_reader::missing_both ... ok\ntest storage::refs::sigrefs::read::test::tree_reader::missing_refs ... ok\ntest storage::refs::sigrefs::read::test::tree_reader::missing_signature ... ok\ntest storage::refs::sigrefs::read::test::tree_reader::parse_refs_error ... ok\ntest storage::refs::sigrefs::read::test::tree_reader::parse_signature_error ... ok\ntest storage::refs::sigrefs::read::test::tree_reader::read_ok ... ok\ntest storage::refs::sigrefs::read::test::tree_reader::read_refs_error ... ok\ntest storage::refs::sigrefs::read::test::tree_reader::read_signature_error ... ok\ntest storage::refs::sigrefs::write::test::commit_writer::tree_error ... ok\ntest storage::refs::sigrefs::write::test::commit_writer::write_commit_error ... ok\ntest storage::refs::sigrefs::write::test::commit_writer::write_empty_refs ... ok\ntest storage::refs::sigrefs::write::test::commit_writer::write_root_ok ... ok\ntest storage::refs::sigrefs::write::test::commit_writer::write_with_parent_ok ... ok\ntest storage::refs::sigrefs::write::test::head_reader::no_head ... ok\ntest storage::refs::sigrefs::write::test::head_reader::read_ok ... ok\ntest storage::refs::sigrefs::write::test::head_reader::reference_error ... ok\ntest storage::refs::sigrefs::write::test::head_reader::refs_blob_error ... ok\ntest storage::refs::sigrefs::write::test::head_reader::refs_blob_missing ... ok\ntest storage::refs::sigrefs::write::test::head_reader::refs_parse_error ... ok\ntest storage::refs::sigrefs::write::test::head_reader::signature_blob_error ... ok\ntest storage::refs::sigrefs::write::test::head_reader::signature_blob_missing ... ok\ntest storage::refs::sigrefs::write::test::head_reader::signature_parse_error ... ok\ntest storage::refs::sigrefs::write::test::signed_refs_writer::commit_error ... ok\ntest storage::refs::sigrefs::write::test::signed_refs_writer::head_error ... ok\ntest storage::refs::sigrefs::write::test::signed_refs_writer::never_write_rad_sigrefs ... ok\ntest storage::refs::sigrefs::write::test::signed_refs_writer::reference_error ... ok\ntest storage::refs::sigrefs::write::test::signed_refs_writer::unchanged ... ok\ntest storage::refs::sigrefs::write::test::signed_refs_writer::unchanged_force_writes_new_commit ... ok\ntest storage::refs::sigrefs::write::test::signed_refs_writer::write_empty_refs ... ok\ntest storage::refs::sigrefs::write::test::signed_refs_writer::write_root_ok ... ok\ntest storage::refs::sigrefs::write::test::signed_refs_writer::write_with_parent_ok ... ok\ntest storage::refs::sigrefs::write::test::tree_writer::sign_error ... ok\ntest storage::refs::sigrefs::write::test::tree_writer::write_ok ... ok\ntest storage::refs::sigrefs::write::test::tree_writer::write_tree_error ... ok\ntest storage::refs::tests::prop_canonical_roundtrip ... ok\ntest storage::refs::tests::test_rid_verification ... ok\ntest storage::tests::test_storage ... ok\ntest test::assert::test::assert_with_message ... ok\ntest test::assert::test::test_assert_no_move ... ok\ntest test::assert::test::test_assert_panic_0 - should panic ... ok\ntest test::assert::test::test_assert_panic_1 - should panic ... ok\ntest test::assert::test::test_assert_panic_2 - should panic ... ok\ntest test::assert::test::test_assert_succeed ... ok\ntest test::assert::test::test_panic_message ... ok\ntest version::test::test_version ... ok\ntest web::test::description_only ... ok\ntest web::test::pinned_empty ... ok\ntest storage::refs::sigrefs::property::roundtrip ... ok\n\nfailures:\n\n---- cob::identity::test::remove_delegate_concurrent stdout ----\n\nthread 'cob::identity::test::remove_delegate_concurrent' (7440) panicked at crates/radicle/src/cob/identity.rs:1745:9:\nassertion `left == right` failed\n left: [5a3c5d50c7c9dda65c79f6b1c91d2840937d58fd, dd191a7a73d76c510f4f1c3d9be0e8fa0259baaf, 65a5efe0585dc66d6d10a30f732704b34abec9c9, dd34002f40deb47ed32c8c419ca6cf19b52b424a, 60d7b6ebcda7406be757f187da9acc710a247d34]\n right: [5a3c5d50c7c9dda65c79f6b1c91d2840937d58fd, dd191a7a73d76c510f4f1c3d9be0e8fa0259baaf, 65a5efe0585dc66d6d10a30f732704b34abec9c9, dd34002f40deb47ed32c8c419ca6cf19b52b424a]\nnote: run with `RUST_BACKTRACE=1` environment variable to display a backtrace\n\n\nfailures:\n cob::identity::test::remove_delegate_concurrent\n\ntest result: FAILED. 392 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 16.33s\n\n",
"stderr": " Finished `test` profile [unoptimized + debuginfo] target(s) in 0.26s\n Running unittests src/lib.rs (/ci/cache/cargo-target/debug/deps/radicle-f47a7c2ba456ab00)\nerror: test failed, to rerun pass `-p radicle --lib`\n",
"timestamp": {
"secs_since_epoch": 1782338259,
"nanos_since_epoch": 955630072
},
"log_source": "Plan"
}{
"type": "action_failed",
"action": "cargo_test",
"timestamp": {
"secs_since_epoch": 1782338260,
"nanos_since_epoch": 284236649
},
"log_source": "Plan"
}{
"type": "executor_ends_in_failure",
"exit_code": 1,
"timestamp": {
"secs_since_epoch": 1782338260,
"nanos_since_epoch": 285017485
},
"log_source": "Plan"
}{
"request": "trigger",
"version": 1,
"event_type": "patch",
"repository": {
"id": "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5",
"name": "heartwood",
"description": "Radicle Heartwood Protocol & Stack",
"private": false,
"default_branch": "master",
"delegates": [
"did:key:z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT",
"did:key:z6MktaNvN1KVFMkSRAiN4qK5yvX1zuEEaseeX5sffhzPZRZW",
"did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"did:key:z6MkgFq6z5fkF2hioLLSNu1zP2qEL1aHXHZzGH1FLFGAnBGz",
"did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz"
]
},
"action": "Updated",
"patch": {
"id": "712a995a282fd544b081ea02dae7ff246810a20c",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": "lorenz"
},
"title": "radicle/cob/identity: Rewrite Evaluation",
"state": {
"status": "open",
"conflicts": []
},
"before": "88bf2a9648750365d4565e32deae35b18808a391",
"after": "411c73948a9857eb083a2fc8330ffae822e20efd",
"commits": [
"411c73948a9857eb083a2fc8330ffae822e20efd",
"46d276d7bac7c6e25614de96e87f2b17ec237fb7",
"cd15af7621b24415405ce8bef6e7904b2c625981",
"6cde98b2b264f40e47763d1b168d74c15426ec2c",
"1a796c585e6ee7ac43ec66db1f91e6d2d55b7c91",
"dd7514e542f6893ce60c4ac1ff8de339fd60d67d",
"b13981875fe0056b76a9fe1347e0289299b2c50e",
"e36f1b37ed7d96795eba7e93067b2406851918ab",
"f55bdcd7dff252a6a28ff04e1fa4d214daa18f23",
"3318a050aa0630b1ebecb369d518a634e865306c",
"991a9cd6f21bb7b18d1c9667f39b2b70f9e4b372",
"1e0f0e2bd2963c79e94af43192bddb3f5f99a072",
"fc30d9c19eb49e6e5334a96e37f18dcecbe070e1",
"1dbb9bf4128415537b036974821e60ed27318d21",
"ad2181a8deffee18982e8bd61843df54c04d9b52",
"eb7d8169e1f53d597caa53cdae60d8bf437700f2"
],
"target": "ee17109501428319311d18f9bfc339a2a6dec88b",
"labels": [],
"assignees": [],
"revisions": [
{
"id": "712a995a282fd544b081ea02dae7ff246810a20c",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": "lorenz"
},
"description": "### Use verdicts to count votes\n\nEvaluation of this COB is implemented under the assumption that\ndelegates accept at most one revision.\n\nThis can lead to issues, if some delegates create new revisions eagerly,\nwithout waiting for the others to vote on earlier revisions. As the\neager delegates start accepting newer and newer revisions, this shadows\ntheir acceptance of earlier revisions, which leads to failure to\nrecognize that these earlier revisions were actually accepted by a\nmajority.\n\nTo avoid such situations, remove `heads`, and always count the number of\n\"accept\" verdicts explicitly.\n\n### Rewrite Evaluation\n\nEvaluation of the COB `xyz.radicle.id` is rewritten to remove the\nvariant `State::Stale`.\n\nSince we require the history of accepted revisions to be linear, we may\nas well interpret all siblings of adopted revisions to be rejected.\nThis gives a nice symmetry between accepted and rejected revisions.\n\nIntroduce `State::Redacted`, as handling redacted revisions with their\nown state is easier to reason about compared to having to maintain\ninvariants for `revisions: BTreeMap<RevisionId, Option<Revision>>`.",
"base": "998ff91e2c25f1432de007c90fb447849ada37d2",
"oid": "7f92cfda0ac5572854bc564f60071f6e17371c62",
"timestamp": 1779442165
},
{
"id": "52e5ed2946f3c207f5de086af788253f76a1fb70",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": "lorenz"
},
"description": "Adds 3 additional tests. The last is failing.",
"base": "998ff91e2c25f1432de007c90fb447849ada37d2",
"oid": "22ce2ce70609009d3be6a6403aca07106383e262",
"timestamp": 1779457796
},
{
"id": "94d842c0f46d63e77be28cf0bef6557c5bb56b41",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": "lorenz"
},
"description": "Add fix and update existing tests",
"base": "998ff91e2c25f1432de007c90fb447849ada37d2",
"oid": "9d89a2e35c36290e320ffd18d341c0df9c333fa3",
"timestamp": 1779462080
},
{
"id": "528a25f8667d2cdb8388777d428e1a1924df5c1b",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": "lorenz"
},
"description": "Adds property tests for identity COB",
"base": "998ff91e2c25f1432de007c90fb447849ada37d2",
"oid": "6fe9842ed421f3cc5b1671c916d439d27c94bf59",
"timestamp": 1779902132
},
{
"id": "83fbe2b387974e4fa592ad1866f3dcc9cd201559",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": "lorenz"
},
"description": "Fixes threshold assumptions",
"base": "998ff91e2c25f1432de007c90fb447849ada37d2",
"oid": "b3beea8f837f67624d2b33bc6dd0a8c06be8a381",
"timestamp": 1779969863
},
{
"id": "fbc6da86326be94fde4906ea3311b831567a0144",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": "lorenz"
},
"description": "Removes more references to `threshold` and updates diagrams",
"base": "998ff91e2c25f1432de007c90fb447849ada37d2",
"oid": "8e46599111307315e6f51534dfbb28599516f1dd",
"timestamp": 1780054002
},
{
"id": "03e6eeeb7af3e71d0e3ea0fee99d79328e8bced5",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": "lorenz"
},
"description": "- Add causal reasons to Rejected and Redacted states\n- Fix rejection threshold calculation\n- Fix sibling resolution for late-arriving forks",
"base": "998ff91e2c25f1432de007c90fb447849ada37d2",
"oid": "7d971f19bab96137e2032f9d6524335b4277e708",
"timestamp": 1780390774
},
{
"id": "39cbe88e23edf6352677f8cc8a8e3f143d008322",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": "lorenz"
},
"description": "Rework Patch\n\nThe majority of this revision keeps the improved evaluation of the repository\nidentity. To make the changes more coherent, it squashes these improvements into\na single commit, re-describing the changes.\n\nThe test cases are then added as individual commits, followed by the property tests.\n\nThe additions I do provide in this revision are some extra test cases, and\ncatching a bug in the adoption logic that allowed rescinded delegates to count\ntheir votes in child revisions.",
"base": "998ff91e2c25f1432de007c90fb447849ada37d2",
"oid": "a706c99b8f6c2b27048df78f4f3c05dfe2f27cba",
"timestamp": 1781281164
},
{
"id": "6ddba384d56b3d5e7063122cdab7062d2fed3609",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": "lorenz"
},
"description": "Changes:\n- cargo fmt",
"base": "998ff91e2c25f1432de007c90fb447849ada37d2",
"oid": "87a09c733b636d6bd2b628e1fafec2fb452addfc",
"timestamp": 1781281279
},
{
"id": "cd80cb5ae8db5ec2c4daae8e7b5708e25d698193",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": "lorenz"
},
"description": "Rebase and review.",
"base": "88bf2a9648750365d4565e32deae35b18808a391",
"oid": "e97fb436bf93a65fb3e18a2e4f2c797959288b26",
"timestamp": 1781903994
},
{
"id": "b0133884d308d27153302067102dad6bbe06e254",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": "lorenz"
},
"description": "Review",
"base": "88bf2a9648750365d4565e32deae35b18808a391",
"oid": "ccde4dfd7f2a0eab5c300c31413e227707543c7b",
"timestamp": 1781962655
},
{
"id": "8ff7c16bcdb67027ae869490fd3c6361eb1efd4a",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": "lorenz"
},
"description": "Another round of polishing.",
"base": "88bf2a9648750365d4565e32deae35b18808a391",
"oid": "fe4b01138d58cd122dfe5af483718c719d69f3af",
"timestamp": 1782252269
},
{
"id": "432f8d7a19045a11354ae98d6e594e157eaf10c7",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": "lorenz"
},
"description": "Refactor property tests and existing unit to incorporate new authorisation rules dictated by the parent revision.",
"base": "88bf2a9648750365d4565e32deae35b18808a391",
"oid": "5326910464131de4ecf99c1d343f57d2edfc5ddc",
"timestamp": 1782313654
},
{
"id": "51d685da41a4298859a2cde289f86e168e4e44a1",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": "lorenz"
},
"description": "Work in review, reword commit messages.",
"base": "88bf2a9648750365d4565e32deae35b18808a391",
"oid": "411c73948a9857eb083a2fc8330ffae822e20efd",
"timestamp": 1782338152
}
]
}
}executor from config: /usr/bin/ambient-execute-plan executor from PATH: /usr/bin/ambient-execute-plan run CI for rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5 ERROR: CI run failed inside QEMU
<empty log>