CI: FAILURE heartwood

Table of Contents

Run log

Plan, inside VM without network

plan: Executor starts
After 0.00 seconds at 2026-05-07 21:05:57ZProgram: ambient-execute-plan
Version: 0.14.0@c37ec71
plan: Runnable plan
After 0.00 seconds at 2026-05-07 21:05:57Z
steps:
- action: mkdir
  pathname: /ci
- action: mkdir
  pathname: /ci/artifacts
- action: tar_extract
  archive: /dev/vdc
  directory: /ci/src
- action: tar_extract
  archive: /dev/vdf
  directory: /ci/deps
- action: tar_extract
  archive: /dev/vde
  directory: /ci/cache
- action: shell
  shell: ln -sf /ci /workspace
- action: shell
  shell: git config --global user.name 'Ambient CI'
- action: shell
  shell: git config --global user.email ambient@example.com
- action: cargo_fmt
- action: cargo_clippy
- action: cargo_build
- action: cargo_test
- action: shell
  shell: |
    # Because of a (temporary) limitation in Ambient, we need to set
    # these variables manually. Once Ambient manages environment
    # variables better, these can be deleted.
    export CARGO_TARGET_DIR=/workspace/cache
    export CARGO_HOME=/workspace/deps
    export HOME=/root
    export PATH="/root/.cargo/bin:$PATH"
    export RUSTDOCFLAGS='-D warnings'

    cargo doc --workspace --no-deps --all-features
- action: shell
  shell: |
    # Because of a (temporary) limitation in Ambient, we need to set
    # these variables manually. Once Ambient manages environment
    # variables better, these can be deleted.
    export CARGO_TARGET_DIR=/workspace/cache
    export CARGO_HOME=/workspace/deps
    export HOME=/root
    export PATH="/root/.cargo/bin:$PATH"

    # These are based on debian/control.
    export DEBEMAIL=liw@liw.fi
    export DEBFULLNAME="Lars Wirzenius"

    # Clean up after tests and documentation building. The Debian
    # package building tools do not want changes outside the
    # `debian` directory, compared to what is committed to Git, from
    # which the "upstream tarball" is created.
    git reset --hard
    git clean -fdx
    git status --ignored

    # Update debian/changelog with a new version so that every run
    # creates a newer version. This avoids us having to update the
    # file manually for every CI run.
    V="$(dpkg-parsechangelog -SVersion | sed 's/-[^-]*$//')"
    T="$(date -u "+%Y%m%dT%H%M%S")"
    version="$V.ci$T-1"
    dch -v "$version" "CI build under Ambient."
    dch -r ''
- action: deb
  packages: .
- action: tar_create
  archive: /dev/vde
  directory: /ci/cache
- action: tar_create
  archive: /dev/vdd
  directory: /ci/artifacts
executor_drive: /dev/vdb
source_drive: /dev/vdc
artifact_drive: /dev/vdd
cache_drive: /dev/vde
deps_drive: /dev/vdf
workspace_dir: /ci
source_dir: /ci/src
deps_dir: /ci/deps
cache_dir: /ci/cache
artifacts_dir: /ci/artifacts
envs: {}
plan: Successful action mkdir: /ci
After 0.00 seconds at 2026-05-07 21:05:57Z
  • plan: Start action mkdir: /ci
    After 0.00 seconds at 2026-05-07 21:05:57Z
    Mkdir(
        Mkdir {
            pathname: "/ci",
        },
    )
  • plan: Action succeeded mkdir: /ci
    After 0.00 seconds at 2026-05-07 21:05:57Z
    Mkdir(
        Mkdir {
            pathname: "/ci",
        },
    )
plan: Successful action mkdir: /ci/artifacts
After 0.00 seconds at 2026-05-07 21:05:57Z
  • plan: Start action mkdir: /ci/artifacts
    After 0.00 seconds at 2026-05-07 21:05:57Z
    Mkdir(
        Mkdir {
            pathname: "/ci/artifacts",
        },
    )
  • plan: Action succeeded mkdir: /ci/artifacts
    After 0.00 seconds at 2026-05-07 21:05:57Z
    Mkdir(
        Mkdir {
            pathname: "/ci/artifacts",
        },
    )
plan: Successful action tar_extract
After 0.00 seconds at 2026-05-07 21:05:57Z
  • plan: Start action tar_extract
    After 0.00 seconds at 2026-05-07 21:05:57Z
    TarExtract(
        TarExtract {
            archive: "/dev/vdc",
            directory: "/ci/src",
        },
    )
  • plan: Action succeeded tar_extract
    After 0.00 seconds at 2026-05-07 21:05:58Z
    TarExtract(
        TarExtract {
            archive: "/dev/vdc",
            directory: "/ci/src",
        },
    )
plan: Successful action tar_extract
After 0.27 seconds at 2026-05-07 21:05:58Z
  • plan: Start action tar_extract
    After 0.00 seconds at 2026-05-07 21:05:58Z
    TarExtract(
        TarExtract {
            archive: "/dev/vdf",
            directory: "/ci/deps",
        },
    )
  • plan: Action succeeded tar_extract
    After 0.00 seconds at 2026-05-07 21:06:00Z
    TarExtract(
        TarExtract {
            archive: "/dev/vdf",
            directory: "/ci/deps",
        },
    )
plan: Successful action tar_extract
After 2.47 seconds at 2026-05-07 21:06:00Z
  • plan: Start action tar_extract
    After 0.00 seconds at 2026-05-07 21:06:00Z
    TarExtract(
        TarExtract {
            archive: "/dev/vde",
            directory: "/ci/cache",
        },
    )
  • plan: Action succeeded tar_extract
    After 0.00 seconds at 2026-05-07 21:06:20Z
    TarExtract(
        TarExtract {
            archive: "/dev/vde",
            directory: "/ci/cache",
        },
    )
plan: Successful action shell: ln -sf /ci /workspace
After 22.37 seconds at 2026-05-07 21:06:20Z
  • plan: Start action shell: ln -sf /ci /workspace
    After 0.00 seconds at 2026-05-07 21:06:20Z
    Shell(
        Shell {
            shell: "ln -sf /ci /workspace",
        },
    )
  • plan: Start program bash
    After 0.00 seconds at 2026-05-07 21:06:20Z
    • bash
    • -c
    • set -xeuo pipefail ln -sf /ci /workspace
  • plan: Program succeeded
    After 0.00 seconds at 2026-05-07 21:06:20Z
    Exit code: 0
    Stderr:
    + ln -sf /ci /workspace
    
  • plan: Action succeeded shell: ln -sf /ci /workspace
    After 0.00 seconds at 2026-05-07 21:06:20Z
    Shell(
        Shell {
            shell: "ln -sf /ci /workspace",
        },
    )
plan: Successful action shell: git config --global user.name 'Ambient CI'
After 22.38 seconds at 2026-05-07 21:06:20Z
  • plan: Start action shell: git config --global user.name 'Ambient CI'
    After 0.00 seconds at 2026-05-07 21:06:20Z
    Shell(
        Shell {
            shell: "git config --global user.name 'Ambient CI'",
        },
    )
  • plan: Start program bash
    After 0.00 seconds at 2026-05-07 21:06:20Z
    • bash
    • -c
    • set -xeuo pipefail git config --global user.name 'Ambient CI'
  • plan: Program succeeded
    After 0.00 seconds at 2026-05-07 21:06:20Z
    Exit code: 0
    Stderr:
    + git config --global user.name 'Ambient CI'
    
  • plan: Action succeeded shell: git config --global user.name 'Ambient CI'
    After 0.00 seconds at 2026-05-07 21:06:20Z
    Shell(
        Shell {
            shell: "git config --global user.name 'Ambient CI'",
        },
    )
plan: Successful action shell: git config --global user.email ambient@example.com
After 22.40 seconds at 2026-05-07 21:06:20Z
  • plan: Start action shell: git config --global user.email ambient@example.com
    After 0.00 seconds at 2026-05-07 21:06:20Z
    Shell(
        Shell {
            shell: "git config --global user.email ambient@example.com",
        },
    )
  • plan: Start program bash
    After 0.00 seconds at 2026-05-07 21:06:20Z
    • bash
    • -c
    • set -xeuo pipefail git config --global user.email ambient@example.com
  • plan: Program succeeded
    After 0.00 seconds at 2026-05-07 21:06:20Z
    Exit code: 0
    Stderr:
    + git config --global user.email ambient@example.com
    
  • plan: Action succeeded shell: git config --global user.email ambient@example.com
    After 0.00 seconds at 2026-05-07 21:06:20Z
    Shell(
        Shell {
            shell: "git config --global user.email ambient@example.com",
        },
    )
plan: Successful action cargo_fmt
After 22.42 seconds at 2026-05-07 21:06:20Z
  • plan: Start action cargo_fmt
    After 0.00 seconds at 2026-05-07 21:06:20Z
    CargoFmt(
        CargoFmt,
    )
  • plan: Start program cargo
    After 0.00 seconds at 2026-05-07 21:06:20Z
    • cargo
    • --version
  • plan: Program succeeded
    After 0.00 seconds at 2026-05-07 21:06:20Z
    Exit code: 0
    Stdout:
    cargo 1.90.0 (840b83a10 2025-07-30)
    
  • plan: Start program cargo
    After 0.00 seconds at 2026-05-07 21:06:20Z
    • cargo
    • clippy
    • --version
  • plan: Program succeeded
    After 0.00 seconds at 2026-05-07 21:06:20Z
    Exit code: 0
    Stdout:
    clippy 0.1.90 (1159e78c47 2025-09-14)
    
  • plan: Start program rustc
    After 0.00 seconds at 2026-05-07 21:06:20Z
    • rustc
    • --version
  • plan: Program succeeded
    After 0.00 seconds at 2026-05-07 21:06:20Z
    Exit code: 0
    Stdout:
    rustc 1.90.0 (1159e78c4 2025-09-14)
    
  • plan: Start program cargo
    After 0.00 seconds at 2026-05-07 21:06:20Z
    • cargo
    • fmt
    • --check
  • plan: Program succeeded
    After 0.00 seconds at 2026-05-07 21:06:21Z
    Exit code: 0
  • plan: Action succeeded cargo_fmt
    After 0.00 seconds at 2026-05-07 21:06:21Z
    CargoFmt(
        CargoFmt,
    )
plan: Start action cargo_clippy
After 23.52 seconds at 2026-05-07 21:06:21Z
CargoClippy(
    CargoClippy,
)
plan: Start program cargo
After 23.52 seconds at 2026-05-07 21:06:21Z
  • cargo
  • --version
plan: Program succeeded
After 23.54 seconds at 2026-05-07 21:06:21Z
Exit code: 0
Stdout:
cargo 1.90.0 (840b83a10 2025-07-30)
plan: Start program cargo
After 23.55 seconds at 2026-05-07 21:06:21Z
  • cargo
  • clippy
  • --version
plan: Program succeeded
After 23.60 seconds at 2026-05-07 21:06:21Z
Exit code: 0
Stdout:
clippy 0.1.90 (1159e78c47 2025-09-14)
plan: Start program rustc
After 23.60 seconds at 2026-05-07 21:06:21Z
  • rustc
  • --version
plan: Program succeeded
After 23.63 seconds at 2026-05-07 21:06:21Z
Exit code: 0
Stdout:
rustc 1.90.0 (1159e78c4 2025-09-14)
plan: Start program cargo
After 23.64 seconds at 2026-05-07 21:06:21Z
  • cargo
  • clippy
  • --offline
  • --locked
  • --workspace
  • --all-targets
  • --no-deps
  • --
  • --deny
  • warnings
plan: ERROR: Program failed
After 24.49 seconds at 2026-05-07 21:06:22Z
Exit code: 101
Stderr:
    Checking radicle-crypto v0.17.0 (/ci/src/crates/radicle-crypto)
    Checking radicle-oid v0.2.0 (/ci/src/crates/radicle-oid)
error: this `if` statement can be collapsed
   --> crates/radicle-crypto/src/ssh/keystore.rs:122:9
    |
122 | /         if let Some(path_public) = &self.path_public {
123 | |             if path_public.exists() {
124 | |                 return Err(Error::AlreadyInitialized {
125 | |                     exists: path_public.to_path_buf(),
...   |
128 | |         }
    | |_________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if
    = note: `-D clippy::collapsible-if` implied by `-D warnings`
    = help: to override `-D warnings` add `#[allow(clippy::collapsible_if)]`
help: collapse nested if block
    |
122 ~         if let Some(path_public) = &self.path_public
123 ~             && path_public.exists() {
124 |                 return Err(Error::AlreadyInitialized {
125 |                     exists: path_public.to_path_buf(),
126 |                 });
127 ~             }
    |

    Checking radicle-dag v0.10.0 (/ci/src/crates/radicle-dag)
error: could not compile `radicle-crypto` (lib) due to 1 previous error
warning: build failed, waiting for other jobs to finish...
error: this `if` statement can be collapsed
   --> crates/radicle-dag/src/lib.rs:333:13
    |
333 | /             if let Some(node) = self.graph.get(&key) {
334 | |                 if visited.insert(key) {
335 | |                     nodes.push(key);
...   |
341 | |             }
    | |_____________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if
    = note: `-D clippy::collapsible-if` implied by `-D warnings`
    = help: to override `-D warnings` add `#[allow(clippy::collapsible_if)]`
help: collapse nested if block
    |
333 ~             if let Some(node) = self.graph.get(&key)
334 ~                 && visited.insert(key) {
335 |                     nodes.push(key);
...
339 |                     }
340 ~                 }
    |

error: this `if` statement can be collapsed
   --> crates/radicle-dag/src/lib.rs:354:13
    |
354 | /             if let Some(node) = self.graph.get(&key) {
355 | |                 if visited.insert(key) {
356 | |                     nodes.push(key);
...   |
362 | |             }
    | |_____________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if
help: collapse nested if block
    |
354 ~             if let Some(node) = self.graph.get(&key)
355 ~                 && visited.insert(key) {
356 |                     nodes.push(key);
...
360 |                     }
361 ~                 }
    |

error: could not compile `radicle-dag` (lib) due to 2 previous errors
plan: Action failed: cargo_clippy
After 24.54 seconds at 2026-05-07 21:06:22Z
CargoClippy(
    CargoClippy,
)

Raw log messages for Ambient troubleshooting

Raw log messages

These raw log messages are meant to help Ambient developers figure out problems. You can ignore them.

  1. {
      "type": "executor_starts",
      "name": "ambient-execute-plan",
      "version": "0.14.0@c37ec71",
      "timestamp": {
        "secs_since_epoch": 1778187957,
        "nanos_since_epoch": 796767022
      },
      "log_source": "Plan"
    }
  2. {
      "type": "runnable_plan",
      "steps": [
        {
          "action": "mkdir",
          "pathname": "/ci"
        },
        {
          "action": "mkdir",
          "pathname": "/ci/artifacts"
        },
        {
          "action": "tar_extract",
          "archive": "/dev/vdc",
          "directory": "/ci/src"
        },
        {
          "action": "tar_extract",
          "archive": "/dev/vdf",
          "directory": "/ci/deps"
        },
        {
          "action": "tar_extract",
          "archive": "/dev/vde",
          "directory": "/ci/cache"
        },
        {
          "action": "shell",
          "shell": "ln -sf /ci /workspace"
        },
        {
          "action": "shell",
          "shell": "git config --global user.name 'Ambient CI'"
        },
        {
          "action": "shell",
          "shell": "git config --global user.email ambient@example.com"
        },
        {
          "action": "cargo_fmt"
        },
        {
          "action": "cargo_clippy"
        },
        {
          "action": "cargo_build"
        },
        {
          "action": "cargo_test"
        },
        {
          "action": "shell",
          "shell": "# Because of a (temporary) limitation in Ambient, we need to set\n# these variables manually. Once Ambient manages environment\n# variables better, these can be deleted.\nexport CARGO_TARGET_DIR=/workspace/cache\nexport CARGO_HOME=/workspace/deps\nexport HOME=/root\nexport PATH=\"/root/.cargo/bin:$PATH\"\nexport RUSTDOCFLAGS='-D warnings'\n\ncargo doc --workspace --no-deps --all-features\n"
        },
        {
          "action": "shell",
          "shell": "# Because of a (temporary) limitation in Ambient, we need to set\n# these variables manually. Once Ambient manages environment\n# variables better, these can be deleted.\nexport CARGO_TARGET_DIR=/workspace/cache\nexport CARGO_HOME=/workspace/deps\nexport HOME=/root\nexport PATH=\"/root/.cargo/bin:$PATH\"\n\n# These are based on debian/control.\nexport DEBEMAIL=liw@liw.fi\nexport DEBFULLNAME=\"Lars Wirzenius\"\n\n# Clean up after tests and documentation building. The Debian\n# package building tools do not want changes outside the\n# `debian` directory, compared to what is committed to Git, from\n# which the \"upstream tarball\" is created.\ngit reset --hard\ngit clean -fdx\ngit status --ignored\n\n# Update debian/changelog with a new version so that every run\n# creates a newer version. This avoids us having to update the\n# file manually for every CI run.\nV=\"$(dpkg-parsechangelog -SVersion | sed 's/-[^-]*$//')\"\nT=\"$(date -u \"+%Y%m%dT%H%M%S\")\"\nversion=\"$V.ci$T-1\"\ndch -v \"$version\" \"CI build under Ambient.\"\ndch -r ''\n"
        },
        {
          "action": "deb",
          "packages": "."
        },
        {
          "action": "tar_create",
          "archive": "/dev/vde",
          "directory": "/ci/cache"
        },
        {
          "action": "tar_create",
          "archive": "/dev/vdd",
          "directory": "/ci/artifacts"
        }
      ],
      "executor_drive": "/dev/vdb",
      "source_drive": "/dev/vdc",
      "artifact_drive": "/dev/vdd",
      "cache_drive": "/dev/vde",
      "deps_drive": "/dev/vdf",
      "workspace_dir": "/ci",
      "source_dir": "/ci/src",
      "deps_dir": "/ci/deps",
      "cache_dir": "/ci/cache",
      "artifacts_dir": "/ci/artifacts",
      "envs": {},
      "timestamp": {
        "secs_since_epoch": 1778187957,
        "nanos_since_epoch": 797206399
      },
      "log_source": "Plan"
    }
  3. {
      "type": "execute_action",
      "action": "mkdir",
      "pathname": "/ci",
      "timestamp": {
        "secs_since_epoch": 1778187957,
        "nanos_since_epoch": 797419276
      },
      "log_source": "Plan"
    }
  4. {
      "type": "action_succeeded",
      "action": "mkdir",
      "pathname": "/ci",
      "timestamp": {
        "secs_since_epoch": 1778187957,
        "nanos_since_epoch": 797664494
      },
      "log_source": "Plan"
    }
  5. {
      "type": "execute_action",
      "action": "mkdir",
      "pathname": "/ci/artifacts",
      "timestamp": {
        "secs_since_epoch": 1778187957,
        "nanos_since_epoch": 797824238
      },
      "log_source": "Plan"
    }
  6. {
      "type": "action_succeeded",
      "action": "mkdir",
      "pathname": "/ci/artifacts",
      "timestamp": {
        "secs_since_epoch": 1778187957,
        "nanos_since_epoch": 797851375
      },
      "log_source": "Plan"
    }
  7. {
      "type": "execute_action",
      "action": "tar_extract",
      "archive": "/dev/vdc",
      "directory": "/ci/src",
      "timestamp": {
        "secs_since_epoch": 1778187957,
        "nanos_since_epoch": 798034924
      },
      "log_source": "Plan"
    }
  8. {
      "type": "action_succeeded",
      "action": "tar_extract",
      "archive": "/dev/vdc",
      "directory": "/ci/src",
      "timestamp": {
        "secs_since_epoch": 1778187958,
        "nanos_since_epoch": 66840410
      },
      "log_source": "Plan"
    }
  9. {
      "type": "execute_action",
      "action": "tar_extract",
      "archive": "/dev/vdf",
      "directory": "/ci/deps",
      "timestamp": {
        "secs_since_epoch": 1778187958,
        "nanos_since_epoch": 67299297
      },
      "log_source": "Plan"
    }
  10. {
      "type": "action_succeeded",
      "action": "tar_extract",
      "archive": "/dev/vdf",
      "directory": "/ci/deps",
      "timestamp": {
        "secs_since_epoch": 1778187960,
        "nanos_since_epoch": 264484067
      },
      "log_source": "Plan"
    }
  11. {
      "type": "execute_action",
      "action": "tar_extract",
      "archive": "/dev/vde",
      "directory": "/ci/cache",
      "timestamp": {
        "secs_since_epoch": 1778187960,
        "nanos_since_epoch": 265005245
      },
      "log_source": "Plan"
    }
  12. {
      "type": "action_succeeded",
      "action": "tar_extract",
      "archive": "/dev/vde",
      "directory": "/ci/cache",
      "timestamp": {
        "secs_since_epoch": 1778187980,
        "nanos_since_epoch": 164143040
      },
      "log_source": "Plan"
    }
  13. {
      "type": "execute_action",
      "action": "shell",
      "shell": "ln -sf /ci /workspace",
      "timestamp": {
        "secs_since_epoch": 1778187980,
        "nanos_since_epoch": 164606445
      },
      "log_source": "Plan"
    }
  14. {
      "type": "start_program",
      "argv": [
        {
          "Unix": [
            98,
            97,
            115,
            104
          ]
        },
        {
          "Unix": [
            45,
            99
          ]
        },
        {
          "Unix": [
            115,
            101,
            116,
            32,
            45,
            120,
            101,
            117,
            111,
            32,
            112,
            105,
            112,
            101,
            102,
            97,
            105,
            108,
            10,
            108,
            110,
            32,
            45,
            115,
            102,
            32,
            47,
            99,
            105,
            32,
            47,
            119,
            111,
            114,
            107,
            115,
            112,
            97,
            99,
            101,
            10
          ]
        }
      ],
      "timestamp": {
        "secs_since_epoch": 1778187980,
        "nanos_since_epoch": 164816774
      },
      "log_source": "Plan"
    }
  15. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "",
      "stderr": "+ ln -sf /ci /workspace\n",
      "timestamp": {
        "secs_since_epoch": 1778187980,
        "nanos_since_epoch": 176359518
      },
      "log_source": "Plan"
    }
  16. {
      "type": "action_succeeded",
      "action": "shell",
      "shell": "ln -sf /ci /workspace",
      "timestamp": {
        "secs_since_epoch": 1778187980,
        "nanos_since_epoch": 176792061
      },
      "log_source": "Plan"
    }
  17. {
      "type": "execute_action",
      "action": "shell",
      "shell": "git config --global user.name 'Ambient CI'",
      "timestamp": {
        "secs_since_epoch": 1778187980,
        "nanos_since_epoch": 176798047
      },
      "log_source": "Plan"
    }
  18. {
      "type": "start_program",
      "argv": [
        {
          "Unix": [
            98,
            97,
            115,
            104
          ]
        },
        {
          "Unix": [
            45,
            99
          ]
        },
        {
          "Unix": [
            115,
            101,
            116,
            32,
            45,
            120,
            101,
            117,
            111,
            32,
            112,
            105,
            112,
            101,
            102,
            97,
            105,
            108,
            10,
            103,
            105,
            116,
            32,
            99,
            111,
            110,
            102,
            105,
            103,
            32,
            45,
            45,
            103,
            108,
            111,
            98,
            97,
            108,
            32,
            117,
            115,
            101,
            114,
            46,
            110,
            97,
            109,
            101,
            32,
            39,
            65,
            109,
            98,
            105,
            101,
            110,
            116,
            32,
            67,
            73,
            39,
            10
          ]
        }
      ],
      "timestamp": {
        "secs_since_epoch": 1778187980,
        "nanos_since_epoch": 177004682
      },
      "log_source": "Plan"
    }
  19. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "",
      "stderr": "+ git config --global user.name 'Ambient CI'\n",
      "timestamp": {
        "secs_since_epoch": 1778187980,
        "nanos_since_epoch": 194801887
      },
      "log_source": "Plan"
    }
  20. {
      "type": "action_succeeded",
      "action": "shell",
      "shell": "git config --global user.name 'Ambient CI'",
      "timestamp": {
        "secs_since_epoch": 1778187980,
        "nanos_since_epoch": 198048550
      },
      "log_source": "Plan"
    }
  21. {
      "type": "execute_action",
      "action": "shell",
      "shell": "git config --global user.email ambient@example.com",
      "timestamp": {
        "secs_since_epoch": 1778187980,
        "nanos_since_epoch": 200898288
      },
      "log_source": "Plan"
    }
  22. {
      "type": "start_program",
      "argv": [
        {
          "Unix": [
            98,
            97,
            115,
            104
          ]
        },
        {
          "Unix": [
            45,
            99
          ]
        },
        {
          "Unix": [
            115,
            101,
            116,
            32,
            45,
            120,
            101,
            117,
            111,
            32,
            112,
            105,
            112,
            101,
            102,
            97,
            105,
            108,
            10,
            103,
            105,
            116,
            32,
            99,
            111,
            110,
            102,
            105,
            103,
            32,
            45,
            45,
            103,
            108,
            111,
            98,
            97,
            108,
            32,
            117,
            115,
            101,
            114,
            46,
            101,
            109,
            97,
            105,
            108,
            32,
            97,
            109,
            98,
            105,
            101,
            110,
            116,
            64,
            101,
            120,
            97,
            109,
            112,
            108,
            101,
            46,
            99,
            111,
            109,
            10
          ]
        }
      ],
      "timestamp": {
        "secs_since_epoch": 1778187980,
        "nanos_since_epoch": 203754381
      },
      "log_source": "Plan"
    }
  23. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "",
      "stderr": "+ git config --global user.email ambient@example.com\n",
      "timestamp": {
        "secs_since_epoch": 1778187980,
        "nanos_since_epoch": 212408202
      },
      "log_source": "Plan"
    }
  24. {
      "type": "action_succeeded",
      "action": "shell",
      "shell": "git config --global user.email ambient@example.com",
      "timestamp": {
        "secs_since_epoch": 1778187980,
        "nanos_since_epoch": 215543486
      },
      "log_source": "Plan"
    }
  25. {
      "type": "execute_action",
      "action": "cargo_fmt",
      "timestamp": {
        "secs_since_epoch": 1778187980,
        "nanos_since_epoch": 218634008
      },
      "log_source": "Plan"
    }
  26. {
      "type": "start_program",
      "argv": [
        {
          "Unix": [
            99,
            97,
            114,
            103,
            111
          ]
        },
        {
          "Unix": [
            45,
            45,
            118,
            101,
            114,
            115,
            105,
            111,
            110
          ]
        }
      ],
      "timestamp": {
        "secs_since_epoch": 1778187980,
        "nanos_since_epoch": 220747920
      },
      "log_source": "Plan"
    }
  27. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "cargo 1.90.0 (840b83a10 2025-07-30)\n",
      "stderr": "",
      "timestamp": {
        "secs_since_epoch": 1778187980,
        "nanos_since_epoch": 282574996
      },
      "log_source": "Plan"
    }
  28. {
      "type": "start_program",
      "argv": [
        {
          "Unix": [
            99,
            97,
            114,
            103,
            111
          ]
        },
        {
          "Unix": [
            99,
            108,
            105,
            112,
            112,
            121
          ]
        },
        {
          "Unix": [
            45,
            45,
            118,
            101,
            114,
            115,
            105,
            111,
            110
          ]
        }
      ],
      "timestamp": {
        "secs_since_epoch": 1778187980,
        "nanos_since_epoch": 285514010
      },
      "log_source": "Plan"
    }
  29. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "clippy 0.1.90 (1159e78c47 2025-09-14)\n",
      "stderr": "",
      "timestamp": {
        "secs_since_epoch": 1778187980,
        "nanos_since_epoch": 358202602
      },
      "log_source": "Plan"
    }
  30. {
      "type": "start_program",
      "argv": [
        {
          "Unix": [
            114,
            117,
            115,
            116,
            99
          ]
        },
        {
          "Unix": [
            45,
            45,
            118,
            101,
            114,
            115,
            105,
            111,
            110
          ]
        }
      ],
      "timestamp": {
        "secs_since_epoch": 1778187980,
        "nanos_since_epoch": 361012604
      },
      "log_source": "Plan"
    }
  31. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "rustc 1.90.0 (1159e78c4 2025-09-14)\n",
      "stderr": "",
      "timestamp": {
        "secs_since_epoch": 1778187980,
        "nanos_since_epoch": 397634052
      },
      "log_source": "Plan"
    }
  32. {
      "type": "start_program",
      "argv": [
        {
          "Unix": [
            99,
            97,
            114,
            103,
            111
          ]
        },
        {
          "Unix": [
            102,
            109,
            116
          ]
        },
        {
          "Unix": [
            45,
            45,
            99,
            104,
            101,
            99,
            107
          ]
        }
      ],
      "timestamp": {
        "secs_since_epoch": 1778187980,
        "nanos_since_epoch": 398113396
      },
      "log_source": "Plan"
    }
  33. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "",
      "stderr": "",
      "timestamp": {
        "secs_since_epoch": 1778187981,
        "nanos_since_epoch": 313794875
      },
      "log_source": "Plan"
    }
  34. {
      "type": "action_succeeded",
      "action": "cargo_fmt",
      "timestamp": {
        "secs_since_epoch": 1778187981,
        "nanos_since_epoch": 314370537
      },
      "log_source": "Plan"
    }
  35. {
      "type": "execute_action",
      "action": "cargo_clippy",
      "timestamp": {
        "secs_since_epoch": 1778187981,
        "nanos_since_epoch": 314583262
      },
      "log_source": "Plan"
    }
  36. {
      "type": "start_program",
      "argv": [
        {
          "Unix": [
            99,
            97,
            114,
            103,
            111
          ]
        },
        {
          "Unix": [
            45,
            45,
            118,
            101,
            114,
            115,
            105,
            111,
            110
          ]
        }
      ],
      "timestamp": {
        "secs_since_epoch": 1778187981,
        "nanos_since_epoch": 314592192
      },
      "log_source": "Plan"
    }
  37. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "cargo 1.90.0 (840b83a10 2025-07-30)\n",
      "stderr": "",
      "timestamp": {
        "secs_since_epoch": 1778187981,
        "nanos_since_epoch": 341687081
      },
      "log_source": "Plan"
    }
  38. {
      "type": "start_program",
      "argv": [
        {
          "Unix": [
            99,
            97,
            114,
            103,
            111
          ]
        },
        {
          "Unix": [
            99,
            108,
            105,
            112,
            112,
            121
          ]
        },
        {
          "Unix": [
            45,
            45,
            118,
            101,
            114,
            115,
            105,
            111,
            110
          ]
        }
      ],
      "timestamp": {
        "secs_since_epoch": 1778187981,
        "nanos_since_epoch": 344433194
      },
      "log_source": "Plan"
    }
  39. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "clippy 0.1.90 (1159e78c47 2025-09-14)\n",
      "stderr": "",
      "timestamp": {
        "secs_since_epoch": 1778187981,
        "nanos_since_epoch": 393038985
      },
      "log_source": "Plan"
    }
  40. {
      "type": "start_program",
      "argv": [
        {
          "Unix": [
            114,
            117,
            115,
            116,
            99
          ]
        },
        {
          "Unix": [
            45,
            45,
            118,
            101,
            114,
            115,
            105,
            111,
            110
          ]
        }
      ],
      "timestamp": {
        "secs_since_epoch": 1778187981,
        "nanos_since_epoch": 393504388
      },
      "log_source": "Plan"
    }
  41. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "rustc 1.90.0 (1159e78c4 2025-09-14)\n",
      "stderr": "",
      "timestamp": {
        "secs_since_epoch": 1778187981,
        "nanos_since_epoch": 429114167
      },
      "log_source": "Plan"
    }
  42. {
      "type": "start_program",
      "argv": [
        {
          "Unix": [
            99,
            97,
            114,
            103,
            111
          ]
        },
        {
          "Unix": [
            99,
            108,
            105,
            112,
            112,
            121
          ]
        },
        {
          "Unix": [
            45,
            45,
            111,
            102,
            102,
            108,
            105,
            110,
            101
          ]
        },
        {
          "Unix": [
            45,
            45,
            108,
            111,
            99,
            107,
            101,
            100
          ]
        },
        {
          "Unix": [
            45,
            45,
            119,
            111,
            114,
            107,
            115,
            112,
            97,
            99,
            101
          ]
        },
        {
          "Unix": [
            45,
            45,
            97,
            108,
            108,
            45,
            116,
            97,
            114,
            103,
            101,
            116,
            115
          ]
        },
        {
          "Unix": [
            45,
            45,
            110,
            111,
            45,
            100,
            101,
            112,
            115
          ]
        },
        {
          "Unix": [
            45,
            45
          ]
        },
        {
          "Unix": [
            45,
            45,
            100,
            101,
            110,
            121
          ]
        },
        {
          "Unix": [
            119,
            97,
            114,
            110,
            105,
            110,
            103,
            115
          ]
        }
      ],
      "timestamp": {
        "secs_since_epoch": 1778187981,
        "nanos_since_epoch": 431858849
      },
      "log_source": "Plan"
    }
  43. {
      "type": "program_failed",
      "exit_code": 101,
      "stdout": "",
      "stderr": "    Checking radicle-crypto v0.17.0 (/ci/src/crates/radicle-crypto)\n    Checking radicle-oid v0.2.0 (/ci/src/crates/radicle-oid)\nerror: this `if` statement can be collapsed\n   --> crates/radicle-crypto/src/ssh/keystore.rs:122:9\n    |\n122 | /         if let Some(path_public) = &self.path_public {\n123 | |             if path_public.exists() {\n124 | |                 return Err(Error::AlreadyInitialized {\n125 | |                     exists: path_public.to_path_buf(),\n...   |\n128 | |         }\n    | |_________^\n    |\n    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if\n    = note: `-D clippy::collapsible-if` implied by `-D warnings`\n    = help: to override `-D warnings` add `#[allow(clippy::collapsible_if)]`\nhelp: collapse nested if block\n    |\n122 ~         if let Some(path_public) = &self.path_public\n123 ~             && path_public.exists() {\n124 |                 return Err(Error::AlreadyInitialized {\n125 |                     exists: path_public.to_path_buf(),\n126 |                 });\n127 ~             }\n    |\n\n    Checking radicle-dag v0.10.0 (/ci/src/crates/radicle-dag)\nerror: could not compile `radicle-crypto` (lib) due to 1 previous error\nwarning: build failed, waiting for other jobs to finish...\nerror: this `if` statement can be collapsed\n   --> crates/radicle-dag/src/lib.rs:333:13\n    |\n333 | /             if let Some(node) = self.graph.get(&key) {\n334 | |                 if visited.insert(key) {\n335 | |                     nodes.push(key);\n...   |\n341 | |             }\n    | |_____________^\n    |\n    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if\n    = note: `-D clippy::collapsible-if` implied by `-D warnings`\n    = help: to override `-D warnings` add `#[allow(clippy::collapsible_if)]`\nhelp: collapse nested if block\n    |\n333 ~             if let Some(node) = self.graph.get(&key)\n334 ~                 && visited.insert(key) {\n335 |                     nodes.push(key);\n...\n339 |                     }\n340 ~                 }\n    |\n\nerror: this `if` statement can be collapsed\n   --> crates/radicle-dag/src/lib.rs:354:13\n    |\n354 | /             if let Some(node) = self.graph.get(&key) {\n355 | |                 if visited.insert(key) {\n356 | |                     nodes.push(key);\n...   |\n362 | |             }\n    | |_____________^\n    |\n    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if\nhelp: collapse nested if block\n    |\n354 ~             if let Some(node) = self.graph.get(&key)\n355 ~                 && visited.insert(key) {\n356 |                     nodes.push(key);\n...\n360 |                     }\n361 ~                 }\n    |\n\nerror: could not compile `radicle-dag` (lib) due to 2 previous errors\n",
      "timestamp": {
        "secs_since_epoch": 1778187982,
        "nanos_since_epoch": 290452754
      },
      "log_source": "Plan"
    }
  44. {
      "type": "action_failed",
      "action": "cargo_clippy",
      "timestamp": {
        "secs_since_epoch": 1778187982,
        "nanos_since_epoch": 334910091
      },
      "log_source": "Plan"
    }
  45. {
      "type": "executor_ends_in_failure",
      "exit_code": 1,
      "timestamp": {
        "secs_since_epoch": 1778187982,
        "nanos_since_epoch": 338597276
      },
      "log_source": "Plan"
    }

Trigger message

{
  "request": "trigger",
  "version": 1,
  "event_type": "patch",
  "repository": {
    "id": "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5",
    "name": "heartwood",
    "description": "Radicle Heartwood Protocol & Stack",
    "private": false,
    "default_branch": "master",
    "delegates": [
      "did:key:z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT",
      "did:key:z6MktaNvN1KVFMkSRAiN4qK5yvX1zuEEaseeX5sffhzPZRZW",
      "did:key:z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM",
      "did:key:z6MkgFq6z5fkF2hioLLSNu1zP2qEL1aHXHZzGH1FLFGAnBGz",
      "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz"
    ]
  },
  "action": "Created",
  "patch": {
    "id": "a815fd4a50afe9ceb1a0d31427662eb93aaba813",
    "author": {
      "id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
      "alias": "lorenz"
    },
    "title": "rust/msrv: 1.85.0 → 1.88.0",
    "state": {
      "status": "open",
      "conflicts": []
    },
    "before": "6b460c44298afad6599b223e48bdaa3c7f3ad5cc",
    "after": "e9152aa306c31546803c20aab38ade599054ced0",
    "commits": [
      "e9152aa306c31546803c20aab38ade599054ced0"
    ],
    "target": "6b460c44298afad6599b223e48bdaa3c7f3ad5cc",
    "labels": [],
    "assignees": [],
    "revisions": [
      {
        "id": "a815fd4a50afe9ceb1a0d31427662eb93aaba813",
        "author": {
          "id": "did:key:z6MkkPvBfjP4bQmco5Dm7UGsX2ruDBieEHi8n9DVJWX5sTEz",
          "alias": "lorenz"
        },
        "description": "`cargo check` fails because `human-panic` and `sysinfo` require at least\n1.88.0.\n\n    +++ command cargo check --release --locked --all-targets\n    error: rustc 1.85.0 is not supported by the following packages:\n      human-panic@2.0.6 requires rustc 1.88\n      sysinfo@0.37.2 requires rustc 1.88\n\nBump MSRV to fix this.",
        "base": "6b460c44298afad6599b223e48bdaa3c7f3ad5cc",
        "oid": "e9152aa306c31546803c20aab38ade599054ced0",
        "timestamp": 1778187753
      }
    ]
  }
}

Ambient stdout

executor from config: /usr/bin/ambient-execute-plan
executor from PATH: /usr/bin/ambient-execute-plan
run CI for rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5
ERROR: CI run failed inside QEMU

Ambient stderr

<empty log>