Radicle repository id rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5
[2025-09-30T17:32:33Z INFO ambient] ambient starts
[2J[01;01H[=3h[2J[01;01H[2J[01;01H[=3h[2J[01;01HBdsDxe: failed to load Boot0001 "UEFI QEMU DVD-ROM QM00005 " from PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x2,0xFFFF,0x0): Not Found
BdsDxe: loading Boot0002 "UEFI Misc Device" from PciRoot(0x0)/Pci(0x2,0x0)
BdsDxe: starting Boot0002 "UEFI Misc Device" from PciRoot(0x0)/Pci(0x2,0x0)
[0m[30m[47mWelcome to GRUB!
[0m[37m[40m[0m[30m[40m[2J[01;01H[0m[37m[40mINFO: Block devices
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
vda 254:0 0 100G 0 disk
├─vda1 254:1 0 953M 0 part
└─vda2 254:2 0 99.1G 0 part /
vdb 254:16 0 6.1M 1 disk
vdc 254:32 0 29.2M 1 disk
vdd 254:48 0 9.3G 0 disk
vde 254:64 0 46.6G 0 disk
vdf 254:80 0 809.1M 1 disk
INFO: Extracting tar archive from /dev/vdb
drwxr-xr-x _rad/_rad 0 2025-09-30 17:28 ./
-rw-r--r-- _rad/_rad 2450 2025-09-30 17:28 ./plan.yaml
-rwxr-xr-x _rad/_rad 6410400 2025-09-30 17:28 ./run-ci
INFO: Extracted files:
4587526 4 drwxr-xr-x 2 1001 1001 4096 Sep 30 17:28 .
4587527 4 -rw-r--r-- 1 1001 1001 2450 Sep 30 17:28 ./plan.yaml
4587530 6264 -rwxr-xr-x 1 1001 1001 6410400 Sep 30 17:28 ./run-ci
INFO: Running run-ci from /dev/vdb
================================ BEGIN ================================
[2025-09-30T17:29:32Z TRACE ambient_execute_plan] ambient-execute-plan version 0.7.0@14cdd4c starts
[2025-09-30T17:29:32Z DEBUG ambient_execute_plan] ambient-execute-plan version 0.7.0@14cdd4c starts
[2025-09-30T17:29:32Z INFO ambient_execute_plan] ambient-execute-plan version 0.7.0@14cdd4c starts
[2025-09-30T17:29:32Z WARN ambient_execute_plan] ambient-execute-plan version 0.7.0@14cdd4c starts
[2025-09-30T17:29:32Z ERROR ambient_execute_plan] ambient-execute-plan version 0.7.0@14cdd4c starts
RunnablePlan::from_file: filename=plan.yaml
steps:
- action: mkdir
pathname: /workspace
- action: mkdir
pathname: /workspace/artifacts
- action: tar_extract
archive: /dev/vdc
directory: /workspace/src
- action: tar_extract
archive: /dev/vdf
directory: /workspace/deps
- action: tar_extract
archive: /dev/vde
directory: /workspace/cache
- action: spawn
argv:
- find
- /workspace
- -maxdepth
- '2'
- -ls
- 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
# these variables manually. Once Ambient manages environment
# variables better, these can be deleted.
export CARGO_TARGET_DIR=/workspace/cache
export CARGO_HOME=/workspace/deps
export HOME=/root
export PATH="/root/.cargo/bin:$PATH"
export RUSTDOCFLAGS='-D warnings'
cargo doc --workspace --no-deps
- action: shell
shell: |
# Because of a (temporary) limitation in Ambient, we need to set
# these variables manually. Once Ambient manages environment
# variables better, these can be deleted.
export CARGO_TARGET_DIR=/workspace/cache
export CARGO_HOME=/workspace/deps
export HOME=/root
export PATH="/root/.cargo/bin:$PATH"
# These are based on debian/control.
export DEBEMAIL=liw@liw.fi
export DEBFULLNAME="Lars Wirzenius"
# Clean up after tests and documentation building. The Debian
# package building tools do not want changes outside the
# `debian` directory, compared to what is committed to Git, from
# which the "upstream tarball" is created.
git reset --hard
git clean -fdx
git status --ignored
# Update debian/changelog with a new version so that every run
# creates a newer version. This avoids us having to update the
# file manually for every CI run.
V="$(dpkg-parsechangelog -SVersion | sed 's/-[^-]*$//')"
T="$(date -u "+%Y%m%dT%H%M%S")"
version="$V.ci$T-1"
dch -v "$version" "CI build under Ambient."
dch -r ''
- action: deb
- action: tar_create
archive: /dev/vde
directory: /workspace/cache
- action: tar_create
archive: /dev/vdd
directory: /workspace/artifacts
executor_drive: /dev/vdb
source_drive: /dev/vdc
artifact_drive: /dev/vdd
cache_drive: /dev/vde
deps_drive: /dev/vdf
workspace_dir: /workspace
source_dir: /workspace/src
deps_dir: /workspace/deps
cache_dir: /workspace/cache
artifacts_dir: /workspace/artifacts
[2025-09-30T17:29:32Z DEBUG ambient_ci::plan] RUN: Action Mkdir {
pathname: "/workspace",
}
[2025-09-30T17:29:32Z DEBUG ambient_ci::action] Plan::execute: plan=Mkdir {
pathname: "/workspace",
}
[2025-09-30T17:29:32Z DEBUG ambient_ci::action] Plan::execute: context=Context {
envs: {
"CARGO_TARGET_DIR": "/workspace/cache",
"CARGO_HOME": "/workspace/deps",
"PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
},
source_dir: "/workspace/src",
}
[2025-09-30T17:29:32Z DEBUG ambient_ci::plan] RUN: Action finished OK
[2025-09-30T17:29:32Z DEBUG ambient_ci::plan] RUN: Action Mkdir {
pathname: "/workspace/artifacts",
}
[2025-09-30T17:29:32Z DEBUG ambient_ci::action] Plan::execute: plan=Mkdir {
pathname: "/workspace/artifacts",
}
[2025-09-30T17:29:32Z DEBUG ambient_ci::action] Plan::execute: context=Context {
envs: {
"CARGO_TARGET_DIR": "/workspace/cache",
"CARGO_HOME": "/workspace/deps",
"PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
},
source_dir: "/workspace/src",
}
[2025-09-30T17:29:32Z DEBUG ambient_ci::plan] RUN: Action finished OK
[2025-09-30T17:29:32Z DEBUG ambient_ci::plan] RUN: Action TarExtract {
archive: "/dev/vdc",
directory: "/workspace/src",
}
[2025-09-30T17:29:32Z DEBUG ambient_ci::action] Plan::execute: plan=TarExtract {
archive: "/dev/vdc",
directory: "/workspace/src",
}
[2025-09-30T17:29:32Z DEBUG ambient_ci::action] Plan::execute: context=Context {
envs: {
"CARGO_TARGET_DIR": "/workspace/cache",
"CARGO_HOME": "/workspace/deps",
"PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
},
source_dir: "/workspace/src",
}
[2025-09-30T17:29:32Z TRACE ambient_ci::vdrive] extracting /dev/vdc to /workspace/src
[2025-09-30T17:29:33Z TRACE ambient_ci::vdrive] extraction OK
[2025-09-30T17:29:33Z DEBUG ambient_ci::plan] RUN: Action finished OK
[2025-09-30T17:29:33Z DEBUG ambient_ci::plan] RUN: Action TarExtract {
archive: "/dev/vdf",
directory: "/workspace/deps",
}
[2025-09-30T17:29:33Z DEBUG ambient_ci::action] Plan::execute: plan=TarExtract {
archive: "/dev/vdf",
directory: "/workspace/deps",
}
[2025-09-30T17:29:33Z DEBUG ambient_ci::action] Plan::execute: context=Context {
envs: {
"CARGO_TARGET_DIR": "/workspace/cache",
"CARGO_HOME": "/workspace/deps",
"PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
},
source_dir: "/workspace/src",
}
[2025-09-30T17:29:33Z TRACE ambient_ci::vdrive] extracting /dev/vdf to /workspace/deps
[2025-09-30T17:29:57Z TRACE ambient_ci::vdrive] extraction OK
[2025-09-30T17:29:57Z DEBUG ambient_ci::plan] RUN: Action finished OK
[2025-09-30T17:29:57Z DEBUG ambient_ci::plan] RUN: Action TarExtract {
archive: "/dev/vde",
directory: "/workspace/cache",
}
[2025-09-30T17:29:57Z DEBUG ambient_ci::action] Plan::execute: plan=TarExtract {
archive: "/dev/vde",
directory: "/workspace/cache",
}
[2025-09-30T17:29:57Z DEBUG ambient_ci::action] Plan::execute: context=Context {
envs: {
"CARGO_TARGET_DIR": "/workspace/cache",
"CARGO_HOME": "/workspace/deps",
"PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
},
source_dir: "/workspace/src",
}
[2025-09-30T17:29:57Z TRACE ambient_ci::vdrive] extracting /dev/vde to /workspace/cache
[2025-09-30T17:32:21Z TRACE ambient_ci::vdrive] extraction OK
[2025-09-30T17:32:21Z DEBUG ambient_ci::plan] RUN: Action finished OK
[2025-09-30T17:32:21Z DEBUG ambient_ci::plan] RUN: Action Spawn {
argv: [
"find",
"/workspace",
"-maxdepth",
"2",
"-ls",
],
}
[2025-09-30T17:32:21Z DEBUG ambient_ci::action] Plan::execute: plan=Spawn {
argv: [
"find",
"/workspace",
"-maxdepth",
"2",
"-ls",
],
}
[2025-09-30T17:32:21Z DEBUG ambient_ci::action] Plan::execute: context=Context {
envs: {
"CARGO_TARGET_DIR": "/workspace/cache",
"CARGO_HOME": "/workspace/deps",
"PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
},
source_dir: "/workspace/src",
}
SPAWN: argv=["find", "/workspace", "-maxdepth", "2", "-ls"]
cwd=/workspace/src (exists? true)
2621441 4 drwxr-xr-x 6 root root 4096 Sep 30 17:29 /workspace
2622252 4 drwxr-xr-x 3 root root 4096 Sep 30 17:28 /workspace/deps
2622253 0 -rw-r--r-- 1 root root 0 Sep 22 16:46 /workspace/deps/.package-cache-mutate
2622256 4 drwxr-xr-x 5 root root 4096 Sep 22 16:46 /workspace/deps/registry
2622254 128 -rw-r--r-- 1 root root 131072 Sep 30 17:28 /workspace/deps/.global-cache
2622255 0 -rw-r--r-- 1 root root 0 Sep 22 16:46 /workspace/deps/.package-cache
2621443 4 drwxr-xr-x 12 root root 4096 Sep 30 17:28 /workspace/src
2621499 4 -rw-r--r-- 1 root root 2653 Sep 30 17:28 /workspace/src/Cargo.toml
2622248 12 -rw-r--r-- 1 root root 9636 Sep 30 17:28 /workspace/src/CONTRIBUTING.md
2621500 4 drwxr-xr-x 2 root root 4096 Sep 30 17:28 /workspace/src/.config
2621496 4 -rw-r--r-- 1 root root 1623 Sep 30 17:28 /workspace/src/build.rs
2621502 4 -rw-r--r-- 1 root root 426 Sep 30 17:28 /workspace/src/radicle-node.1.adoc
2621504 4 drwxr-xr-x 8 root root 4096 Sep 30 17:28 /workspace/src/.git
2622245 8 -rw-r--r-- 1 root root 7144 Sep 30 17:28 /workspace/src/rad-id.1.adoc
2621460 4 -rw-r--r-- 1 root root 2163 Sep 30 17:28 /workspace/src/VERSIONING.md
2621495 4 -rw-r--r-- 1 root root 3133 Sep 30 17:28 /workspace/src/README.md
2621653 12 -rw-r--r-- 1 root root 10975 Sep 30 17:28 /workspace/src/rad-patch.1.adoc
2622249 4 -rw-r--r-- 1 root root 79 Sep 30 17:28 /workspace/src/ARCHITECTURE.md
2621661 4 drwxr-xr-x 17 root root 4096 Sep 30 17:28 /workspace/src/crates
2621448 4 drwxr-xr-x 2 root root 4096 Sep 30 17:28 /workspace/src/scripts
2621444 4 drwxr-xr-x 2 root root 4096 Sep 30 17:28 /workspace/src/.radicle
2621467 16 -rw-r--r-- 1 root root 14022 Sep 30 17:28 /workspace/src/CHANGELOG.md
2621482 4 drwxr-xr-x 3 root root 4096 Sep 30 17:28 /workspace/src/debian
2621465 4 -rw-r--r-- 1 root root 42 Sep 30 17:28 /workspace/src/.envrc
2622246 4 -rw-r--r-- 1 root root 1203 Sep 30 17:28 /workspace/src/DCO
2622241 4 drwxr-xr-x 3 root root 4096 Sep 30 17:28 /workspace/src/.github
2622251 124 -rw-r--r-- 1 root root 122985 Sep 30 17:28 /workspace/src/Cargo.lock
2621654 4 drwxr-xr-x 5 root root 4096 Sep 30 17:28 /workspace/src/systemd
2621652 12 -rw-r--r-- 1 root root 9723 Sep 30 17:28 /workspace/src/LICENSE-APACHE
2621498 4 -rw-r--r-- 1 root root 101 Sep 30 17:28 /workspace/src/.gitignore
2622247 8 -rw-r--r-- 1 root root 5102 Sep 30 17:28 /workspace/src/flake.lock
2621464 4 -rw-r--r-- 1 root root 77 Sep 30 17:28 /workspace/src/rust-toolchain.toml
2621497 12 -rw-r--r-- 1 root root 10520 Sep 30 17:28 /workspace/src/flake.nix
2621468 4 -rw-r--r-- 1 root root 571 Sep 30 17:28 /workspace/src/git-remote-rad.1.adoc
2621466 4 -rw-r--r-- 1 root root 61 Sep 30 17:28 /workspace/src/.env.seed
2621503 8 -rw-r--r-- 1 root root 5432 Sep 30 17:28 /workspace/src/deny.toml
2621458 8 -rw-r--r-- 1 root root 7645 Sep 30 17:28 /workspace/src/HACKING.md
2621447 4 -rw-r--r-- 1 root root 1079 Sep 30 17:28 /workspace/src/LICENSE-MIT
2621463 8 -rw-r--r-- 1 root root 8023 Sep 30 17:28 /workspace/src/rad.1.adoc
2621469 4 drwxr-xr-x 2 root root 4096 Sep 30 17:28 /workspace/src/build
2622250 4 -rw-r--r-- 1 root root 1083 Sep 30 17:28 /workspace/src/.gitsigners
2621459 4 -rw-r--r-- 1 root root 30 Sep 30 17:28 /workspace/src/.dockerignore
2621461 4 drwxr-xr-x 2 root root 4096 Sep 30 17:28 /workspace/src/.cargo
2621442 4 drwxr-xr-x 2 root root 4096 Sep 30 17:29 /workspace/artifacts
2650300 4 drwxr-xr-x 6 root root 4096 Sep 22 23:09 /workspace/cache
2668995 4 -rw-r--r-- 1 root root 218 Sep 22 23:08 /workspace/cache/.rustdoc_fingerprint.json
2757416 4 drwxr-xr-x 24 root root 4096 Sep 24 10:45 /workspace/cache/doc
2650302 4 drwxr-xr-x 7 root root 4096 Sep 24 10:43 /workspace/cache/debug
2650301 4 drwxr-xr-x 2 root root 4096 Sep 22 23:02 /workspace/cache/tmp
2668996 4 -rw-r--r-- 1 root root 1036 Sep 24 12:56 /workspace/cache/.rustc_info.json
2752513 4 drwxr-xr-x 7 root root 4096 Sep 24 10:47 /workspace/cache/release
[2025-09-30T17:32:21Z DEBUG ambient_ci::plan] RUN: Action finished OK
[2025-09-30T17:32:21Z DEBUG ambient_ci::plan] RUN: Action CargoFmt
[2025-09-30T17:32:21Z DEBUG ambient_ci::action] Plan::execute: plan=CargoFmt
[2025-09-30T17:32:21Z DEBUG ambient_ci::action] Plan::execute: context=Context {
envs: {
"CARGO_TARGET_DIR": "/workspace/cache",
"CARGO_HOME": "/workspace/deps",
"PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
},
source_dir: "/workspace/src",
}
SPAWN: argv=["cargo", "--version"]
cwd=/workspace/src (exists? true)
cargo 1.88.0 (873a06493 2025-05-10)
SPAWN: argv=["cargo", "clippy", "--version"]
cwd=/workspace/src (exists? true)
clippy 0.1.88 (6b00bc3880 2025-06-23)
SPAWN: argv=["rustc", "--version"]
cwd=/workspace/src (exists? true)
rustc 1.88.0 (6b00bc388 2025-06-23)
SPAWN: argv=["cargo", "fmt", "--check"]
cwd=/workspace/src (exists? true)
Diff in /workspace/src/crates/radicle-fetch/src/git/repository.rs:68:
}
/// Determine the ancestry relationship between two commits.
-pub fn ahead_behind(repo: &Repository, old_commit: Oid, new_commit: Oid) -> Result<Ancestry, error::Ancestry> {
+pub fn ahead_behind(
+ repo: &Repository,
+ old_commit: Oid,
+ new_commit: Oid,
+) -> Result<Ancestry, error::Ancestry> {
if old_commit == new_commit {
return Ok(Ancestry::Equal);
}
Diff in /workspace/src/crates/radicle-fetch/src/git/repository.rs:76:
let (ahead, behind) = repo
.backend
.graph_ahead_behind(*new_commit, *old_commit)
- .map_err(|err| error::Ancestry::Check { old: old_commit, new: new_commit, err })?;
+ .map_err(|err| error::Ancestry::Check {
+ old: old_commit,
+ new: new_commit,
+ err,
+ })?;
if ahead > 0 && behind == 0 {
Ok(Ancestry::Ahead)
Diff in /workspace/src/crates/radicle-fetch/src/git/repository.rs:143:
target,
err,
})?;
-
+
return Ok(RefUpdate::Created {
name: name.to_ref_string(),
oid: target,
Diff in /workspace/src/crates/radicle-fetch/src/git/repository.rs:150:
}
- .into())
+ .into());
};
let Some(prev) = reference.target() else {
Diff in /workspace/src/crates/radicle-fetch/src/git/repository.rs:156:
// symbolic references in Radicle namespaces. If it does, e.g. because
// some external program or the user themselves created it, we better
// do not touch it.
- return Err(error::Update::Symbolic { name: name.to_owned() });
+ return Err(error::Update::Symbolic {
+ name: name.to_owned(),
+ });
};
let ancestry = {
Diff in /workspace/src/crates/radicle-fetch/src/git/repository.rs:163:
use git::raw::ObjectType::{self, *};
const ANY_KIND: Option<ObjectType> = Some(Any);
- let prev = repo
- .backend
- .find_object(prev, ANY_KIND).map_err(|err| {
- error::Update::Ancestry(error::Ancestry::Object {
- oid: prev.into(),
- err
- })
- })?;
+ let prev = repo.backend.find_object(prev, ANY_KIND).map_err(|err| {
+ error::Update::Ancestry(error::Ancestry::Object {
+ oid: prev.into(),
+ err,
+ })
+ })?;
let target = repo
.backend
Diff in /workspace/src/crates/radicle-fetch/src/git/repository.rs:177:
- .find_object(*target, ANY_KIND).map_err(|err| {
- error::Update::Ancestry(error::Ancestry::Object {
- oid: target,
- err,
- })
- })?;
+ .find_object(*target, ANY_KIND)
+ .map_err(|err| error::Update::Ancestry(error::Ancestry::Object { oid: target, err }))?;
if prev.id() == target.id() {
// If the two objects are identical, their ancestry does not matter,
Diff in /workspace/src/crates/radicle-fetch/src/git/repository.rs:187:
return Ok(RefUpdate::Skipped {
name: name.to_ref_string(),
oid: target.id().into(),
- }.into());
+ }
+ .into());
}
match (prev.kind(), target.kind()) {
Diff in /workspace/src/crates/radicle-fetch/src/git/repository.rs:196:
let prev = prev.id().into();
let target = target.id().into();
Some(ahead_behind(repo, prev, target)?)
- },
+ }
(Some(Tag), Some(Tag)) => {
// Even though these tags might point to the same commit,
// refuse to peel, because that tag itself has changed
Diff in /workspace/src/crates/radicle-fetch/src/git/repository.rs:203:
// (e.g. its name or signature).
None
- },
+ }
(Some(Commit | Tag), Some(Commit | Tag)) => {
// The reference changes from a commit to a tag or vice versa.
None
Diff in /workspace/src/crates/radicle-fetch/src/git/repository.rs:209:
- },
+ }
_ => {
// One of the objects is not a commit or a tag, we're clueless.
None
[2025-09-30T17:32:26Z ERROR ambient_ci::plan] ERROR: Action failed: failed to execute cargo
[2025-09-30T17:32:26Z ERROR ambient_ci::plan] caused by: command failed: "cargo": exit code 1
ERROR: failed to execute cargo
caused by: command failed: "cargo": exit code 1
EXIT CODE: 1
[2025-09-30T17:32:33Z INFO ambient] ambient ends successfully
{
"request": "trigger",
"version": 1,
"event_type": "patch",
"repository": {
"id": "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5",
"name": "heartwood",
"description": "Radicle Heartwood Protocol & Stack",
"private": false,
"default_branch": "master",
"delegates": [
"did:key:z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT",
"did:key:z6MktaNvN1KVFMkSRAiN4qK5yvX1zuEEaseeX5sffhzPZRZW",
"did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
"did:key:z6MkgFq6z5fkF2hioLLSNu1zP2qEL1aHXHZzGH1FLFGAnBGz",
"did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz"
]
},
"action": "Created",
"patch": {
"id": "c34e0c1940da85c02228d7b20168403c2a98e9ac",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": "lorenz"
},
"title": "fetch: Rewrite `git::repository::direct`",
"state": {
"status": "open",
"conflicts": []
},
"before": "4787b53b1e85d8052744fc77e4160e4d90e46d0f",
"after": "149b06a6d1200b996a4441c8e4df4a2458628290",
"commits": [
"149b06a6d1200b996a4441c8e4df4a2458628290"
],
"target": "4787b53b1e85d8052744fc77e4160e4d90e46d0f",
"labels": [],
"assignees": [],
"revisions": [
{
"id": "c34e0c1940da85c02228d7b20168403c2a98e9ac",
"author": {
"id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
"alias": "lorenz"
},
"description": "This function (and the helpers `ancestry` and `find_and_peel`) are\neagerly peeling to commits, leading to updates of tags that target the\nsame commit to be missed.\n\nFor example, there could be tag two tag objects with *different* OIDs\nA and B, from *different* authors, using *different* tag names, signed\nwith *different* secret keys, and both pointing to *the same* commit C.\n\nThe implementation would consider A and B to be the same, just becuase\nA and B both peel to C, skipping the update.\n\nThis is counterintuitive, and when combined with canonical references\ncan be quite confusing.\n\nChange this to only reason about an ancestry if the two objects in\nquestion really both are commits directly. Otherwise, treat cases where\nno structure can be used as ancestry similarly to non-fast-forward\nupdates.",
"base": "4787b53b1e85d8052744fc77e4160e4d90e46d0f",
"oid": "149b06a6d1200b996a4441c8e4df4a2458628290",
"timestamp": 1759252535
}
]
}
}[2025-09-30T17:28:17Z INFO ambient] ambient starts
[2025-09-30T17:28:17Z DEBUG ambient] load default configuration file /home/_rad/.config/ambient/config.yaml if it exists
[2025-09-30T17:28:17Z DEBUG ambient] complete configuration: Config {
tmpdir: "/srv/tmp",
image_store: "/home/_rad/.local/state/ambient-ci/images",
projects: "/home/_rad/ambient-projects.yaml",
state: "/srv/ambient-state",
rsync_target: None,
rsync_target_base: None,
rsync_target_map: None,
dput_target: None,
executor: Some(
"/usr/bin/ambient-execute-plan",
),
artifacts_max_size: Byte(
10000000000,
),
cache_max_size: Byte(
50000000000,
),
qemu: QemuConfig {
cpus: 4,
memory: Byte(
8000000000,
),
kvm_binary: "/usr/bin/kvm",
ovmf_vars_file: "/usr/share/ovmf/OVMF.fd",
ovmf_code_file: "/usr/share/ovmf/OVMF.fd",
},
}
[2025-09-30T17:28:17Z DEBUG ambient] configuration: Config {
tmpdir: "/srv/tmp",
image_store: "/home/_rad/.local/state/ambient-ci/images",
projects: "/home/_rad/ambient-projects.yaml",
state: "/srv/ambient-state",
rsync_target: None,
rsync_target_base: None,
rsync_target_map: None,
dput_target: None,
executor: Some(
"/usr/bin/ambient-execute-plan",
),
artifacts_max_size: Byte(
10000000000,
),
cache_max_size: Byte(
50000000000,
),
qemu: QemuConfig {
cpus: 4,
memory: Byte(
8000000000,
),
kvm_binary: "/usr/bin/kvm",
ovmf_vars_file: "/usr/share/ovmf/OVMF.fd",
ovmf_code_file: "/usr/share/ovmf/OVMF.fd",
},
}
[2025-09-30T17:28:17Z DEBUG ambient_ci::project] load project state from /srv/ambient-state/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5/meta.yaml
[2025-09-30T17:28:17Z DEBUG ambient_ci::run] latest commit: "4787b53b1e85d8052744fc77e4160e4d90e46d0f"
[2025-09-30T17:28:17Z DEBUG ambient_ci::run] is a git repository
[2025-09-30T17:28:17Z DEBUG ambient_ci::run] git repository is clean
[2025-09-30T17:28:17Z DEBUG ambient_ci::run] current (HEAD) commit: 149b06a6d1200b996a4441c8e4df4a2458628290
[2025-09-30T17:28:17Z DEBUG ambient_ci::run] no dry run requested
[2025-09-30T17:28:17Z DEBUG ambient_ci::run] forced run requested
[2025-09-30T17:28:17Z DEBUG ambient_ci::run] run? true
[2025-09-30T17:28:17Z INFO ambient_ci::run] project rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5: running CI
[2025-09-30T17:28:17Z DEBUG ambient_ci::run] Executing pre-plan steps
[2025-09-30T17:28:17Z DEBUG ambient_ci::plan] RUN: Action CargoFetch {
sourcedir: "/tmp/.tmpDuAW76/src",
}
[2025-09-30T17:28:17Z DEBUG ambient_ci::action] Plan::execute: plan=CargoFetch {
sourcedir: "/tmp/.tmpDuAW76/src",
}
[2025-09-30T17:28:17Z DEBUG ambient_ci::action] Plan::execute: context=Context {
envs: {
"CARGO_TARGET_DIR": "/srv/ambient-state/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5/cache",
"CARGO_HOME": "/srv/ambient-state/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5/dependencies",
"PATH": "/root/.cargo/bin:/bin:/home/_rad/.radicle/bin:/home/_rad/.cargo/bin",
},
source_dir: "/tmp/.tmpDuAW76/src",
}
SPAWN: argv=["cargo", "--version"]
cwd=/tmp/.tmpDuAW76/src (exists? true)
cargo 1.88.0 (873a06493 2025-05-10)
SPAWN: argv=["cargo", "clippy", "--version"]
cwd=/tmp/.tmpDuAW76/src (exists? true)
clippy 0.1.88 (6b00bc3880 2025-06-23)
SPAWN: argv=["rustc", "--version"]
cwd=/tmp/.tmpDuAW76/src (exists? true)
rustc 1.88.0 (6b00bc388 2025-06-23)
SPAWN: argv=["cargo", "fetch"]
cwd=/tmp/.tmpDuAW76/src (exists? true)
[2025-09-30T17:28:17Z DEBUG ambient_ci::plan] RUN: Action finished OK
[2025-09-30T17:28:17Z DEBUG ambient_ci::plan] All actions were performed successfully
[2025-09-30T17:28:17Z DEBUG ambient_ci::run] create virtual drive /srv/tmp/.tmpL8iK5R/src.tar
[2025-09-30T17:28:17Z DEBUG ambient_ci::run] create virtual drive /srv/tmp/.tmpL8iK5R/deps.tar
[2025-09-30T17:28:28Z DEBUG ambient_ci::run] create_executor_vdrive: executor="/usr/bin/ambient-execute-plan"
[2025-09-30T17:28:28Z DEBUG ambient_ci::run] create_executor_vdrive: plan=RunnablePlan {
steps: [
Mkdir {
pathname: "/workspace",
},
Mkdir {
pathname: "/workspace/artifacts",
},
TarExtract {
archive: "/dev/vdc",
directory: "/workspace/src",
},
TarExtract {
archive: "/dev/vdf",
directory: "/workspace/deps",
},
TarExtract {
archive: "/dev/vde",
directory: "/workspace/cache",
},
Spawn {
argv: [
"find",
"/workspace",
"-maxdepth",
"2",
"-ls",
],
},
CargoFmt,
CargoClippy,
CargoBuild,
CargoTest,
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\n",
},
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",
},
Deb,
TarCreate {
archive: "/dev/vde",
directory: "/workspace/cache",
},
TarCreate {
archive: "/dev/vdd",
directory: "/workspace/artifacts",
},
],
executor_drive: Some(
"/dev/vdb",
),
source_drive: Some(
"/dev/vdc",
),
artifact_drive: Some(
"/dev/vdd",
),
cache_drive: Some(
"/dev/vde",
),
deps_drive: Some(
"/dev/vdf",
),
workspace_dir: Some(
"/workspace",
),
source_dir: Some(
"/workspace/src",
),
deps_dir: Some(
"/workspace/deps",
),
cache_dir: Some(
"/workspace/cache",
),
artifacts_dir: Some(
"/workspace/artifacts",
),
}
[2025-09-30T17:28:28Z DEBUG ambient_ci::run] executor bin /usr/bin/ambient-execute-plan
[2025-09-30T17:28:28Z DEBUG ambient_ci::run] copying /usr/bin/ambient-execute-plan to /srv/tmp/.tmpL8iK5R/ambient-execute-plan/run-ci
[2025-09-30T17:28:28Z DEBUG ambient_ci::run] copy OK: true
[2025-09-30T17:28:28Z DEBUG ambient_ci::run] create virtual drive /srv/tmp/.tmpL8iK5R/executor.tar
[2025-09-30T17:29:16Z DEBUG ambient_ci::project] removing run log file /srv/ambient-state/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5/run.log
[2025-09-30T17:29:16Z DEBUG ambient_ci::project] statedir is /srv/ambient-state/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5, exists? true
[2025-09-30T17:29:16Z DEBUG ambient_ci::project] creating run log file /srv/ambient-state/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5/run.log
[2025-09-30T17:29:16Z DEBUG ambient_ci::project] created run log file /srv/ambient-state/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5/run.log OK
[2025-09-30T17:29:16Z DEBUG ambient_ci::cloud_init] with_hostname called: "ambient"
[2025-09-30T17:29:16Z DEBUG ambient_ci::cloud_init] with_runcmd called: "echo xyzzy > /dev/ttyS1"
[2025-09-30T17:29:16Z DEBUG ambient_ci::cloud_init] with_runcmd called: "\n(set -xeu\nenv\ndir=\"$(mktemp -d)\"\ncd \"$dir\"\ntar -xvf /dev/vdb\nfind -ls || true\nldd ./run-ci || true\necho ================================ BEGIN ================================\nexport RUST_BACKTRACE=1\nif ./run-ci; then\n echo \"EXIT CODE: 0\"\nelse\n echo \"EXIT CODE: $?\"\nfi) > /dev/ttyS1 2>&1\n"
[2025-09-30T17:29:16Z DEBUG ambient_ci::cloud_init] with_runcmd called: "poweroff"
[2025-09-30T17:29:16Z DEBUG ambient_ci::cloud_init] LocalDataStoreBuilder: LocalDataStoreBuilder {
hostname: Some(
"ambient",
),
network: false,
bootcmd: [],
runcmd: [
"echo xyzzy > /dev/ttyS1",
"\n(set -xeu\nenv\ndir=\"$(mktemp -d)\"\ncd \"$dir\"\ntar -xvf /dev/vdb\nfind -ls || true\nldd ./run-ci || true\necho ================================ BEGIN ================================\nexport RUST_BACKTRACE=1\nif ./run-ci; then\n echo \"EXIT CODE: 0\"\nelse\n echo \"EXIT CODE: $?\"\nfi) > /dev/ttyS1 2>&1\n",
"poweroff",
],
}
[2025-09-30T17:29:16Z DEBUG ambient_ci::qemu] run QEMU
[2025-09-30T17:29:16Z DEBUG ambient_ci::qemu] create copy-on-write image and UEFI vars file
[2025-09-30T17:29:16Z DEBUG ambient_ci::qemu_utils] qemu-img create /srv/tmp/.tmpqAcnrh/.tmpxPUUBo/vm.qcow2 backing on /home/_rad/ambient.qcow2
[2025-09-30T17:29:17Z DEBUG ambient_ci::qemu] create cloud-init ISO file
[2025-09-30T17:29:17Z DEBUG ambient_ci::cloud_init] LocalDataStore: LocalDataStore {
hostname: "ambient",
network: false,
bootcmd: [],
runcmd: [
"echo xyzzy > /dev/ttyS1",
"\n(set -xeu\nenv\ndir=\"$(mktemp -d)\"\ncd \"$dir\"\ntar -xvf /dev/vdb\nfind -ls || true\nldd ./run-ci || true\necho ================================ BEGIN ================================\nexport RUST_BACKTRACE=1\nif ./run-ci; then\n echo \"EXIT CODE: 0\"\nelse\n echo \"EXIT CODE: $?\"\nfi) > /dev/ttyS1 2>&1\n",
"poweroff",
],
}
[2025-09-30T17:29:17Z DEBUG ambient_ci::cloud_init] write /tmp/.tmpmcxWYs/meta-data
[2025-09-30T17:29:17Z DEBUG ambient_ci::cloud_init] write /tmp/.tmpmcxWYs/user-data
[2025-09-30T17:29:17Z DEBUG ambient_ci::qemu] set console log file to /srv/tmp/.tmpqAcnrh/.tmpxPUUBo/console.log
[2025-09-30T17:29:17Z DEBUG ambient_ci::util] create file /srv/tmp/.tmpqAcnrh/.tmpxPUUBo/console.log
[2025-09-30T17:29:17Z DEBUG ambient_ci::qemu] set run file to /srv/ambient-state/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5/run.log
[2025-09-30T17:29:17Z DEBUG ambient_ci::util] create file /srv/ambient-state/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5/run.log
[2025-09-30T17:29:17Z DEBUG ambient_ci::qemu] run QEMU: QemuArgs {
args: [
"-m",
"7629",
"-smp",
"cpus=4",
"-cpu",
"kvm64",
"-machine",
"type=q35,accel=kvm,usb=off",
"-uuid",
"a85c9de7-edc0-4e54-bead-112e5733582c",
"-boot",
"strict=on",
"-name",
"ambient-ci-vm",
"-rtc",
"base=utc,driftfix=slew",
"-display",
"none",
"-device",
"virtio-rng-pci",
"-serial",
"file:/srv/tmp/.tmpqAcnrh/.tmpxPUUBo/console.log",
"-serial",
"file:/srv/ambient-state/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5/run.log",
"-drive",
"if=pflash,format=raw,unit=0,file=/usr/share/ovmf/OVMF.fd,readonly=on",
"-drive",
"if=pflash,format=raw,unit=1,file=/srv/tmp/.tmpqAcnrh/.tmpxPUUBo/vars.fd",
"-drive",
"format=qcow2,if=virtio,file=/srv/tmp/.tmpqAcnrh/.tmpxPUUBo/vm.qcow2",
"-drive",
"format=raw,if=virtio,file=/srv/tmp/.tmpL8iK5R/executor.tar,readonly=on",
"-cdrom",
"/srv/tmp/.tmpqAcnrh/.tmpxPUUBo/cloud_init.iso",
"-drive",
"format=raw,if=virtio,file=/srv/tmp/.tmpL8iK5R/src.tar,readonly=on",
"-drive",
"format=raw,if=virtio,file=/srv/tmp/.tmpL8iK5R/artifacts.tar",
"-drive",
"format=raw,if=virtio,file=/srv/tmp/.tmpL8iK5R/cache.tar",
"-drive",
"format=raw,if=virtio,file=/srv/tmp/.tmpL8iK5R/deps.tar,readonly=on",
"-nodefaults",
"-no-user-config",
],
}
[2025-09-30T17:32:32Z DEBUG ambient_ci::qemu] QEMU finished OK
[2025-09-30T17:32:32Z DEBUG ambient_ci::qemu] run log:
--------------------==========
[2025-09-30T17:29:32Z TRACE ambient_execute_plan] ambient-execute-plan version 0.7.0@14cdd4c starts
[2025-09-30T17:29:32Z DEBUG ambient_execute_plan] ambient-execute-plan version 0.7.0@14cdd4c starts
[2025-09-30T17:29:32Z INFO ambient_execute_plan] ambient-execute-plan version 0.7.0@14cdd4c starts
[2025-09-30T17:29:32Z WARN ambient_execute_plan] ambient-execute-plan version 0.7.0@14cdd4c starts
[2025-09-30T17:29:32Z ERROR ambient_execute_plan] ambient-execute-plan version 0.7.0@14cdd4c starts
RunnablePlan::from_file: filename=plan.yaml
steps:
- action: mkdir
pathname: /workspace
- action: mkdir
pathname: /workspace/artifacts
- action: tar_extract
archive: /dev/vdc
directory: /workspace/src
- action: tar_extract
archive: /dev/vdf
directory: /workspace/deps
- action: tar_extract
archive: /dev/vde
directory: /workspace/cache
- action: spawn
argv:
- find
- /workspace
- -maxdepth
- '2'
- -ls
- 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
# these variables manually. Once Ambient manages environment
# variables better, these can be deleted.
export CARGO_TARGET_DIR=/workspace/cache
export CARGO_HOME=/workspace/deps
export HOME=/root
export PATH="/root/.cargo/bin:$PATH"
export RUSTDOCFLAGS='-D warnings'
cargo doc --workspace --no-deps
- action: shell
shell: |
# Because of a (temporary) limitation in Ambient, we need to set
# these variables manually. Once Ambient manages environment
# variables better, these can be deleted.
export CARGO_TARGET_DIR=/workspace/cache
export CARGO_HOME=/workspace/deps
export HOME=/root
export PATH="/root/.cargo/bin:$PATH"
# These are based on debian/control.
export DEBEMAIL=liw@liw.fi
export DEBFULLNAME="Lars Wirzenius"
# Clean up after tests and documentation building. The Debian
# package building tools do not want changes outside the
# `debian` directory, compared to what is committed to Git, from
# which the "upstream tarball" is created.
git reset --hard
git clean -fdx
git status --ignored
# Update debian/changelog with a new version so that every run
# creates a newer version. This avoids us having to update the
# file manually for every CI run.
V="$(dpkg-parsechangelog -SVersion | sed 's/-[^-]*$//')"
T="$(date -u "+%Y%m%dT%H%M%S")"
version="$V.ci$T-1"
dch -v "$version" "CI build under Ambient."
dch -r ''
- action: deb
- action: tar_create
archive: /dev/vde
directory: /workspace/cache
- action: tar_create
archive: /dev/vdd
directory: /workspace/artifacts
executor_drive: /dev/vdb
source_drive: /dev/vdc
artifact_drive: /dev/vdd
cache_drive: /dev/vde
deps_drive: /dev/vdf
workspace_dir: /workspace
source_dir: /workspace/src
deps_dir: /workspace/deps
cache_dir: /workspace/cache
artifacts_dir: /workspace/artifacts
[2025-09-30T17:29:32Z DEBUG ambient_ci::plan] RUN: Action Mkdir {
pathname: "/workspace",
}
[2025-09-30T17:29:32Z DEBUG ambient_ci::action] Plan::execute: plan=Mkdir {
pathname: "/workspace",
}
[2025-09-30T17:29:32Z DEBUG ambient_ci::action] Plan::execute: context=Context {
envs: {
"CARGO_TARGET_DIR": "/workspace/cache",
"CARGO_HOME": "/workspace/deps",
"PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
},
source_dir: "/workspace/src",
}
[2025-09-30T17:29:32Z DEBUG ambient_ci::plan] RUN: Action finished OK
[2025-09-30T17:29:32Z DEBUG ambient_ci::plan] RUN: Action Mkdir {
pathname: "/workspace/artifacts",
}
[2025-09-30T17:29:32Z DEBUG ambient_ci::action] Plan::execute: plan=Mkdir {
pathname: "/workspace/artifacts",
}
[2025-09-30T17:29:32Z DEBUG ambient_ci::action] Plan::execute: context=Context {
envs: {
"CARGO_TARGET_DIR": "/workspace/cache",
"CARGO_HOME": "/workspace/deps",
"PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
},
source_dir: "/workspace/src",
}
[2025-09-30T17:29:32Z DEBUG ambient_ci::plan] RUN: Action finished OK
[2025-09-30T17:29:32Z DEBUG ambient_ci::plan] RUN: Action TarExtract {
archive: "/dev/vdc",
directory: "/workspace/src",
}
[2025-09-30T17:29:32Z DEBUG ambient_ci::action] Plan::execute: plan=TarExtract {
archive: "/dev/vdc",
directory: "/workspace/src",
}
[2025-09-30T17:29:32Z DEBUG ambient_ci::action] Plan::execute: context=Context {
envs: {
"CARGO_TARGET_DIR": "/workspace/cache",
"CARGO_HOME": "/workspace/deps",
"PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
},
source_dir: "/workspace/src",
}
[2025-09-30T17:29:32Z TRACE ambient_ci::vdrive] extracting /dev/vdc to /workspace/src
[2025-09-30T17:29:33Z TRACE ambient_ci::vdrive] extraction OK
[2025-09-30T17:29:33Z DEBUG ambient_ci::plan] RUN: Action finished OK
[2025-09-30T17:29:33Z DEBUG ambient_ci::plan] RUN: Action TarExtract {
archive: "/dev/vdf",
directory: "/workspace/deps",
}
[2025-09-30T17:29:33Z DEBUG ambient_ci::action] Plan::execute: plan=TarExtract {
archive: "/dev/vdf",
directory: "/workspace/deps",
}
[2025-09-30T17:29:33Z DEBUG ambient_ci::action] Plan::execute: context=Context {
envs: {
"CARGO_TARGET_DIR": "/workspace/cache",
"CARGO_HOME": "/workspace/deps",
"PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
},
source_dir: "/workspace/src",
}
[2025-09-30T17:29:33Z TRACE ambient_ci::vdrive] extracting /dev/vdf to /workspace/deps
[2025-09-30T17:29:57Z TRACE ambient_ci::vdrive] extraction OK
[2025-09-30T17:29:57Z DEBUG ambient_ci::plan] RUN: Action finished OK
[2025-09-30T17:29:57Z DEBUG ambient_ci::plan] RUN: Action TarExtract {
archive: "/dev/vde",
directory: "/workspace/cache",
}
[2025-09-30T17:29:57Z DEBUG ambient_ci::action] Plan::execute: plan=TarExtract {
archive: "/dev/vde",
directory: "/workspace/cache",
}
[2025-09-30T17:29:57Z DEBUG ambient_ci::action] Plan::execute: context=Context {
envs: {
"CARGO_TARGET_DIR": "/workspace/cache",
"CARGO_HOME": "/workspace/deps",
"PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
},
source_dir: "/workspace/src",
}
[2025-09-30T17:29:57Z TRACE ambient_ci::vdrive] extracting /dev/vde to /workspace/cache
[2025-09-30T17:32:21Z TRACE ambient_ci::vdrive] extraction OK
[2025-09-30T17:32:21Z DEBUG ambient_ci::plan] RUN: Action finished OK
[2025-09-30T17:32:21Z DEBUG ambient_ci::plan] RUN: Action Spawn {
argv: [
"find",
"/workspace",
"-maxdepth",
"2",
"-ls",
],
}
[2025-09-30T17:32:21Z DEBUG ambient_ci::action] Plan::execute: plan=Spawn {
argv: [
"find",
"/workspace",
"-maxdepth",
"2",
"-ls",
],
}
[2025-09-30T17:32:21Z DEBUG ambient_ci::action] Plan::execute: context=Context {
envs: {
"CARGO_TARGET_DIR": "/workspace/cache",
"CARGO_HOME": "/workspace/deps",
"PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
},
source_dir: "/workspace/src",
}
SPAWN: argv=["find", "/workspace", "-maxdepth", "2", "-ls"]
cwd=/workspace/src (exists? true)
2621441 4 drwxr-xr-x 6 root root 4096 Sep 30 17:29 /workspace
2622252 4 drwxr-xr-x 3 root root 4096 Sep 30 17:28 /workspace/deps
2622253 0 -rw-r--r-- 1 root root 0 Sep 22 16:46 /workspace/deps/.package-cache-mutate
2622256 4 drwxr-xr-x 5 root root 4096 Sep 22 16:46 /workspace/deps/registry
2622254 128 -rw-r--r-- 1 root root 131072 Sep 30 17:28 /workspace/deps/.global-cache
2622255 0 -rw-r--r-- 1 root root 0 Sep 22 16:46 /workspace/deps/.package-cache
2621443 4 drwxr-xr-x 12 root root 4096 Sep 30 17:28 /workspace/src
2621499 4 -rw-r--r-- 1 root root 2653 Sep 30 17:28 /workspace/src/Cargo.toml
2622248 12 -rw-r--r-- 1 root root 9636 Sep 30 17:28 /workspace/src/CONTRIBUTING.md
2621500 4 drwxr-xr-x 2 root root 4096 Sep 30 17:28 /workspace/src/.config
2621496 4 -rw-r--r-- 1 root root 1623 Sep 30 17:28 /workspace/src/build.rs
2621502 4 -rw-r--r-- 1 root root 426 Sep 30 17:28 /workspace/src/radicle-node.1.adoc
2621504 4 drwxr-xr-x 8 root root 4096 Sep 30 17:28 /workspace/src/.git
2622245 8 -rw-r--r-- 1 root root 7144 Sep 30 17:28 /workspace/src/rad-id.1.adoc
2621460 4 -rw-r--r-- 1 root root 2163 Sep 30 17:28 /workspace/src/VERSIONING.md
2621495 4 -rw-r--r-- 1 root root 3133 Sep 30 17:28 /workspace/src/README.md
2621653 12 -rw-r--r-- 1 root root 10975 Sep 30 17:28 /workspace/src/rad-patch.1.adoc
2622249 4 -rw-r--r-- 1 root root 79 Sep 30 17:28 /workspace/src/ARCHITECTURE.md
2621661 4 drwxr-xr-x 17 root root 4096 Sep 30 17:28 /workspace/src/crates
2621448 4 drwxr-xr-x 2 root root 4096 Sep 30 17:28 /workspace/src/scripts
2621444 4 drwxr-xr-x 2 root root 4096 Sep 30 17:28 /workspace/src/.radicle
2621467 16 -rw-r--r-- 1 root root 14022 Sep 30 17:28 /workspace/src/CHANGELOG.md
2621482 4 drwxr-xr-x 3 root root 4096 Sep 30 17:28 /workspace/src/debian
2621465 4 -rw-r--r-- 1 root root 42 Sep 30 17:28 /workspace/src/.envrc
2622246 4 -rw-r--r-- 1 root root 1203 Sep 30 17:28 /workspace/src/DCO
2622241 4 drwxr-xr-x 3 root root 4096 Sep 30 17:28 /workspace/src/.github
2622251 124 -rw-r--r-- 1 root root 122985 Sep 30 17:28 /workspace/src/Cargo.lock
2621654 4 drwxr-xr-x 5 root root 4096 Sep 30 17:28 /workspace/src/systemd
2621652 12 -rw-r--r-- 1 root root 9723 Sep 30 17:28 /workspace/src/LICENSE-APACHE
2621498 4 -rw-r--r-- 1 root root 101 Sep 30 17:28 /workspace/src/.gitignore
2622247 8 -rw-r--r-- 1 root root 5102 Sep 30 17:28 /workspace/src/flake.lock
2621464 4 -rw-r--r-- 1 root root 77 Sep 30 17:28 /workspace/src/rust-toolchain.toml
2621497 12 -rw-r--r-- 1 root root 10520 Sep 30 17:28 /workspace/src/flake.nix
2621468 4 -rw-r--r-- 1 root root 571 Sep 30 17:28 /workspace/src/git-remote-rad.1.adoc
2621466 4 -rw-r--r-- 1 root root 61 Sep 30 17:28 /workspace/src/.env.seed
2621503 8 -rw-r--r-- 1 root root 5432 Sep 30 17:28 /workspace/src/deny.toml
2621458 8 -rw-r--r-- 1 root root 7645 Sep 30 17:28 /workspace/src/HACKING.md
2621447 4 -rw-r--r-- 1 root root 1079 Sep 30 17:28 /workspace/src/LICENSE-MIT
2621463 8 -rw-r--r-- 1 root root 8023 Sep 30 17:28 /workspace/src/rad.1.adoc
2621469 4 drwxr-xr-x 2 root root 4096 Sep 30 17:28 /workspace/src/build
2622250 4 -rw-r--r-- 1 root root 1083 Sep 30 17:28 /workspace/src/.gitsigners
2621459 4 -rw-r--r-- 1 root root 30 Sep 30 17:28 /workspace/src/.dockerignore
2621461 4 drwxr-xr-x 2 root root 4096 Sep 30 17:28 /workspace/src/.cargo
2621442 4 drwxr-xr-x 2 root root 4096 Sep 30 17:29 /workspace/artifacts
2650300 4 drwxr-xr-x 6 root root 4096 Sep 22 23:09 /workspace/cache
2668995 4 -rw-r--r-- 1 root root 218 Sep 22 23:08 /workspace/cache/.rustdoc_fingerprint.json
2757416 4 drwxr-xr-x 24 root root 4096 Sep 24 10:45 /workspace/cache/doc
2650302 4 drwxr-xr-x 7 root root 4096 Sep 24 10:43 /workspace/cache/debug
2650301 4 drwxr-xr-x 2 root root 4096 Sep 22 23:02 /workspace/cache/tmp
2668996 4 -rw-r--r-- 1 root root 1036 Sep 24 12:56 /workspace/cache/.rustc_info.json
2752513 4 drwxr-xr-x 7 root root 4096 Sep 24 10:47 /workspace/cache/release
[2025-09-30T17:32:21Z DEBUG ambient_ci::plan] RUN: Action finished OK
[2025-09-30T17:32:21Z DEBUG ambient_ci::plan] RUN: Action CargoFmt
[2025-09-30T17:32:21Z DEBUG ambient_ci::action] Plan::execute: plan=CargoFmt
[2025-09-30T17:32:21Z DEBUG ambient_ci::action] Plan::execute: context=Context {
envs: {
"CARGO_TARGET_DIR": "/workspace/cache",
"CARGO_HOME": "/workspace/deps",
"PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
},
source_dir: "/workspace/src",
}
SPAWN: argv=["cargo", "--version"]
cwd=/workspace/src (exists? true)
cargo 1.88.0 (873a06493 2025-05-10)
SPAWN: argv=["cargo", "clippy", "--version"]
cwd=/workspace/src (exists? true)
clippy 0.1.88 (6b00bc3880 2025-06-23)
SPAWN: argv=["rustc", "--version"]
cwd=/workspace/src (exists? true)
rustc 1.88.0 (6b00bc388 2025-06-23)
SPAWN: argv=["cargo", "fmt", "--check"]
cwd=/workspace/src (exists? true)
Diff in /workspace/src/crates/radicle-fetch/src/git/repository.rs:68:
}
/// Determine the ancestry relationship between two commits.
-pub fn ahead_behind(repo: &Repository, old_commit: Oid, new_commit: Oid) -> Result<Ancestry, error::Ancestry> {
+pub fn ahead_behind(
+ repo: &Repository,
+ old_commit: Oid,
+ new_commit: Oid,
+) -> Result<Ancestry, error::Ancestry> {
if old_commit == new_commit {
return Ok(Ancestry::Equal);
}
Diff in /workspace/src/crates/radicle-fetch/src/git/repository.rs:76:
let (ahead, behind) = repo
.backend
.graph_ahead_behind(*new_commit, *old_commit)
- .map_err(|err| error::Ancestry::Check { old: old_commit, new: new_commit, err })?;
+ .map_err(|err| error::Ancestry::Check {
+ old: old_commit,
+ new: new_commit,
+ err,
+ })?;
if ahead > 0 && behind == 0 {
Ok(Ancestry::Ahead)
Diff in /workspace/src/crates/radicle-fetch/src/git/repository.rs:143:
target,
err,
})?;
-
+
return Ok(RefUpdate::Created {
name: name.to_ref_string(),
oid: target,
Diff in /workspace/src/crates/radicle-fetch/src/git/repository.rs:150:
}
- .into())
+ .into());
};
let Some(prev) = reference.target() else {
Diff in /workspace/src/crates/radicle-fetch/src/git/repository.rs:156:
// symbolic references in Radicle namespaces. If it does, e.g. because
// some external program or the user themselves created it, we better
// do not touch it.
- return Err(error::Update::Symbolic { name: name.to_owned() });
+ return Err(error::Update::Symbolic {
+ name: name.to_owned(),
+ });
};
let ancestry = {
Diff in /workspace/src/crates/radicle-fetch/src/git/repository.rs:163:
use git::raw::ObjectType::{self, *};
const ANY_KIND: Option<ObjectType> = Some(Any);
- let prev = repo
- .backend
- .find_object(prev, ANY_KIND).map_err(|err| {
- error::Update::Ancestry(error::Ancestry::Object {
- oid: prev.into(),
- err
- })
- })?;
+ let prev = repo.backend.find_object(prev, ANY_KIND).map_err(|err| {
+ error::Update::Ancestry(error::Ancestry::Object {
+ oid: prev.into(),
+ err,
+ })
+ })?;
let target = repo
.backend
Diff in /workspace/src/crates/radicle-fetch/src/git/repository.rs:177:
- .find_object(*target, ANY_KIND).map_err(|err| {
- error::Update::Ancestry(error::Ancestry::Object {
- oid: target,
- err,
- })
- })?;
+ .find_object(*target, ANY_KIND)
+ .map_err(|err| error::Update::Ancestry(error::Ancestry::Object { oid: target, err }))?;
if prev.id() == target.id() {
// If the two objects are identical, their ancestry does not matter,
Diff in /workspace/src/crates/radicle-fetch/src/git/repository.rs:187:
return Ok(RefUpdate::Skipped {
name: name.to_ref_string(),
oid: target.id().into(),
- }.into());
+ }
+ .into());
}
match (prev.kind(), target.kind()) {
Diff in /workspace/src/crates/radicle-fetch/src/git/repository.rs:196:
let prev = prev.id().into();
let target = target.id().into();
Some(ahead_behind(repo, prev, target)?)
- },
+ }
(Some(Tag), Some(Tag)) => {
// Even though these tags might point to the same commit,
// refuse to peel, because that tag itself has changed
Diff in /workspace/src/crates/radicle-fetch/src/git/repository.rs:203:
// (e.g. its name or signature).
None
- },
+ }
(Some(Commit | Tag), Some(Commit | Tag)) => {
// The reference changes from a commit to a tag or vice versa.
None
Diff in /workspace/src/crates/radicle-fetch/src/git/repository.rs:209:
- },
+ }
_ => {
// One of the objects is not a commit or a tag, we're clueless.
None
[2025-09-30T17:32:26Z ERROR ambient_ci::plan] ERROR: Action failed: failed to execute cargo
[2025-09-30T17:32:26Z ERROR ambient_ci::plan] caused by: command failed: "cargo": exit code 1
ERROR: failed to execute cargo
caused by: command failed: "cargo": exit code 1
EXIT CODE: 1
====================
[2025-09-30T17:32:32Z DEBUG ambient_ci::qemu] QEMU: CI run under exit code 1
[2025-09-30T17:32:32Z DEBUG ambient_ci::run] CI run exit code from QEMU: 1
[2025-09-30T17:32:32Z DEBUG ambient_ci::project] write project state to /srv/ambient-state/rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5/meta.yaml
ERROR: CI run failed inside QEMU
<empty log>