CI: SUCCESS radicle-artifact

Table of Contents

Run log

Plan, inside VM without network

plan: Executor starts
After 0.00 seconds at 2026-06-11 15:41:21ZProgram: ambient-execute-plan
Version: 0.14.0@c37ec71
plan: Runnable plan
After 0.00 seconds at 2026-06-11 15:41:21Z
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-06-11 15:41:21Z
  • plan: Start action mkdir: /ci
    After 0.00 seconds at 2026-06-11 15:41:21Z
    Mkdir(
        Mkdir {
            pathname: "/ci",
        },
    )
  • plan: Action succeeded mkdir: /ci
    After 0.00 seconds at 2026-06-11 15:41:21Z
    Mkdir(
        Mkdir {
            pathname: "/ci",
        },
    )
plan: Successful action mkdir: /ci/artifacts
After 0.00 seconds at 2026-06-11 15:41:21Z
  • plan: Start action mkdir: /ci/artifacts
    After 0.00 seconds at 2026-06-11 15:41:21Z
    Mkdir(
        Mkdir {
            pathname: "/ci/artifacts",
        },
    )
  • plan: Action succeeded mkdir: /ci/artifacts
    After 0.00 seconds at 2026-06-11 15:41:21Z
    Mkdir(
        Mkdir {
            pathname: "/ci/artifacts",
        },
    )
plan: Successful action tar_extract
After 0.00 seconds at 2026-06-11 15:41:21Z
  • plan: Start action tar_extract
    After 0.00 seconds at 2026-06-11 15:41:21Z
    TarExtract(
        TarExtract {
            archive: "/dev/vdc",
            directory: "/ci/src",
        },
    )
  • plan: Action succeeded tar_extract
    After 0.00 seconds at 2026-06-11 15:41:21Z
    TarExtract(
        TarExtract {
            archive: "/dev/vdc",
            directory: "/ci/src",
        },
    )
plan: Successful action tar_extract
After 0.03 seconds at 2026-06-11 15:41:21Z
  • plan: Start action tar_extract
    After 0.00 seconds at 2026-06-11 15:41:21Z
    TarExtract(
        TarExtract {
            archive: "/dev/vdf",
            directory: "/ci/deps",
        },
    )
  • plan: Action succeeded tar_extract
    After 0.00 seconds at 2026-06-11 15:41:23Z
    TarExtract(
        TarExtract {
            archive: "/dev/vdf",
            directory: "/ci/deps",
        },
    )
plan: Successful action tar_extract
After 2.07 seconds at 2026-06-11 15:41:23Z
  • plan: Start action tar_extract
    After 0.00 seconds at 2026-06-11 15:41:23Z
    TarExtract(
        TarExtract {
            archive: "/dev/vde",
            directory: "/ci/cache",
        },
    )
  • plan: Action succeeded tar_extract
    After 0.00 seconds at 2026-06-11 15:41:28Z
    TarExtract(
        TarExtract {
            archive: "/dev/vde",
            directory: "/ci/cache",
        },
    )
plan: Successful action shell: ln -sf /ci /workspace
After 7.29 seconds at 2026-06-11 15:41:28Z
  • plan: Start action shell: ln -sf /ci /workspace
    After 0.00 seconds at 2026-06-11 15:41:28Z
    Shell(
        Shell {
            shell: "ln -sf /ci /workspace",
        },
    )
  • plan: Start program bash
    After 0.00 seconds at 2026-06-11 15:41:28Z
    • bash
    • -c
    • set -xeuo pipefail ln -sf /ci /workspace
  • plan: Program succeeded
    After 0.00 seconds at 2026-06-11 15:41:28Z
    Exit code: 0
    Stderr:
    + ln -sf /ci /workspace
    
  • plan: Action succeeded shell: ln -sf /ci /workspace
    After 0.00 seconds at 2026-06-11 15:41:28Z
    Shell(
        Shell {
            shell: "ln -sf /ci /workspace",
        },
    )
plan: Successful action shell: git config --global user.name 'Ambient CI'
After 7.30 seconds at 2026-06-11 15:41:28Z
  • plan: Start action shell: git config --global user.name 'Ambient CI'
    After 0.00 seconds at 2026-06-11 15:41:28Z
    Shell(
        Shell {
            shell: "git config --global user.name 'Ambient CI'",
        },
    )
  • plan: Start program bash
    After 0.00 seconds at 2026-06-11 15:41:28Z
    • bash
    • -c
    • set -xeuo pipefail git config --global user.name 'Ambient CI'
  • plan: Program succeeded
    After 0.00 seconds at 2026-06-11 15:41:28Z
    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-06-11 15:41:28Z
    Shell(
        Shell {
            shell: "git config --global user.name 'Ambient CI'",
        },
    )
plan: Successful action shell: git config --global user.email ambient@example.com
After 7.32 seconds at 2026-06-11 15:41:28Z
  • plan: Start action shell: git config --global user.email ambient@example.com
    After 0.00 seconds at 2026-06-11 15:41:28Z
    Shell(
        Shell {
            shell: "git config --global user.email ambient@example.com",
        },
    )
  • plan: Start program bash
    After 0.00 seconds at 2026-06-11 15:41:28Z
    • bash
    • -c
    • set -xeuo pipefail git config --global user.email ambient@example.com
  • plan: Program succeeded
    After 0.00 seconds at 2026-06-11 15:41:28Z
    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-06-11 15:41:28Z
    Shell(
        Shell {
            shell: "git config --global user.email ambient@example.com",
        },
    )
plan: Successful action cargo_fmt
After 7.33 seconds at 2026-06-11 15:41:28Z
  • plan: Start action cargo_fmt
    After 0.00 seconds at 2026-06-11 15:41:28Z
    CargoFmt(
        CargoFmt,
    )
  • plan: Start program cargo
    After 0.00 seconds at 2026-06-11 15:41:28Z
    • cargo
    • --version
  • plan: Program succeeded
    After 0.00 seconds at 2026-06-11 15:41:28Z
    Exit code: 0
    Stdout:
    cargo 1.95.0 (f2d3ce0bd 2026-03-21)
    
  • plan: Start program cargo
    After 0.00 seconds at 2026-06-11 15:41:28Z
    • cargo
    • clippy
    • --version
  • plan: Program succeeded
    After 0.00 seconds at 2026-06-11 15:41:28Z
    Exit code: 0
    Stdout:
    clippy 0.1.95 (59807616e1 2026-04-14)
    
  • plan: Start program rustc
    After 0.00 seconds at 2026-06-11 15:41:28Z
    • rustc
    • --version
  • plan: Program succeeded
    After 0.00 seconds at 2026-06-11 15:41:28Z
    Exit code: 0
    Stdout:
    rustc 1.95.0 (59807616e 2026-04-14)
    
  • plan: Start program cargo
    After 0.00 seconds at 2026-06-11 15:41:28Z
    • cargo
    • fmt
    • --check
  • plan: Program succeeded
    After 0.00 seconds at 2026-06-11 15:41:28Z
    Exit code: 0
  • plan: Action succeeded cargo_fmt
    After 0.00 seconds at 2026-06-11 15:41:28Z
    CargoFmt(
        CargoFmt,
    )
plan: Successful action cargo_clippy
After 7.61 seconds at 2026-06-11 15:41:28Z
  • plan: Start action cargo_clippy
    After 0.00 seconds at 2026-06-11 15:41:28Z
    CargoClippy(
        CargoClippy,
    )
  • plan: Start program cargo
    After 0.00 seconds at 2026-06-11 15:41:28Z
    • cargo
    • --version
  • plan: Program succeeded
    After 0.00 seconds at 2026-06-11 15:41:28Z
    Exit code: 0
    Stdout:
    cargo 1.95.0 (f2d3ce0bd 2026-03-21)
    
  • plan: Start program cargo
    After 0.00 seconds at 2026-06-11 15:41:28Z
    • cargo
    • clippy
    • --version
  • plan: Program succeeded
    After 0.00 seconds at 2026-06-11 15:41:28Z
    Exit code: 0
    Stdout:
    clippy 0.1.95 (59807616e1 2026-04-14)
    
  • plan: Start program rustc
    After 0.00 seconds at 2026-06-11 15:41:28Z
    • rustc
    • --version
  • plan: Program succeeded
    After 0.00 seconds at 2026-06-11 15:41:28Z
    Exit code: 0
    Stdout:
    rustc 1.95.0 (59807616e 2026-04-14)
    
  • plan: Start program cargo
    After 0.00 seconds at 2026-06-11 15:41:28Z
    • cargo
    • clippy
    • --offline
    • --locked
    • --workspace
    • --all-targets
    • --no-deps
    • --
    • --deny
    • warnings
  • plan: Program succeeded
    After 0.00 seconds at 2026-06-11 15:41:44Z
    Exit code: 0
    Stderr:
        Checking tokio v1.52.3
        Checking radicle-artifact-core v0.14.0 (/ci/src/crates/radicle-artifact-core)
        Checking tokio-util v0.7.18
        Checking tokio-rustls v0.26.4
        Checking tower v0.5.3
        Checking h2 v0.4.14
        Checking n0-future v0.3.2
        Checking netlink-sys v0.8.8
        Checking tower-http v0.6.10
        Checking tokio-stream v0.1.18
        Checking noq v1.0.0-rc.1
        Checking netdev v0.43.0
        Checking netlink-proto v0.12.0
        Checking n0-watcher v1.0.0-rc.0
        Checking netwatch v0.18.0
        Checking tokio-websockets v0.13.2
        Checking radicle-artifact-client v0.14.0 (/ci/src/crates/radicle-artifact-client)
        Checking hyper v1.9.0
        Checking hickory-net v0.26.1
        Checking hyper-util v0.1.20
        Checking hickory-resolver v0.26.1
        Checking hyper-rustls v0.27.9
        Checking igd-next v0.17.0
        Checking reqwest v0.13.3
        Checking portmapper v0.18.0
        Checking iroh-dns v1.0.0-rc.1
        Checking backon v1.6.0
        Checking iroh-relay v1.0.0-rc.1
        Checking iroh-io v0.6.2
        Checking bao-tree v0.16.0
        Checking irpc v0.16.0
        Checking iroh v1.0.0-rc.1
        Checking radicle-artifact v0.14.0 (/ci/src/crates/radicle-artifact)
        Checking iroh-util v0.5.0
        Checking iroh-blobs v0.102.0
        Checking radicle-artifact-node v0.14.0 (/ci/src/crates/radicle-artifact-node)
        Finished `dev` profile [unoptimized + debuginfo] target(s) in 15.97s
    
  • plan: Action succeeded cargo_clippy
    After 0.00 seconds at 2026-06-11 15:41:44Z
    CargoClippy(
        CargoClippy,
    )
plan: Successful action cargo_test
After 23.76 seconds at 2026-06-11 15:41:44Z
  • plan: Start action cargo_test
    After 0.00 seconds at 2026-06-11 15:41:44Z
    CargoTest(
        CargoTest,
    )
  • plan: Start program cargo
    After 0.00 seconds at 2026-06-11 15:41:44Z
    • cargo
    • --version
  • plan: Program succeeded
    After 0.00 seconds at 2026-06-11 15:41:44Z
    Exit code: 0
    Stdout:
    cargo 1.95.0 (f2d3ce0bd 2026-03-21)
    
  • plan: Start program cargo
    After 0.00 seconds at 2026-06-11 15:41:44Z
    • cargo
    • clippy
    • --version
  • plan: Program succeeded
    After 0.00 seconds at 2026-06-11 15:41:44Z
    Exit code: 0
    Stdout:
    clippy 0.1.95 (59807616e1 2026-04-14)
    
  • plan: Start program rustc
    After 0.00 seconds at 2026-06-11 15:41:44Z
    • rustc
    • --version
  • plan: Program succeeded
    After 0.00 seconds at 2026-06-11 15:41:44Z
    Exit code: 0
    Stdout:
    rustc 1.95.0 (59807616e 2026-04-14)
    
  • plan: Start program cargo
    After 0.00 seconds at 2026-06-11 15:41:44Z
    • cargo
    • test
    • --offline
    • --locked
    • --workspace
  • plan: Program succeeded
    After 0.00 seconds at 2026-06-11 15:43:37Z
    Exit code: 0
    Stdout:
    running 58 tests
    test display::tests::describe_progress_maps_every_frame ... ok
    test lifecycle::tests::log_path_is_under_artifacts_dir ... ok
    test lifecycle::tests::rotate_log_moves_current_to_dot_one ... ok
    test test::add_location_for_missing_cid_is_noop ... ok
    test test::attest_missing_cid_is_noop ... ok
    test test::author_self_attestation_is_noop ... ok
    test test::attestation_persists_through_reload ... ok
    test test::create_records_tag_oid ... ok
    test test::create_rejects_commit_oid_as_tag ... ok
    test test::create_rejects_tag_pointing_at_other_commit ... ok
    test test::create_rejects_unknown_tag_oid ... ok
    test test::create_without_tag_leaves_none ... ok
    test test::creator_persists_through_reload ... ok
    test test::display_marks_seeding_for_local_endpoint_location ... ok
    test test::display_renders_metadata ... ok
    test test::find_by_cid_aggregates_across_different_oids ... ok
    test test::e2e ... ok
    test test::find_by_cid_aggregates_duplicate_oid_releases ... ok
    test test::find_by_cid_finds_across_releases ... ok
    test test::find_by_commit_returns_empty_for_no_match ... ok
    test test::find_by_commit_returns_matching_releases ... ok
    test test::get_mut_not_found ... ok
    test test::idempotent_create ... ok
    test test::idempotent_attestation ... ok
    test test::idempotent_register_artifact ... ok
    test test::locations_by_scheme_duplicate_url_from_two_dids ... ok
    test test::locations_by_scheme_filters_correctly ... ok
    test test::missing_commit ... ok
    test test::metadata_persists_through_reload ... ok
    test test::multi_user_redaction ... ok
    test test::multi_delegate_attestation ... ok
    test test::multi_user_same_reason ... ok
    test test::multiple_locations_per_node ... ok
    test test::non_author_cannot_rename_artifact ... ok
    test test::pretty_renders_compact_and_detailed ... ok
    test test::redact_artifact ... ok
    test test::redact_empty_reason ... ok
    test test::redact_nonexistent_cid_errors ... ok
    test test::redact_reason_too_long ... ok
    test test::redact_only_removes_own_attestation ... ok
    test test::redact_removes_attestation ... ok
    test test::redact_then_attest_is_blocked ... ok
    test test::redact_updates_reason ... ok
    test test::redaction_persists_through_reload ... ok
    test test::register_artifact_wire_name_stays_add_artifact ... ok
    test test::register_artifact_records_author ... ok
    test test::reload_refreshes_from_store ... ok
    test test::remove_location_for_node_that_never_added_is_noop ... ok
    test test::remove_metadata_drops_key ... ok
    test test::remove_metadata_for_missing_key_is_noop ... ok
    test test::set_metadata_accepts_json_object ... ok
    test test::set_metadata_basic ... ok
    test test::set_metadata_for_missing_cid_is_noop ... ok
    test test::set_metadata_rejects_invalid_keys ... ok
    test test::set_metadata_rejects_oversized_value ... ok
    test test::tag_field_default_none_on_old_actions ... ok
    test test::set_metadata_last_writer_wins ... ok
    test test::tag_persists_through_reload ... ok
    
    test result: ok. 58 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.49s
    
    
    running 12 tests
    test reconcile::tests::bare_iroh_is_current_endpoint ... ok
    test reconcile::tests::current_endpoint_not_seeded_is_orphaned_self ... ok
    test reconcile::tests::explicit_current_endpoint_is_current ... ok
    test reconcile::tests::legacy_iroh_scheme_is_stale ... ok
    test reconcile::tests::missing_and_dangling_split_correctly ... ok
    test reconcile::tests::missing_picks_release_with_latest_timestamp ... ok
    test reconcile::tests::legacy_only_cid_is_reported_missing ... ok
    test reconcile::tests::mixed_urls_on_same_cid_split_into_buckets ... ok
    test reconcile::tests::other_endpoint_is_stale ... ok
    test reconcile::tests::seeded_cid_with_no_matching_release_is_dangling ... ok
    test reconcile::tests::seeded_with_current_location_is_not_missing ... ok
    test reconcile::tests::undecodable_host_is_stale ... ok
    
    test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
    
    
    running 3 tests
    test codec::tests::command_round_trip ... ok
    test codec::tests::result_okay_and_error ... ok
    test codec::tests::stream_event_frames ... ok
    
    test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
    
    
    running 39 tests
    test cid::tests::artifact_kind_collection ... ok
    test cid::tests::artifact_kind_blob ... ok
    test cid::tests::artifact_kind_unknown_codec ... ok
    test cid::tests::blake3_hash_to_cid_blob_roundtrip ... ok
    test cid::tests::blake3_hash_to_cid_collection_roundtrip ... ok
    test cid::tests::canonical_walk_normalizes_separators ... ok
    test cid::tests::canonical_walk_returns_absolute_paths ... ok
    test cid::tests::canonical_walk_returns_sorted_entries ... ok
    test cid::tests::canonical_walk_skips_directories ... ok
    test cid::tests::cid_to_blake3_hash_rejects_sha256 ... ok
    test cid::tests::cid_to_blake3_hash_roundtrip ... ok
    test cid::tests::cid_to_blake3_works_with_hashseq_codec ... ok
    test cid::tests::determinism ... ok
    test cid::tests::golden_hash ... ok
    test cid::tests::symlink_is_skipped ... ok
    test keys::tests::display_differs_from_iroh_default ... ok
    test keys::tests::display_is_endpoint_url ... ok
    test keys::tests::from_url_bare_is_none ... ok
    test keys::tests::from_url_garbage_host_errors ... ok
    test keys::tests::from_url_rejects_legacy_iroh_scheme ... ok
    test keys::tests::from_url_wrong_scheme_errors ... ok
    test keys::tests::fromstr_round_trip ... ok
    test keys::tests::is_endpoint_url_only_matches_endpoint_scheme ... ok
    test keys::tests::is_legacy_endpoint_url_matches_only_iroh_scheme ... ok
    test keys::tests::matches_url_rules ... ok
    test keys::tests::radicle_and_iroh_keys_share_same_public_identity ... ok
    test keys::tests::url_round_trip ... ok
    test protocol::tests::wire_snapshot_command_alive ... ok
    test protocol::tests::wire_snapshot_command_has_export_fetch_download ... ok
    test protocol::tests::wire_snapshot_command_result_ok_and_err ... ok
    test protocol::tests::wire_snapshot_command_seed ... ok
    test protocol::tests::wire_snapshot_command_status ... ok
    test protocol::tests::wire_snapshot_command_unseed_and_lookups ... ok
    test protocol::tests::wire_snapshot_fetch_progress ... ok
    test protocol::tests::wire_snapshot_fetch_results ... ok
    test protocol::tests::wire_snapshot_receipts ... ok
    test protocol::tests::wire_snapshot_status_zeroed ... ok
    test protocol::tests::wire_snapshot_stream_event ... ok
    test keys::tests::encrypted_keystore_requires_passphrase ... ok
    
    test result: ok. 39 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.83s
    
    
    running 25 tests
    test fetch::tests::export_collection_rejects_unsafe_member ... ok
    test fetch::tests::export_collection_writes_members ... ok
    test fetch::tests::http_to_store_rejects_mismatch ... ok
    test fetch::tests::safe_join_allows_nested_paths ... ok
    test fetch::tests::safe_join_rejects_traversal_and_absolute ... ok
    test fetch::tests::http_to_store_imports_matching_blob ... ok
    test fetch::tests::scoped_path_removes_dir_on_drop ... ok
    test fetch::tests::scoped_path_removes_file_on_drop ... ok
    test iroh::tests::parse_env_rejects_malformed_value ... ok
    test iroh::tests::default_uses_radworks_endpoints ... ok
    test iroh::tests::parse_relay_urls_comma_separated ... ok
    test iroh::tests::parse_relay_urls_rejects_malformed ... ok
    test node::tests::double_start_errors ... ok
    test node::tests::fetch_and_download_fast_path_and_no_locations ... ok
    test node::tests::has_and_export_round_trip ... ok
    test node::tests::invalid_typed_fields_surface_as_invalid_request ... ok
    test node::tests::malformed_json_surfaces_as_invalid_request ... ok
    test node::tests::node_round_trip ... ok
    test node::tests::run_stream_aborts_on_client_disconnect ... ok
    test node::tests::seed_missing_path_errors ... ok
    test seeder::tests::all_seeded_round_trip ... ok
    test seeder::tests::per_repo_tags_isolate ... ok
    test seeder::tests::seeded_tag_layout ... ok
    test seeder::tests::unregister_unknown_is_noop ... ok
    test node::tests::stale_socket_is_reclaimed ... ok
    
    test result: ok. 25 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 40.22s
    
    
    running 0 tests
    
    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
    
    
    running 1 test
    test streaming_methods_round_trip ... ok
    
    test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 10.05s
    
    
    running 2 tests
    test empty_dir_matches ... ok
    test content_id_matches_iroh_blobs_collection_encoding ... ok
    
    test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
    
    
    running 1 test
    test crates/radicle-artifact/src/lib.rs - (line 13) ... ok
    
    test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.70s
    
    
    running 0 tests
    
    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
    
    
    running 0 tests
    
    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
    
    
    running 0 tests
    
    test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
    
    
    Stderr:
       Compiling tokio v1.52.3
       Compiling radicle-artifact-core v0.14.0 (/ci/src/crates/radicle-artifact-core)
       Compiling tokio-util v0.7.18
       Compiling h2 v0.4.14
       Compiling tokio-rustls v0.26.4
       Compiling n0-future v0.3.2
       Compiling tower v0.5.3
       Compiling netlink-sys v0.8.8
       Compiling tower-http v0.6.10
       Compiling tokio-stream v0.1.18
       Compiling noq v1.0.0-rc.1
       Compiling hyper v1.9.0
       Compiling hickory-net v0.26.1
       Compiling hyper-util v0.1.20
       Compiling hickory-resolver v0.26.1
       Compiling hyper-rustls v0.27.9
       Compiling reqwest v0.13.3
       Compiling netlink-proto v0.12.0
       Compiling netdev v0.43.0
       Compiling n0-watcher v1.0.0-rc.0
       Compiling radicle-artifact-client v0.14.0 (/ci/src/crates/radicle-artifact-client)
       Compiling netwatch v0.18.0
       Compiling iroh-dns v1.0.0-rc.1
       Compiling igd-next v0.17.0
       Compiling tokio-websockets v0.13.2
       Compiling iroh-relay v1.0.0-rc.1
       Compiling portmapper v0.18.0
       Compiling backon v1.6.0
       Compiling iroh-io v0.6.2
       Compiling bao-tree v0.16.0
       Compiling iroh v1.0.0-rc.1
       Compiling irpc v0.16.0
       Compiling radicle-artifact v0.14.0 (/ci/src/crates/radicle-artifact)
       Compiling iroh-util v0.5.0
       Compiling iroh-blobs v0.102.0
       Compiling radicle-artifact-node v0.14.0 (/ci/src/crates/radicle-artifact-node)
        Finished `test` profile [unoptimized + debuginfo] target(s) in 58.97s
         Running unittests src/lib.rs (/ci/cache/cargo-target/debug/deps/radicle_artifact-53e9f8948408895f)
         Running unittests src/bin/rad-artifact/main.rs (/ci/cache/cargo-target/debug/deps/rad_artifact-cf298f63177383e5)
         Running unittests src/lib.rs (/ci/cache/cargo-target/debug/deps/radicle_artifact_client-dcc9f1e2a3b0049c)
         Running unittests src/lib.rs (/ci/cache/cargo-target/debug/deps/radicle_artifact_core-480633a6258782f9)
         Running unittests src/lib.rs (/ci/cache/cargo-target/debug/deps/radicle_artifact_node-73e8b26f25a2445d)
         Running unittests src/main.rs (/ci/cache/cargo-target/debug/deps/rad_artifact_node-9926bc2ef7868382)
         Running tests/client_streaming.rs (/ci/cache/cargo-target/debug/deps/client_streaming-fde229942014b935)
         Running tests/collection_format.rs (/ci/cache/cargo-target/debug/deps/collection_format-36ac20df5afffea2)
       Doc-tests radicle_artifact
       Doc-tests radicle_artifact_client
       Doc-tests radicle_artifact_core
       Doc-tests radicle_artifact_node
    
  • plan: Action succeeded cargo_test
    After 0.00 seconds at 2026-06-11 15:43:37Z
    CargoTest(
        CargoTest,
    )
plan: Successful action tar_create
After 136.65 seconds at 2026-06-11 15:43:37Z
  • plan: Start action tar_create
    After 0.00 seconds at 2026-06-11 15:43:37Z
    TarCreate(
        TarCreate {
            archive: "/dev/vde",
            directory: "/ci/cache",
        },
    )
  • plan: Action succeeded tar_create
    After 0.00 seconds at 2026-06-11 15:43:46Z
    TarCreate(
        TarCreate {
            archive: "/dev/vde",
            directory: "/ci/cache",
        },
    )
plan: Successful action tar_create
After 145.01 seconds at 2026-06-11 15:43:46Z
  • plan: Start action tar_create
    After 0.00 seconds at 2026-06-11 15:43:46Z
    TarCreate(
        TarCreate {
            archive: "/dev/vdd",
            directory: "/ci/artifacts",
        },
    )
  • plan: Action succeeded tar_create
    After 0.00 seconds at 2026-06-11 15:43:46Z
    TarCreate(
        TarCreate {
            archive: "/dev/vdd",
            directory: "/ci/artifacts",
        },
    )
plan: Plan succeeded
After 145.01 seconds at 2026-06-11 15:43:46ZHopefully all is good.

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": 1781192481,
        "nanos_since_epoch": 51934350
      },
      "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": 1781192481,
        "nanos_since_epoch": 52136765
      },
      "log_source": "Plan"
    }
  3. {
      "type": "execute_action",
      "action": "mkdir",
      "pathname": "/ci",
      "timestamp": {
        "secs_since_epoch": 1781192481,
        "nanos_since_epoch": 52200260
      },
      "log_source": "Plan"
    }
  4. {
      "type": "action_succeeded",
      "action": "mkdir",
      "pathname": "/ci",
      "timestamp": {
        "secs_since_epoch": 1781192481,
        "nanos_since_epoch": 52724176
      },
      "log_source": "Plan"
    }
  5. {
      "type": "execute_action",
      "action": "mkdir",
      "pathname": "/ci/artifacts",
      "timestamp": {
        "secs_since_epoch": 1781192481,
        "nanos_since_epoch": 52869689
      },
      "log_source": "Plan"
    }
  6. {
      "type": "action_succeeded",
      "action": "mkdir",
      "pathname": "/ci/artifacts",
      "timestamp": {
        "secs_since_epoch": 1781192481,
        "nanos_since_epoch": 52903414
      },
      "log_source": "Plan"
    }
  7. {
      "type": "execute_action",
      "action": "tar_extract",
      "archive": "/dev/vdc",
      "directory": "/ci/src",
      "timestamp": {
        "secs_since_epoch": 1781192481,
        "nanos_since_epoch": 53079216
      },
      "log_source": "Plan"
    }
  8. {
      "type": "action_succeeded",
      "action": "tar_extract",
      "archive": "/dev/vdc",
      "directory": "/ci/src",
      "timestamp": {
        "secs_since_epoch": 1781192481,
        "nanos_since_epoch": 81336805
      },
      "log_source": "Plan"
    }
  9. {
      "type": "execute_action",
      "action": "tar_extract",
      "archive": "/dev/vdf",
      "directory": "/ci/deps",
      "timestamp": {
        "secs_since_epoch": 1781192481,
        "nanos_since_epoch": 81371615
      },
      "log_source": "Plan"
    }
  10. {
      "type": "action_succeeded",
      "action": "tar_extract",
      "archive": "/dev/vdf",
      "directory": "/ci/deps",
      "timestamp": {
        "secs_since_epoch": 1781192483,
        "nanos_since_epoch": 117583889
      },
      "log_source": "Plan"
    }
  11. {
      "type": "execute_action",
      "action": "tar_extract",
      "archive": "/dev/vde",
      "directory": "/ci/cache",
      "timestamp": {
        "secs_since_epoch": 1781192483,
        "nanos_since_epoch": 120246108
      },
      "log_source": "Plan"
    }
  12. {
      "type": "action_succeeded",
      "action": "tar_extract",
      "archive": "/dev/vde",
      "directory": "/ci/cache",
      "timestamp": {
        "secs_since_epoch": 1781192488,
        "nanos_since_epoch": 334966964
      },
      "log_source": "Plan"
    }
  13. {
      "type": "execute_action",
      "action": "shell",
      "shell": "ln -sf /ci /workspace",
      "timestamp": {
        "secs_since_epoch": 1781192488,
        "nanos_since_epoch": 337623553
      },
      "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": 1781192488,
        "nanos_since_epoch": 339953697
      },
      "log_source": "Plan"
    }
  15. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "",
      "stderr": "+ ln -sf /ci /workspace\n",
      "timestamp": {
        "secs_since_epoch": 1781192488,
        "nanos_since_epoch": 347140355
      },
      "log_source": "Plan"
    }
  16. {
      "type": "action_succeeded",
      "action": "shell",
      "shell": "ln -sf /ci /workspace",
      "timestamp": {
        "secs_since_epoch": 1781192488,
        "nanos_since_epoch": 349667293
      },
      "log_source": "Plan"
    }
  17. {
      "type": "execute_action",
      "action": "shell",
      "shell": "git config --global user.name 'Ambient CI'",
      "timestamp": {
        "secs_since_epoch": 1781192488,
        "nanos_since_epoch": 352054142
      },
      "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": 1781192488,
        "nanos_since_epoch": 354650766
      },
      "log_source": "Plan"
    }
  19. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "",
      "stderr": "+ git config --global user.name 'Ambient CI'\n",
      "timestamp": {
        "secs_since_epoch": 1781192488,
        "nanos_since_epoch": 364983915
      },
      "log_source": "Plan"
    }
  20. {
      "type": "action_succeeded",
      "action": "shell",
      "shell": "git config --global user.name 'Ambient CI'",
      "timestamp": {
        "secs_since_epoch": 1781192488,
        "nanos_since_epoch": 367844208
      },
      "log_source": "Plan"
    }
  21. {
      "type": "execute_action",
      "action": "shell",
      "shell": "git config --global user.email ambient@example.com",
      "timestamp": {
        "secs_since_epoch": 1781192488,
        "nanos_since_epoch": 370468740
      },
      "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": 1781192488,
        "nanos_since_epoch": 373140247
      },
      "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": 1781192488,
        "nanos_since_epoch": 380988982
      },
      "log_source": "Plan"
    }
  24. {
      "type": "action_succeeded",
      "action": "shell",
      "shell": "git config --global user.email ambient@example.com",
      "timestamp": {
        "secs_since_epoch": 1781192488,
        "nanos_since_epoch": 383935121
      },
      "log_source": "Plan"
    }
  25. {
      "type": "execute_action",
      "action": "cargo_fmt",
      "timestamp": {
        "secs_since_epoch": 1781192488,
        "nanos_since_epoch": 386665030
      },
      "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": 1781192488,
        "nanos_since_epoch": 388587507
      },
      "log_source": "Plan"
    }
  27. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "cargo 1.95.0 (f2d3ce0bd 2026-03-21)\n",
      "stderr": "",
      "timestamp": {
        "secs_since_epoch": 1781192488,
        "nanos_since_epoch": 420205216
      },
      "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": 1781192488,
        "nanos_since_epoch": 420249391
      },
      "log_source": "Plan"
    }
  29. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "clippy 0.1.95 (59807616e1 2026-04-14)\n",
      "stderr": "",
      "timestamp": {
        "secs_since_epoch": 1781192488,
        "nanos_since_epoch": 476812569
      },
      "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": 1781192488,
        "nanos_since_epoch": 479643937
      },
      "log_source": "Plan"
    }
  31. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "rustc 1.95.0 (59807616e 2026-04-14)\n",
      "stderr": "",
      "timestamp": {
        "secs_since_epoch": 1781192488,
        "nanos_since_epoch": 497448706
      },
      "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": 1781192488,
        "nanos_since_epoch": 500278434
      },
      "log_source": "Plan"
    }
  33. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "",
      "stderr": "",
      "timestamp": {
        "secs_since_epoch": 1781192488,
        "nanos_since_epoch": 666706037
      },
      "log_source": "Plan"
    }
  34. {
      "type": "action_succeeded",
      "action": "cargo_fmt",
      "timestamp": {
        "secs_since_epoch": 1781192488,
        "nanos_since_epoch": 666746633
      },
      "log_source": "Plan"
    }
  35. {
      "type": "execute_action",
      "action": "cargo_clippy",
      "timestamp": {
        "secs_since_epoch": 1781192488,
        "nanos_since_epoch": 666752877
      },
      "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": 1781192488,
        "nanos_since_epoch": 666762223
      },
      "log_source": "Plan"
    }
  37. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "cargo 1.95.0 (f2d3ce0bd 2026-03-21)\n",
      "stderr": "",
      "timestamp": {
        "secs_since_epoch": 1781192488,
        "nanos_since_epoch": 683392237
      },
      "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": 1781192488,
        "nanos_since_epoch": 683422034
      },
      "log_source": "Plan"
    }
  39. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "clippy 0.1.95 (59807616e1 2026-04-14)\n",
      "stderr": "",
      "timestamp": {
        "secs_since_epoch": 1781192488,
        "nanos_since_epoch": 714929337
      },
      "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": 1781192488,
        "nanos_since_epoch": 714967981
      },
      "log_source": "Plan"
    }
  41. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "rustc 1.95.0 (59807616e 2026-04-14)\n",
      "stderr": "",
      "timestamp": {
        "secs_since_epoch": 1781192488,
        "nanos_since_epoch": 731964109
      },
      "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": 1781192488,
        "nanos_since_epoch": 734735273
      },
      "log_source": "Plan"
    }
  43. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "",
      "stderr": "    Checking tokio v1.52.3\n    Checking radicle-artifact-core v0.14.0 (/ci/src/crates/radicle-artifact-core)\n    Checking tokio-util v0.7.18\n    Checking tokio-rustls v0.26.4\n    Checking tower v0.5.3\n    Checking h2 v0.4.14\n    Checking n0-future v0.3.2\n    Checking netlink-sys v0.8.8\n    Checking tower-http v0.6.10\n    Checking tokio-stream v0.1.18\n    Checking noq v1.0.0-rc.1\n    Checking netdev v0.43.0\n    Checking netlink-proto v0.12.0\n    Checking n0-watcher v1.0.0-rc.0\n    Checking netwatch v0.18.0\n    Checking tokio-websockets v0.13.2\n    Checking radicle-artifact-client v0.14.0 (/ci/src/crates/radicle-artifact-client)\n    Checking hyper v1.9.0\n    Checking hickory-net v0.26.1\n    Checking hyper-util v0.1.20\n    Checking hickory-resolver v0.26.1\n    Checking hyper-rustls v0.27.9\n    Checking igd-next v0.17.0\n    Checking reqwest v0.13.3\n    Checking portmapper v0.18.0\n    Checking iroh-dns v1.0.0-rc.1\n    Checking backon v1.6.0\n    Checking iroh-relay v1.0.0-rc.1\n    Checking iroh-io v0.6.2\n    Checking bao-tree v0.16.0\n    Checking irpc v0.16.0\n    Checking iroh v1.0.0-rc.1\n    Checking radicle-artifact v0.14.0 (/ci/src/crates/radicle-artifact)\n    Checking iroh-util v0.5.0\n    Checking iroh-blobs v0.102.0\n    Checking radicle-artifact-node v0.14.0 (/ci/src/crates/radicle-artifact-node)\n    Finished `dev` profile [unoptimized + debuginfo] target(s) in 15.97s\n",
      "timestamp": {
        "secs_since_epoch": 1781192504,
        "nanos_since_epoch": 783719033
      },
      "log_source": "Plan"
    }
  44. {
      "type": "action_succeeded",
      "action": "cargo_clippy",
      "timestamp": {
        "secs_since_epoch": 1781192504,
        "nanos_since_epoch": 806393752
      },
      "log_source": "Plan"
    }
  45. {
      "type": "execute_action",
      "action": "cargo_test",
      "timestamp": {
        "secs_since_epoch": 1781192504,
        "nanos_since_epoch": 808470050
      },
      "log_source": "Plan"
    }
  46. {
      "type": "start_program",
      "argv": [
        {
          "Unix": [
            99,
            97,
            114,
            103,
            111
          ]
        },
        {
          "Unix": [
            45,
            45,
            118,
            101,
            114,
            115,
            105,
            111,
            110
          ]
        }
      ],
      "timestamp": {
        "secs_since_epoch": 1781192504,
        "nanos_since_epoch": 810443141
      },
      "log_source": "Plan"
    }
  47. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "cargo 1.95.0 (f2d3ce0bd 2026-03-21)\n",
      "stderr": "",
      "timestamp": {
        "secs_since_epoch": 1781192504,
        "nanos_since_epoch": 821468449
      },
      "log_source": "Plan"
    }
  48. {
      "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": 1781192504,
        "nanos_since_epoch": 821496362
      },
      "log_source": "Plan"
    }
  49. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "clippy 0.1.95 (59807616e1 2026-04-14)\n",
      "stderr": "",
      "timestamp": {
        "secs_since_epoch": 1781192504,
        "nanos_since_epoch": 853261224
      },
      "log_source": "Plan"
    }
  50. {
      "type": "start_program",
      "argv": [
        {
          "Unix": [
            114,
            117,
            115,
            116,
            99
          ]
        },
        {
          "Unix": [
            45,
            45,
            118,
            101,
            114,
            115,
            105,
            111,
            110
          ]
        }
      ],
      "timestamp": {
        "secs_since_epoch": 1781192504,
        "nanos_since_epoch": 856105971
      },
      "log_source": "Plan"
    }
  51. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "rustc 1.95.0 (59807616e 2026-04-14)\n",
      "stderr": "",
      "timestamp": {
        "secs_since_epoch": 1781192504,
        "nanos_since_epoch": 870740254
      },
      "log_source": "Plan"
    }
  52. {
      "type": "start_program",
      "argv": [
        {
          "Unix": [
            99,
            97,
            114,
            103,
            111
          ]
        },
        {
          "Unix": [
            116,
            101,
            115,
            116
          ]
        },
        {
          "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
          ]
        }
      ],
      "timestamp": {
        "secs_since_epoch": 1781192504,
        "nanos_since_epoch": 873541566
      },
      "log_source": "Plan"
    }
  53. {
      "type": "program_succeeded",
      "exit_code": 0,
      "stdout": "\nrunning 58 tests\ntest display::tests::describe_progress_maps_every_frame ... ok\ntest lifecycle::tests::log_path_is_under_artifacts_dir ... ok\ntest lifecycle::tests::rotate_log_moves_current_to_dot_one ... ok\ntest test::add_location_for_missing_cid_is_noop ... ok\ntest test::attest_missing_cid_is_noop ... ok\ntest test::author_self_attestation_is_noop ... ok\ntest test::attestation_persists_through_reload ... ok\ntest test::create_records_tag_oid ... ok\ntest test::create_rejects_commit_oid_as_tag ... ok\ntest test::create_rejects_tag_pointing_at_other_commit ... ok\ntest test::create_rejects_unknown_tag_oid ... ok\ntest test::create_without_tag_leaves_none ... ok\ntest test::creator_persists_through_reload ... ok\ntest test::display_marks_seeding_for_local_endpoint_location ... ok\ntest test::display_renders_metadata ... ok\ntest test::find_by_cid_aggregates_across_different_oids ... ok\ntest test::e2e ... ok\ntest test::find_by_cid_aggregates_duplicate_oid_releases ... ok\ntest test::find_by_cid_finds_across_releases ... ok\ntest test::find_by_commit_returns_empty_for_no_match ... ok\ntest test::find_by_commit_returns_matching_releases ... ok\ntest test::get_mut_not_found ... ok\ntest test::idempotent_create ... ok\ntest test::idempotent_attestation ... ok\ntest test::idempotent_register_artifact ... ok\ntest test::locations_by_scheme_duplicate_url_from_two_dids ... ok\ntest test::locations_by_scheme_filters_correctly ... ok\ntest test::missing_commit ... ok\ntest test::metadata_persists_through_reload ... ok\ntest test::multi_user_redaction ... ok\ntest test::multi_delegate_attestation ... ok\ntest test::multi_user_same_reason ... ok\ntest test::multiple_locations_per_node ... ok\ntest test::non_author_cannot_rename_artifact ... ok\ntest test::pretty_renders_compact_and_detailed ... ok\ntest test::redact_artifact ... ok\ntest test::redact_empty_reason ... ok\ntest test::redact_nonexistent_cid_errors ... ok\ntest test::redact_reason_too_long ... ok\ntest test::redact_only_removes_own_attestation ... ok\ntest test::redact_removes_attestation ... ok\ntest test::redact_then_attest_is_blocked ... ok\ntest test::redact_updates_reason ... ok\ntest test::redaction_persists_through_reload ... ok\ntest test::register_artifact_wire_name_stays_add_artifact ... ok\ntest test::register_artifact_records_author ... ok\ntest test::reload_refreshes_from_store ... ok\ntest test::remove_location_for_node_that_never_added_is_noop ... ok\ntest test::remove_metadata_drops_key ... ok\ntest test::remove_metadata_for_missing_key_is_noop ... ok\ntest test::set_metadata_accepts_json_object ... ok\ntest test::set_metadata_basic ... ok\ntest test::set_metadata_for_missing_cid_is_noop ... ok\ntest test::set_metadata_rejects_invalid_keys ... ok\ntest test::set_metadata_rejects_oversized_value ... ok\ntest test::tag_field_default_none_on_old_actions ... ok\ntest test::set_metadata_last_writer_wins ... ok\ntest test::tag_persists_through_reload ... ok\n\ntest result: ok. 58 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.49s\n\n\nrunning 12 tests\ntest reconcile::tests::bare_iroh_is_current_endpoint ... ok\ntest reconcile::tests::current_endpoint_not_seeded_is_orphaned_self ... ok\ntest reconcile::tests::explicit_current_endpoint_is_current ... ok\ntest reconcile::tests::legacy_iroh_scheme_is_stale ... ok\ntest reconcile::tests::missing_and_dangling_split_correctly ... ok\ntest reconcile::tests::missing_picks_release_with_latest_timestamp ... ok\ntest reconcile::tests::legacy_only_cid_is_reported_missing ... ok\ntest reconcile::tests::mixed_urls_on_same_cid_split_into_buckets ... ok\ntest reconcile::tests::other_endpoint_is_stale ... ok\ntest reconcile::tests::seeded_cid_with_no_matching_release_is_dangling ... ok\ntest reconcile::tests::seeded_with_current_location_is_not_missing ... ok\ntest reconcile::tests::undecodable_host_is_stale ... ok\n\ntest result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s\n\n\nrunning 3 tests\ntest codec::tests::command_round_trip ... ok\ntest codec::tests::result_okay_and_error ... ok\ntest codec::tests::stream_event_frames ... ok\n\ntest result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s\n\n\nrunning 39 tests\ntest cid::tests::artifact_kind_collection ... ok\ntest cid::tests::artifact_kind_blob ... ok\ntest cid::tests::artifact_kind_unknown_codec ... ok\ntest cid::tests::blake3_hash_to_cid_blob_roundtrip ... ok\ntest cid::tests::blake3_hash_to_cid_collection_roundtrip ... ok\ntest cid::tests::canonical_walk_normalizes_separators ... ok\ntest cid::tests::canonical_walk_returns_absolute_paths ... ok\ntest cid::tests::canonical_walk_returns_sorted_entries ... ok\ntest cid::tests::canonical_walk_skips_directories ... ok\ntest cid::tests::cid_to_blake3_hash_rejects_sha256 ... ok\ntest cid::tests::cid_to_blake3_hash_roundtrip ... ok\ntest cid::tests::cid_to_blake3_works_with_hashseq_codec ... ok\ntest cid::tests::determinism ... ok\ntest cid::tests::golden_hash ... ok\ntest cid::tests::symlink_is_skipped ... ok\ntest keys::tests::display_differs_from_iroh_default ... ok\ntest keys::tests::display_is_endpoint_url ... ok\ntest keys::tests::from_url_bare_is_none ... ok\ntest keys::tests::from_url_garbage_host_errors ... ok\ntest keys::tests::from_url_rejects_legacy_iroh_scheme ... ok\ntest keys::tests::from_url_wrong_scheme_errors ... ok\ntest keys::tests::fromstr_round_trip ... ok\ntest keys::tests::is_endpoint_url_only_matches_endpoint_scheme ... ok\ntest keys::tests::is_legacy_endpoint_url_matches_only_iroh_scheme ... ok\ntest keys::tests::matches_url_rules ... ok\ntest keys::tests::radicle_and_iroh_keys_share_same_public_identity ... ok\ntest keys::tests::url_round_trip ... ok\ntest protocol::tests::wire_snapshot_command_alive ... ok\ntest protocol::tests::wire_snapshot_command_has_export_fetch_download ... ok\ntest protocol::tests::wire_snapshot_command_result_ok_and_err ... ok\ntest protocol::tests::wire_snapshot_command_seed ... ok\ntest protocol::tests::wire_snapshot_command_status ... ok\ntest protocol::tests::wire_snapshot_command_unseed_and_lookups ... ok\ntest protocol::tests::wire_snapshot_fetch_progress ... ok\ntest protocol::tests::wire_snapshot_fetch_results ... ok\ntest protocol::tests::wire_snapshot_receipts ... ok\ntest protocol::tests::wire_snapshot_status_zeroed ... ok\ntest protocol::tests::wire_snapshot_stream_event ... ok\ntest keys::tests::encrypted_keystore_requires_passphrase ... ok\n\ntest result: ok. 39 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.83s\n\n\nrunning 25 tests\ntest fetch::tests::export_collection_rejects_unsafe_member ... ok\ntest fetch::tests::export_collection_writes_members ... ok\ntest fetch::tests::http_to_store_rejects_mismatch ... ok\ntest fetch::tests::safe_join_allows_nested_paths ... ok\ntest fetch::tests::safe_join_rejects_traversal_and_absolute ... ok\ntest fetch::tests::http_to_store_imports_matching_blob ... ok\ntest fetch::tests::scoped_path_removes_dir_on_drop ... ok\ntest fetch::tests::scoped_path_removes_file_on_drop ... ok\ntest iroh::tests::parse_env_rejects_malformed_value ... ok\ntest iroh::tests::default_uses_radworks_endpoints ... ok\ntest iroh::tests::parse_relay_urls_comma_separated ... ok\ntest iroh::tests::parse_relay_urls_rejects_malformed ... ok\ntest node::tests::double_start_errors ... ok\ntest node::tests::fetch_and_download_fast_path_and_no_locations ... ok\ntest node::tests::has_and_export_round_trip ... ok\ntest node::tests::invalid_typed_fields_surface_as_invalid_request ... ok\ntest node::tests::malformed_json_surfaces_as_invalid_request ... ok\ntest node::tests::node_round_trip ... ok\ntest node::tests::run_stream_aborts_on_client_disconnect ... ok\ntest node::tests::seed_missing_path_errors ... ok\ntest seeder::tests::all_seeded_round_trip ... ok\ntest seeder::tests::per_repo_tags_isolate ... ok\ntest seeder::tests::seeded_tag_layout ... ok\ntest seeder::tests::unregister_unknown_is_noop ... ok\ntest node::tests::stale_socket_is_reclaimed ... ok\n\ntest result: ok. 25 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 40.22s\n\n\nrunning 0 tests\n\ntest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s\n\n\nrunning 1 test\ntest streaming_methods_round_trip ... ok\n\ntest result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 10.05s\n\n\nrunning 2 tests\ntest empty_dir_matches ... ok\ntest content_id_matches_iroh_blobs_collection_encoding ... ok\n\ntest result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s\n\n\nrunning 1 test\ntest crates/radicle-artifact/src/lib.rs - (line 13) ... ok\n\ntest result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.70s\n\n\nrunning 0 tests\n\ntest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s\n\n\nrunning 0 tests\n\ntest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s\n\n\nrunning 0 tests\n\ntest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s\n\n",
      "stderr": "   Compiling tokio v1.52.3\n   Compiling radicle-artifact-core v0.14.0 (/ci/src/crates/radicle-artifact-core)\n   Compiling tokio-util v0.7.18\n   Compiling h2 v0.4.14\n   Compiling tokio-rustls v0.26.4\n   Compiling n0-future v0.3.2\n   Compiling tower v0.5.3\n   Compiling netlink-sys v0.8.8\n   Compiling tower-http v0.6.10\n   Compiling tokio-stream v0.1.18\n   Compiling noq v1.0.0-rc.1\n   Compiling hyper v1.9.0\n   Compiling hickory-net v0.26.1\n   Compiling hyper-util v0.1.20\n   Compiling hickory-resolver v0.26.1\n   Compiling hyper-rustls v0.27.9\n   Compiling reqwest v0.13.3\n   Compiling netlink-proto v0.12.0\n   Compiling netdev v0.43.0\n   Compiling n0-watcher v1.0.0-rc.0\n   Compiling radicle-artifact-client v0.14.0 (/ci/src/crates/radicle-artifact-client)\n   Compiling netwatch v0.18.0\n   Compiling iroh-dns v1.0.0-rc.1\n   Compiling igd-next v0.17.0\n   Compiling tokio-websockets v0.13.2\n   Compiling iroh-relay v1.0.0-rc.1\n   Compiling portmapper v0.18.0\n   Compiling backon v1.6.0\n   Compiling iroh-io v0.6.2\n   Compiling bao-tree v0.16.0\n   Compiling iroh v1.0.0-rc.1\n   Compiling irpc v0.16.0\n   Compiling radicle-artifact v0.14.0 (/ci/src/crates/radicle-artifact)\n   Compiling iroh-util v0.5.0\n   Compiling iroh-blobs v0.102.0\n   Compiling radicle-artifact-node v0.14.0 (/ci/src/crates/radicle-artifact-node)\n    Finished `test` profile [unoptimized + debuginfo] target(s) in 58.97s\n     Running unittests src/lib.rs (/ci/cache/cargo-target/debug/deps/radicle_artifact-53e9f8948408895f)\n     Running unittests src/bin/rad-artifact/main.rs (/ci/cache/cargo-target/debug/deps/rad_artifact-cf298f63177383e5)\n     Running unittests src/lib.rs (/ci/cache/cargo-target/debug/deps/radicle_artifact_client-dcc9f1e2a3b0049c)\n     Running unittests src/lib.rs (/ci/cache/cargo-target/debug/deps/radicle_artifact_core-480633a6258782f9)\n     Running unittests src/lib.rs (/ci/cache/cargo-target/debug/deps/radicle_artifact_node-73e8b26f25a2445d)\n     Running unittests src/main.rs (/ci/cache/cargo-target/debug/deps/rad_artifact_node-9926bc2ef7868382)\n     Running tests/client_streaming.rs (/ci/cache/cargo-target/debug/deps/client_streaming-fde229942014b935)\n     Running tests/collection_format.rs (/ci/cache/cargo-target/debug/deps/collection_format-36ac20df5afffea2)\n   Doc-tests radicle_artifact\n   Doc-tests radicle_artifact_client\n   Doc-tests radicle_artifact_core\n   Doc-tests radicle_artifact_node\n",
      "timestamp": {
        "secs_since_epoch": 1781192617,
        "nanos_since_epoch": 549739328
      },
      "log_source": "Plan"
    }
  54. {
      "type": "action_succeeded",
      "action": "cargo_test",
      "timestamp": {
        "secs_since_epoch": 1781192617,
        "nanos_since_epoch": 653001912
      },
      "log_source": "Plan"
    }
  55. {
      "type": "execute_action",
      "action": "tar_create",
      "archive": "/dev/vde",
      "directory": "/ci/cache",
      "timestamp": {
        "secs_since_epoch": 1781192617,
        "nanos_since_epoch": 702968205
      },
      "log_source": "Plan"
    }
  56. {
      "type": "action_succeeded",
      "action": "tar_create",
      "archive": "/dev/vde",
      "directory": "/ci/cache",
      "timestamp": {
        "secs_since_epoch": 1781192626,
        "nanos_since_epoch": 56561401
      },
      "log_source": "Plan"
    }
  57. {
      "type": "execute_action",
      "action": "tar_create",
      "archive": "/dev/vdd",
      "directory": "/ci/artifacts",
      "timestamp": {
        "secs_since_epoch": 1781192626,
        "nanos_since_epoch": 59762021
      },
      "log_source": "Plan"
    }
  58. {
      "type": "action_succeeded",
      "action": "tar_create",
      "archive": "/dev/vdd",
      "directory": "/ci/artifacts",
      "timestamp": {
        "secs_since_epoch": 1781192626,
        "nanos_since_epoch": 66489419
      },
      "log_source": "Plan"
    }
  59. {
      "type": "plan_succeeded",
      "timestamp": {
        "secs_since_epoch": 1781192626,
        "nanos_since_epoch": 66559654
      },
      "log_source": "Plan"
    }
  60. {
      "type": "executor_ends_successfully",
      "timestamp": {
        "secs_since_epoch": 1781192626,
        "nanos_since_epoch": 67297531
      },
      "log_source": "Plan"
    }

Trigger message

{
  "request": "trigger",
  "version": 1,
  "event_type": "patch",
  "repository": {
    "id": "rad:z4VYyJ9KuwMNkXGQnmKuGPGKw3inv",
    "name": "radicle-artifact",
    "description": "Secure artifact distribution for Radicle",
    "private": false,
    "default_branch": "main",
    "delegates": [
      "did:key:z6MktwkohCx8aHZ1QCjVZUiLmX92oPZFxRiFZkbq32Tk5Tkm"
    ]
  },
  "action": "Created",
  "patch": {
    "id": "64652d0ac096c5d73d34c333152c3b0b2f431612",
    "author": {
      "id": "did:key:z6MktwkohCx8aHZ1QCjVZUiLmX92oPZFxRiFZkbq32Tk5Tkm",
      "alias": "2color"
    },
    "title": "refactor: move crate into cargo workspace layout",
    "state": {
      "status": "open",
      "conflicts": []
    },
    "before": "e8124907190fee1b4d5f8a1b902ef1767a63107f",
    "after": "f0b732a9a38324ce4a7d1d51eb8abe5c3f5611ee",
    "commits": [
      "f0b732a9a38324ce4a7d1d51eb8abe5c3f5611ee",
      "8437d1d859b4722b05120e139a931273ce9783d3",
      "641ebd74126e2f593423ff391fb383c9515cc955",
      "ef4e8796b74eda8c81ac67bd48eb1246ff6ab1fa",
      "98aca4ecd99666f472da41f9fd35dbad3b33b972"
    ],
    "target": "e8124907190fee1b4d5f8a1b902ef1767a63107f",
    "labels": [],
    "assignees": [],
    "revisions": [
      {
        "id": "64652d0ac096c5d73d34c333152c3b0b2f431612",
        "author": {
          "id": "did:key:z6MktwkohCx8aHZ1QCjVZUiLmX92oPZFxRiFZkbq32Tk5Tkm",
          "alias": "2color"
        },
        "description": "- relocate package to crates/radicle-artifact\n- hoist shared package metadata into [workspace.package]\n- prepares extraction of core, client, and node crates\n\n\nrefactor: extract radicle-artifact-core crate\n\n- move wire protocol, CID helpers, and endpoint identity into a new\n  radicle-artifact-core crate so protocol consumers (CLI, async\n  embedders) need neither iroh nor tokio\n- depend on iroh-base[key] instead of full iroh for EndpointId and\n  key derivation; pure-crypto deps only, same re-exported types\n- reimplement the iroh-blobs CollectionV0/HashSeq encoding locally\n  for directory CIDs; existing golden-hash test pins the format\n- move ImportMode into the protocol module where it is serialized\n- drop non_exhaustive from protocol types: the node crate must\n  construct and exhaustively match them across the crate boundary,\n  and the workspace versions in lockstep\n\n\nfeat: add radicle-artifact-client crate\n\n- shared line-framing codec plus two transports over the control\n  socket: sync (std sockets, no runtime, for the CLI) and tokio\n  (behind the tokio feature, for async embedders such as a Tauri app)\n- the tokio feature adds tokio only, never iroh, so embedders avoid\n  the seeding dependency tree\n- move ARTIFACTS_DIR into core: client and node must agree on the\n  control socket location\n\n\nrefactor: split node daemon out of radicle-artifact\n\n- new radicle-artifact-node crate owns the iroh stack: daemon accept\n  loop, seeder store, fetch/export, endpoint config\n- new rad-artifact-node binary is a pure foreground daemon; all\n  lifecycle UX stays in the rad-artifact CLI, which now locates and\n  spawns it (sibling of the CLI binary, then PATH)\n- radicle-artifact keeps COB types/ops and the full CLI, now over\n  the sync client; no share feature, no iroh/tokio in its dep tree\n- integration tests in the node crate cover client streaming over\n  both transports and pin core's CollectionV0 encoding against the\n  real iroh-blobs encoding\n\n\ndocs: update release plumbing for workspace split\n\n- README: per-crate install lines and crate overview table\n- CONTEXT.md: record the crate/binary split decision\n- CHANGELOG: highlight the four-crate workspace under Unreleased\n- Makefile/install.sh: build, upload, and install both binaries\n- release.toml: consolidate commits, tag and rewrite changelog once\n  from the lean crate (lockstep workspace version)\n- rad-artifact-node: handle --version/--help so installers can verify\n  the binary runs",
        "base": "e8124907190fee1b4d5f8a1b902ef1767a63107f",
        "oid": "f0b732a9a38324ce4a7d1d51eb8abe5c3f5611ee",
        "timestamp": 1781192464
      }
    ]
  }
}

Ambient stdout

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

Ambient stderr

<empty log>