These raw log messages are meant to help Ambient developers figure out problems. You can ignore them.
{
"type": "executor_starts",
"name": "ambient-execute-plan",
"version": "0.14.0@c37ec71",
"timestamp": {
"secs_since_epoch": 1781192481,
"nanos_since_epoch": 51934350
},
"log_source": "Plan"
}{
"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"
}{
"type": "execute_action",
"action": "mkdir",
"pathname": "/ci",
"timestamp": {
"secs_since_epoch": 1781192481,
"nanos_since_epoch": 52200260
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "mkdir",
"pathname": "/ci",
"timestamp": {
"secs_since_epoch": 1781192481,
"nanos_since_epoch": 52724176
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "mkdir",
"pathname": "/ci/artifacts",
"timestamp": {
"secs_since_epoch": 1781192481,
"nanos_since_epoch": 52869689
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "mkdir",
"pathname": "/ci/artifacts",
"timestamp": {
"secs_since_epoch": 1781192481,
"nanos_since_epoch": 52903414
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "tar_extract",
"archive": "/dev/vdc",
"directory": "/ci/src",
"timestamp": {
"secs_since_epoch": 1781192481,
"nanos_since_epoch": 53079216
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "tar_extract",
"archive": "/dev/vdc",
"directory": "/ci/src",
"timestamp": {
"secs_since_epoch": 1781192481,
"nanos_since_epoch": 81336805
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "tar_extract",
"archive": "/dev/vdf",
"directory": "/ci/deps",
"timestamp": {
"secs_since_epoch": 1781192481,
"nanos_since_epoch": 81371615
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "tar_extract",
"archive": "/dev/vdf",
"directory": "/ci/deps",
"timestamp": {
"secs_since_epoch": 1781192483,
"nanos_since_epoch": 117583889
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "tar_extract",
"archive": "/dev/vde",
"directory": "/ci/cache",
"timestamp": {
"secs_since_epoch": 1781192483,
"nanos_since_epoch": 120246108
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "tar_extract",
"archive": "/dev/vde",
"directory": "/ci/cache",
"timestamp": {
"secs_since_epoch": 1781192488,
"nanos_since_epoch": 334966964
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "shell",
"shell": "ln -sf /ci /workspace",
"timestamp": {
"secs_since_epoch": 1781192488,
"nanos_since_epoch": 337623553
},
"log_source": "Plan"
}{
"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"
}{
"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"
}{
"type": "action_succeeded",
"action": "shell",
"shell": "ln -sf /ci /workspace",
"timestamp": {
"secs_since_epoch": 1781192488,
"nanos_since_epoch": 349667293
},
"log_source": "Plan"
}{
"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"
}{
"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"
}{
"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"
}{
"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"
}{
"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"
}{
"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"
}{
"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"
}{
"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"
}{
"type": "execute_action",
"action": "cargo_fmt",
"timestamp": {
"secs_since_epoch": 1781192488,
"nanos_since_epoch": 386665030
},
"log_source": "Plan"
}{
"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"
}{
"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"
}{
"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"
}{
"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"
}{
"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"
}{
"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"
}{
"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"
}{
"type": "program_succeeded",
"exit_code": 0,
"stdout": "",
"stderr": "",
"timestamp": {
"secs_since_epoch": 1781192488,
"nanos_since_epoch": 666706037
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "cargo_fmt",
"timestamp": {
"secs_since_epoch": 1781192488,
"nanos_since_epoch": 666746633
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "cargo_clippy",
"timestamp": {
"secs_since_epoch": 1781192488,
"nanos_since_epoch": 666752877
},
"log_source": "Plan"
}{
"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"
}{
"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"
}{
"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"
}{
"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"
}{
"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"
}{
"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"
}{
"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"
}{
"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"
}{
"type": "action_succeeded",
"action": "cargo_clippy",
"timestamp": {
"secs_since_epoch": 1781192504,
"nanos_since_epoch": 806393752
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "cargo_test",
"timestamp": {
"secs_since_epoch": 1781192504,
"nanos_since_epoch": 808470050
},
"log_source": "Plan"
}{
"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"
}{
"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"
}{
"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"
}{
"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"
}{
"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"
}{
"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"
}{
"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"
}{
"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"
}{
"type": "action_succeeded",
"action": "cargo_test",
"timestamp": {
"secs_since_epoch": 1781192617,
"nanos_since_epoch": 653001912
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "tar_create",
"archive": "/dev/vde",
"directory": "/ci/cache",
"timestamp": {
"secs_since_epoch": 1781192617,
"nanos_since_epoch": 702968205
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "tar_create",
"archive": "/dev/vde",
"directory": "/ci/cache",
"timestamp": {
"secs_since_epoch": 1781192626,
"nanos_since_epoch": 56561401
},
"log_source": "Plan"
}{
"type": "execute_action",
"action": "tar_create",
"archive": "/dev/vdd",
"directory": "/ci/artifacts",
"timestamp": {
"secs_since_epoch": 1781192626,
"nanos_since_epoch": 59762021
},
"log_source": "Plan"
}{
"type": "action_succeeded",
"action": "tar_create",
"archive": "/dev/vdd",
"directory": "/ci/artifacts",
"timestamp": {
"secs_since_epoch": 1781192626,
"nanos_since_epoch": 66489419
},
"log_source": "Plan"
}{
"type": "plan_succeeded",
"timestamp": {
"secs_since_epoch": 1781192626,
"nanos_since_epoch": 66559654
},
"log_source": "Plan"
}{
"type": "executor_ends_successfully",
"timestamp": {
"secs_since_epoch": 1781192626,
"nanos_since_epoch": 67297531
},
"log_source": "Plan"
}{
"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
}
]
}
}executor from config: /usr/bin/ambient-execute-plan executor from PATH: /usr/bin/ambient-execute-plan run CI for rad:z4VYyJ9KuwMNkXGQnmKuGPGKw3inv
<empty log>