CI run for rad:zwTxygwuz5LDGBq255RA2CbNGrz8

Radicle repository id rad:zwTxygwuz5LDGBq255RA2CbNGrz8

Table of Contents

Run log

[2025-09-24T04:52:37Z INFO  ambient] ambient starts
[=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
vda    254:0    0   100G  0 disk 
├─vda1 254:1    0   953M  0 part 
└─vda2 254:2    0  99.1G  0 part /
vdb    254:16   0   6.1M  1 disk 
vdc    254:32   0     5M  1 disk 
vdd    254:48   0   9.3G  0 disk 
vde    254:64   0  46.6G  0 disk 
vdf    254:80   0 863.4M  1 disk 
INFO: Extracting tar archive from /dev/vdb
drwxr-xr-x _rad/_rad         0 2025-09-24 04:48 ./
-rw-r--r-- _rad/_rad      1789 2025-09-24 04:48 ./plan.yaml
-rwxr-xr-x _rad/_rad   6410400 2025-09-24 04:48 ./run-ci
INFO: Extracted files:
  4587526      4 drwxr-xr-x   2 1001     1001         4096 Sep 24 04:48 .
  4587527      4 -rw-r--r--   1 1001     1001         1789 Sep 24 04:48 ./plan.yaml
  4587530   6264 -rwxr-xr-x   1 1001     1001      6410400 Sep 24 04:48 ./run-ci
INFO: Running run-ci from /dev/vdb
================================ BEGIN ================================
[2025-09-24T04:48:46Z TRACE ambient_execute_plan] ambient-execute-plan version 0.7.0@2e86bbe starts
[2025-09-24T04:48:46Z DEBUG ambient_execute_plan] ambient-execute-plan version 0.7.0@2e86bbe starts
[2025-09-24T04:48:46Z INFO  ambient_execute_plan] ambient-execute-plan version 0.7.0@2e86bbe starts
[2025-09-24T04:48:46Z WARN  ambient_execute_plan] ambient-execute-plan version 0.7.0@2e86bbe starts
[2025-09-24T04:48:46Z ERROR ambient_execute_plan] ambient-execute-plan version 0.7.0@2e86bbe 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: shell
  shell: |
    export CARGO_TARGET_DIR=/workspace/cache
    export CARGO_HOME=/workspace/deps
    export HOME=/root
    export PATH="/root/.cargo/bin:/root/.radicle/bin:$PATH"

    # Check that `rad` is there.
    rad --help >/dev/null || (echo rad is not there; exit 1)

    cargo doc --workspace --no-deps

    # FIXME: We can't run upgrade tests from older versions because
    # Ambient only fetches dependencies for the current version.
    # Thus, we can't build the old versions. This is an Ambient
    # problem that we can't fix here. So we skip the upgrade tests.
    cargo test --workspace --no-fail-fast -- --skip upgrade --test-threads 2

    subplot docgen ci-broker.subplot -o doc/ci-broker.html
    subplot docgen doc/userguide.subplot -o doc/userguide.html
    make -C doc
    cp doc/*.html /workspace/artifacts/.
- action: custom
  name: dch
  args:
    debfullname: Lars Wirzenius
    debemail: liw@liw.fi
- action: deb
- action: tar_create
  archive: /dev/vde
  directory: /workspace/cache
- action: tar_create
  archive: /dev/vdd
  directory: /workspace/artifacts
executor_drive: /dev/vdb
source_drive: /dev/vdc
artifact_drive: /dev/vdd
cache_drive: /dev/vde
deps_drive: /dev/vdf
workspace_dir: /workspace
source_dir: /workspace/src
deps_dir: /workspace/deps
cache_dir: /workspace/cache
artifacts_dir: /workspace/artifacts


[2025-09-24T04:48:46Z DEBUG ambient_ci::plan] RUN: Action Mkdir {
        pathname: "/workspace",
    }
[2025-09-24T04:48:46Z DEBUG ambient_ci::action] Plan::execute: plan=Mkdir {
        pathname: "/workspace",
    }
[2025-09-24T04:48:46Z DEBUG ambient_ci::action] Plan::execute: context=Context {
        envs: {
            "PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "CARGO_HOME": "/workspace/deps",
            "CARGO_TARGET_DIR": "/workspace/cache",
        },
        source_dir: "/workspace/src",
    }
[2025-09-24T04:48:46Z DEBUG ambient_ci::plan] RUN: Action finished OK
[2025-09-24T04:48:46Z DEBUG ambient_ci::plan] RUN: Action Mkdir {
        pathname: "/workspace/artifacts",
    }
[2025-09-24T04:48:46Z DEBUG ambient_ci::action] Plan::execute: plan=Mkdir {
        pathname: "/workspace/artifacts",
    }
[2025-09-24T04:48:46Z DEBUG ambient_ci::action] Plan::execute: context=Context {
        envs: {
            "PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "CARGO_HOME": "/workspace/deps",
            "CARGO_TARGET_DIR": "/workspace/cache",
        },
        source_dir: "/workspace/src",
    }
[2025-09-24T04:48:46Z DEBUG ambient_ci::plan] RUN: Action finished OK
[2025-09-24T04:48:46Z DEBUG ambient_ci::plan] RUN: Action TarExtract {
        archive: "/dev/vdc",
        directory: "/workspace/src",
    }
[2025-09-24T04:48:46Z DEBUG ambient_ci::action] Plan::execute: plan=TarExtract {
        archive: "/dev/vdc",
        directory: "/workspace/src",
    }
[2025-09-24T04:48:46Z DEBUG ambient_ci::action] Plan::execute: context=Context {
        envs: {
            "PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "CARGO_HOME": "/workspace/deps",
            "CARGO_TARGET_DIR": "/workspace/cache",
        },
        source_dir: "/workspace/src",
    }
[2025-09-24T04:48:46Z TRACE ambient_ci::vdrive] extracting /dev/vdc to /workspace/src
[2025-09-24T04:48:46Z TRACE ambient_ci::vdrive] extraction OK
[2025-09-24T04:48:46Z DEBUG ambient_ci::plan] RUN: Action finished OK
[2025-09-24T04:48:46Z DEBUG ambient_ci::plan] RUN: Action TarExtract {
        archive: "/dev/vdf",
        directory: "/workspace/deps",
    }
[2025-09-24T04:48:46Z DEBUG ambient_ci::action] Plan::execute: plan=TarExtract {
        archive: "/dev/vdf",
        directory: "/workspace/deps",
    }
[2025-09-24T04:48:46Z DEBUG ambient_ci::action] Plan::execute: context=Context {
        envs: {
            "PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "CARGO_HOME": "/workspace/deps",
            "CARGO_TARGET_DIR": "/workspace/cache",
        },
        source_dir: "/workspace/src",
    }
[2025-09-24T04:48:46Z TRACE ambient_ci::vdrive] extracting /dev/vdf to /workspace/deps
[2025-09-24T04:48:49Z TRACE ambient_ci::vdrive] extraction OK
[2025-09-24T04:48:49Z DEBUG ambient_ci::plan] RUN: Action finished OK
[2025-09-24T04:48:49Z DEBUG ambient_ci::plan] RUN: Action TarExtract {
        archive: "/dev/vde",
        directory: "/workspace/cache",
    }
[2025-09-24T04:48:49Z DEBUG ambient_ci::action] Plan::execute: plan=TarExtract {
        archive: "/dev/vde",
        directory: "/workspace/cache",
    }
[2025-09-24T04:48:49Z DEBUG ambient_ci::action] Plan::execute: context=Context {
        envs: {
            "PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "CARGO_HOME": "/workspace/deps",
            "CARGO_TARGET_DIR": "/workspace/cache",
        },
        source_dir: "/workspace/src",
    }
[2025-09-24T04:48:49Z TRACE ambient_ci::vdrive] extracting /dev/vde to /workspace/cache
[2025-09-24T04:49:30Z TRACE ambient_ci::vdrive] extraction OK
[2025-09-24T04:49:30Z DEBUG ambient_ci::plan] RUN: Action finished OK
[2025-09-24T04:49:30Z DEBUG ambient_ci::plan] RUN: Action Spawn {
        argv: [
            "find",
            "/workspace",
            "-maxdepth",
            "2",
            "-ls",
        ],
    }
[2025-09-24T04:49:30Z DEBUG ambient_ci::action] Plan::execute: plan=Spawn {
        argv: [
            "find",
            "/workspace",
            "-maxdepth",
            "2",
            "-ls",
        ],
    }
[2025-09-24T04:49:30Z DEBUG ambient_ci::action] Plan::execute: context=Context {
        envs: {
            "PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "CARGO_HOME": "/workspace/deps",
            "CARGO_TARGET_DIR": "/workspace/cache",
        },
        source_dir: "/workspace/src",
    }
SPAWN: argv=["find", "/workspace", "-maxdepth", "2", "-ls"]
       cwd=/workspace/src (exists? true)
  2621441      4 drwxr-xr-x   6 root     root         4096 Sep 24 04:48 /workspace
  2621654      4 drwxr-xr-x   3 root     root         4096 Sep 24 04:48 /workspace/deps
  2621655      0 -rw-r--r--   1 root     root            0 Sep 23 09:03 /workspace/deps/.package-cache-mutate
  2621658      4 drwxr-xr-x   5 root     root         4096 Sep 23 09:03 /workspace/deps/registry
  2621656    116 -rw-r--r--   1 root     root       118784 Sep 24 04:48 /workspace/deps/.global-cache
  2621657      0 -rw-r--r--   1 root     root            0 Sep 23 09:03 /workspace/deps/.package-cache
  2621443      4 drwxr-xr-x  10 root     root         4096 Sep 24 04:48 /workspace/src
  2621520      4 -rw-r--r--   1 root     root         1716 Sep 24 04:48 /workspace/src/Cargo.toml
  2621642      4 -rw-r--r--   1 root     root         1188 Sep 24 04:48 /workspace/src/CONTRIBUTING.md
  2621502     40 -rw-r--r--   1 root     root        37288 Sep 24 04:48 /workspace/src/NEWS.md
  2621517      4 -rw-r--r--   1 root     root          802 Sep 24 04:48 /workspace/src/build.rs
  2621523      4 drwxr-xr-x   8 root     root         4096 Sep 24 04:48 /workspace/src/.git
  2621644      4 drwxr-xr-x   2 root     root         4096 Sep 24 04:48 /workspace/src/doc
  2621450      4 drwxr-xr-x   4 root     root         4096 Sep 24 04:48 /workspace/src/src
  2621516      8 -rw-r--r--   1 root     root         4796 Sep 24 04:48 /workspace/src/README.md
  2621447      4 drwxr-xr-x   2 root     root         4096 Sep 24 04:48 /workspace/src/.ambient
  2621496      4 -rw-r--r--   1 root     root          386 Sep 24 04:48 /workspace/src/cibtool.1
  2621515      4 -rw-r--r--   1 root     root          732 Sep 24 04:48 /workspace/src/ci-broker.yaml
  2621445      4 drwxr-xr-x   2 root     root         4096 Sep 24 04:48 /workspace/src/.radicle
  2621503      4 drwxr-xr-x   3 root     root         4096 Sep 24 04:48 /workspace/src/debian
  2621501      4 -rw-r--r--   1 root     root           10 Sep 24 04:48 /workspace/src/.envrc
  2621643    100 -rw-r--r--   1 root     root        98580 Sep 24 04:48 /workspace/src/Cargo.lock
  2621639     12 -rw-r--r--   1 root     root         9723 Sep 24 04:48 /workspace/src/LICENSE-APACHE
  2621519      4 -rw-r--r--   1 root     root           44 Sep 24 04:48 /workspace/src/.gitignore
  2621521      4 drwxr-xr-x   2 root     root         4096 Sep 24 04:48 /workspace/src/tests
  2621641      8 -rw-r--r--   1 root     root         6528 Sep 24 04:48 /workspace/src/flake.lock
  2621518      8 -rw-r--r--   1 root     root         5951 Sep 24 04:48 /workspace/src/flake.nix
  2621495     92 -rw-r--r--   1 root     root        92971 Sep 24 04:48 /workspace/src/ci-broker.md
  2621444      4 -rw-r--r--   1 root     root          440 Sep 24 04:48 /workspace/src/cib.1
  2621500      4 -rw-r--r--   1 root     root          257 Sep 24 04:48 /workspace/src/ci-broker.subplot
  2621449      4 -rw-r--r--   1 root     root         1079 Sep 24 04:48 /workspace/src/LICENSE-MIT
  2621640      4 -rw-r--r--   1 root     root          334 Sep 24 04:48 /workspace/src/Makefile
  2621497      4 drwxr-xr-x   2 root     root         4096 Sep 24 04:48 /workspace/src/.cargo
  2621442      4 drwxr-xr-x   2 root     root         4096 Sep 24 04:48 /workspace/artifacts
  2647687      4 drwxr-xr-x   6 root     root         4096 Sep 23 09:13 /workspace/cache
  2656039      4 -rw-r--r--   1 root     root          218 Sep 23 09:04 /workspace/cache/.rustdoc_fingerprint.json
  2660143      4 drwxr-xr-x  12 root     root         4096 Sep 23 09:04 /workspace/cache/doc
  2647689      4 drwxr-xr-x   7 root     root         4096 Sep 23 09:13 /workspace/cache/debug
  2647688      4 drwxr-xr-x   2 root     root         4096 Sep 23 09:03 /workspace/cache/tmp
  2660142      4 -rw-r--r--   1 root     root         1038 Sep 24 04:48 /workspace/cache/.rustc_info.json
  2656040      4 drwxr-xr-x   7 root     root         4096 Sep 23 09:15 /workspace/cache/release
[2025-09-24T04:49:31Z DEBUG ambient_ci::plan] RUN: Action finished OK
[2025-09-24T04:49:31Z DEBUG ambient_ci::plan] RUN: Action CargoFmt
[2025-09-24T04:49:31Z DEBUG ambient_ci::action] Plan::execute: plan=CargoFmt
[2025-09-24T04:49:31Z DEBUG ambient_ci::action] Plan::execute: context=Context {
        envs: {
            "PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "CARGO_HOME": "/workspace/deps",
            "CARGO_TARGET_DIR": "/workspace/cache",
        },
        source_dir: "/workspace/src",
    }
SPAWN: argv=["cargo", "--version"]
       cwd=/workspace/src (exists? true)
cargo 1.88.0 (873a06493 2025-05-10)
SPAWN: argv=["cargo", "clippy", "--version"]
       cwd=/workspace/src (exists? true)
clippy 0.1.88 (6b00bc3880 2025-06-23)
SPAWN: argv=["rustc", "--version"]
       cwd=/workspace/src (exists? true)
rustc 1.88.0 (6b00bc388 2025-06-23)
SPAWN: argv=["cargo", "fmt", "--check"]
       cwd=/workspace/src (exists? true)
[2025-09-24T04:49:34Z DEBUG ambient_ci::plan] RUN: Action finished OK
[2025-09-24T04:49:34Z DEBUG ambient_ci::plan] RUN: Action CargoClippy
[2025-09-24T04:49:34Z DEBUG ambient_ci::action] Plan::execute: plan=CargoClippy
[2025-09-24T04:49:34Z DEBUG ambient_ci::action] Plan::execute: context=Context {
        envs: {
            "PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "CARGO_HOME": "/workspace/deps",
            "CARGO_TARGET_DIR": "/workspace/cache",
        },
        source_dir: "/workspace/src",
    }
SPAWN: argv=["cargo", "--version"]
       cwd=/workspace/src (exists? true)
cargo 1.88.0 (873a06493 2025-05-10)
SPAWN: argv=["cargo", "clippy", "--version"]
       cwd=/workspace/src (exists? true)
clippy 0.1.88 (6b00bc3880 2025-06-23)
SPAWN: argv=["rustc", "--version"]
       cwd=/workspace/src (exists? true)
rustc 1.88.0 (6b00bc388 2025-06-23)
SPAWN: argv=["cargo", "clippy", "--offline", "--locked", "--workspace", "--all-targets", "--no-deps", "--", "--deny", "warnings"]
       cwd=/workspace/src (exists? true)
   Compiling radicle-ci-broker v0.20.1 (/workspace/src)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.10s
[2025-09-24T04:49:39Z DEBUG ambient_ci::plan] RUN: Action finished OK
[2025-09-24T04:49:39Z DEBUG ambient_ci::plan] RUN: Action Shell {
        shell: "export CARGO_TARGET_DIR=/workspace/cache\nexport CARGO_HOME=/workspace/deps\nexport HOME=/root\nexport PATH=\"/root/.cargo/bin:/root/.radicle/bin:$PATH\"\n\n# Check that `rad` is there.\nrad --help >/dev/null || (echo rad is not there; exit 1)\n\ncargo doc --workspace --no-deps\n\n# FIXME: We can't run upgrade tests from older versions because\n# Ambient only fetches dependencies for the current version.\n# Thus, we can't build the old versions. This is an Ambient\n# problem that we can't fix here. So we skip the upgrade tests.\ncargo test --workspace --no-fail-fast -- --skip upgrade --test-threads 2\n\nsubplot docgen ci-broker.subplot -o doc/ci-broker.html\nsubplot docgen doc/userguide.subplot -o doc/userguide.html\nmake -C doc\ncp doc/*.html /workspace/artifacts/.\n",
    }
[2025-09-24T04:49:39Z DEBUG ambient_ci::action] Plan::execute: plan=Shell {
        shell: "export CARGO_TARGET_DIR=/workspace/cache\nexport CARGO_HOME=/workspace/deps\nexport HOME=/root\nexport PATH=\"/root/.cargo/bin:/root/.radicle/bin:$PATH\"\n\n# Check that `rad` is there.\nrad --help >/dev/null || (echo rad is not there; exit 1)\n\ncargo doc --workspace --no-deps\n\n# FIXME: We can't run upgrade tests from older versions because\n# Ambient only fetches dependencies for the current version.\n# Thus, we can't build the old versions. This is an Ambient\n# problem that we can't fix here. So we skip the upgrade tests.\ncargo test --workspace --no-fail-fast -- --skip upgrade --test-threads 2\n\nsubplot docgen ci-broker.subplot -o doc/ci-broker.html\nsubplot docgen doc/userguide.subplot -o doc/userguide.html\nmake -C doc\ncp doc/*.html /workspace/artifacts/.\n",
    }
[2025-09-24T04:49:39Z DEBUG ambient_ci::action] Plan::execute: context=Context {
        envs: {
            "PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "CARGO_HOME": "/workspace/deps",
            "CARGO_TARGET_DIR": "/workspace/cache",
        },
        source_dir: "/workspace/src",
    }
SPAWN: argv=["/bin/bash", "-c", "set -xeuo pipefail\nexport CARGO_TARGET_DIR=/workspace/cache\nexport CARGO_HOME=/workspace/deps\nexport HOME=/root\nexport PATH=\"/root/.cargo/bin:/root/.radicle/bin:$PATH\"\n\n# Check that `rad` is there.\nrad --help >/dev/null || (echo rad is not there; exit 1)\n\ncargo doc --workspace --no-deps\n\n# FIXME: We can't run upgrade tests from older versions because\n# Ambient only fetches dependencies for the current version.\n# Thus, we can't build the old versions. This is an Ambient\n# problem that we can't fix here. So we skip the upgrade tests.\ncargo test --workspace --no-fail-fast -- --skip upgrade --test-threads 2\n\nsubplot docgen ci-broker.subplot -o doc/ci-broker.html\nsubplot docgen doc/userguide.subplot -o doc/userguide.html\nmake -C doc\ncp doc/*.html /workspace/artifacts/.\n\n"]
       cwd=/workspace/src (exists? true)
+ export CARGO_TARGET_DIR=/workspace/cache
+ CARGO_TARGET_DIR=/workspace/cache
+ export CARGO_HOME=/workspace/deps
+ CARGO_HOME=/workspace/deps
+ export HOME=/root
+ HOME=/root
+ export PATH=/root/.cargo/bin:/root/.radicle/bin:/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+ PATH=/root/.cargo/bin:/root/.radicle/bin:/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+ rad --help
+ cargo doc --workspace --no-deps
   Compiling radicle-ci-broker v0.20.1 (/workspace/src)
 Documenting radicle-ci-broker v0.20.1 (/workspace/src)
warning: unresolved link to `RunningProcess`
   --> src/adapter.rs:357:44
    |
357 |     /// Error from [`TimeoutCommand`] or [`RunningProcess`].
    |                                            ^^^^^^^^^^^^^^ no item named `RunningProcess` in scope
    |
    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
    = note: `#[warn(rustdoc::broken_intra_doc_links)]` on by default

warning: unresolved link to `RunningProcess`
  --> src/timeoutcmd.rs:74:24
   |
74 | /// output. See also [`RunningProcess`].
   |                        ^^^^^^^^^^^^^^ no item named `RunningProcess` in scope
   |
   = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`

warning: `radicle-ci-broker` (lib doc) generated 2 warnings
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.14s
   Generated /workspace/cache/doc/radicle_ci_broker/index.html and 4 other files
+ cargo test --workspace --no-fail-fast -- --skip upgrade --test-threads 2
   Compiling radicle-ci-broker v0.20.1 (/workspace/src)
    Finished `test` profile [unoptimized + debuginfo] target(s) in 16.26s
     Running unittests src/lib.rs (/workspace/cache/debug/deps/radicle_ci_broker-3a652a7f49bdf1f1)

running 86 tests
test adapter::test::adapter_does_not_exist ... ok
test adapter::test::adapter_ends_ok_before_first_message ... ok
test adapter::test::adapter_ends_ok_before_second_message ... ok
test adapter::test::adapter_exits_nonzero ... ok
test adapter::test::adapter_first_message_isnt_triggered ... ok
test adapter::test::adapter_has_bad_interpreter ... ok
test adapter::test::adapter_is_killed_before_any_messages ... ok
test adapter::test::adapter_is_killed_after_second_message ... ok
test adapter::test::adapter_is_killed_before_first_message ... ok
test adapter::test::adapter_is_not_executable ... ok
test adapter::test::adapter_outputs_too_many_messages ... ok
test adapter::test::adapter_produces_as_bad_message ... ok
test adapter::test::adapter_reports_failure ... ok
test adapter::test::adapter_reports_success ... ok
test broker::test::adapter_fails ... ok
test broker::test::executes_adapter ... ok
test ci_event::test::branch_created ... ok
test ci_event::test::branch_deleted ... ok
test ci_event::test::nothing_updated ... ok
test ci_event::test::branch_updated ... ok
test ci_event::test::patch_created ... ok
test ci_event::test::skipped ... ok
test ci_event::test::patch_updated ... ok
test ci_event::test_parsed_ref::branch ... ok
test ci_event::test_parsed_ref::patch ... ok
test config::test::parse_config_yaml ... ok
test config::test::parse_config_yaml_without_max_run_time ... ok
test filter::test::allows_all_for_default_repository ... ok
test filter::test::allows_all_for_main_branch ... ok
test filter::test::allows_all_for_right_node ... ok
test filter::test::allows_any_event ... ok
test filter::test::allows_branch_creation ... ok
test filter::test::allows_branch_deletion ... ok
test filter::test::allows_branch_update ... ok
test filter::test::allows_if_all_allow ... ok
test filter::test::allows_if_any_allows ... ok
test filter::test::allows_no_event ... ok
test filter::test::allows_none_for_wrong_node ... ok
test filter::test::allows_opposite ... ok
test filter::test::allows_patch_creation ... ok
test filter::test::allows_patch_update ... ok
test filter::test::allows_shutdown ... ok
test filter::test::allows_specific_patch ... ok
test filter::test::allows_wanted_tag ... ok
test filter::test::deserialize_yaml_nested_not ... ok
test filter::test::doesnt_allow_any_for_other_branch ... ok
test filter::test::doesnt_allow_any_for_other_repository ... ok
test filter::test::doesnt_allow_unexpected_tag ... ok
test filter::test::doesnt_allow_unexpected_tag_even_if_wanted_is_prefix ... ok
test filter::test::doesnt_allow_unexpected_tag_even_if_wanted_is_suffix ... ok
test filter::test::doesnt_allows_other_patch ... ok
test filter::test::only_allows_branch_creation ... ok
test filter::test::only_allows_branch_deletion ... ok
test filter::test::only_allows_branch_update ... ok
test filter::test::only_allows_patch_creation ... ok
test filter::test::only_allows_patch_update ... ok
test ci_event::test_parsed_ref::tag ... ok
test filter::test::yaml_roundtrip ... ok
test msg::trigger_from_ci_event_tests::trigger_patch_from_patch_created ... ok
test msg::trigger_from_ci_event_tests::trigger_patch_from_patch_updated ... ok
test msg::trigger_from_ci_event_tests::trigger_push_from_branch_updated ... ok
test refs::test::creates_patch_from_str ... ok
test refs::test::extracts_branch_namespaced_branch ... ok
test msg::trigger_from_ci_event_tests::trigger_push_from_branch_created ... ok
test refs::test::namespaced_branch_from_plain ... ok
test refs::test::plain_branch_name ... ok
test refs::test::qualified_branch_name_from_plain ... ok
test refs::test::ref_string_from_plain_branch_name ... ok
test run::test::serialize_run_state ... ok
test sensitive::test_sensitive::debugged ... ok
test sensitive::test_sensitive::deser ... ok
test sensitive::test_sensitive::displayed ... ok
test sensitive::test_sensitive::ser ... ok
test timeoutcmd::tests::bin_false ... ok
test timeoutcmd::tests::bin_true ... ok
test timeoutcmd::tests::hello_world ... ok
test timeoutcmd::tests::hello_world_to_stderr ... ok
test timeoutcmd::tests::kill ... ok
test timeoutcmd::tests::kill_stderr ... ok
test timeoutcmd::tests::pipe_through_cat ... ok
test timeoutcmd::tests::sleep_1 ... ok
test timeoutcmd::tests::sleep_for_too_long ... ok
test timeoutcmd::tests::yes_to_stderr ... ok
test timeoutcmd::tests::sleep_for_too_long_while_reading_with_realtimelines ... ok
test timeoutcmd::tests::yes_to_stdout ... ok
test timeoutcmd::tests::yes_to_stdout_while_reading_with_realtimelines ... ok

test result: ok. 86 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 15.95s

     Running unittests src/bin/cib.rs (/workspace/cache/debug/deps/cib-e9ba13027b83a468)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/bin/cibtool.rs (/workspace/cache/debug/deps/cibtool-c79467f98bd685ea)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/bin/default_branch.rs (/workspace/cache/debug/deps/default_branch-cb3df330a1ceebc0)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running unittests src/bin/synthetic-events.rs (/workspace/cache/debug/deps/synthetic_events-e28c67836b0797bd)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests/subplot.rs (/workspace/cache/debug/deps/subplot-6af5304012d09743)

running 71 tests
test adapter_with_url_runs_successfully ... ok
test add_information_about_run_that_s_finished_in_failure_to_database ... ok
test adapter_can_provide_url_for_info_on_run ... ok
test add_information_about_run_that_s_finished_successfully_to_database ... ok
test add_information_about_run_that_s_running_to_database ... ok
test allows_setting_minimum_log_level ... ok
test add_information_about_triggered_run_to_database ... ok
test can_add_a_branch_creation_event_to_queue ... ok
test can_add_a_branch_deletion_event_to_queue ... ok
test can_add_a_branch_update_event_to_queue ... ok
test can_add_a_patch_creation_event_to_queue ... ok
test can_add_a_patch_update_event_to_queue ... ok
test can_add_shutdown_event_to_queue ... ok
test can_output_trigger_message_for_a_ci_run ... ok
test can_remove_all_queued_events ... ok
test can_trigger_a_ci_run ... ok
test convert_recorded_node_events_into_ci_events ... ok
test count_in_a_single_process ... ok
test create_a_repository ... ok
test don_t_insert_event_for_non_existent_repository ... ok
test dummy_adapter_runs_successfully ... ok
test event_synthesizer_terminates_after_first_connection ... ok
test events_can_be_queued_and_removed_from_queue ... ok
test extract_cib_log_from_journald_and_pretty_print ... ok
test fails_run_if_building_trigger_fails__but_does_not_crash ... ok
test count_in_concurrent_processes ... ok
test filter_predicate_allow ... ok
test filter_predicate_and ... ok
test filter_predicate_branch ... ok
test filter_predicate_branchcreated ... ok
test filter_predicate_branchdeleted ... ok
test filter_predicate_branchupdated ... ok
test filter_predicate_deny ... ok
test filter_predicate_defaultbranch ... ok
test filter_predicate_hasfile ... ok
test filter_predicate_not ... ok
test filter_predicate_node ... ok
test filter_predicate_or ... ok
test filter_predicate_tag ... ok
test filter_predicate_repository ... ok
test filter_recorded_ci_events ... ok
test gives_helpful_error_message_if_it_doesn_t_understand_its_configuration_file ... ok
test gives_helpful_error_message_if_node_socket_can_t_be_found ... ok
test handles_adapter_failing_on_a_successful_run ... ok
test handles_adapter_failing_on_a_failed_run ... ok
test insert_events_into_queue ... ok
test logs_adapter_stderr_output ... ok
test logs_start_and_successful_end ... ok
test logs_termination_due_to_error ... ok
test process_queued_events ... ok
test produces_a_json_status_file ... ok
test produces_a_report_page_upon_request ... ok
test queue_a_node_event_for_processing ... ok
test record_node_events ... ok
test refuses_config_with_an_unknown_field ... ok
test remove_information_about_a_run_from_the_database ... ok
test reports_it_version ... ok
test runs_adapter_on_each_type_of_event ... ok
test runs_adapter_with_configuration ... ok
test runs_adapter_without_a_report_directory ... ok
test insert_many_events_into_queue ... ok
test set_up_a_node ... ok
test shows_adapter_specification ... ok
test shows_json_config_as_json ... ok
test shows_yaml_config_as_json ... ok
test shuts_down_when_requested ... ok
test runs_adapters_for_all_matching_triggers ... ok
test smoke_test__runs_adapter ... ok
test stops_if_the_node_connection_breaks ... ok
test we_can_run_rad ... ok
test update_and_show_information_about_run_to_running ... ok

test result: ok. 71 passed; 0 failed; 0 ignored; 0 measured; 1 filtered out; finished in 134.81s

   Doc-tests radicle_ci_broker

running 3 tests
test src/msg.rs - msg::RunId (line 49) ... ok
test src/pull_queue.rs - pull_queue::PullQueue (line 12) ... ok
test src/timeoutcmd.rs - timeoutcmd (line 21) ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.74s

+ subplot docgen ci-broker.subplot -o doc/ci-broker.html
 INFO Starting Subplot
 WARN Embedded file is not used by any scenario: "broker-with-concurrent-adapters.yaml"
ERROR Document has 1 warnings.
[2025-09-24T04:52:35Z ERROR ambient_ci::plan] ERROR: Action failed: failed to execute /bin/bash
[2025-09-24T04:52:35Z ERROR ambient_ci::plan] caused by: command failed: "/bin/bash": exit code 1
ERROR: failed to execute /bin/bash
caused by: command failed: "/bin/bash": exit code 1
EXIT CODE: 1
[2025-09-24T04:52:37Z INFO  ambient] ambient ends successfully

Trigger message

{
  "request": "trigger",
  "version": 1,
  "event_type": "patch",
  "repository": {
    "id": "rad:zwTxygwuz5LDGBq255RA2CbNGrz8",
    "name": "radicle-ci-broker",
    "description": "Radicle CI broker",
    "private": false,
    "default_branch": "main",
    "delegates": [
      "did:key:z6MkgEMYod7Hxfy9qCvDv5hYHkZ4ciWmLFgfvm3Wn1b2w2FV",
      "did:key:z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT"
    ]
  },
  "action": "Created",
  "patch": {
    "id": "9c75259b892d5fe0ca29ec2b50ee07dfbc8dd4af",
    "author": {
      "id": "did:key:z6MkgEMYod7Hxfy9qCvDv5hYHkZ4ciWmLFgfvm3Wn1b2w2FV",
      "alias": "liw"
    },
    "title": "add all filters to config file so we verify they can be parsed",
    "state": {
      "status": "open",
      "conflicts": []
    },
    "before": "aa70e645b36605db315cc012980e20571c9bb02f",
    "after": "acd3dd068ef2ca0d1f6f69beaf5b82cb99db0a8a",
    "commits": [
      "acd3dd068ef2ca0d1f6f69beaf5b82cb99db0a8a",
      "eb4d4a33e21b1e3f4f582f182215908d767351df",
      "a2dec1a5b3ab5b34cea16c07b632023d9ce535fc"
    ],
    "target": "aa70e645b36605db315cc012980e20571c9bb02f",
    "labels": [],
    "assignees": [],
    "revisions": [
      {
        "id": "9c75259b892d5fe0ca29ec2b50ee07dfbc8dd4af",
        "author": {
          "id": "did:key:z6MkgEMYod7Hxfy9qCvDv5hYHkZ4ciWmLFgfvm3Wn1b2w2FV",
          "alias": "liw"
        },
        "description": "fix: add missing event filters for tag events\n\nAdd event filters TagCreated, TagUpdated, and TagDeleted. These were\nsupposed to already exist, but were never committed. They're in the\ndocumentation, though, so it's quite surprising that they don't work.\n\n\ntest: add scenario that uses all event filters in config file\n\nThis makes it more obvious if we miss support for a filter.",
        "base": "aa70e645b36605db315cc012980e20571c9bb02f",
        "oid": "acd3dd068ef2ca0d1f6f69beaf5b82cb99db0a8a",
        "timestamp": 1758689297
      }
    ]
  }
}

Ambient stdout

[2025-09-24T04:48:19Z INFO  ambient] ambient starts
[2025-09-24T04:48:19Z DEBUG ambient] load default configuration file /home/_rad/.config/ambient/config.yaml if it exists
[2025-09-24T04:48:19Z DEBUG ambient] complete configuration: Config {
        tmpdir: "/srv/tmp",
        image_store: "/home/_rad/.local/state/ambient-ci/images",
        projects: "/home/_rad/ambient-projects.yaml",
        state: "/srv/ambient-state",
        rsync_target: None,
        rsync_target_base: None,
        rsync_target_map: None,
        dput_target: None,
        executor: Some(
            "/usr/bin/ambient-execute-plan",
        ),
        artifacts_max_size: Byte(
            10000000000,
        ),
        cache_max_size: Byte(
            50000000000,
        ),
        qemu: QemuConfig {
            cpus: 4,
            memory: Byte(
                8000000000,
            ),
            kvm_binary: "/usr/bin/kvm",
            ovmf_vars_file: "/usr/share/ovmf/OVMF.fd",
            ovmf_code_file: "/usr/share/ovmf/OVMF.fd",
        },
    }
[2025-09-24T04:48:19Z DEBUG ambient] configuration: Config {
        tmpdir: "/srv/tmp",
        image_store: "/home/_rad/.local/state/ambient-ci/images",
        projects: "/home/_rad/ambient-projects.yaml",
        state: "/srv/ambient-state",
        rsync_target: None,
        rsync_target_base: None,
        rsync_target_map: None,
        dput_target: None,
        executor: Some(
            "/usr/bin/ambient-execute-plan",
        ),
        artifacts_max_size: Byte(
            10000000000,
        ),
        cache_max_size: Byte(
            50000000000,
        ),
        qemu: QemuConfig {
            cpus: 4,
            memory: Byte(
                8000000000,
            ),
            kvm_binary: "/usr/bin/kvm",
            ovmf_vars_file: "/usr/share/ovmf/OVMF.fd",
            ovmf_code_file: "/usr/share/ovmf/OVMF.fd",
        },
    }
[2025-09-24T04:48:19Z DEBUG ambient_ci::project] load project state from /srv/ambient-state/rad:zwTxygwuz5LDGBq255RA2CbNGrz8/meta.yaml
[2025-09-24T04:48:19Z DEBUG ambient_ci::run] latest commit: "aa70e645b36605db315cc012980e20571c9bb02f"
[2025-09-24T04:48:19Z DEBUG ambient_ci::run] is a git repository
[2025-09-24T04:48:19Z DEBUG ambient_ci::run] git repository is clean
[2025-09-24T04:48:19Z DEBUG ambient_ci::run] current (HEAD) commit: acd3dd068ef2ca0d1f6f69beaf5b82cb99db0a8a
[2025-09-24T04:48:19Z DEBUG ambient_ci::run] no dry run requested
[2025-09-24T04:48:19Z DEBUG ambient_ci::run] forced run requested
[2025-09-24T04:48:19Z DEBUG ambient_ci::run] run? true
[2025-09-24T04:48:19Z INFO  ambient_ci::run] project rad:zwTxygwuz5LDGBq255RA2CbNGrz8: running CI
[2025-09-24T04:48:19Z DEBUG ambient_ci::run] Executing pre-plan steps
[2025-09-24T04:48:19Z DEBUG ambient_ci::plan] RUN: Action CargoFetch {
        sourcedir: "/tmp/.tmpSQwmct/src",
    }
[2025-09-24T04:48:19Z DEBUG ambient_ci::action] Plan::execute: plan=CargoFetch {
        sourcedir: "/tmp/.tmpSQwmct/src",
    }
[2025-09-24T04:48:19Z DEBUG ambient_ci::action] Plan::execute: context=Context {
        envs: {
            "CARGO_TARGET_DIR": "/srv/ambient-state/rad:zwTxygwuz5LDGBq255RA2CbNGrz8/cache",
            "CARGO_HOME": "/srv/ambient-state/rad:zwTxygwuz5LDGBq255RA2CbNGrz8/dependencies",
            "PATH": "/root/.cargo/bin:/bin:/home/_rad/.radicle/bin:/home/_rad/.cargo/bin",
        },
        source_dir: "/tmp/.tmpSQwmct/src",
    }
SPAWN: argv=["cargo", "--version"]
       cwd=/tmp/.tmpSQwmct/src (exists? true)
cargo 1.90.0 (840b83a10 2025-07-30)
SPAWN: argv=["cargo", "clippy", "--version"]
       cwd=/tmp/.tmpSQwmct/src (exists? true)
clippy 0.1.90 (1159e78c47 2025-09-14)
SPAWN: argv=["rustc", "--version"]
       cwd=/tmp/.tmpSQwmct/src (exists? true)
rustc 1.90.0 (1159e78c4 2025-09-14)
SPAWN: argv=["cargo", "fetch"]
       cwd=/tmp/.tmpSQwmct/src (exists? true)
[2025-09-24T04:48:20Z DEBUG ambient_ci::plan] RUN: Action finished OK
[2025-09-24T04:48:20Z DEBUG ambient_ci::plan] All actions were performed successfully
[2025-09-24T04:48:20Z DEBUG ambient_ci::run] create virtual drive /srv/tmp/.tmpx75tdM/src.tar
[2025-09-24T04:48:20Z DEBUG ambient_ci::run] create virtual drive /srv/tmp/.tmpx75tdM/deps.tar
[2025-09-24T04:48:27Z DEBUG ambient_ci::run] create_executor_vdrive: executor="/usr/bin/ambient-execute-plan"
[2025-09-24T04:48:27Z 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,
            Shell {
                shell: "export CARGO_TARGET_DIR=/workspace/cache\nexport CARGO_HOME=/workspace/deps\nexport HOME=/root\nexport PATH=\"/root/.cargo/bin:/root/.radicle/bin:$PATH\"\n\n# Check that `rad` is there.\nrad --help >/dev/null || (echo rad is not there; exit 1)\n\ncargo doc --workspace --no-deps\n\n# FIXME: We can't run upgrade tests from older versions because\n# Ambient only fetches dependencies for the current version.\n# Thus, we can't build the old versions. This is an Ambient\n# problem that we can't fix here. So we skip the upgrade tests.\ncargo test --workspace --no-fail-fast -- --skip upgrade --test-threads 2\n\nsubplot docgen ci-broker.subplot -o doc/ci-broker.html\nsubplot docgen doc/userguide.subplot -o doc/userguide.html\nmake -C doc\ncp doc/*.html /workspace/artifacts/.\n",
            },
            Custom(
                Custom {
                    name: "dch",
                    args: {
                        "debfullname": String("Lars Wirzenius"),
                        "debemail": String("liw@liw.fi"),
                    },
                },
            ),
            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-24T04:48:27Z DEBUG ambient_ci::run] executor bin /usr/bin/ambient-execute-plan
[2025-09-24T04:48:27Z DEBUG ambient_ci::run] copying /usr/bin/ambient-execute-plan to /srv/tmp/.tmpx75tdM/ambient-execute-plan/run-ci
[2025-09-24T04:48:27Z DEBUG ambient_ci::run] copy OK: true
[2025-09-24T04:48:27Z DEBUG ambient_ci::run] create virtual drive /srv/tmp/.tmpx75tdM/executor.tar
[2025-09-24T04:48:39Z DEBUG ambient_ci::project] removing run log file /srv/ambient-state/rad:zwTxygwuz5LDGBq255RA2CbNGrz8/run.log
[2025-09-24T04:48:39Z DEBUG ambient_ci::project] statedir is /srv/ambient-state/rad:zwTxygwuz5LDGBq255RA2CbNGrz8, exists? true
[2025-09-24T04:48:39Z DEBUG ambient_ci::project] creating run log file /srv/ambient-state/rad:zwTxygwuz5LDGBq255RA2CbNGrz8/run.log
[2025-09-24T04:48:39Z DEBUG ambient_ci::project] created run log file /srv/ambient-state/rad:zwTxygwuz5LDGBq255RA2CbNGrz8/run.log OK
[2025-09-24T04:48:39Z DEBUG ambient_ci::cloud_init] with_hostname called: "ambient"
[2025-09-24T04:48:39Z DEBUG ambient_ci::cloud_init] with_runcmd called: "echo xyzzy > /dev/ttyS1"
[2025-09-24T04:48:39Z 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-24T04:48:39Z DEBUG ambient_ci::cloud_init] with_runcmd called: "poweroff"
[2025-09-24T04:48:39Z 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-24T04:48:39Z DEBUG ambient_ci::qemu] run QEMU
[2025-09-24T04:48:39Z DEBUG ambient_ci::qemu] create copy-on-write image and UEFI vars file
[2025-09-24T04:48:39Z DEBUG ambient_ci::qemu_utils] qemu-img create /srv/tmp/.tmpUwvqkv/.tmp1lrKLx/vm.qcow2 backing on /home/_rad/ambient.qcow2
[2025-09-24T04:48:39Z DEBUG ambient_ci::qemu] create cloud-init ISO file
[2025-09-24T04:48:39Z 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-24T04:48:39Z DEBUG ambient_ci::cloud_init] write /tmp/.tmpr0u9ja/meta-data
[2025-09-24T04:48:39Z DEBUG ambient_ci::cloud_init] write /tmp/.tmpr0u9ja/user-data
[2025-09-24T04:48:39Z DEBUG ambient_ci::qemu] set console log file to /srv/tmp/.tmpUwvqkv/.tmp1lrKLx/console.log
[2025-09-24T04:48:39Z DEBUG ambient_ci::util] create file /srv/tmp/.tmpUwvqkv/.tmp1lrKLx/console.log
[2025-09-24T04:48:39Z DEBUG ambient_ci::qemu] set run file to /srv/ambient-state/rad:zwTxygwuz5LDGBq255RA2CbNGrz8/run.log
[2025-09-24T04:48:39Z DEBUG ambient_ci::util] create file /srv/ambient-state/rad:zwTxygwuz5LDGBq255RA2CbNGrz8/run.log
[2025-09-24T04:48:39Z DEBUG ambient_ci::qemu] run QEMU: QemuArgs {
        args: [
            "-m",
            "7629",
            "-smp",
            "cpus=4",
            "-cpu",
            "kvm64",
            "-machine",
            "type=q35,accel=kvm,usb=off",
            "-uuid",
            "a85c9de7-edc0-4e54-bead-112e5733582c",
            "-boot",
            "strict=on",
            "-name",
            "ambient-ci-vm",
            "-rtc",
            "base=utc,driftfix=slew",
            "-display",
            "none",
            "-device",
            "virtio-rng-pci",
            "-serial",
            "file:/srv/tmp/.tmpUwvqkv/.tmp1lrKLx/console.log",
            "-serial",
            "file:/srv/ambient-state/rad:zwTxygwuz5LDGBq255RA2CbNGrz8/run.log",
            "-drive",
            "if=pflash,format=raw,unit=0,file=/usr/share/ovmf/OVMF.fd,readonly=on",
            "-drive",
            "if=pflash,format=raw,unit=1,file=/srv/tmp/.tmpUwvqkv/.tmp1lrKLx/vars.fd",
            "-drive",
            "format=qcow2,if=virtio,file=/srv/tmp/.tmpUwvqkv/.tmp1lrKLx/vm.qcow2",
            "-drive",
            "format=raw,if=virtio,file=/srv/tmp/.tmpx75tdM/executor.tar,readonly=on",
            "-cdrom",
            "/srv/tmp/.tmpUwvqkv/.tmp1lrKLx/cloud_init.iso",
            "-drive",
            "format=raw,if=virtio,file=/srv/tmp/.tmpx75tdM/src.tar,readonly=on",
            "-drive",
            "format=raw,if=virtio,file=/srv/tmp/.tmpx75tdM/artifacts.tar",
            "-drive",
            "format=raw,if=virtio,file=/srv/tmp/.tmpx75tdM/cache.tar",
            "-drive",
            "format=raw,if=virtio,file=/srv/tmp/.tmpx75tdM/deps.tar,readonly=on",
            "-nodefaults",
            "-no-user-config",
        ],
    }
[2025-09-24T04:52:36Z DEBUG ambient_ci::qemu] QEMU finished OK
[2025-09-24T04:52:36Z DEBUG ambient_ci::qemu] run log:
    --------------------==========
    [2025-09-24T04:48:46Z TRACE ambient_execute_plan] ambient-execute-plan version 0.7.0@2e86bbe starts
    [2025-09-24T04:48:46Z DEBUG ambient_execute_plan] ambient-execute-plan version 0.7.0@2e86bbe starts
    [2025-09-24T04:48:46Z INFO  ambient_execute_plan] ambient-execute-plan version 0.7.0@2e86bbe starts
    [2025-09-24T04:48:46Z WARN  ambient_execute_plan] ambient-execute-plan version 0.7.0@2e86bbe starts
    [2025-09-24T04:48:46Z ERROR ambient_execute_plan] ambient-execute-plan version 0.7.0@2e86bbe 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: shell
      shell: |
        export CARGO_TARGET_DIR=/workspace/cache
        export CARGO_HOME=/workspace/deps
        export HOME=/root
        export PATH="/root/.cargo/bin:/root/.radicle/bin:$PATH"
    
        # Check that `rad` is there.
        rad --help >/dev/null || (echo rad is not there; exit 1)
    
        cargo doc --workspace --no-deps
    
        # FIXME: We can't run upgrade tests from older versions because
        # Ambient only fetches dependencies for the current version.
        # Thus, we can't build the old versions. This is an Ambient
        # problem that we can't fix here. So we skip the upgrade tests.
        cargo test --workspace --no-fail-fast -- --skip upgrade --test-threads 2
    
        subplot docgen ci-broker.subplot -o doc/ci-broker.html
        subplot docgen doc/userguide.subplot -o doc/userguide.html
        make -C doc
        cp doc/*.html /workspace/artifacts/.
    - action: custom
      name: dch
      args:
        debfullname: Lars Wirzenius
        debemail: liw@liw.fi
    - action: deb
    - action: tar_create
      archive: /dev/vde
      directory: /workspace/cache
    - action: tar_create
      archive: /dev/vdd
      directory: /workspace/artifacts
    executor_drive: /dev/vdb
    source_drive: /dev/vdc
    artifact_drive: /dev/vdd
    cache_drive: /dev/vde
    deps_drive: /dev/vdf
    workspace_dir: /workspace
    source_dir: /workspace/src
    deps_dir: /workspace/deps
    cache_dir: /workspace/cache
    artifacts_dir: /workspace/artifacts
    
    
    [2025-09-24T04:48:46Z DEBUG ambient_ci::plan] RUN: Action Mkdir {
            pathname: "/workspace",
        }
    [2025-09-24T04:48:46Z DEBUG ambient_ci::action] Plan::execute: plan=Mkdir {
            pathname: "/workspace",
        }
    [2025-09-24T04:48:46Z DEBUG ambient_ci::action] Plan::execute: context=Context {
            envs: {
                "PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "CARGO_HOME": "/workspace/deps",
                "CARGO_TARGET_DIR": "/workspace/cache",
            },
            source_dir: "/workspace/src",
        }
    [2025-09-24T04:48:46Z DEBUG ambient_ci::plan] RUN: Action finished OK
    [2025-09-24T04:48:46Z DEBUG ambient_ci::plan] RUN: Action Mkdir {
            pathname: "/workspace/artifacts",
        }
    [2025-09-24T04:48:46Z DEBUG ambient_ci::action] Plan::execute: plan=Mkdir {
            pathname: "/workspace/artifacts",
        }
    [2025-09-24T04:48:46Z DEBUG ambient_ci::action] Plan::execute: context=Context {
            envs: {
                "PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "CARGO_HOME": "/workspace/deps",
                "CARGO_TARGET_DIR": "/workspace/cache",
            },
            source_dir: "/workspace/src",
        }
    [2025-09-24T04:48:46Z DEBUG ambient_ci::plan] RUN: Action finished OK
    [2025-09-24T04:48:46Z DEBUG ambient_ci::plan] RUN: Action TarExtract {
            archive: "/dev/vdc",
            directory: "/workspace/src",
        }
    [2025-09-24T04:48:46Z DEBUG ambient_ci::action] Plan::execute: plan=TarExtract {
            archive: "/dev/vdc",
            directory: "/workspace/src",
        }
    [2025-09-24T04:48:46Z DEBUG ambient_ci::action] Plan::execute: context=Context {
            envs: {
                "PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "CARGO_HOME": "/workspace/deps",
                "CARGO_TARGET_DIR": "/workspace/cache",
            },
            source_dir: "/workspace/src",
        }
    [2025-09-24T04:48:46Z TRACE ambient_ci::vdrive] extracting /dev/vdc to /workspace/src
    [2025-09-24T04:48:46Z TRACE ambient_ci::vdrive] extraction OK
    [2025-09-24T04:48:46Z DEBUG ambient_ci::plan] RUN: Action finished OK
    [2025-09-24T04:48:46Z DEBUG ambient_ci::plan] RUN: Action TarExtract {
            archive: "/dev/vdf",
            directory: "/workspace/deps",
        }
    [2025-09-24T04:48:46Z DEBUG ambient_ci::action] Plan::execute: plan=TarExtract {
            archive: "/dev/vdf",
            directory: "/workspace/deps",
        }
    [2025-09-24T04:48:46Z DEBUG ambient_ci::action] Plan::execute: context=Context {
            envs: {
                "PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "CARGO_HOME": "/workspace/deps",
                "CARGO_TARGET_DIR": "/workspace/cache",
            },
            source_dir: "/workspace/src",
        }
    [2025-09-24T04:48:46Z TRACE ambient_ci::vdrive] extracting /dev/vdf to /workspace/deps
    [2025-09-24T04:48:49Z TRACE ambient_ci::vdrive] extraction OK
    [2025-09-24T04:48:49Z DEBUG ambient_ci::plan] RUN: Action finished OK
    [2025-09-24T04:48:49Z DEBUG ambient_ci::plan] RUN: Action TarExtract {
            archive: "/dev/vde",
            directory: "/workspace/cache",
        }
    [2025-09-24T04:48:49Z DEBUG ambient_ci::action] Plan::execute: plan=TarExtract {
            archive: "/dev/vde",
            directory: "/workspace/cache",
        }
    [2025-09-24T04:48:49Z DEBUG ambient_ci::action] Plan::execute: context=Context {
            envs: {
                "PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "CARGO_HOME": "/workspace/deps",
                "CARGO_TARGET_DIR": "/workspace/cache",
            },
            source_dir: "/workspace/src",
        }
    [2025-09-24T04:48:49Z TRACE ambient_ci::vdrive] extracting /dev/vde to /workspace/cache
    [2025-09-24T04:49:30Z TRACE ambient_ci::vdrive] extraction OK
    [2025-09-24T04:49:30Z DEBUG ambient_ci::plan] RUN: Action finished OK
    [2025-09-24T04:49:30Z DEBUG ambient_ci::plan] RUN: Action Spawn {
            argv: [
                "find",
                "/workspace",
                "-maxdepth",
                "2",
                "-ls",
            ],
        }
    [2025-09-24T04:49:30Z DEBUG ambient_ci::action] Plan::execute: plan=Spawn {
            argv: [
                "find",
                "/workspace",
                "-maxdepth",
                "2",
                "-ls",
            ],
        }
    [2025-09-24T04:49:30Z DEBUG ambient_ci::action] Plan::execute: context=Context {
            envs: {
                "PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "CARGO_HOME": "/workspace/deps",
                "CARGO_TARGET_DIR": "/workspace/cache",
            },
            source_dir: "/workspace/src",
        }
    SPAWN: argv=["find", "/workspace", "-maxdepth", "2", "-ls"]
           cwd=/workspace/src (exists? true)
      2621441      4 drwxr-xr-x   6 root     root         4096 Sep 24 04:48 /workspace
      2621654      4 drwxr-xr-x   3 root     root         4096 Sep 24 04:48 /workspace/deps
      2621655      0 -rw-r--r--   1 root     root            0 Sep 23 09:03 /workspace/deps/.package-cache-mutate
      2621658      4 drwxr-xr-x   5 root     root         4096 Sep 23 09:03 /workspace/deps/registry
      2621656    116 -rw-r--r--   1 root     root       118784 Sep 24 04:48 /workspace/deps/.global-cache
      2621657      0 -rw-r--r--   1 root     root            0 Sep 23 09:03 /workspace/deps/.package-cache
      2621443      4 drwxr-xr-x  10 root     root         4096 Sep 24 04:48 /workspace/src
      2621520      4 -rw-r--r--   1 root     root         1716 Sep 24 04:48 /workspace/src/Cargo.toml
      2621642      4 -rw-r--r--   1 root     root         1188 Sep 24 04:48 /workspace/src/CONTRIBUTING.md
      2621502     40 -rw-r--r--   1 root     root        37288 Sep 24 04:48 /workspace/src/NEWS.md
      2621517      4 -rw-r--r--   1 root     root          802 Sep 24 04:48 /workspace/src/build.rs
      2621523      4 drwxr-xr-x   8 root     root         4096 Sep 24 04:48 /workspace/src/.git
      2621644      4 drwxr-xr-x   2 root     root         4096 Sep 24 04:48 /workspace/src/doc
      2621450      4 drwxr-xr-x   4 root     root         4096 Sep 24 04:48 /workspace/src/src
      2621516      8 -rw-r--r--   1 root     root         4796 Sep 24 04:48 /workspace/src/README.md
      2621447      4 drwxr-xr-x   2 root     root         4096 Sep 24 04:48 /workspace/src/.ambient
      2621496      4 -rw-r--r--   1 root     root          386 Sep 24 04:48 /workspace/src/cibtool.1
      2621515      4 -rw-r--r--   1 root     root          732 Sep 24 04:48 /workspace/src/ci-broker.yaml
      2621445      4 drwxr-xr-x   2 root     root         4096 Sep 24 04:48 /workspace/src/.radicle
      2621503      4 drwxr-xr-x   3 root     root         4096 Sep 24 04:48 /workspace/src/debian
      2621501      4 -rw-r--r--   1 root     root           10 Sep 24 04:48 /workspace/src/.envrc
      2621643    100 -rw-r--r--   1 root     root        98580 Sep 24 04:48 /workspace/src/Cargo.lock
      2621639     12 -rw-r--r--   1 root     root         9723 Sep 24 04:48 /workspace/src/LICENSE-APACHE
      2621519      4 -rw-r--r--   1 root     root           44 Sep 24 04:48 /workspace/src/.gitignore
      2621521      4 drwxr-xr-x   2 root     root         4096 Sep 24 04:48 /workspace/src/tests
      2621641      8 -rw-r--r--   1 root     root         6528 Sep 24 04:48 /workspace/src/flake.lock
      2621518      8 -rw-r--r--   1 root     root         5951 Sep 24 04:48 /workspace/src/flake.nix
      2621495     92 -rw-r--r--   1 root     root        92971 Sep 24 04:48 /workspace/src/ci-broker.md
      2621444      4 -rw-r--r--   1 root     root          440 Sep 24 04:48 /workspace/src/cib.1
      2621500      4 -rw-r--r--   1 root     root          257 Sep 24 04:48 /workspace/src/ci-broker.subplot
      2621449      4 -rw-r--r--   1 root     root         1079 Sep 24 04:48 /workspace/src/LICENSE-MIT
      2621640      4 -rw-r--r--   1 root     root          334 Sep 24 04:48 /workspace/src/Makefile
      2621497      4 drwxr-xr-x   2 root     root         4096 Sep 24 04:48 /workspace/src/.cargo
      2621442      4 drwxr-xr-x   2 root     root         4096 Sep 24 04:48 /workspace/artifacts
      2647687      4 drwxr-xr-x   6 root     root         4096 Sep 23 09:13 /workspace/cache
      2656039      4 -rw-r--r--   1 root     root          218 Sep 23 09:04 /workspace/cache/.rustdoc_fingerprint.json
      2660143      4 drwxr-xr-x  12 root     root         4096 Sep 23 09:04 /workspace/cache/doc
      2647689      4 drwxr-xr-x   7 root     root         4096 Sep 23 09:13 /workspace/cache/debug
      2647688      4 drwxr-xr-x   2 root     root         4096 Sep 23 09:03 /workspace/cache/tmp
      2660142      4 -rw-r--r--   1 root     root         1038 Sep 24 04:48 /workspace/cache/.rustc_info.json
      2656040      4 drwxr-xr-x   7 root     root         4096 Sep 23 09:15 /workspace/cache/release
    [2025-09-24T04:49:31Z DEBUG ambient_ci::plan] RUN: Action finished OK
    [2025-09-24T04:49:31Z DEBUG ambient_ci::plan] RUN: Action CargoFmt
    [2025-09-24T04:49:31Z DEBUG ambient_ci::action] Plan::execute: plan=CargoFmt
    [2025-09-24T04:49:31Z DEBUG ambient_ci::action] Plan::execute: context=Context {
            envs: {
                "PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "CARGO_HOME": "/workspace/deps",
                "CARGO_TARGET_DIR": "/workspace/cache",
            },
            source_dir: "/workspace/src",
        }
    SPAWN: argv=["cargo", "--version"]
           cwd=/workspace/src (exists? true)
    cargo 1.88.0 (873a06493 2025-05-10)
    SPAWN: argv=["cargo", "clippy", "--version"]
           cwd=/workspace/src (exists? true)
    clippy 0.1.88 (6b00bc3880 2025-06-23)
    SPAWN: argv=["rustc", "--version"]
           cwd=/workspace/src (exists? true)
    rustc 1.88.0 (6b00bc388 2025-06-23)
    SPAWN: argv=["cargo", "fmt", "--check"]
           cwd=/workspace/src (exists? true)
    [2025-09-24T04:49:34Z DEBUG ambient_ci::plan] RUN: Action finished OK
    [2025-09-24T04:49:34Z DEBUG ambient_ci::plan] RUN: Action CargoClippy
    [2025-09-24T04:49:34Z DEBUG ambient_ci::action] Plan::execute: plan=CargoClippy
    [2025-09-24T04:49:34Z DEBUG ambient_ci::action] Plan::execute: context=Context {
            envs: {
                "PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "CARGO_HOME": "/workspace/deps",
                "CARGO_TARGET_DIR": "/workspace/cache",
            },
            source_dir: "/workspace/src",
        }
    SPAWN: argv=["cargo", "--version"]
           cwd=/workspace/src (exists? true)
    cargo 1.88.0 (873a06493 2025-05-10)
    SPAWN: argv=["cargo", "clippy", "--version"]
           cwd=/workspace/src (exists? true)
    clippy 0.1.88 (6b00bc3880 2025-06-23)
    SPAWN: argv=["rustc", "--version"]
           cwd=/workspace/src (exists? true)
    rustc 1.88.0 (6b00bc388 2025-06-23)
    SPAWN: argv=["cargo", "clippy", "--offline", "--locked", "--workspace", "--all-targets", "--no-deps", "--", "--deny", "warnings"]
           cwd=/workspace/src (exists? true)
       Compiling radicle-ci-broker v0.20.1 (/workspace/src)
        Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.10s
    [2025-09-24T04:49:39Z DEBUG ambient_ci::plan] RUN: Action finished OK
    [2025-09-24T04:49:39Z DEBUG ambient_ci::plan] RUN: Action Shell {
            shell: "export CARGO_TARGET_DIR=/workspace/cache\nexport CARGO_HOME=/workspace/deps\nexport HOME=/root\nexport PATH=\"/root/.cargo/bin:/root/.radicle/bin:$PATH\"\n\n# Check that `rad` is there.\nrad --help >/dev/null || (echo rad is not there; exit 1)\n\ncargo doc --workspace --no-deps\n\n# FIXME: We can't run upgrade tests from older versions because\n# Ambient only fetches dependencies for the current version.\n# Thus, we can't build the old versions. This is an Ambient\n# problem that we can't fix here. So we skip the upgrade tests.\ncargo test --workspace --no-fail-fast -- --skip upgrade --test-threads 2\n\nsubplot docgen ci-broker.subplot -o doc/ci-broker.html\nsubplot docgen doc/userguide.subplot -o doc/userguide.html\nmake -C doc\ncp doc/*.html /workspace/artifacts/.\n",
        }
    [2025-09-24T04:49:39Z DEBUG ambient_ci::action] Plan::execute: plan=Shell {
            shell: "export CARGO_TARGET_DIR=/workspace/cache\nexport CARGO_HOME=/workspace/deps\nexport HOME=/root\nexport PATH=\"/root/.cargo/bin:/root/.radicle/bin:$PATH\"\n\n# Check that `rad` is there.\nrad --help >/dev/null || (echo rad is not there; exit 1)\n\ncargo doc --workspace --no-deps\n\n# FIXME: We can't run upgrade tests from older versions because\n# Ambient only fetches dependencies for the current version.\n# Thus, we can't build the old versions. This is an Ambient\n# problem that we can't fix here. So we skip the upgrade tests.\ncargo test --workspace --no-fail-fast -- --skip upgrade --test-threads 2\n\nsubplot docgen ci-broker.subplot -o doc/ci-broker.html\nsubplot docgen doc/userguide.subplot -o doc/userguide.html\nmake -C doc\ncp doc/*.html /workspace/artifacts/.\n",
        }
    [2025-09-24T04:49:39Z DEBUG ambient_ci::action] Plan::execute: context=Context {
            envs: {
                "PATH": "/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "CARGO_HOME": "/workspace/deps",
                "CARGO_TARGET_DIR": "/workspace/cache",
            },
            source_dir: "/workspace/src",
        }
    SPAWN: argv=["/bin/bash", "-c", "set -xeuo pipefail\nexport CARGO_TARGET_DIR=/workspace/cache\nexport CARGO_HOME=/workspace/deps\nexport HOME=/root\nexport PATH=\"/root/.cargo/bin:/root/.radicle/bin:$PATH\"\n\n# Check that `rad` is there.\nrad --help >/dev/null || (echo rad is not there; exit 1)\n\ncargo doc --workspace --no-deps\n\n# FIXME: We can't run upgrade tests from older versions because\n# Ambient only fetches dependencies for the current version.\n# Thus, we can't build the old versions. This is an Ambient\n# problem that we can't fix here. So we skip the upgrade tests.\ncargo test --workspace --no-fail-fast -- --skip upgrade --test-threads 2\n\nsubplot docgen ci-broker.subplot -o doc/ci-broker.html\nsubplot docgen doc/userguide.subplot -o doc/userguide.html\nmake -C doc\ncp doc/*.html /workspace/artifacts/.\n\n"]
           cwd=/workspace/src (exists? true)
    + export CARGO_TARGET_DIR=/workspace/cache
    + CARGO_TARGET_DIR=/workspace/cache
    + export CARGO_HOME=/workspace/deps
    + CARGO_HOME=/workspace/deps
    + export HOME=/root
    + HOME=/root
    + export PATH=/root/.cargo/bin:/root/.radicle/bin:/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    + PATH=/root/.cargo/bin:/root/.radicle/bin:/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    + rad --help
    + cargo doc --workspace --no-deps
       Compiling radicle-ci-broker v0.20.1 (/workspace/src)
     Documenting radicle-ci-broker v0.20.1 (/workspace/src)
    warning: unresolved link to `RunningProcess`
       --> src/adapter.rs:357:44
        |
    357 |     /// Error from [`TimeoutCommand`] or [`RunningProcess`].
        |                                            ^^^^^^^^^^^^^^ no item named `RunningProcess` in scope
        |
        = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
        = note: `#[warn(rustdoc::broken_intra_doc_links)]` on by default
    
    warning: unresolved link to `RunningProcess`
      --> src/timeoutcmd.rs:74:24
       |
    74 | /// output. See also [`RunningProcess`].
       |                        ^^^^^^^^^^^^^^ no item named `RunningProcess` in scope
       |
       = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
    
    warning: `radicle-ci-broker` (lib doc) generated 2 warnings
        Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.14s
       Generated /workspace/cache/doc/radicle_ci_broker/index.html and 4 other files
    + cargo test --workspace --no-fail-fast -- --skip upgrade --test-threads 2
       Compiling radicle-ci-broker v0.20.1 (/workspace/src)
        Finished `test` profile [unoptimized + debuginfo] target(s) in 16.26s
         Running unittests src/lib.rs (/workspace/cache/debug/deps/radicle_ci_broker-3a652a7f49bdf1f1)
    
    running 86 tests
    test adapter::test::adapter_does_not_exist ... ok
    test adapter::test::adapter_ends_ok_before_first_message ... ok
    test adapter::test::adapter_ends_ok_before_second_message ... ok
    test adapter::test::adapter_exits_nonzero ... ok
    test adapter::test::adapter_first_message_isnt_triggered ... ok
    test adapter::test::adapter_has_bad_interpreter ... ok
    test adapter::test::adapter_is_killed_before_any_messages ... ok
    test adapter::test::adapter_is_killed_after_second_message ... ok
    test adapter::test::adapter_is_killed_before_first_message ... ok
    test adapter::test::adapter_is_not_executable ... ok
    test adapter::test::adapter_outputs_too_many_messages ... ok
    test adapter::test::adapter_produces_as_bad_message ... ok
    test adapter::test::adapter_reports_failure ... ok
    test adapter::test::adapter_reports_success ... ok
    test broker::test::adapter_fails ... ok
    test broker::test::executes_adapter ... ok
    test ci_event::test::branch_created ... ok
    test ci_event::test::branch_deleted ... ok
    test ci_event::test::nothing_updated ... ok
    test ci_event::test::branch_updated ... ok
    test ci_event::test::patch_created ... ok
    test ci_event::test::skipped ... ok
    test ci_event::test::patch_updated ... ok
    test ci_event::test_parsed_ref::branch ... ok
    test ci_event::test_parsed_ref::patch ... ok
    test config::test::parse_config_yaml ... ok
    test config::test::parse_config_yaml_without_max_run_time ... ok
    test filter::test::allows_all_for_default_repository ... ok
    test filter::test::allows_all_for_main_branch ... ok
    test filter::test::allows_all_for_right_node ... ok
    test filter::test::allows_any_event ... ok
    test filter::test::allows_branch_creation ... ok
    test filter::test::allows_branch_deletion ... ok
    test filter::test::allows_branch_update ... ok
    test filter::test::allows_if_all_allow ... ok
    test filter::test::allows_if_any_allows ... ok
    test filter::test::allows_no_event ... ok
    test filter::test::allows_none_for_wrong_node ... ok
    test filter::test::allows_opposite ... ok
    test filter::test::allows_patch_creation ... ok
    test filter::test::allows_patch_update ... ok
    test filter::test::allows_shutdown ... ok
    test filter::test::allows_specific_patch ... ok
    test filter::test::allows_wanted_tag ... ok
    test filter::test::deserialize_yaml_nested_not ... ok
    test filter::test::doesnt_allow_any_for_other_branch ... ok
    test filter::test::doesnt_allow_any_for_other_repository ... ok
    test filter::test::doesnt_allow_unexpected_tag ... ok
    test filter::test::doesnt_allow_unexpected_tag_even_if_wanted_is_prefix ... ok
    test filter::test::doesnt_allow_unexpected_tag_even_if_wanted_is_suffix ... ok
    test filter::test::doesnt_allows_other_patch ... ok
    test filter::test::only_allows_branch_creation ... ok
    test filter::test::only_allows_branch_deletion ... ok
    test filter::test::only_allows_branch_update ... ok
    test filter::test::only_allows_patch_creation ... ok
    test filter::test::only_allows_patch_update ... ok
    test ci_event::test_parsed_ref::tag ... ok
    test filter::test::yaml_roundtrip ... ok
    test msg::trigger_from_ci_event_tests::trigger_patch_from_patch_created ... ok
    test msg::trigger_from_ci_event_tests::trigger_patch_from_patch_updated ... ok
    test msg::trigger_from_ci_event_tests::trigger_push_from_branch_updated ... ok
    test refs::test::creates_patch_from_str ... ok
    test refs::test::extracts_branch_namespaced_branch ... ok
    test msg::trigger_from_ci_event_tests::trigger_push_from_branch_created ... ok
    test refs::test::namespaced_branch_from_plain ... ok
    test refs::test::plain_branch_name ... ok
    test refs::test::qualified_branch_name_from_plain ... ok
    test refs::test::ref_string_from_plain_branch_name ... ok
    test run::test::serialize_run_state ... ok
    test sensitive::test_sensitive::debugged ... ok
    test sensitive::test_sensitive::deser ... ok
    test sensitive::test_sensitive::displayed ... ok
    test sensitive::test_sensitive::ser ... ok
    test timeoutcmd::tests::bin_false ... ok
    test timeoutcmd::tests::bin_true ... ok
    test timeoutcmd::tests::hello_world ... ok
    test timeoutcmd::tests::hello_world_to_stderr ... ok
    test timeoutcmd::tests::kill ... ok
    test timeoutcmd::tests::kill_stderr ... ok
    test timeoutcmd::tests::pipe_through_cat ... ok
    test timeoutcmd::tests::sleep_1 ... ok
    test timeoutcmd::tests::sleep_for_too_long ... ok
    test timeoutcmd::tests::yes_to_stderr ... ok
    test timeoutcmd::tests::sleep_for_too_long_while_reading_with_realtimelines ... ok
    test timeoutcmd::tests::yes_to_stdout ... ok
    test timeoutcmd::tests::yes_to_stdout_while_reading_with_realtimelines ... ok
    
    test result: ok. 86 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 15.95s
    
         Running unittests src/bin/cib.rs (/workspace/cache/debug/deps/cib-e9ba13027b83a468)
    
    running 0 tests
    
    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
    
         Running unittests src/bin/cibtool.rs (/workspace/cache/debug/deps/cibtool-c79467f98bd685ea)
    
    running 0 tests
    
    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
    
         Running unittests src/bin/default_branch.rs (/workspace/cache/debug/deps/default_branch-cb3df330a1ceebc0)
    
    running 0 tests
    
    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
    
         Running unittests src/bin/synthetic-events.rs (/workspace/cache/debug/deps/synthetic_events-e28c67836b0797bd)
    
    running 0 tests
    
    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
    
         Running tests/subplot.rs (/workspace/cache/debug/deps/subplot-6af5304012d09743)
    
    running 71 tests
    test adapter_with_url_runs_successfully ... ok
    test add_information_about_run_that_s_finished_in_failure_to_database ... ok
    test adapter_can_provide_url_for_info_on_run ... ok
    test add_information_about_run_that_s_finished_successfully_to_database ... ok
    test add_information_about_run_that_s_running_to_database ... ok
    test allows_setting_minimum_log_level ... ok
    test add_information_about_triggered_run_to_database ... ok
    test can_add_a_branch_creation_event_to_queue ... ok
    test can_add_a_branch_deletion_event_to_queue ... ok
    test can_add_a_branch_update_event_to_queue ... ok
    test can_add_a_patch_creation_event_to_queue ... ok
    test can_add_a_patch_update_event_to_queue ... ok
    test can_add_shutdown_event_to_queue ... ok
    test can_output_trigger_message_for_a_ci_run ... ok
    test can_remove_all_queued_events ... ok
    test can_trigger_a_ci_run ... ok
    test convert_recorded_node_events_into_ci_events ... ok
    test count_in_a_single_process ... ok
    test create_a_repository ... ok
    test don_t_insert_event_for_non_existent_repository ... ok
    test dummy_adapter_runs_successfully ... ok
    test event_synthesizer_terminates_after_first_connection ... ok
    test events_can_be_queued_and_removed_from_queue ... ok
    test extract_cib_log_from_journald_and_pretty_print ... ok
    test fails_run_if_building_trigger_fails__but_does_not_crash ... ok
    test count_in_concurrent_processes ... ok
    test filter_predicate_allow ... ok
    test filter_predicate_and ... ok
    test filter_predicate_branch ... ok
    test filter_predicate_branchcreated ... ok
    test filter_predicate_branchdeleted ... ok
    test filter_predicate_branchupdated ... ok
    test filter_predicate_deny ... ok
    test filter_predicate_defaultbranch ... ok
    test filter_predicate_hasfile ... ok
    test filter_predicate_not ... ok
    test filter_predicate_node ... ok
    test filter_predicate_or ... ok
    test filter_predicate_tag ... ok
    test filter_predicate_repository ... ok
    test filter_recorded_ci_events ... ok
    test gives_helpful_error_message_if_it_doesn_t_understand_its_configuration_file ... ok
    test gives_helpful_error_message_if_node_socket_can_t_be_found ... ok
    test handles_adapter_failing_on_a_successful_run ... ok
    test handles_adapter_failing_on_a_failed_run ... ok
    test insert_events_into_queue ... ok
    test logs_adapter_stderr_output ... ok
    test logs_start_and_successful_end ... ok
    test logs_termination_due_to_error ... ok
    test process_queued_events ... ok
    test produces_a_json_status_file ... ok
    test produces_a_report_page_upon_request ... ok
    test queue_a_node_event_for_processing ... ok
    test record_node_events ... ok
    test refuses_config_with_an_unknown_field ... ok
    test remove_information_about_a_run_from_the_database ... ok
    test reports_it_version ... ok
    test runs_adapter_on_each_type_of_event ... ok
    test runs_adapter_with_configuration ... ok
    test runs_adapter_without_a_report_directory ... ok
    test insert_many_events_into_queue ... ok
    test set_up_a_node ... ok
    test shows_adapter_specification ... ok
    test shows_json_config_as_json ... ok
    test shows_yaml_config_as_json ... ok
    test shuts_down_when_requested ... ok
    test runs_adapters_for_all_matching_triggers ... ok
    test smoke_test__runs_adapter ... ok
    test stops_if_the_node_connection_breaks ... ok
    test we_can_run_rad ... ok
    test update_and_show_information_about_run_to_running ... ok
    
    test result: ok. 71 passed; 0 failed; 0 ignored; 0 measured; 1 filtered out; finished in 134.81s
    
       Doc-tests radicle_ci_broker
    
    running 3 tests
    test src/msg.rs - msg::RunId (line 49) ... ok
    test src/pull_queue.rs - pull_queue::PullQueue (line 12) ... ok
    test src/timeoutcmd.rs - timeoutcmd (line 21) ... ok
    
    test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.74s
    
    + subplot docgen ci-broker.subplot -o doc/ci-broker.html
     INFO Starting Subplot
     WARN Embedded file is not used by any scenario: "broker-with-concurrent-adapters.yaml"
    ERROR Document has 1 warnings.
    [2025-09-24T04:52:35Z ERROR ambient_ci::plan] ERROR: Action failed: failed to execute /bin/bash
    [2025-09-24T04:52:35Z ERROR ambient_ci::plan] caused by: command failed: "/bin/bash": exit code 1
    ERROR: failed to execute /bin/bash
    caused by: command failed: "/bin/bash": exit code 1
    EXIT CODE: 1
    
    ====================
[2025-09-24T04:52:36Z DEBUG ambient_ci::qemu] QEMU: CI run under exit code 1
[2025-09-24T04:52:37Z DEBUG ambient_ci::run] CI run exit code from QEMU: 1
[2025-09-24T04:52:37Z DEBUG ambient_ci::project] write project state to /srv/ambient-state/rad:zwTxygwuz5LDGBq255RA2CbNGrz8/meta.yaml
ERROR: CI run failed inside QEMU

Ambient stderr

<empty log>