CI run for rad:zwPaQSTBX8hktn22F6tHAZSFH2Fh

Radicle repository id rad:zwPaQSTBX8hktn22F6tHAZSFH2Fh

Table of Contents

Run log

[2025-09-11T12:59:19Z INFO  ambient] ambient starts
deprecated: the `cpus` field is replaced by `qemu.cpus`
deprecated: the `memory` field is replaced by `qemu.memory`
[=3h[=3hBdsDxe: 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)
Welcome to GRUB!


INFO: Block devices
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sr0     11:0    1   370K  0 rom  
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   2.9M  1 disk 
vdc    254:32   0   1.9M  1 disk 
vdd    254:48   0 953.7M  0 disk 
vde    254:64   0  27.9G  0 disk 
vdf    254:80   0 848.9M  1 disk 
INFO: Extracting tar archive from /dev/vdb
drwxr-xr-x _rad/_rad         0 2025-09-11 12:58 ./
-rw-r--r-- _rad/_rad       895 2025-09-11 12:58 ./plan.yaml
-rwxr-xr-x _rad/_rad   2994840 2025-09-11 12:58 ./run-ci
INFO: Extracted files:
  4587530      4 drwxr-xr-x   2 1000     1000         4096 Sep 11 12:58 .
  4587531      4 -rw-r--r--   1 1000     1000          895 Sep 11 12:58 ./plan.yaml
  4587532   2928 -rwxr-xr-x   1 1000     1000      2994840 Sep 11 12:58 ./run-ci
INFO: Running run-ci from /dev/vdb
================================ BEGIN ================================
[2025-09-11T12:58:37Z TRACE ambient_execute_plan] ambient-execute-plan starts
[2025-09-11T12:58:37Z DEBUG ambient_execute_plan] ambient-execute-plan starts
[2025-09-11T12:58:37Z INFO  ambient_execute_plan] ambient-execute-plan starts
[2025-09-11T12:58:37Z WARN  ambient_execute_plan] ambient-execute-plan starts
[2025-09-11T12:58:37Z ERROR ambient_execute_plan] ambient-execute-plan 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: 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


RUN: Action Mkdir {
    pathname: "/workspace",
}
[2025-09-11T12:58:37Z DEBUG ambient_ci::action] Plan::execute: Mkdir {
        pathname: "/workspace",
    }
RUN: Action finished OK
RUN: Action Mkdir {
    pathname: "/workspace/artifacts",
}
[2025-09-11T12:58:37Z DEBUG ambient_ci::action] Plan::execute: Mkdir {
        pathname: "/workspace/artifacts",
    }
RUN: Action finished OK
RUN: Action TarExtract {
    archive: "/dev/vdc",
    directory: "/workspace/src",
}
[2025-09-11T12:58:37Z DEBUG ambient_ci::action] Plan::execute: TarExtract {
        archive: "/dev/vdc",
        directory: "/workspace/src",
    }
[2025-09-11T12:58:37Z TRACE ambient_ci::vdrive] extracting /dev/vdc to /workspace/src
[2025-09-11T12:58:37Z TRACE ambient_ci::vdrive] extraction OK
RUN: Action finished OK
RUN: Action TarExtract {
    archive: "/dev/vdf",
    directory: "/workspace/deps",
}
[2025-09-11T12:58:37Z DEBUG ambient_ci::action] Plan::execute: TarExtract {
        archive: "/dev/vdf",
        directory: "/workspace/deps",
    }
[2025-09-11T12:58:37Z TRACE ambient_ci::vdrive] extracting /dev/vdf to /workspace/deps
[2025-09-11T12:58:39Z TRACE ambient_ci::vdrive] extraction OK
RUN: Action finished OK
RUN: Action TarExtract {
    archive: "/dev/vde",
    directory: "/workspace/cache",
}
[2025-09-11T12:58:39Z DEBUG ambient_ci::action] Plan::execute: TarExtract {
        archive: "/dev/vde",
        directory: "/workspace/cache",
    }
[2025-09-11T12:58:39Z TRACE ambient_ci::vdrive] extracting /dev/vde to /workspace/cache
[2025-09-11T12:58:42Z TRACE ambient_ci::vdrive] extraction OK
RUN: Action finished OK
RUN: Action Spawn {
    argv: [
        "find",
        "/workspace",
        "-maxdepth",
        "2",
        "-ls",
    ],
}
[2025-09-11T12:58:42Z DEBUG ambient_ci::action] Plan::execute: Spawn {
        argv: [
            "find",
            "/workspace",
            "-maxdepth",
            "2",
            "-ls",
        ],
    }
SPAWN: argv=["find", "/workspace", "-maxdepth", "2", "-ls"]
       cwd=/workspace/src (exists? true)
       extra_env=[]
  2621441      4 drwxr-xr-x   6 root     root         4096 Sep 11 12:58 /workspace
  2621595      4 drwxr-xr-x   3 root     root         4096 Sep 11 12:58 /workspace/deps
  2653151      0 -rw-r--r--   1 root     root            0 Sep 11 12:54 /workspace/deps/.package-cache-mutate
  2621596      4 drwxr-xr-x   5 root     root         4096 Sep 11 12:54 /workspace/deps/registry
  2653150    124 -rw-r--r--   1 root     root       126976 Sep 11 12:58 /workspace/deps/.global-cache
  2653152      0 -rw-r--r--   1 root     root            0 Sep 11 12:54 /workspace/deps/.package-cache
  2621443      4 drwxr-xr-x   6 root     root         4096 Sep 11 12:58 /workspace/src
  2621450      4 -rw-r--r--   1 root     root         1030 Sep 11 12:58 /workspace/src/Cargo.toml
  2621444      4 -rwxr-xr-x   1 root     root         1367 Sep 11 12:58 /workspace/src/check
  2621488     36 -rw-r--r--   1 root     root        34260 Sep 11 12:58 /workspace/src/COPYING.md
  2621491      4 drwxr-xr-x   8 root     root         4096 Sep 11 12:58 /workspace/src/.git
  2621453      4 drwxr-xr-x   3 root     root         4096 Sep 11 12:58 /workspace/src/src
  2621445      4 -rw-r--r--   1 root     root          220 Sep 11 12:58 /workspace/src/ambient-driver.yaml
  2621449      4 -rw-r--r--   1 root     root          833 Sep 11 12:58 /workspace/src/README.md
  2621489      4 drwxr-xr-x   2 root     root         4096 Sep 11 12:58 /workspace/src/.radicle
  2621478      4 drwxr-xr-x   3 root     root         4096 Sep 11 12:58 /workspace/src/debian
  2621447      4 -rw-r--r--   1 root     root         1225 Sep 11 12:58 /workspace/src/ambient-driver.py
  2621451     60 -rw-r--r--   1 root     root        59466 Sep 11 12:58 /workspace/src/Cargo.lock
  2621448     12 -rw-r--r--   1 root     root        10658 Sep 11 12:58 /workspace/src/ambient-driver.md
  2621452      4 -rw-r--r--   1 root     root           32 Sep 11 12:58 /workspace/src/.gitignore
  2621446      4 -rw-r--r--   1 root     root          252 Sep 11 12:58 /workspace/src/ambient-driver.subplot
  2621442      4 drwxr-xr-x   2 root     root         4096 Sep 11 12:58 /workspace/artifacts
  2653153      4 drwxr-xr-x   5 root     root         4096 Sep 11 12:56 /workspace/cache
  2655637      4 drwxr-xr-x   7 root     root         4096 Sep 11 12:56 /workspace/cache/debug
  2654006      4 -rw-r--r--   1 root     root         1904 Sep 11 12:57 /workspace/cache/.rustc_info.json
  2654007      4 drwxr-xr-x   7 root     root         4096 Sep 11 12:56 /workspace/cache/release
  2653154      4 drwxr-xr-x   3 root     root         4096 Sep 11 12:56 /workspace/cache/x86_64-unknown-linux-musl
RUN: Action finished OK
RUN: Action CargoFmt
[2025-09-11T12:58:42Z DEBUG ambient_ci::action] Plan::execute: CargoFmt
SPAWN: argv=["cargo", "fmt", "--check"]
       cwd=/workspace/src (exists? true)
       extra_env=[("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")]
RUN: Action finished OK
RUN: Action CargoClippy
[2025-09-11T12:58:42Z DEBUG ambient_ci::action] Plan::execute: CargoClippy
SPAWN: argv=["cargo", "clippy", "--offline", "--locked", "--workspace", "--all-targets", "--no-deps", "--", "--deny", "warnings"]
       cwd=/workspace/src (exists? true)
       extra_env=[("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")]
   Compiling proc-macro2 v1.0.92
   Compiling unicode-ident v1.0.14
   Compiling memchr v2.7.4
   Compiling libc v0.2.169
   Compiling quote v1.0.38
   Compiling syn v2.0.95
   Compiling autocfg v1.4.0
   Compiling serde v1.0.217
   Compiling anyhow v1.0.95
   Compiling once_cell v1.20.2
   Compiling aho-corasick v1.1.3
   Compiling itoa v1.0.14
   Compiling cfg-if v1.0.0
   Compiling regex-syntax v0.8.5
   Compiling serde_derive v1.0.217
   Compiling log v0.4.22
   Compiling thiserror v2.0.10
   Compiling regex-automata v0.4.9
   Compiling thiserror-impl v2.0.10
   Compiling zerocopy-derive v0.7.35
   Compiling getrandom v0.2.15
   Compiling bitflags v2.6.0
   Compiling byteorder v1.5.0
   Compiling ryu v1.0.18
   Compiling rustix v0.38.43
   Compiling zerocopy v0.7.35
   Compiling time-core v0.1.2
   Compiling serde_json v1.0.135
   Compiling time-macros v0.2.19
   Compiling pest v2.7.15
   Compiling ppv-lite86 v0.2.20
   Compiling rand_core v0.6.4
   Compiling indexmap v1.9.3
   Compiling bstr v1.11.3
   Compiling libm v0.2.11
   Compiling thiserror v1.0.69
   Compiling anstyle-parse v0.2.6
   Compiling globset v0.4.15
   Compiling deranged v0.3.11
   Compiling cc v1.2.7
   Compiling pest_meta v2.7.15
   Compiling rand_chacha v0.3.1
   Compiling thiserror-impl v1.0.69
   Compiling typenum v1.17.0
   Compiling colorchoice v1.0.3
   Compiling anstyle v1.0.10
   Compiling anstyle-query v1.1.2
   Compiling linux-raw-sys v0.4.15
   Compiling anstream v0.6.18
   Compiling clap_derive v4.5.24
   Compiling ignore v0.4.23
   Compiling rand v0.8.5
   Compiling pikchr v0.1.3
   Compiling pest_generator v2.7.15
   Compiling time v0.3.37
   Compiling regex v1.11.1
   Compiling equivalent v1.0.1
   Compiling hashbrown v0.15.2
   Compiling clap_lex v0.7.4
   Compiling deunicode v1.6.0
   Compiling slug v0.1.6
   Compiling indexmap v2.7.0
   Compiling clap_builder v4.5.25
   Compiling tempfile v3.15.0
   Compiling git-testament-derive v0.2.1
   Compiling pest_derive v2.7.15
   Compiling humansize v2.1.3
   Compiling globwalk v0.9.1
   Compiling serde_yaml v0.8.26
   Compiling subplot v0.9.0
   Compiling getopts v0.2.21
   Compiling is-terminal v0.4.13
   Compiling percent-encoding v2.3.1
   Compiling humantime v2.1.0
   Compiling tera v1.20.0
   Compiling env_logger v0.10.2
   Compiling pulldown-cmark v0.9.6
   Compiling serde_yaml v0.9.34+deprecated
   Compiling roadmap v0.5.0
    Checking generic-array v0.14.7
   Compiling clap v4.5.25
   Compiling git-testament v0.2.6
   Compiling tempfile-fast v0.3.4
   Compiling syn v1.0.109
   Compiling serde-aux v4.5.0
   Compiling tracing-attributes v0.1.28
   Compiling tracing-core v0.1.33
   Compiling tracing v0.1.41
   Compiling fehler-macros v1.0.0
   Compiling num-traits v0.2.19
    Checking nix v0.29.0
   Compiling subplot-build v0.9.0
    Checking block-buffer v0.10.4
    Checking crypto-common v0.1.6
    Checking cvt v0.1.2
   Compiling rust_decimal v1.36.0
   Compiling glob v0.3.2
   Compiling subplotlib v0.9.0
    Checking fs_at v0.2.1
    Checking digest v0.10.7
   Compiling fehler v1.0.0
    Checking pin-project-lite v0.2.16
    Checking bytes v1.9.0
    Checking normpath v1.3.0
    Checking cpufeatures v0.2.16
    Checking env_filter v0.1.3
    Checking tokio v1.43.0
    Checking sha2 v0.10.8
    Checking dirs-sys v0.4.1
    Checking remove_dir_all v0.8.4
    Checking libyml v0.0.5
   Compiling subplotlib-derive v0.9.0
    Checking filetime v0.2.25
    Checking fs2 v0.4.3
   Compiling async-trait v0.1.85
    Checking unescape v0.1.0
    Checking base64 v0.21.7
    Checking state v0.5.3
    Checking byte-unit v5.1.6
    Checking sha256 v1.5.0
    Checking env_logger v0.11.6
    Checking serde_yml v0.0.12
    Checking directories v5.0.1
    Checking bytesize v1.3.0
    Checking ambient-driver v0.1.0 (/workspace/src)
error: the `Err`-variant returned from this function is very large
   --> src/action.rs:63:51
    |
63  |     pub fn execute(&self, plan: &RunnablePlan) -> Result<(), ActionError> {
    |                                                   ^^^^^^^^^^^^^^^^^^^^^^^
...
555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     -------------------------------------------------------- the largest variant contains at least 128 bytes
...
561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
    |
    = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    = note: `-D clippy::result-large-err` implied by `-D warnings`
    = help: to override `-D warnings` add `#[allow(clippy::result_large_err)]`

error: the `Err`-variant returned from this function is very large
   --> src/action.rs:147:19
    |
147 |     fn dummy() -> Result<(), ActionError> {
    |                   ^^^^^^^^^^^^^^^^^^^^^^^
...
555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     -------------------------------------------------------- the largest variant contains at least 128 bytes
...
561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
    |
    = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/action.rs:152:33
    |
152 |     fn pwd(sourcedir: &Path) -> Result<(), ActionError> {
    |                                 ^^^^^^^^^^^^^^^^^^^^^^^
...
555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     -------------------------------------------------------- the largest variant contains at least 128 bytes
...
561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
    |
    = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/action.rs:157:60
    |
157 |     fn rsync(artifactsdir: &Path, target: Option<&str>) -> Result<(), ActionError> {
    |                                                            ^^^^^^^^^^^^^^^^^^^^^^^
...
555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     -------------------------------------------------------- the largest variant contains at least 128 bytes
...
561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
    |
    = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/action.rs:166:71
    |
166 |     fn dput_action(artifactsdir: &Path, dput_target: Option<&str>) -> Result<(), ActionError> {
    |                                                                       ^^^^^^^^^^^^^^^^^^^^^^^
...
555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     -------------------------------------------------------- the largest variant contains at least 128 bytes
...
561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
    |
    = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/action.rs:176:67
    |
176 |     fn cargo_fetch(source_dir: &Path, dependencies_dir: &Path) -> Result<(), ActionError> {
    |                                                                   ^^^^^^^^^^^^^^^^^^^^^^^
...
555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     -------------------------------------------------------- the largest variant contains at least 128 bytes
...
561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
    |
    = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/action.rs:190:34
    |
190 |     fn mkdir(pathname: &Path) -> Result<(), ActionError> {
    |                                  ^^^^^^^^^^^^^^^^^^^^^^^
...
555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     -------------------------------------------------------- the largest variant contains at least 128 bytes
...
561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
    |
    = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/action.rs:197:54
    |
197 |     fn tar_create(archive: &Path, dirname: &Path) -> Result<(), ActionError> {
    |                                                      ^^^^^^^^^^^^^^^^^^^^^^^
...
555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     -------------------------------------------------------- the largest variant contains at least 128 bytes
...
561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
    |
    = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/action.rs:206:55
    |
206 |     fn tar_extract(archive: &Path, dirname: &Path) -> Result<(), ActionError> {
    |                                                       ^^^^^^^^^^^^^^^^^^^^^^^
...
555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     -------------------------------------------------------- the largest variant contains at least 128 bytes
...
561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
    |
    = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/action.rs:222:10
    |
222 |     ) -> Result<(), ActionError> {
    |          ^^^^^^^^^^^^^^^^^^^^^^^
...
555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     -------------------------------------------------------- the largest variant contains at least 128 bytes
...
561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
    |
    = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: variables can be used directly in the `format!` string
   --> src/action.rs:232:24
    |
232 |         let argv_str = format!("{:?}", argv);
    |                        ^^^^^^^^^^^^^^^^^^^^^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args
    = note: `-D clippy::uninlined-format-args` implied by `-D warnings`
    = help: to override `-D warnings` add `#[allow(clippy::uninlined_format_args)]`
help: change this to
    |
232 -         let argv_str = format!("{:?}", argv);
232 +         let argv_str = format!("{argv:?}");
    |

error: the `Err`-variant returned from this function is very large
   --> src/action.rs:258:51
    |
258 |     fn spawn_str_in(argv: &[&str], cwd: &Path) -> Result<(), ActionError> {
    |                                                   ^^^^^^^^^^^^^^^^^^^^^^^
...
555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     -------------------------------------------------------- the largest variant contains at least 128 bytes
...
561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
    |
    = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/action.rs:267:10
    |
267 |     ) -> Result<(), ActionError> {
    |          ^^^^^^^^^^^^^^^^^^^^^^^
...
555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     -------------------------------------------------------- the largest variant contains at least 128 bytes
...
561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
    |
    = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/action.rs:278:53
    |
278 |     fn shell(plan: &RunnablePlan, snippet: &str) -> Result<(), ActionError> {
    |                                                     ^^^^^^^^^^^^^^^^^^^^^^^
...
555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     -------------------------------------------------------- the largest variant contains at least 128 bytes
...
561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
    |
    = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: variables can be used directly in the `format!` string
   --> src/action.rs:279:23
    |
279 |         let snippet = format!("set -xeuo pipefail\n{}\n", snippet);
    |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args
help: change this to
    |
279 -         let snippet = format!("set -xeuo pipefail\n{}\n", snippet);
279 +         let snippet = format!("set -xeuo pipefail\n{snippet}\n");
    |

error: the `Err`-variant returned from this function is very large
   --> src/action.rs:287:10
    |
287 |     ) -> Result<(), ActionError> {
    |          ^^^^^^^^^^^^^^^^^^^^^^^
...
555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     -------------------------------------------------------- the largest variant contains at least 128 bytes
...
561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
    |
    = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/action.rs:300:10
    |
300 |     ) -> Result<Vec<(&'static str, String)>, ActionError> {
    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     -------------------------------------------------------- the largest variant contains at least 128 bytes
...
561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
    |
    = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/action.rs:318:59
    |
318 |     fn spawn_cargo(plan: &RunnablePlan, args: &[&str]) -> Result<(), ActionError> {
    |                                                           ^^^^^^^^^^^^^^^^^^^^^^^
...
555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     -------------------------------------------------------- the largest variant contains at least 128 bytes
...
561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
    |
    = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/action.rs:323:42
    |
323 |     fn cargo_fmt(plan: &RunnablePlan) -> Result<(), ActionError> {
    |                                          ^^^^^^^^^^^^^^^^^^^^^^^
...
555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     -------------------------------------------------------- the largest variant contains at least 128 bytes
...
561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
    |
    = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/action.rs:327:45
    |
327 |     fn cargo_clippy(plan: &RunnablePlan) -> Result<(), ActionError> {
    |                                             ^^^^^^^^^^^^^^^^^^^^^^^
...
555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     -------------------------------------------------------- the largest variant contains at least 128 bytes
...
561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
    |
    = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/action.rs:345:44
    |
345 |     fn cargo_build(plan: &RunnablePlan) -> Result<(), ActionError> {
    |                                            ^^^^^^^^^^^^^^^^^^^^^^^
...
555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     -------------------------------------------------------- the largest variant contains at least 128 bytes
...
561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
    |
    = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/action.rs:360:43
    |
360 |     fn cargo_test(plan: &RunnablePlan) -> Result<(), ActionError> {
    |                                           ^^^^^^^^^^^^^^^^^^^^^^^
...
555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     -------------------------------------------------------- the largest variant contains at least 128 bytes
...
561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
    |
    = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/action.rs:374:46
    |
374 |     fn cargo_install(plan: &RunnablePlan) -> Result<(), ActionError> {
    |                                              ^^^^^^^^^^^^^^^^^^^^^^^
...
555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     -------------------------------------------------------- the largest variant contains at least 128 bytes
...
561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
    |
    = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/action.rs:392:36
    |
392 |     fn deb(plan: &RunnablePlan) -> Result<(), ActionError> {
    |                                    ^^^^^^^^^^^^^^^^^^^^^^^
...
555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     -------------------------------------------------------- the largest variant contains at least 128 bytes
...
561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
    |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
    |
    = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: variables can be used directly in the `format!` string
  --> src/cloud_init.rs:48:12
   |
48 |         Ok(format!("#cloud-config\n{}", userdata))
   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args
help: change this to
   |
48 -         Ok(format!("#cloud-config\n{}", userdata))
48 +         Ok(format!("#cloud-config\n{userdata}"))
   |

error: the `Err`-variant returned from this function is very large
   --> src/plan.rs:15:42
    |
15  |     pub fn from_file(filename: &Path) -> Result<Self, PlanError> {
    |                                          ^^^^^^^^^^^^^^^^^^^^^^^
...
202 |     Action(#[from] crate::action::ActionError),
    |     ------------------------------------------ the largest variant contains at least 136 bytes
    |
    = help: try reducing the size of `plan::PlanError`, for example by boxing large elements or replacing it with `Box<plan::PlanError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/plan.rs:22:47
    |
22  |     pub fn to_file(&self, filename: &Path) -> Result<(), PlanError> {
    |                                               ^^^^^^^^^^^^^^^^^^^^^
...
202 |     Action(#[from] crate::action::ActionError),
    |     ------------------------------------------ the largest variant contains at least 136 bytes
    |
    = help: try reducing the size of `plan::PlanError`, for example by boxing large elements or replacing it with `Box<plan::PlanError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/plan.rs:53:37
    |
53  |     pub fn parse_str(yaml: &str) -> Result<Self, PlanError> {
    |                                     ^^^^^^^^^^^^^^^^^^^^^^^
...
202 |     Action(#[from] crate::action::ActionError),
    |     ------------------------------------------ the largest variant contains at least 136 bytes
    |
    = help: try reducing the size of `plan::PlanError`, for example by boxing large elements or replacing it with `Box<plan::PlanError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/plan.rs:57:42
    |
57  |     pub fn from_file(filename: &Path) -> Result<Self, PlanError> {
    |                                          ^^^^^^^^^^^^^^^^^^^^^^^
...
202 |     Action(#[from] crate::action::ActionError),
    |     ------------------------------------------ the largest variant contains at least 136 bytes
    |
    = help: try reducing the size of `plan::PlanError`, for example by boxing large elements or replacing it with `Box<plan::PlanError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/plan.rs:71:32
    |
71  |     pub fn to_string(&self) -> Result<String, PlanError> {
    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^
...
202 |     Action(#[from] crate::action::ActionError),
    |     ------------------------------------------ the largest variant contains at least 136 bytes
    |
    = help: try reducing the size of `plan::PlanError`, for example by boxing large elements or replacing it with `Box<plan::PlanError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/plan.rs:75:47
    |
75  |     pub fn to_file(&self, filename: &Path) -> Result<(), PlanError> {
    |                                               ^^^^^^^^^^^^^^^^^^^^^
...
202 |     Action(#[from] crate::action::ActionError),
    |     ------------------------------------------ the largest variant contains at least 136 bytes
    |
    = help: try reducing the size of `plan::PlanError`, for example by boxing large elements or replacing it with `Box<plan::PlanError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/plan.rs:96:30
    |
96  |     pub fn execute(&self) -> Result<(), PlanError> {
    |                              ^^^^^^^^^^^^^^^^^^^^^
...
202 |     Action(#[from] crate::action::ActionError),
    |     ------------------------------------------ the largest variant contains at least 136 bytes
    |
    = help: try reducing the size of `plan::PlanError`, for example by boxing large elements or replacing it with `Box<plan::PlanError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: variables can be used directly in the `format!` string
   --> src/qemu.rs:348:19
    |
348 |             .push(format!("format=qcow2,if=virtio,file={}", path));
    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args
help: change this to
    |
348 -             .push(format!("format=qcow2,if=virtio,file={}", path));
348 +             .push(format!("format=qcow2,if=virtio,file={path}"));
    |

error: the `Err`-variant returned from this function is very large
   --> src/run.rs:32:6
    |
32  | ) -> Result<(), RunError> {
    |      ^^^^^^^^^^^^^^^^^^^^
...
433 |     Plan(#[from] PlanError),
    |     ----------------------- the largest variant contains at least 136 bytes
    |
    = help: try reducing the size of `run::RunError`, for example by boxing large elements or replacing it with `Box<run::RunError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/run.rs:132:35
    |
132 | pub fn create_cloud_init_iso() -> Result<LocalDataStore, RunError> {
    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
433 |     Plan(#[from] PlanError),
    |     ----------------------- the largest variant contains at least 136 bytes
    |
    = help: try reducing the size of `run::RunError`, for example by boxing large elements or replacing it with `Box<run::RunError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/run.rs:158:66
    |
158 | pub fn create_source_vdrive(tmp: &TempDir, source_dir: &Path) -> Result<VirtualDrive, RunError> {
    |                                                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
433 |     Plan(#[from] PlanError),
    |     ----------------------- the largest variant contains at least 136 bytes
    |
    = help: try reducing the size of `run::RunError`, for example by boxing large elements or replacing it with `Box<run::RunError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/run.rs:167:6
    |
167 | ) -> Result<VirtualDrive, RunError> {
    |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
433 |     Plan(#[from] PlanError),
    |     ----------------------- the largest variant contains at least 136 bytes
    |
    = help: try reducing the size of `run::RunError`, for example by boxing large elements or replacing it with `Box<run::RunError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/run.rs:178:64
    |
178 | fn create_dependencies_vdrive(tmp: &TempDir, state: &State) -> Result<VirtualDrive, RunError> {
    |                                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
433 |     Plan(#[from] PlanError),
    |     ----------------------- the largest variant contains at least 136 bytes
    |
    = help: try reducing the size of `run::RunError`, for example by boxing large elements or replacing it with `Box<run::RunError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/run.rs:192:6
    |
192 | ) -> Result<VirtualDrive, RunError> {
    |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
433 |     Plan(#[from] PlanError),
    |     ----------------------- the largest variant contains at least 136 bytes
    |
    = help: try reducing the size of `run::RunError`, for example by boxing large elements or replacing it with `Box<run::RunError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/run.rs:207:6
    |
207 | ) -> Result<VirtualDrive, RunError> {
    |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
433 |     Plan(#[from] PlanError),
    |     ----------------------- the largest variant contains at least 136 bytes
    |
    = help: try reducing the size of `run::RunError`, for example by boxing large elements or replacing it with `Box<run::RunError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/run.rs:289:57
    |
289 | fn construct_runnable_plan(actions: &[UnsafeAction]) -> Result<RunnablePlan, RunError> {
    |                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
433 |     Plan(#[from] PlanError),
    |     ----------------------- the largest variant contains at least 136 bytes
    |
    = help: try reducing the size of `run::RunError`, for example by boxing large elements or replacing it with `Box<run::RunError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: the `Err`-variant returned from this function is very large
   --> src/run.rs:332:6
    |
332 | ) -> Result<(bool, State), RunError> {
    |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
433 |     Plan(#[from] PlanError),
    |     ----------------------- the largest variant contains at least 136 bytes
    |
    = help: try reducing the size of `run::RunError`, for example by boxing large elements or replacing it with `Box<run::RunError>`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err

error: variables can be used directly in the `format!` string
  --> src/util.rs:73:18
   |
73 |     let target = format!("{}/.", target);
   |                  ^^^^^^^^^^^^^^^^^^^^^^^
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args
help: change this to
   |
73 -     let target = format!("{}/.", target);
73 +     let target = format!("{target}/.");
   |

error: could not compile `ambient-driver` (lib) due to 43 previous errors
warning: build failed, waiting for other jobs to finish...
error: variables can be used directly in the `format!` string
   --> src/run.rs:523:9
    |
523 |         println!("{}", msg);
    |         ^^^^^^^^^^^^^^^^^^^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args
help: change this to
    |
523 -         println!("{}", msg);
523 +         println!("{msg}");
    |

error: variables can be used directly in the `format!` string
   --> src/tildepathbuf.rs:201:13
    |
201 |             assert_eq!(path.display().to_string(), format!("{}/foo", home));
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args
help: change this to
    |
201 -             assert_eq!(path.display().to_string(), format!("{}/foo", home));
201 +             assert_eq!(path.display().to_string(), format!("{home}/foo"));
    |

error: variables can be used directly in the `format!` string
   --> src/tildepathbuf.rs:220:40
    |
220 |             let wanted = PathBuf::from(format!("{}/foo", home));
    |                                        ^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args
help: change this to
    |
220 -             let wanted = PathBuf::from(format!("{}/foo", home));
220 +             let wanted = PathBuf::from(format!("{home}/foo"));
    |

error: could not compile `ambient-driver` (lib test) due to 46 previous errors
ERROR: Action failed: command failed: ["cargo", "clippy", "--offline", "--locked", "--workspace", "--all-targets", "--no-deps", "--", "--deny", "warnings"]
ERROR: command failed: ["cargo", "clippy", "--offline", "--locked", "--workspace", "--all-targets", "--no-deps", "--", "--deny", "warnings"]
EXIT CODE: 1
[2025-09-11T12:59:19Z INFO  ambient] ambient ends successfully

Trigger message

{
  "request": "trigger",
  "version": 1,
  "event_type": "patch",
  "repository": {
    "id": "rad:zwPaQSTBX8hktn22F6tHAZSFH2Fh",
    "name": "ambient-ci",
    "description": "Ambient command line tool to run CI projects locally",
    "private": false,
    "default_branch": "main",
    "delegates": [
      "did:key:z6MkgEMYod7Hxfy9qCvDv5hYHkZ4ciWmLFgfvm3Wn1b2w2FV"
    ]
  },
  "action": "Created",
  "patch": {
    "id": "ee87465dd21c7c71ab812999a8f973297163ee7a",
    "author": {
      "id": "did:key:z6MkgEMYod7Hxfy9qCvDv5hYHkZ4ciWmLFgfvm3Wn1b2w2FV",
      "alias": "liw"
    },
    "title": "trigger",
    "state": {
      "status": "archived",
      "conflicts": []
    },
    "before": "440637ce223f976abe0ef1d1d74d0fc8061fb904",
    "after": "9b725feedccdd100108e710f086ad1f78a1c8d0a",
    "commits": [
      "9b725feedccdd100108e710f086ad1f78a1c8d0a"
    ],
    "target": "b006b06a31704f9aec4361a948283057161cc410",
    "labels": [],
    "assignees": [],
    "revisions": [
      {
        "id": "ee87465dd21c7c71ab812999a8f973297163ee7a",
        "author": {
          "id": "did:key:z6MkgEMYod7Hxfy9qCvDv5hYHkZ4ciWmLFgfvm3Wn1b2w2FV",
          "alias": "liw"
        },
        "description": "Signed-off-by: Lars Wirzenius <liw@liw.fi>\nSponsored-by: author",
        "base": "440637ce223f976abe0ef1d1d74d0fc8061fb904",
        "oid": "9b725feedccdd100108e710f086ad1f78a1c8d0a",
        "timestamp": 1736931699
      }
    ]
  }
}

Ambient stdout

[2025-09-11T12:58:30Z INFO  ambient] ambient starts
[2025-09-11T12:58:30Z DEBUG ambient] load default configuration file /home/_rad/.config/ambient/config.yaml if it exists
deprecated: the `cpus` field is replaced by `qemu.cpus`
deprecated: the `memory` field is replaced by `qemu.memory`
[2025-09-11T12:58:30Z DEBUG ambient] complete configuration: Config {
        tmpdir: "/home/_rad/tmp",
        image_store: "/home/_rad/ambient-images",
        projects: "/dev/null",
        state: "/home/_rad/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(
            1000000000,
        ),
        cache_max_size: Byte(
            30000000000,
        ),
        qemu: QemuConfig {
            cpus: 2,
            memory: Byte(
                12000000000,
            ),
            kvm_binary: "/usr/bin/kvm",
            ovmf_vars_file: "/usr/share/ovmf/OVMF.fd",
            ovmf_code_file: "/usr/share/ovmf/OVMF.fd",
        },
    }
[2025-09-11T12:58:30Z DEBUG ambient] configuration: Config {
        tmpdir: "/home/_rad/tmp",
        image_store: "/home/_rad/ambient-images",
        projects: "/dev/null",
        state: "/home/_rad/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(
            1000000000,
        ),
        cache_max_size: Byte(
            30000000000,
        ),
        qemu: QemuConfig {
            cpus: 2,
            memory: Byte(
                12000000000,
            ),
            kvm_binary: "/usr/bin/kvm",
            ovmf_vars_file: "/usr/share/ovmf/OVMF.fd",
            ovmf_code_file: "/usr/share/ovmf/OVMF.fd",
        },
    }
[2025-09-11T12:58:30Z DEBUG ambient_ci::project] load project state from /home/_rad/ambient-state/rad:zwPaQSTBX8hktn22F6tHAZSFH2Fh/meta.yaml
[2025-09-11T12:58:30Z DEBUG ambient_ci::run] latest commit: "b006b06a31704f9aec4361a948283057161cc410"
[2025-09-11T12:58:30Z DEBUG ambient_ci::run] is a git repository
[2025-09-11T12:58:30Z DEBUG ambient_ci::run] git repository is clean
[2025-09-11T12:58:30Z DEBUG ambient_ci::run] current (HEAD) commit: 9b725feedccdd100108e710f086ad1f78a1c8d0a
[2025-09-11T12:58:30Z DEBUG ambient_ci::run] no dry run requested
[2025-09-11T12:58:30Z DEBUG ambient_ci::run] forced run requested
[2025-09-11T12:58:30Z DEBUG ambient_ci::run] run? true
[2025-09-11T12:58:30Z INFO  ambient_ci::run] project rad:zwPaQSTBX8hktn22F6tHAZSFH2Fh: running CI
[2025-09-11T12:58:30Z DEBUG ambient_ci::run] Executing pre-plan steps
[2025-09-11T12:58:30Z DEBUG ambient_ci::action] Plan::execute: CargoFetch {
        sourcedir: "/tmp/.tmprrD1q1/src",
        dependenciesdir: "/home/_rad/ambient-state/rad:zwPaQSTBX8hktn22F6tHAZSFH2Fh/dependencies",
    }
SPAWN: argv=["env", "CARGO_HOME=/home/_rad/ambient-state/rad:zwPaQSTBX8hktn22F6tHAZSFH2Fh/dependencies", "cargo", "fetch", "--locked"]
       cwd=/tmp/.tmprrD1q1/src (exists? true)
       extra_env=[]
    Updating crates.io index
 Downloading crates ...
  Downloaded serde_derive v1.0.217
  Downloaded wasm-bindgen-macro v0.2.99
  Downloaded time-core v0.1.2
  Downloaded once_cell v1.20.2
  Downloaded unicode-ident v1.0.14
  Downloaded syn v2.0.95
  Downloaded wasm-bindgen v0.2.99
  Downloaded thiserror-impl v2.0.10
  Downloaded proc-macro2 v1.0.92
  Downloaded itoa v1.0.14
  Downloaded humantime v2.1.0
  Downloaded wasm-bindgen-macro-support v0.2.99
  Downloaded globset v0.4.15
  Downloaded equivalent v1.0.1
  Downloaded valuable v0.1.0
  Downloaded zerocopy-derive v0.7.35
  Downloaded bytesize v1.3.0
  Downloaded proc-macro-crate v3.2.0
  Downloaded env_logger v0.11.6
  Downloaded redox_syscall v0.5.8
  Downloaded addr2line v0.24.2
  Downloaded rustc-demangle v0.1.24
  Downloaded thiserror v2.0.10
  Downloaded pest_derive v2.7.15
  Downloaded borsh-derive v1.5.3
  Downloaded borsh v1.5.3
  Downloaded uuid v1.11.0
  Downloaded backtrace v0.3.74
  Downloaded toml_edit v0.22.22
  Downloaded winnow v0.6.22
  Downloaded rust_decimal v1.36.0
  Downloaded pest v2.7.15
  Downloaded zerocopy v0.7.35
  Downloaded serde_json v1.0.135
  Downloaded gimli v0.31.1
  Downloaded deunicode v1.6.0
  Downloaded object v0.36.7
  Downloaded cc v1.2.7
  Downloaded rustix v0.38.43
  Downloaded indexmap v2.7.0
  Downloaded async-trait v0.1.85
  Downloaded miniz_oxide v0.8.2
  Downloaded tinyvec v1.8.1
  Downloaded bytes v1.9.0
  Downloaded anyhow v1.0.95
  Downloaded typenum v1.17.0
  Downloaded libc v0.2.169
  Downloaded pest_meta v2.7.15
  Downloaded bumpalo v3.16.0
  Downloaded tokio v1.43.0
  Downloaded log v0.4.22
  Downloaded hermit-abi v0.4.0
  Downloaded wasm-bindgen-backend v0.2.99
  Downloaded smallvec v1.13.2
  Downloaded clap_derive v4.5.24
  Downloaded anstyle-wincon v3.0.6
  Downloaded is-terminal v0.4.13
  Downloaded serde-aux v4.5.0
  Downloaded rustversion v1.0.19
  Downloaded sha256 v1.5.0
  Downloaded ryu v1.0.18
  Downloaded adler2 v2.0.0
  Downloaded byteorder v1.5.0
  Downloaded bitflags v2.6.0
  Downloaded tempfile v3.15.0
  Downloaded serde v1.0.217
  Downloaded deranged v0.3.11
  Downloaded cpufeatures v0.2.16
  Downloaded pest_generator v2.7.15
  Downloaded linux-raw-sys v0.4.15
  Downloaded ppv-lite86 v0.2.20
  Downloaded wasm-bindgen-shared v0.2.99
  Downloaded time v0.3.37
  Downloaded quote v1.0.38
  Downloaded time-macros v0.2.19
  Downloaded clap v4.5.25
  Downloaded pikchr v0.1.3
  Downloaded clap_builder v4.5.25
[2025-09-11T12:58:31Z DEBUG ambient_ci::run] create virtual drive /home/_rad/tmp/.tmpPux8vt/src.tar
[2025-09-11T12:58:31Z DEBUG ambient_ci::run] create virtual drive /home/_rad/tmp/.tmpPux8vt/deps.tar
[2025-09-11T12:58:32Z DEBUG ambient_ci::run] create_executor_vdrive: executor="/usr/bin/ambient-execute-plan"
[2025-09-11T12:58:32Z 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,
            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-11T12:58:32Z DEBUG ambient_ci::run] executor bin /usr/bin/ambient-execute-plan
[2025-09-11T12:58:32Z DEBUG ambient_ci::run] copying /usr/bin/ambient-execute-plan to /home/_rad/tmp/.tmpPux8vt/ambient-execute-plan/run-ci
[2025-09-11T12:58:32Z DEBUG ambient_ci::run] copy OK: true
[2025-09-11T12:58:32Z DEBUG ambient_ci::run] create virtual drive /home/_rad/tmp/.tmpPux8vt/executor.tar
[2025-09-11T12:58:34Z DEBUG ambient_ci::project] removing run log file /home/_rad/ambient-state/rad:zwPaQSTBX8hktn22F6tHAZSFH2Fh/run.log
[2025-09-11T12:58:34Z DEBUG ambient_ci::project] statedir is /home/_rad/ambient-state/rad:zwPaQSTBX8hktn22F6tHAZSFH2Fh, exists? true
[2025-09-11T12:58:34Z DEBUG ambient_ci::project] creating run log file /home/_rad/ambient-state/rad:zwPaQSTBX8hktn22F6tHAZSFH2Fh/run.log
[2025-09-11T12:58:34Z DEBUG ambient_ci::project] created run log file /home/_rad/ambient-state/rad:zwPaQSTBX8hktn22F6tHAZSFH2Fh/run.log OK
[2025-09-11T12:58:34Z DEBUG ambient_ci::cloud_init] with_hostname called: "ambient"
[2025-09-11T12:58:34Z DEBUG ambient_ci::cloud_init] with_runcmd called: "echo xyzzy > /dev/ttyS1"
[2025-09-11T12:58:34Z 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-11T12:58:34Z DEBUG ambient_ci::cloud_init] with_runcmd called: "poweroff"
[2025-09-11T12:58:34Z 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-11T12:58:34Z DEBUG ambient_ci::qemu] run QEMU
[2025-09-11T12:58:34Z DEBUG ambient_ci::qemu] create copy-on-write image and UEFI vars file
[2025-09-11T12:58:34Z DEBUG ambient_ci::qemu_utils] qemu-img create /home/_rad/tmp/.tmplkpDWa/.tmpHRcPDE/vm.qcow2 backing on /home/_rad/ambient.qcow2
[2025-09-11T12:58:34Z DEBUG ambient_ci::qemu] create cloud-init ISO file
[2025-09-11T12:58:34Z 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-11T12:58:34Z DEBUG ambient_ci::cloud_init] write /tmp/.tmpYCwA3k/meta-data
[2025-09-11T12:58:34Z DEBUG ambient_ci::cloud_init] write /tmp/.tmpYCwA3k/user-data
[2025-09-11T12:58:34Z DEBUG ambient_ci::qemu] set console log file to /home/_rad/tmp/.tmplkpDWa/.tmpHRcPDE/console.log
[2025-09-11T12:58:34Z DEBUG ambient_ci::util] create file /home/_rad/tmp/.tmplkpDWa/.tmpHRcPDE/console.log
[2025-09-11T12:58:34Z DEBUG ambient_ci::qemu] set run file to /home/_rad/ambient-state/rad:zwPaQSTBX8hktn22F6tHAZSFH2Fh/run.log
[2025-09-11T12:58:34Z DEBUG ambient_ci::util] create file /home/_rad/ambient-state/rad:zwPaQSTBX8hktn22F6tHAZSFH2Fh/run.log
[2025-09-11T12:58:34Z DEBUG ambient_ci::qemu] run QEMU: QemuArgs {
        args: [
            "-m",
            "11444",
            "-smp",
            "cpus=2",
            "-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:/home/_rad/tmp/.tmplkpDWa/.tmpHRcPDE/console.log",
            "-serial",
            "file:/home/_rad/ambient-state/rad:zwPaQSTBX8hktn22F6tHAZSFH2Fh/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=/home/_rad/tmp/.tmplkpDWa/.tmpHRcPDE/vars.fd",
            "-drive",
            "format=qcow2,if=virtio,file=/home/_rad/tmp/.tmplkpDWa/.tmpHRcPDE/vm.qcow2",
            "-drive",
            "format=raw,if=virtio,file=/home/_rad/tmp/.tmpPux8vt/executor.tar,readonly=on",
            "-cdrom",
            "/home/_rad/tmp/.tmplkpDWa/.tmpHRcPDE/cloud_init.iso",
            "-drive",
            "format=raw,if=virtio,file=/home/_rad/tmp/.tmpPux8vt/src.tar,readonly=on",
            "-drive",
            "format=raw,if=virtio,file=/home/_rad/tmp/.tmpPux8vt/artifacts.tar",
            "-drive",
            "format=raw,if=virtio,file=/home/_rad/tmp/.tmpPux8vt/cache.tar",
            "-drive",
            "format=raw,if=virtio,file=/home/_rad/tmp/.tmpPux8vt/deps.tar,readonly=on",
            "-nodefaults",
            "-no-user-config",
        ],
    }
[2025-09-11T12:59:18Z DEBUG ambient_ci::qemu] QEMU finished OK
[2025-09-11T12:59:18Z DEBUG ambient_ci::qemu] run log:
    --------------------==========
    [2025-09-11T12:58:37Z TRACE ambient_execute_plan] ambient-execute-plan starts
    [2025-09-11T12:58:37Z DEBUG ambient_execute_plan] ambient-execute-plan starts
    [2025-09-11T12:58:37Z INFO  ambient_execute_plan] ambient-execute-plan starts
    [2025-09-11T12:58:37Z WARN  ambient_execute_plan] ambient-execute-plan starts
    [2025-09-11T12:58:37Z ERROR ambient_execute_plan] ambient-execute-plan 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: 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
    
    
    RUN: Action Mkdir {
        pathname: "/workspace",
    }
    [2025-09-11T12:58:37Z DEBUG ambient_ci::action] Plan::execute: Mkdir {
            pathname: "/workspace",
        }
    RUN: Action finished OK
    RUN: Action Mkdir {
        pathname: "/workspace/artifacts",
    }
    [2025-09-11T12:58:37Z DEBUG ambient_ci::action] Plan::execute: Mkdir {
            pathname: "/workspace/artifacts",
        }
    RUN: Action finished OK
    RUN: Action TarExtract {
        archive: "/dev/vdc",
        directory: "/workspace/src",
    }
    [2025-09-11T12:58:37Z DEBUG ambient_ci::action] Plan::execute: TarExtract {
            archive: "/dev/vdc",
            directory: "/workspace/src",
        }
    [2025-09-11T12:58:37Z TRACE ambient_ci::vdrive] extracting /dev/vdc to /workspace/src
    [2025-09-11T12:58:37Z TRACE ambient_ci::vdrive] extraction OK
    RUN: Action finished OK
    RUN: Action TarExtract {
        archive: "/dev/vdf",
        directory: "/workspace/deps",
    }
    [2025-09-11T12:58:37Z DEBUG ambient_ci::action] Plan::execute: TarExtract {
            archive: "/dev/vdf",
            directory: "/workspace/deps",
        }
    [2025-09-11T12:58:37Z TRACE ambient_ci::vdrive] extracting /dev/vdf to /workspace/deps
    [2025-09-11T12:58:39Z TRACE ambient_ci::vdrive] extraction OK
    RUN: Action finished OK
    RUN: Action TarExtract {
        archive: "/dev/vde",
        directory: "/workspace/cache",
    }
    [2025-09-11T12:58:39Z DEBUG ambient_ci::action] Plan::execute: TarExtract {
            archive: "/dev/vde",
            directory: "/workspace/cache",
        }
    [2025-09-11T12:58:39Z TRACE ambient_ci::vdrive] extracting /dev/vde to /workspace/cache
    [2025-09-11T12:58:42Z TRACE ambient_ci::vdrive] extraction OK
    RUN: Action finished OK
    RUN: Action Spawn {
        argv: [
            "find",
            "/workspace",
            "-maxdepth",
            "2",
            "-ls",
        ],
    }
    [2025-09-11T12:58:42Z DEBUG ambient_ci::action] Plan::execute: Spawn {
            argv: [
                "find",
                "/workspace",
                "-maxdepth",
                "2",
                "-ls",
            ],
        }
    SPAWN: argv=["find", "/workspace", "-maxdepth", "2", "-ls"]
           cwd=/workspace/src (exists? true)
           extra_env=[]
      2621441      4 drwxr-xr-x   6 root     root         4096 Sep 11 12:58 /workspace
      2621595      4 drwxr-xr-x   3 root     root         4096 Sep 11 12:58 /workspace/deps
      2653151      0 -rw-r--r--   1 root     root            0 Sep 11 12:54 /workspace/deps/.package-cache-mutate
      2621596      4 drwxr-xr-x   5 root     root         4096 Sep 11 12:54 /workspace/deps/registry
      2653150    124 -rw-r--r--   1 root     root       126976 Sep 11 12:58 /workspace/deps/.global-cache
      2653152      0 -rw-r--r--   1 root     root            0 Sep 11 12:54 /workspace/deps/.package-cache
      2621443      4 drwxr-xr-x   6 root     root         4096 Sep 11 12:58 /workspace/src
      2621450      4 -rw-r--r--   1 root     root         1030 Sep 11 12:58 /workspace/src/Cargo.toml
      2621444      4 -rwxr-xr-x   1 root     root         1367 Sep 11 12:58 /workspace/src/check
      2621488     36 -rw-r--r--   1 root     root        34260 Sep 11 12:58 /workspace/src/COPYING.md
      2621491      4 drwxr-xr-x   8 root     root         4096 Sep 11 12:58 /workspace/src/.git
      2621453      4 drwxr-xr-x   3 root     root         4096 Sep 11 12:58 /workspace/src/src
      2621445      4 -rw-r--r--   1 root     root          220 Sep 11 12:58 /workspace/src/ambient-driver.yaml
      2621449      4 -rw-r--r--   1 root     root          833 Sep 11 12:58 /workspace/src/README.md
      2621489      4 drwxr-xr-x   2 root     root         4096 Sep 11 12:58 /workspace/src/.radicle
      2621478      4 drwxr-xr-x   3 root     root         4096 Sep 11 12:58 /workspace/src/debian
      2621447      4 -rw-r--r--   1 root     root         1225 Sep 11 12:58 /workspace/src/ambient-driver.py
      2621451     60 -rw-r--r--   1 root     root        59466 Sep 11 12:58 /workspace/src/Cargo.lock
      2621448     12 -rw-r--r--   1 root     root        10658 Sep 11 12:58 /workspace/src/ambient-driver.md
      2621452      4 -rw-r--r--   1 root     root           32 Sep 11 12:58 /workspace/src/.gitignore
      2621446      4 -rw-r--r--   1 root     root          252 Sep 11 12:58 /workspace/src/ambient-driver.subplot
      2621442      4 drwxr-xr-x   2 root     root         4096 Sep 11 12:58 /workspace/artifacts
      2653153      4 drwxr-xr-x   5 root     root         4096 Sep 11 12:56 /workspace/cache
      2655637      4 drwxr-xr-x   7 root     root         4096 Sep 11 12:56 /workspace/cache/debug
      2654006      4 -rw-r--r--   1 root     root         1904 Sep 11 12:57 /workspace/cache/.rustc_info.json
      2654007      4 drwxr-xr-x   7 root     root         4096 Sep 11 12:56 /workspace/cache/release
      2653154      4 drwxr-xr-x   3 root     root         4096 Sep 11 12:56 /workspace/cache/x86_64-unknown-linux-musl
    RUN: Action finished OK
    RUN: Action CargoFmt
    [2025-09-11T12:58:42Z DEBUG ambient_ci::action] Plan::execute: CargoFmt
    SPAWN: argv=["cargo", "fmt", "--check"]
           cwd=/workspace/src (exists? true)
           extra_env=[("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")]
    RUN: Action finished OK
    RUN: Action CargoClippy
    [2025-09-11T12:58:42Z DEBUG ambient_ci::action] Plan::execute: CargoClippy
    SPAWN: argv=["cargo", "clippy", "--offline", "--locked", "--workspace", "--all-targets", "--no-deps", "--", "--deny", "warnings"]
           cwd=/workspace/src (exists? true)
           extra_env=[("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")]
       Compiling proc-macro2 v1.0.92
       Compiling unicode-ident v1.0.14
       Compiling memchr v2.7.4
       Compiling libc v0.2.169
       Compiling quote v1.0.38
       Compiling syn v2.0.95
       Compiling autocfg v1.4.0
       Compiling serde v1.0.217
       Compiling anyhow v1.0.95
       Compiling once_cell v1.20.2
       Compiling aho-corasick v1.1.3
       Compiling itoa v1.0.14
       Compiling cfg-if v1.0.0
       Compiling regex-syntax v0.8.5
       Compiling serde_derive v1.0.217
       Compiling log v0.4.22
       Compiling thiserror v2.0.10
       Compiling regex-automata v0.4.9
       Compiling thiserror-impl v2.0.10
       Compiling zerocopy-derive v0.7.35
       Compiling getrandom v0.2.15
       Compiling bitflags v2.6.0
       Compiling byteorder v1.5.0
       Compiling ryu v1.0.18
       Compiling rustix v0.38.43
       Compiling zerocopy v0.7.35
       Compiling time-core v0.1.2
       Compiling serde_json v1.0.135
       Compiling time-macros v0.2.19
       Compiling pest v2.7.15
       Compiling ppv-lite86 v0.2.20
       Compiling rand_core v0.6.4
       Compiling indexmap v1.9.3
       Compiling bstr v1.11.3
       Compiling libm v0.2.11
       Compiling thiserror v1.0.69
       Compiling anstyle-parse v0.2.6
       Compiling globset v0.4.15
       Compiling deranged v0.3.11
       Compiling cc v1.2.7
       Compiling pest_meta v2.7.15
       Compiling rand_chacha v0.3.1
       Compiling thiserror-impl v1.0.69
       Compiling typenum v1.17.0
       Compiling colorchoice v1.0.3
       Compiling anstyle v1.0.10
       Compiling anstyle-query v1.1.2
       Compiling linux-raw-sys v0.4.15
       Compiling anstream v0.6.18
       Compiling clap_derive v4.5.24
       Compiling ignore v0.4.23
       Compiling rand v0.8.5
       Compiling pikchr v0.1.3
       Compiling pest_generator v2.7.15
       Compiling time v0.3.37
       Compiling regex v1.11.1
       Compiling equivalent v1.0.1
       Compiling hashbrown v0.15.2
       Compiling clap_lex v0.7.4
       Compiling deunicode v1.6.0
       Compiling slug v0.1.6
       Compiling indexmap v2.7.0
       Compiling clap_builder v4.5.25
       Compiling tempfile v3.15.0
       Compiling git-testament-derive v0.2.1
       Compiling pest_derive v2.7.15
       Compiling humansize v2.1.3
       Compiling globwalk v0.9.1
       Compiling serde_yaml v0.8.26
       Compiling subplot v0.9.0
       Compiling getopts v0.2.21
       Compiling is-terminal v0.4.13
       Compiling percent-encoding v2.3.1
       Compiling humantime v2.1.0
       Compiling tera v1.20.0
       Compiling env_logger v0.10.2
       Compiling pulldown-cmark v0.9.6
       Compiling serde_yaml v0.9.34+deprecated
       Compiling roadmap v0.5.0
        Checking generic-array v0.14.7
       Compiling clap v4.5.25
       Compiling git-testament v0.2.6
       Compiling tempfile-fast v0.3.4
       Compiling syn v1.0.109
       Compiling serde-aux v4.5.0
       Compiling tracing-attributes v0.1.28
       Compiling tracing-core v0.1.33
       Compiling tracing v0.1.41
       Compiling fehler-macros v1.0.0
       Compiling num-traits v0.2.19
        Checking nix v0.29.0
       Compiling subplot-build v0.9.0
        Checking block-buffer v0.10.4
        Checking crypto-common v0.1.6
        Checking cvt v0.1.2
       Compiling rust_decimal v1.36.0
       Compiling glob v0.3.2
       Compiling subplotlib v0.9.0
        Checking fs_at v0.2.1
        Checking digest v0.10.7
       Compiling fehler v1.0.0
        Checking pin-project-lite v0.2.16
        Checking bytes v1.9.0
        Checking normpath v1.3.0
        Checking cpufeatures v0.2.16
        Checking env_filter v0.1.3
        Checking tokio v1.43.0
        Checking sha2 v0.10.8
        Checking dirs-sys v0.4.1
        Checking remove_dir_all v0.8.4
        Checking libyml v0.0.5
       Compiling subplotlib-derive v0.9.0
        Checking filetime v0.2.25
        Checking fs2 v0.4.3
       Compiling async-trait v0.1.85
        Checking unescape v0.1.0
        Checking base64 v0.21.7
        Checking state v0.5.3
        Checking byte-unit v5.1.6
        Checking sha256 v1.5.0
        Checking env_logger v0.11.6
        Checking serde_yml v0.0.12
        Checking directories v5.0.1
        Checking bytesize v1.3.0
        Checking ambient-driver v0.1.0 (/workspace/src)
    error: the `Err`-variant returned from this function is very large
       --> src/action.rs:63:51
        |
    63  |     pub fn execute(&self, plan: &RunnablePlan) -> Result<(), ActionError> {
        |                                                   ^^^^^^^^^^^^^^^^^^^^^^^
    ...
    555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     -------------------------------------------------------- the largest variant contains at least 128 bytes
    ...
    561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
        |
        = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
        = note: `-D clippy::result-large-err` implied by `-D warnings`
        = help: to override `-D warnings` add `#[allow(clippy::result_large_err)]`
    
    error: the `Err`-variant returned from this function is very large
       --> src/action.rs:147:19
        |
    147 |     fn dummy() -> Result<(), ActionError> {
        |                   ^^^^^^^^^^^^^^^^^^^^^^^
    ...
    555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     -------------------------------------------------------- the largest variant contains at least 128 bytes
    ...
    561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
        |
        = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/action.rs:152:33
        |
    152 |     fn pwd(sourcedir: &Path) -> Result<(), ActionError> {
        |                                 ^^^^^^^^^^^^^^^^^^^^^^^
    ...
    555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     -------------------------------------------------------- the largest variant contains at least 128 bytes
    ...
    561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
        |
        = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/action.rs:157:60
        |
    157 |     fn rsync(artifactsdir: &Path, target: Option<&str>) -> Result<(), ActionError> {
        |                                                            ^^^^^^^^^^^^^^^^^^^^^^^
    ...
    555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     -------------------------------------------------------- the largest variant contains at least 128 bytes
    ...
    561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
        |
        = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/action.rs:166:71
        |
    166 |     fn dput_action(artifactsdir: &Path, dput_target: Option<&str>) -> Result<(), ActionError> {
        |                                                                       ^^^^^^^^^^^^^^^^^^^^^^^
    ...
    555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     -------------------------------------------------------- the largest variant contains at least 128 bytes
    ...
    561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
        |
        = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/action.rs:176:67
        |
    176 |     fn cargo_fetch(source_dir: &Path, dependencies_dir: &Path) -> Result<(), ActionError> {
        |                                                                   ^^^^^^^^^^^^^^^^^^^^^^^
    ...
    555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     -------------------------------------------------------- the largest variant contains at least 128 bytes
    ...
    561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
        |
        = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/action.rs:190:34
        |
    190 |     fn mkdir(pathname: &Path) -> Result<(), ActionError> {
        |                                  ^^^^^^^^^^^^^^^^^^^^^^^
    ...
    555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     -------------------------------------------------------- the largest variant contains at least 128 bytes
    ...
    561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
        |
        = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/action.rs:197:54
        |
    197 |     fn tar_create(archive: &Path, dirname: &Path) -> Result<(), ActionError> {
        |                                                      ^^^^^^^^^^^^^^^^^^^^^^^
    ...
    555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     -------------------------------------------------------- the largest variant contains at least 128 bytes
    ...
    561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
        |
        = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/action.rs:206:55
        |
    206 |     fn tar_extract(archive: &Path, dirname: &Path) -> Result<(), ActionError> {
        |                                                       ^^^^^^^^^^^^^^^^^^^^^^^
    ...
    555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     -------------------------------------------------------- the largest variant contains at least 128 bytes
    ...
    561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
        |
        = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/action.rs:222:10
        |
    222 |     ) -> Result<(), ActionError> {
        |          ^^^^^^^^^^^^^^^^^^^^^^^
    ...
    555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     -------------------------------------------------------- the largest variant contains at least 128 bytes
    ...
    561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
        |
        = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: variables can be used directly in the `format!` string
       --> src/action.rs:232:24
        |
    232 |         let argv_str = format!("{:?}", argv);
        |                        ^^^^^^^^^^^^^^^^^^^^^
        |
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args
        = note: `-D clippy::uninlined-format-args` implied by `-D warnings`
        = help: to override `-D warnings` add `#[allow(clippy::uninlined_format_args)]`
    help: change this to
        |
    232 -         let argv_str = format!("{:?}", argv);
    232 +         let argv_str = format!("{argv:?}");
        |
    
    error: the `Err`-variant returned from this function is very large
       --> src/action.rs:258:51
        |
    258 |     fn spawn_str_in(argv: &[&str], cwd: &Path) -> Result<(), ActionError> {
        |                                                   ^^^^^^^^^^^^^^^^^^^^^^^
    ...
    555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     -------------------------------------------------------- the largest variant contains at least 128 bytes
    ...
    561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
        |
        = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/action.rs:267:10
        |
    267 |     ) -> Result<(), ActionError> {
        |          ^^^^^^^^^^^^^^^^^^^^^^^
    ...
    555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     -------------------------------------------------------- the largest variant contains at least 128 bytes
    ...
    561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
        |
        = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/action.rs:278:53
        |
    278 |     fn shell(plan: &RunnablePlan, snippet: &str) -> Result<(), ActionError> {
        |                                                     ^^^^^^^^^^^^^^^^^^^^^^^
    ...
    555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     -------------------------------------------------------- the largest variant contains at least 128 bytes
    ...
    561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
        |
        = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: variables can be used directly in the `format!` string
       --> src/action.rs:279:23
        |
    279 |         let snippet = format!("set -xeuo pipefail\n{}\n", snippet);
        |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        |
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args
    help: change this to
        |
    279 -         let snippet = format!("set -xeuo pipefail\n{}\n", snippet);
    279 +         let snippet = format!("set -xeuo pipefail\n{snippet}\n");
        |
    
    error: the `Err`-variant returned from this function is very large
       --> src/action.rs:287:10
        |
    287 |     ) -> Result<(), ActionError> {
        |          ^^^^^^^^^^^^^^^^^^^^^^^
    ...
    555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     -------------------------------------------------------- the largest variant contains at least 128 bytes
    ...
    561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
        |
        = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/action.rs:300:10
        |
    300 |     ) -> Result<Vec<(&'static str, String)>, ActionError> {
        |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...
    555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     -------------------------------------------------------- the largest variant contains at least 128 bytes
    ...
    561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
        |
        = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/action.rs:318:59
        |
    318 |     fn spawn_cargo(plan: &RunnablePlan, args: &[&str]) -> Result<(), ActionError> {
        |                                                           ^^^^^^^^^^^^^^^^^^^^^^^
    ...
    555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     -------------------------------------------------------- the largest variant contains at least 128 bytes
    ...
    561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
        |
        = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/action.rs:323:42
        |
    323 |     fn cargo_fmt(plan: &RunnablePlan) -> Result<(), ActionError> {
        |                                          ^^^^^^^^^^^^^^^^^^^^^^^
    ...
    555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     -------------------------------------------------------- the largest variant contains at least 128 bytes
    ...
    561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
        |
        = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/action.rs:327:45
        |
    327 |     fn cargo_clippy(plan: &RunnablePlan) -> Result<(), ActionError> {
        |                                             ^^^^^^^^^^^^^^^^^^^^^^^
    ...
    555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     -------------------------------------------------------- the largest variant contains at least 128 bytes
    ...
    561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
        |
        = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/action.rs:345:44
        |
    345 |     fn cargo_build(plan: &RunnablePlan) -> Result<(), ActionError> {
        |                                            ^^^^^^^^^^^^^^^^^^^^^^^
    ...
    555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     -------------------------------------------------------- the largest variant contains at least 128 bytes
    ...
    561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
        |
        = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/action.rs:360:43
        |
    360 |     fn cargo_test(plan: &RunnablePlan) -> Result<(), ActionError> {
        |                                           ^^^^^^^^^^^^^^^^^^^^^^^
    ...
    555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     -------------------------------------------------------- the largest variant contains at least 128 bytes
    ...
    561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
        |
        = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/action.rs:374:46
        |
    374 |     fn cargo_install(plan: &RunnablePlan) -> Result<(), ActionError> {
        |                                              ^^^^^^^^^^^^^^^^^^^^^^^
    ...
    555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     -------------------------------------------------------- the largest variant contains at least 128 bytes
    ...
    561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
        |
        = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/action.rs:392:36
        |
    392 |     fn deb(plan: &RunnablePlan) -> Result<(), ActionError> {
        |                                    ^^^^^^^^^^^^^^^^^^^^^^^
    ...
    555 |     TarCreate(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     -------------------------------------------------------- the largest variant contains at least 128 bytes
    ...
    561 |     TarExtract(PathBuf, PathBuf, #[source] VirtualDriveError),
        |     --------------------------------------------------------- the variant `TarExtract` contains at least 128 bytes
        |
        = help: try reducing the size of `action::ActionError`, for example by boxing large elements or replacing it with `Box<action::ActionError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: variables can be used directly in the `format!` string
      --> src/cloud_init.rs:48:12
       |
    48 |         Ok(format!("#cloud-config\n{}", userdata))
       |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       |
       = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args
    help: change this to
       |
    48 -         Ok(format!("#cloud-config\n{}", userdata))
    48 +         Ok(format!("#cloud-config\n{userdata}"))
       |
    
    error: the `Err`-variant returned from this function is very large
       --> src/plan.rs:15:42
        |
    15  |     pub fn from_file(filename: &Path) -> Result<Self, PlanError> {
        |                                          ^^^^^^^^^^^^^^^^^^^^^^^
    ...
    202 |     Action(#[from] crate::action::ActionError),
        |     ------------------------------------------ the largest variant contains at least 136 bytes
        |
        = help: try reducing the size of `plan::PlanError`, for example by boxing large elements or replacing it with `Box<plan::PlanError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/plan.rs:22:47
        |
    22  |     pub fn to_file(&self, filename: &Path) -> Result<(), PlanError> {
        |                                               ^^^^^^^^^^^^^^^^^^^^^
    ...
    202 |     Action(#[from] crate::action::ActionError),
        |     ------------------------------------------ the largest variant contains at least 136 bytes
        |
        = help: try reducing the size of `plan::PlanError`, for example by boxing large elements or replacing it with `Box<plan::PlanError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/plan.rs:53:37
        |
    53  |     pub fn parse_str(yaml: &str) -> Result<Self, PlanError> {
        |                                     ^^^^^^^^^^^^^^^^^^^^^^^
    ...
    202 |     Action(#[from] crate::action::ActionError),
        |     ------------------------------------------ the largest variant contains at least 136 bytes
        |
        = help: try reducing the size of `plan::PlanError`, for example by boxing large elements or replacing it with `Box<plan::PlanError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/plan.rs:57:42
        |
    57  |     pub fn from_file(filename: &Path) -> Result<Self, PlanError> {
        |                                          ^^^^^^^^^^^^^^^^^^^^^^^
    ...
    202 |     Action(#[from] crate::action::ActionError),
        |     ------------------------------------------ the largest variant contains at least 136 bytes
        |
        = help: try reducing the size of `plan::PlanError`, for example by boxing large elements or replacing it with `Box<plan::PlanError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/plan.rs:71:32
        |
    71  |     pub fn to_string(&self) -> Result<String, PlanError> {
        |                                ^^^^^^^^^^^^^^^^^^^^^^^^^
    ...
    202 |     Action(#[from] crate::action::ActionError),
        |     ------------------------------------------ the largest variant contains at least 136 bytes
        |
        = help: try reducing the size of `plan::PlanError`, for example by boxing large elements or replacing it with `Box<plan::PlanError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/plan.rs:75:47
        |
    75  |     pub fn to_file(&self, filename: &Path) -> Result<(), PlanError> {
        |                                               ^^^^^^^^^^^^^^^^^^^^^
    ...
    202 |     Action(#[from] crate::action::ActionError),
        |     ------------------------------------------ the largest variant contains at least 136 bytes
        |
        = help: try reducing the size of `plan::PlanError`, for example by boxing large elements or replacing it with `Box<plan::PlanError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/plan.rs:96:30
        |
    96  |     pub fn execute(&self) -> Result<(), PlanError> {
        |                              ^^^^^^^^^^^^^^^^^^^^^
    ...
    202 |     Action(#[from] crate::action::ActionError),
        |     ------------------------------------------ the largest variant contains at least 136 bytes
        |
        = help: try reducing the size of `plan::PlanError`, for example by boxing large elements or replacing it with `Box<plan::PlanError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: variables can be used directly in the `format!` string
       --> src/qemu.rs:348:19
        |
    348 |             .push(format!("format=qcow2,if=virtio,file={}", path));
        |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        |
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args
    help: change this to
        |
    348 -             .push(format!("format=qcow2,if=virtio,file={}", path));
    348 +             .push(format!("format=qcow2,if=virtio,file={path}"));
        |
    
    error: the `Err`-variant returned from this function is very large
       --> src/run.rs:32:6
        |
    32  | ) -> Result<(), RunError> {
        |      ^^^^^^^^^^^^^^^^^^^^
    ...
    433 |     Plan(#[from] PlanError),
        |     ----------------------- the largest variant contains at least 136 bytes
        |
        = help: try reducing the size of `run::RunError`, for example by boxing large elements or replacing it with `Box<run::RunError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/run.rs:132:35
        |
    132 | pub fn create_cloud_init_iso() -> Result<LocalDataStore, RunError> {
        |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...
    433 |     Plan(#[from] PlanError),
        |     ----------------------- the largest variant contains at least 136 bytes
        |
        = help: try reducing the size of `run::RunError`, for example by boxing large elements or replacing it with `Box<run::RunError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/run.rs:158:66
        |
    158 | pub fn create_source_vdrive(tmp: &TempDir, source_dir: &Path) -> Result<VirtualDrive, RunError> {
        |                                                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...
    433 |     Plan(#[from] PlanError),
        |     ----------------------- the largest variant contains at least 136 bytes
        |
        = help: try reducing the size of `run::RunError`, for example by boxing large elements or replacing it with `Box<run::RunError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/run.rs:167:6
        |
    167 | ) -> Result<VirtualDrive, RunError> {
        |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...
    433 |     Plan(#[from] PlanError),
        |     ----------------------- the largest variant contains at least 136 bytes
        |
        = help: try reducing the size of `run::RunError`, for example by boxing large elements or replacing it with `Box<run::RunError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/run.rs:178:64
        |
    178 | fn create_dependencies_vdrive(tmp: &TempDir, state: &State) -> Result<VirtualDrive, RunError> {
        |                                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...
    433 |     Plan(#[from] PlanError),
        |     ----------------------- the largest variant contains at least 136 bytes
        |
        = help: try reducing the size of `run::RunError`, for example by boxing large elements or replacing it with `Box<run::RunError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/run.rs:192:6
        |
    192 | ) -> Result<VirtualDrive, RunError> {
        |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...
    433 |     Plan(#[from] PlanError),
        |     ----------------------- the largest variant contains at least 136 bytes
        |
        = help: try reducing the size of `run::RunError`, for example by boxing large elements or replacing it with `Box<run::RunError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/run.rs:207:6
        |
    207 | ) -> Result<VirtualDrive, RunError> {
        |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...
    433 |     Plan(#[from] PlanError),
        |     ----------------------- the largest variant contains at least 136 bytes
        |
        = help: try reducing the size of `run::RunError`, for example by boxing large elements or replacing it with `Box<run::RunError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/run.rs:289:57
        |
    289 | fn construct_runnable_plan(actions: &[UnsafeAction]) -> Result<RunnablePlan, RunError> {
        |                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...
    433 |     Plan(#[from] PlanError),
        |     ----------------------- the largest variant contains at least 136 bytes
        |
        = help: try reducing the size of `run::RunError`, for example by boxing large elements or replacing it with `Box<run::RunError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: the `Err`-variant returned from this function is very large
       --> src/run.rs:332:6
        |
    332 | ) -> Result<(bool, State), RunError> {
        |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...
    433 |     Plan(#[from] PlanError),
        |     ----------------------- the largest variant contains at least 136 bytes
        |
        = help: try reducing the size of `run::RunError`, for example by boxing large elements or replacing it with `Box<run::RunError>`
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_large_err
    
    error: variables can be used directly in the `format!` string
      --> src/util.rs:73:18
       |
    73 |     let target = format!("{}/.", target);
       |                  ^^^^^^^^^^^^^^^^^^^^^^^
       |
       = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args
    help: change this to
       |
    73 -     let target = format!("{}/.", target);
    73 +     let target = format!("{target}/.");
       |
    
    error: could not compile `ambient-driver` (lib) due to 43 previous errors
    warning: build failed, waiting for other jobs to finish...
    error: variables can be used directly in the `format!` string
       --> src/run.rs:523:9
        |
    523 |         println!("{}", msg);
        |         ^^^^^^^^^^^^^^^^^^^
        |
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args
    help: change this to
        |
    523 -         println!("{}", msg);
    523 +         println!("{msg}");
        |
    
    error: variables can be used directly in the `format!` string
       --> src/tildepathbuf.rs:201:13
        |
    201 |             assert_eq!(path.display().to_string(), format!("{}/foo", home));
        |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        |
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args
    help: change this to
        |
    201 -             assert_eq!(path.display().to_string(), format!("{}/foo", home));
    201 +             assert_eq!(path.display().to_string(), format!("{home}/foo"));
        |
    
    error: variables can be used directly in the `format!` string
       --> src/tildepathbuf.rs:220:40
        |
    220 |             let wanted = PathBuf::from(format!("{}/foo", home));
        |                                        ^^^^^^^^^^^^^^^^^^^^^^^
        |
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args
    help: change this to
        |
    220 -             let wanted = PathBuf::from(format!("{}/foo", home));
    220 +             let wanted = PathBuf::from(format!("{home}/foo"));
        |
    
    error: could not compile `ambient-driver` (lib test) due to 46 previous errors
    ERROR: Action failed: command failed: ["cargo", "clippy", "--offline", "--locked", "--workspace", "--all-targets", "--no-deps", "--", "--deny", "warnings"]
    ERROR: command failed: ["cargo", "clippy", "--offline", "--locked", "--workspace", "--all-targets", "--no-deps", "--", "--deny", "warnings"]
    EXIT CODE: 1
    
    ====================
[2025-09-11T12:59:19Z DEBUG ambient_ci::qemu] QEMU exit code 1
ERROR: failed to run actions in QEMU

Ambient stderr

<empty log>