CI: FAILURE radicle-artifact

Table of Contents

Run log

Plan, inside VM without network

plan: Executor starts
After 0.00 seconds at 2026-04-24 13:56:46ZProgram: ambient-execute-plan
Version: 0.14.0@c37ec71
plan: Runnable plan
After 0.00 seconds at 2026-04-24 13:56:46Z
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_test
- 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-04-24 13:56:46Z
  • plan: Start action mkdir: /ci
    After 0.00 seconds at 2026-04-24 13:56:46Z
    Mkdir(
        Mkdir {
            pathname: "/ci",
        },
    )
  • plan: Action succeeded mkdir: /ci
    After 0.00 seconds at 2026-04-24 13:56:46Z
    Mkdir(
        Mkdir {
            pathname: "/ci",
        },
    )
plan: Successful action mkdir: /ci/artifacts
After 0.00 seconds at 2026-04-24 13:56:46Z
  • plan: Start action mkdir: /ci/artifacts
    After 0.00 seconds at 2026-04-24 13:56:46Z
    Mkdir(
        Mkdir {
            pathname: "/ci/artifacts",
        },
    )
  • plan: Action succeeded mkdir: /ci/artifacts
    After 0.00 seconds at 2026-04-24 13:56:46Z
    Mkdir(
        Mkdir {
            pathname: "/ci/artifacts",
        },
    )
plan: Successful action tar_extract
After 0.00 seconds at 2026-04-24 13:56:46Z
  • plan: Start action tar_extract
    After 0.00 seconds at 2026-04-24 13:56:46Z
    TarExtract(
        TarExtract {
            archive: "/dev/vdc",
            directory: "/ci/src",
        },
    )
  • plan: Action succeeded tar_extract
    After 0.00 seconds at 2026-04-24 13:56:46Z
    TarExtract(
        TarExtract {
            archive: "/dev/vdc",
            directory: "/ci/src",
        },
    )
plan: Successful action tar_extract
After 0.03 seconds at 2026-04-24 13:56:46Z
  • plan: Start action tar_extract
    After 0.00 seconds at 2026-04-24 13:56:46Z
    TarExtract(
        TarExtract {
            archive: "/dev/vdf",
            directory: "/ci/deps",
        },
    )
  • plan: Action succeeded tar_extract
    After 0.00 seconds at 2026-04-24 13:56:49Z
    TarExtract(
        TarExtract {
            archive: "/dev/vdf",
            directory: "/ci/deps",
        },
    )
plan: Successful action tar_extract
After 2.70 seconds at 2026-04-24 13:56:49Z
  • plan: Start action tar_extract
    After 0.00 seconds at 2026-04-24 13:56:49Z
    TarExtract(
        TarExtract {
            archive: "/dev/vde",
            directory: "/ci/cache",
        },
    )
  • plan: Action succeeded tar_extract
    After 0.00 seconds at 2026-04-24 13:56:49Z
    TarExtract(
        TarExtract {
            archive: "/dev/vde",
            directory: "/ci/cache",
        },
    )
plan: Successful action shell: ln -sf /ci /workspace
After 2.70 seconds at 2026-04-24 13:56:49Z
  • plan: Start action shell: ln -sf /ci /workspace
    After 0.00 seconds at 2026-04-24 13:56:49Z
    Shell(
        Shell {
            shell: "ln -sf /ci /workspace",
        },
    )
  • plan: Start program bash
    After 0.00 seconds at 2026-04-24 13:56:49Z
    • bash
    • -c
    • set -xeuo pipefail ln -sf /ci /workspace
  • plan: Program succeeded
    After 0.00 seconds at 2026-04-24 13:56:49Z
    Exit code: 0
    Stderr:
    + ln -sf /ci /workspace
    
  • plan: Action succeeded shell: ln -sf /ci /workspace
    After 0.00 seconds at 2026-04-24 13:56:49Z
    Shell(
        Shell {
            shell: "ln -sf /ci /workspace",
        },
    )
plan: Successful action shell: git config --global user.name 'Ambient CI'
After 2.72 seconds at 2026-04-24 13:56:49Z
  • plan: Start action shell: git config --global user.name 'Ambient CI'
    After 0.00 seconds at 2026-04-24 13:56:49Z
    Shell(
        Shell {
            shell: "git config --global user.name 'Ambient CI'",
        },
    )
  • plan: Start program bash
    After 0.00 seconds at 2026-04-24 13:56:49Z
    • bash
    • -c
    • set -xeuo pipefail git config --global user.name 'Ambient CI'
  • plan: Program succeeded
    After 0.00 seconds at 2026-04-24 13:56:49Z
    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-04-24 13:56:49Z
    Shell(
        Shell {
            shell: "git config --global user.name 'Ambient CI'",
        },
    )
plan: Successful action shell: git config --global user.email ambient@example.com
After 2.76 seconds at 2026-04-24 13:56:49Z
  • plan: Start action shell: git config --global user.email ambient@example.com
    After 0.00 seconds at 2026-04-24 13:56:49Z
    Shell(
        Shell {
            shell: "git config --global user.email ambient@example.com",
        },
    )
  • plan: Start program bash
    After 0.00 seconds at 2026-04-24 13:56:49Z
    • bash
    • -c
    • set -xeuo pipefail git config --global user.email ambient@example.com
  • plan: Program succeeded
    After 0.00 seconds at 2026-04-24 13:56:49Z
    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-04-24 13:56:49Z
    Shell(
        Shell {
            shell: "git config --global user.email ambient@example.com",
        },
    )
plan: Start action cargo_fmt
After 2.76 seconds at 2026-04-24 13:56:49Z
CargoFmt(
    CargoFmt,
)
plan: Start program cargo
After 2.76 seconds at 2026-04-24 13:56:49Z
  • cargo
  • --version
plan: Program succeeded
After 2.82 seconds at 2026-04-24 13:56:49Z
Exit code: 0
Stdout:
cargo 1.94.0 (85eff7c80 2026-01-15)
plan: Start program cargo
After 2.82 seconds at 2026-04-24 13:56:49Z
  • cargo
  • clippy
  • --version
plan: Program succeeded
After 2.93 seconds at 2026-04-24 13:56:49Z
Exit code: 0
Stdout:
clippy 0.1.94 (4a4ef493e3 2026-03-02)
plan: Start program rustc
After 2.94 seconds at 2026-04-24 13:56:49Z
  • rustc
  • --version
plan: Program succeeded
After 2.98 seconds at 2026-04-24 13:56:49Z
Exit code: 0
Stdout:
rustc 1.94.0 (4a4ef493e 2026-03-02)
plan: Start program cargo
After 2.98 seconds at 2026-04-24 13:56:49Z
  • cargo
  • fmt
  • --check
plan: ERROR: Program failed
After 3.18 seconds at 2026-04-24 13:56:50Z
Exit code: 1
Stdout:
Diff in /ci/src/src/bin/rad-artifact.rs:474:
         redacted,
         all_authors,
     };
-    let show =
-        radicle_artifact::display::Release::new(id, &release, aliases, filters, title);
+    let show = radicle_artifact::display::Release::new(id, &release, aliases, filters, title);
     if use_pretty(pretty, json) {
         println!("{}", show.pretty(verbose));
     } else {
Diff in /ci/src/src/display.rs:207:
                 // Redaction filter: hide artifacts redacted by a trusted
                 // party (the author itself or any repository delegate).
                 if !filters.redacted {
-                    let hidden = artifact.redactions().keys().any(|did| {
-                        *did == *artifact.author() || filters.delegates.contains(did)
-                    });
+                    let hidden = artifact
+                        .redactions()
+                        .keys()
+                        .any(|did| *did == *artifact.author() || filters.delegates.contains(did));
                     if hidden {
                         return false;
                     }
Diff in /ci/src/src/display.rs:312:
                 artifact.cid.clone()
             } else {
                 // Truncate CID to first 6 and last 6 visible chars for column width.
-                format!("{}…{}", &artifact.cid[..6], &artifact.cid[artifact.cid.len() - 6..])
+                format!(
+                    "{}…{}",
+                    &artifact.cid[..6],
+                    &artifact.cid[artifact.cid.len() - 6..]
+                )
             };
             let author = format_did(&artifact.author, &artifact.author_alias, verbose);
             // BTreeMap keeps the summary in a stable, scheme-sorted order.
Diff in /ci/src/src/display.rs:326:
                 .map(|(scheme, count)| format!("{scheme}: {count}"))
                 .collect::<Vec<_>>()
                 .join(", ");
-            rows.push(vec![cid_cell, author, artifact.name.clone(), locations_cell]);
+            rows.push(vec![
+                cid_cell,
+                author,
+                artifact.name.clone(),
+                locations_cell,
+            ]);
 
             if !artifact.attestations.is_empty() {
                 let nodes: Vec<_> = artifact
Diff in /ci/src/src/lib.rs:545:
     /// users concurrently created the release before syncing. Retrieval should
     /// union locations across all of them, so callers building a fetch plan
     /// should aggregate across the returned releases.
-    pub fn find_by_cid(
-        &self,
-        cid: &Cid,
-    ) -> Result<Vec<(ReleaseId, Release)>, cob::store::Error> {
+    pub fn find_by_cid(&self, cid: &Cid) -> Result<Vec<(ReleaseId, Release)>, cob::store::Error> {
         let mut out = Vec::new();
         for result in self.all()? {
             let (id, release) = result?;
Diff in /ci/src/src/lib.rs:1894:
         let cid = test_cid(1);
         {
             let mut r = releases.create(oid, &alice.signer).unwrap();
-            r.add_artifact(cid, "alice-built".into(), &alice.signer).unwrap();
+            r.add_artifact(cid, "alice-built".into(), &alice.signer)
+                .unwrap();
         }
         {
             let mut r = releases.create(oid, &bob.signer).unwrap();
Diff in /ci/src/src/lib.rs:1901:
-            r.add_artifact(cid, "bob-built".into(), &bob.signer).unwrap();
+            r.add_artifact(cid, "bob-built".into(), &bob.signer)
+                .unwrap();
         }
 
         let found = releases.find_by_cid(&cid).unwrap();
Diff in /ci/src/src/share/endpoint.rs:76:
 
     #[test]
     fn default_is_radworks() {
-        assert!(matches!(EndpointPreset::default(), EndpointPreset::Radworks));
+        assert!(matches!(
+            EndpointPreset::default(),
+            EndpointPreset::Radworks
+        ));
     }
 }
 
Diff in /ci/src/src/share/mod.rs:32:
 // Re-export key types for convenience.
 pub use cid_utils::{
     artifact_kind, blake3_hash_to_cid, canonical_walk, cid_to_blake3_hash, compute_blob_cid,
-    compute_content_id,
-    verify_cid, verify_cid_file, ArtifactKind, BLAKE3_HASHSEQ_CODEC, HASH_CODE_BLAKE3, RAW_CODEC,
+    compute_content_id, verify_cid, verify_cid_file, ArtifactKind, BLAKE3_HASHSEQ_CODEC,
+    HASH_CODE_BLAKE3, RAW_CODEC,
 };
 pub use endpoint::EndpointPreset;
 pub use fetch::{download, download_collection, Location};
plan: Action failed: cargo_fmt
After 3.23 seconds at 2026-04-24 13:56:50Z
CargoFmt(
    CargoFmt,
)

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": 1777039006,
        "nanos_since_epoch": 840899600
      },
      "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_test"
        },
        {
          "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": 1777039006,
        "nanos_since_epoch": 841219612
      },
      "log_source": "Plan"
    }
  3. {
      "type": "execute_action",
      "action": "mkdir",
      "pathname": "/ci",
      "timestamp": {
        "secs_since_epoch": 1777039006,
        "nanos_since_epoch": 841278276
      },
      "log_source": "Plan"
    }
  4. {
      "type": "action_succeeded",
      "action": "mkdir",
      "pathname": "/ci",
      "timestamp": {
        "secs_since_epoch": 1777039006,
        "nanos_since_epoch": 841734071
      },
      "log_source": "Plan"
    }
  5. {
      "type": "execute_action",
      "action": "mkdir",
      "pathname": "/ci/artifacts",
      "timestamp": {
        "secs_since_epoch": 1777039006,
        "nanos_since_epoch": 841740011
      },
      "log_source": "Plan"
    }
  6. {
      "type": "action_succeeded",
      "action": "mkdir",
      "pathname": "/ci/artifacts",
      "timestamp": {
        "secs_since_epoch": 1777039006,
        "nanos_since_epoch": 841970381
      },
      "log_source": "Plan"
    }
  7. {
      "type": "execute_action",
      "action": "tar_extract",
      "archive": "/dev/vdc",
      "directory": "/ci/src",
      "timestamp": {
        "secs_since_epoch": 1777039006,
        "nanos_since_epoch": 842154996
      },
      "log_source": "Plan"
    }
  8. {
      "type": "action_succeeded",
      "action": "tar_extract",
      "archive": "/dev/vdc",
      "directory": "/ci/src",
      "timestamp": {
        "secs_since_epoch": 1777039006,
        "nanos_since_epoch": 869975896
      },
      "log_source": "Plan"
    }
  9. {
      "type": "execute_action",
      "action": "tar_extract",
      "archive": "/dev/vdf",
      "directory": "/ci/deps",
      "timestamp": {
        "secs_since_epoch": 1777039006,
        "nanos_since_epoch": 870001099
      },
      "log_source": "Plan"
    }
  10. {
      "type": "action_succeeded",
      "action": "tar_extract",
      "archive": "/dev/vdf",
      "directory": "/ci/deps",
      "timestamp": {
        "secs_since_epoch": 1777039009,
        "nanos_since_epoch": 536520775
      },
      "log_source": "Plan"
    }
  11. {
      "type": "execute_action",
      "action": "tar_extract",
      "archive": "/dev/vde",
      "directory": "/ci/cache",
      "timestamp": {
        "secs_since_epoch": 1777039009,
        "nanos_since_epoch": 539169445
      },
      "log_source": "Plan"
    }
  12. {
      "type": "action_succeeded",
      "action": "tar_extract",
      "archive": "/dev/vde",
      "directory": "/ci/cache",
      "timestamp": {
        "secs_since_epoch": 1777039009,
        "nanos_since_epoch": 543342465
      },
      "log_source": "Plan"
    }
  13. {
      "type": "execute_action",
      "action": "shell",
      "shell": "ln -sf /ci /workspace",
      "timestamp": {
        "secs_since_epoch": 1777039009,
        "nanos_since_epoch": 543370967
      },
      "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": 1777039009,
        "nanos_since_epoch": 543381931
      },
      "log_source": "Plan"
    }
  15. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "",
      "stderr": "+ ln -sf /ci /workspace\n",
      "timestamp": {
        "secs_since_epoch": 1777039009,
        "nanos_since_epoch": 556847422
      },
      "log_source": "Plan"
    }
  16. {
      "type": "action_succeeded",
      "action": "shell",
      "shell": "ln -sf /ci /workspace",
      "timestamp": {
        "secs_since_epoch": 1777039009,
        "nanos_since_epoch": 556893510
      },
      "log_source": "Plan"
    }
  17. {
      "type": "execute_action",
      "action": "shell",
      "shell": "git config --global user.name 'Ambient CI'",
      "timestamp": {
        "secs_since_epoch": 1777039009,
        "nanos_since_epoch": 556899798
      },
      "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": 1777039009,
        "nanos_since_epoch": 556909505
      },
      "log_source": "Plan"
    }
  19. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "",
      "stderr": "+ git config --global user.name 'Ambient CI'\n",
      "timestamp": {
        "secs_since_epoch": 1777039009,
        "nanos_since_epoch": 597871000
      },
      "log_source": "Plan"
    }
  20. {
      "type": "action_succeeded",
      "action": "shell",
      "shell": "git config --global user.name 'Ambient CI'",
      "timestamp": {
        "secs_since_epoch": 1777039009,
        "nanos_since_epoch": 597985108
      },
      "log_source": "Plan"
    }
  21. {
      "type": "execute_action",
      "action": "shell",
      "shell": "git config --global user.email ambient@example.com",
      "timestamp": {
        "secs_since_epoch": 1777039009,
        "nanos_since_epoch": 598325763
      },
      "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": 1777039009,
        "nanos_since_epoch": 598337869
      },
      "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": 1777039009,
        "nanos_since_epoch": 601393779
      },
      "log_source": "Plan"
    }
  24. {
      "type": "action_succeeded",
      "action": "shell",
      "shell": "git config --global user.email ambient@example.com",
      "timestamp": {
        "secs_since_epoch": 1777039009,
        "nanos_since_epoch": 601427911
      },
      "log_source": "Plan"
    }
  25. {
      "type": "execute_action",
      "action": "cargo_fmt",
      "timestamp": {
        "secs_since_epoch": 1777039009,
        "nanos_since_epoch": 601432405
      },
      "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": 1777039009,
        "nanos_since_epoch": 601692323
      },
      "log_source": "Plan"
    }
  27. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "cargo 1.94.0 (85eff7c80 2026-01-15)\n",
      "stderr": "",
      "timestamp": {
        "secs_since_epoch": 1777039009,
        "nanos_since_epoch": 662996215
      },
      "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": 1777039009,
        "nanos_since_epoch": 665816104
      },
      "log_source": "Plan"
    }
  29. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "clippy 0.1.94 (4a4ef493e3 2026-03-02)\n",
      "stderr": "",
      "timestamp": {
        "secs_since_epoch": 1777039009,
        "nanos_since_epoch": 773920039
      },
      "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": 1777039009,
        "nanos_since_epoch": 776770416
      },
      "log_source": "Plan"
    }
  31. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "rustc 1.94.0 (4a4ef493e 2026-03-02)\n",
      "stderr": "",
      "timestamp": {
        "secs_since_epoch": 1777039009,
        "nanos_since_epoch": 822124528
      },
      "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": 1777039009,
        "nanos_since_epoch": 822167943
      },
      "log_source": "Plan"
    }
  33. {
      "type": "program_failed",
      "exit_code": 1,
      "stdout": "Diff in /ci/src/src/bin/rad-artifact.rs:474:\n         redacted,\n         all_authors,\n     };\n-    let show =\n-        radicle_artifact::display::Release::new(id, &release, aliases, filters, title);\n+    let show = radicle_artifact::display::Release::new(id, &release, aliases, filters, title);\n     if use_pretty(pretty, json) {\n         println!(\"{}\", show.pretty(verbose));\n     } else {\nDiff in /ci/src/src/display.rs:207:\n                 // Redaction filter: hide artifacts redacted by a trusted\n                 // party (the author itself or any repository delegate).\n                 if !filters.redacted {\n-                    let hidden = artifact.redactions().keys().any(|did| {\n-                        *did == *artifact.author() || filters.delegates.contains(did)\n-                    });\n+                    let hidden = artifact\n+                        .redactions()\n+                        .keys()\n+                        .any(|did| *did == *artifact.author() || filters.delegates.contains(did));\n                     if hidden {\n                         return false;\n                     }\nDiff in /ci/src/src/display.rs:312:\n                 artifact.cid.clone()\n             } else {\n                 // Truncate CID to first 6 and last 6 visible chars for column width.\n-                format!(\"{}…{}\", &artifact.cid[..6], &artifact.cid[artifact.cid.len() - 6..])\n+                format!(\n+                    \"{}…{}\",\n+                    &artifact.cid[..6],\n+                    &artifact.cid[artifact.cid.len() - 6..]\n+                )\n             };\n             let author = format_did(&artifact.author, &artifact.author_alias, verbose);\n             // BTreeMap keeps the summary in a stable, scheme-sorted order.\nDiff in /ci/src/src/display.rs:326:\n                 .map(|(scheme, count)| format!(\"{scheme}: {count}\"))\n                 .collect::<Vec<_>>()\n                 .join(\", \");\n-            rows.push(vec![cid_cell, author, artifact.name.clone(), locations_cell]);\n+            rows.push(vec![\n+                cid_cell,\n+                author,\n+                artifact.name.clone(),\n+                locations_cell,\n+            ]);\n \n             if !artifact.attestations.is_empty() {\n                 let nodes: Vec<_> = artifact\nDiff in /ci/src/src/lib.rs:545:\n     /// users concurrently created the release before syncing. Retrieval should\n     /// union locations across all of them, so callers building a fetch plan\n     /// should aggregate across the returned releases.\n-    pub fn find_by_cid(\n-        &self,\n-        cid: &Cid,\n-    ) -> Result<Vec<(ReleaseId, Release)>, cob::store::Error> {\n+    pub fn find_by_cid(&self, cid: &Cid) -> Result<Vec<(ReleaseId, Release)>, cob::store::Error> {\n         let mut out = Vec::new();\n         for result in self.all()? {\n             let (id, release) = result?;\nDiff in /ci/src/src/lib.rs:1894:\n         let cid = test_cid(1);\n         {\n             let mut r = releases.create(oid, &alice.signer).unwrap();\n-            r.add_artifact(cid, \"alice-built\".into(), &alice.signer).unwrap();\n+            r.add_artifact(cid, \"alice-built\".into(), &alice.signer)\n+                .unwrap();\n         }\n         {\n             let mut r = releases.create(oid, &bob.signer).unwrap();\nDiff in /ci/src/src/lib.rs:1901:\n-            r.add_artifact(cid, \"bob-built\".into(), &bob.signer).unwrap();\n+            r.add_artifact(cid, \"bob-built\".into(), &bob.signer)\n+                .unwrap();\n         }\n \n         let found = releases.find_by_cid(&cid).unwrap();\nDiff in /ci/src/src/share/endpoint.rs:76:\n \n     #[test]\n     fn default_is_radworks() {\n-        assert!(matches!(EndpointPreset::default(), EndpointPreset::Radworks));\n+        assert!(matches!(\n+            EndpointPreset::default(),\n+            EndpointPreset::Radworks\n+        ));\n     }\n }\n \nDiff in /ci/src/src/share/mod.rs:32:\n // Re-export key types for convenience.\n pub use cid_utils::{\n     artifact_kind, blake3_hash_to_cid, canonical_walk, cid_to_blake3_hash, compute_blob_cid,\n-    compute_content_id,\n-    verify_cid, verify_cid_file, ArtifactKind, BLAKE3_HASHSEQ_CODEC, HASH_CODE_BLAKE3, RAW_CODEC,\n+    compute_content_id, verify_cid, verify_cid_file, ArtifactKind, BLAKE3_HASHSEQ_CODEC,\n+    HASH_CODE_BLAKE3, RAW_CODEC,\n };\n pub use endpoint::EndpointPreset;\n pub use fetch::{download, download_collection, Location};\n",
      "stderr": "",
      "timestamp": {
        "secs_since_epoch": 1777039010,
        "nanos_since_epoch": 20873443
      },
      "log_source": "Plan"
    }
  34. {
      "type": "action_failed",
      "action": "cargo_fmt",
      "timestamp": {
        "secs_since_epoch": 1777039010,
        "nanos_since_epoch": 71011834
      },
      "log_source": "Plan"
    }
  35. {
      "type": "executor_ends_in_failure",
      "exit_code": 1,
      "timestamp": {
        "secs_since_epoch": 1777039010,
        "nanos_since_epoch": 71642917
      },
      "log_source": "Plan"
    }

Trigger message

{
  "request": "trigger",
  "version": 1,
  "event_type": "patch",
  "repository": {
    "id": "rad:z4VYyJ9KuwMNkXGQnmKuGPGKw3inv",
    "name": "radicle-artifact",
    "description": "A Radicle Collaborative Object (COB) for content-addressed release artifacts and their discovery locations",
    "private": false,
    "default_branch": "main",
    "delegates": [
      "did:key:z6MktwkohCx8aHZ1QCjVZUiLmX92oPZFxRiFZkbq32Tk5Tkm"
    ]
  },
  "action": "Updated",
  "patch": {
    "id": "946e92f12a73f0c70413dc02a91fa52d54a5be48",
    "author": {
      "id": "did:key:z6MktwkohCx8aHZ1QCjVZUiLmX92oPZFxRiFZkbq32Tk5Tkm",
      "alias": "2color"
    },
    "title": "add toy CI plan for Ambient to see if this can work at all",
    "state": {
      "status": "open",
      "conflicts": []
    },
    "before": "e307711348c34582f8bc88eacd2170f537490959",
    "after": "0cfc62c32168f7c44a47df93f97c1511bac625fd",
    "commits": [
      "0cfc62c32168f7c44a47df93f97c1511bac625fd",
      "15f1c1bc41ef269888703c431297858056397687",
      "f7237fa074bb4b836cf66c6d23295e16bc8c316d",
      "7f6ddfa8cf9f7ee6d6c09895045b633e8a300e0c"
    ],
    "target": "e307711348c34582f8bc88eacd2170f537490959",
    "labels": [],
    "assignees": [],
    "revisions": [
      {
        "id": "946e92f12a73f0c70413dc02a91fa52d54a5be48",
        "author": {
          "id": "did:key:z6MktwkohCx8aHZ1QCjVZUiLmX92oPZFxRiFZkbq32Tk5Tkm",
          "alias": "2color"
        },
        "description": "",
        "base": "f7a4921ae7da4a033284005220f349b33fe240c8",
        "oid": "6b150041ef94ad09482cd2eb44ec54966bcb548f",
        "timestamp": 1776962384
      },
      {
        "id": "bbb91de69adf46436ddc984e5681663c7c984321",
        "author": {
          "id": "did:key:z6MktwkohCx8aHZ1QCjVZUiLmX92oPZFxRiFZkbq32Tk5Tkm",
          "alias": "2color"
        },
        "description": "ci: add cargo fmt and test to ambient",
        "base": "f7a4921ae7da4a033284005220f349b33fe240c8",
        "oid": "4718d58bb47a77579af049f81cc30eb1b6c0d3dd",
        "timestamp": 1777038847
      },
      {
        "id": "746da10fe48b602a0a33339c98b894b3edd35b27",
        "author": {
          "id": "did:key:z6MktwkohCx8aHZ1QCjVZUiLmX92oPZFxRiFZkbq32Tk5Tkm",
          "alias": "2color"
        },
        "description": "rebase on main",
        "base": "e307711348c34582f8bc88eacd2170f537490959",
        "oid": "0cfc62c32168f7c44a47df93f97c1511bac625fd",
        "timestamp": 1777038998
      }
    ]
  }
}

Ambient stdout

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

Ambient stderr

<empty log>