[INFO] fetching crate vdsl-sync 0.6.0...
[INFO] testing vdsl-sync-0.6.0 against 1.100.0-beta.1 for beta-1.100-2
[INFO] extracting crate vdsl-sync 0.6.0 into /workspace/builds/worker-3-tc2/source
[INFO] started tweaking crates.io crate vdsl-sync 0.6.0
[INFO] finished tweaking crates.io crate vdsl-sync 0.6.0
[INFO] tweaked toml for crates.io crate vdsl-sync 0.6.0 written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate vdsl-sync 0.6.0 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate vdsl-sync 0.6.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]   --> Cargo.toml:83:12
[INFO] [stderr]    |
[INFO] [stderr] 83 | homepage = "https://github.com/ynishi/vdsl-mcp"
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 88 | repository = "https://github.com/ynishi/vdsl-mcp"
[INFO] [stderr]    |              ------------------------------------
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `vdsl-sync` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 7721e3adb97c3fd4e75a0fdee8b2b4951ee40f23e575fdd6895e117aec056f7b
[INFO] running `Command { std: "docker" "start" "7721e3adb97c3fd4e75a0fdee8b2b4951ee40f23e575fdd6895e117aec056f7b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7721e3adb97c3fd4e75a0fdee8b2b4951ee40f23e575fdd6895e117aec056f7b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "7721e3adb97c3fd4e75a0fdee8b2b4951ee40f23e575fdd6895e117aec056f7b" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7721e3adb97c3fd4e75a0fdee8b2b4951ee40f23e575fdd6895e117aec056f7b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "7721e3adb97c3fd4e75a0fdee8b2b4951ee40f23e575fdd6895e117aec056f7b" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]   --> Cargo.toml:83:12
[INFO] [stderr]    |
[INFO] [stderr] 83 | homepage = "https://github.com/ynishi/vdsl-mcp"
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 88 | repository = "https://github.com/ynishi/vdsl-mcp"
[INFO] [stderr]    |              ------------------------------------
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `vdsl-sync` (manifest) generated 1 warning
[INFO] [stderr]    Compiling libc v0.2.182
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling libsqlite3-sys v0.35.0
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling getrandom v0.4.1
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling bytes v1.11.1
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling glob v0.3.3
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling secrecy v0.10.3
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling crossbeam-channel v0.5.15
[INFO] [stderr]    Compiling hashlink v0.10.0
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling socket2 v0.6.2
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling uuid v1.21.0
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling rusqlite v0.37.0
[INFO] [stderr]    Compiling tokio-rusqlite v0.7.0
[INFO] [stderr]    Compiling vdsl-sync v0.6.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 31.58s
[INFO] running `Command { std: "docker" "inspect" "7721e3adb97c3fd4e75a0fdee8b2b4951ee40f23e575fdd6895e117aec056f7b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "7721e3adb97c3fd4e75a0fdee8b2b4951ee40f23e575fdd6895e117aec056f7b" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]   --> Cargo.toml:83:12
[INFO] [stderr]    |
[INFO] [stderr] 83 | homepage = "https://github.com/ynishi/vdsl-mcp"
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 88 | repository = "https://github.com/ynishi/vdsl-mcp"
[INFO] [stderr]    |              ------------------------------------
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `vdsl-sync` (manifest) generated 1 warning
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling fastrand v2.3.0
[INFO] [stderr]    Compiling rusqlite v0.37.0
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling tokio-rusqlite v0.7.0
[INFO] [stderr]    Compiling vdsl-sync v0.6.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling tempfile v3.26.0
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 15.67s
[INFO] running `Command { std: "docker" "inspect" "7721e3adb97c3fd4e75a0fdee8b2b4951ee40f23e575fdd6895e117aec056f7b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "7721e3adb97c3fd4e75a0fdee8b2b4951ee40f23e575fdd6895e117aec056f7b" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]   --> Cargo.toml:83:12
[INFO] [stderr]    |
[INFO] [stderr] 83 | homepage = "https://github.com/ynishi/vdsl-mcp"
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 88 | repository = "https://github.com/ynishi/vdsl-mcp"
[INFO] [stderr]    |              ------------------------------------
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `vdsl-sync` (manifest) generated 1 warning
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.12s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/build/vdsl-sync/102b0e7b51f734bb/out/vdsl_sync-102b0e7b51f734bb)
[INFO] [stdout] 
[INFO] [stdout] running 307 tests
[INFO] [stdout] test application::route::tests::safe_join_empty_root ... ok
[INFO] [stdout] test application::route::tests::safe_join_leading_slash ... ok
[INFO] [stdout] test application::route::tests::safe_join_trailing_slash ... ok
[INFO] [stdout] test application::route::tests::validate_rejects_traversal ... ok
[INFO] [stdout] test application::route::tests::safe_join_normal ... ok
[INFO] [stdout] test application::topology_store::tests::pipeline_batch_discovered_multi_origin ... ok
[INFO] [stdout] test application::route::tests::safe_join_both_slashes ... ok
[INFO] [stdout] test application::route::tests::validate_allows_safe_paths ... ok
[INFO] [stdout] test domain::digest::tests::cross_location_content_digest_mismatch ... ok
[INFO] [stdout] test domain::config::tests::serde_roundtrip ... ok
[INFO] [stdout] test domain::digest::tests::cross_location_no_content_digest_falls_back_to_size ... ok
[INFO] [stdout] test application::topology_store::tests::pipeline_discovered_creates_topology_and_routes_transfers ... ok
[INFO] [stdout] test domain::digest::tests::djb2_different_value_no_match ... ok
[INFO] [stdout] test domain::digest::tests::content_digest_ne ... ok
[INFO] [stdout] test domain::config::tests::zero_max_attempts_clamped ... ok
[INFO] [stdout] test domain::digest::tests::djb2_same_value_matches ... ok
[INFO] [stdout] test application::route::tests::validate_rejects_control_chars ... ok
[INFO] [stdout] test application::topology_store::tests::pipeline_vanished_marks_location_file_missing ... ok
[INFO] [stdout] test domain::config::tests::serde_defaults_on_missing_fields ... ok
[INFO] [stdout] test application::topology_store::tests::pipeline_content_changed_stales_others_and_creates_transfers ... ok
[INFO] [stdout] test domain::digest::tests::content_digest_eq ... ok
[INFO] [stdout] test domain::digest::tests::cross_location_no_content_digest_size_differs ... ok
[INFO] [stdout] test domain::digest::tests::cross_location_one_has_content_digest_falls_back_to_size ... ok
[INFO] [stdout] test domain::digest::tests::parse_prefixed_djb2 ... ok
[INFO] [stdout] test domain::digest::tests::parse_legacy_short_is_djb2 ... ok
[INFO] [stdout] test application::topology_store::tests::pipeline_delete_creates_delete_transfers ... ok
[INFO] [stdout] test domain::digest::tests::cross_algorithm_is_error ... ok
[INFO] [stdout] test domain::digest::tests::cross_location_content_digest_match ... ok
[INFO] [stdout] test domain::digest::tests::parse_legacy_long_is_sha256 ... ok
[INFO] [stdout] test domain::config::tests::default_values ... ok
[INFO] [stdout] test application::topology_store::tests::pipeline_put_then_empty_sync_is_consistent ... ok
[INFO] [stdout] test domain::config::tests::retry_policy_derived ... ok
[INFO] [stdout] test domain::digest::tests::meta_digest_eq ... ok
[INFO] [stdout] test domain::distribute::tests::display_send_action ... ok
[INFO] [stdout] test domain::distribute::tests::distribute_delete_skips_location_without_file ... ok
[INFO] [stdout] test domain::distribute::tests::distribute_delete_targets_existing_locations ... ok
[INFO] [stdout] test domain::distribute::tests::distribute_detects_conflict_when_origins_have_different_fingerprints ... ok
[INFO] [stdout] test domain::distribute::tests::distribute_excludes_ingest_origin ... ok
[INFO] [stdout] test domain::distribute::tests::display_delete_action ... ok
[INFO] [stdout] test domain::distribute::tests::distribute_skips_syncing_location ... ok
[INFO] [stdout] test domain::distribute::tests::distribute_skips_up_to_date_location ... ok
[INFO] [stdout] test domain::distribute::tests::distribute_conflict_skips_update_but_allows_send ... ok
[INFO] [stdout] test domain::distribute::tests::distribute_updates_stale_location ... ok
[INFO] [stdout] test domain::file_type::tests::from_extension_images ... ok
[INFO] [stdout] test domain::distribute::tests::send_action_accessors ... ok
[INFO] [stdout] test domain::digest::tests::parse_prefixed_sha256 ... ok
[INFO] [stdout] test domain::distribute::tests::update_action_accessors ... ok
[INFO] [stdout] test domain::file_type::tests::display ... ok
[INFO] [stdout] test domain::file_type::tests::from_extension_assets ... ok
[INFO] [stdout] test domain::distribute::tests::distribute_no_conflict_when_origins_have_same_fingerprint ... ok
[INFO] [stdout] test domain::digest::tests::roundtrip_prefixed ... ok
[INFO] [stdout] test domain::digest::tests::serde_roundtrip ... ok
[INFO] [stdout] test domain::digest::tests::sha256_same_value_matches ... ok
[INFO] [stdout] test domain::distribute::tests::delete_action_accessors ... ok
[INFO] [stdout] test domain::file_type::tests::invalid_legacy_recipe ... ok
[INFO] [stdout] test domain::file_type::tests::invalid_type ... ok
[INFO] [stdout] test domain::file_type::tests::roundtrip ... ok
[INFO] [stdout] test domain::fingerprint::tests::matches_byte_level_trumps_semantic ... ok
[INFO] [stdout] test domain::distribute::tests::distribute_picks_active_source_when_no_origin ... ok
[INFO] [stdout] test domain::distribute::tests::distribute_sends_to_location_without_file ... ok
[INFO] [stdout] test domain::file_type::tests::serde_roundtrip ... ok
[INFO] [stdout] test domain::distribute::tests::distribute_skips_archived_location ... ok
[INFO] [stdout] test domain::fingerprint::tests::content_same_meta_different_means_meta_only_change ... ok
[INFO] [stdout] test domain::fingerprint::tests::cross_algorithm_falls_back_to_size ... ok
[INFO] [stdout] test domain::fingerprint::tests::matches_hash_vs_metadata_size_differs ... ok
[INFO] [stdout] test domain::fingerprint::tests::entity_model_content_change_is_detected ... ok
[INFO] [stdout] test domain::fingerprint::tests::effective_precision_downgrades ... ok
[INFO] [stdout] test domain::file_type::tests::invalid_legacy_db ... ok
[INFO] [stdout] test domain::fingerprint::tests::matches_meta_digest_fallback_different ... ok
[INFO] [stdout] test domain::fingerprint::tests::matches_metadata_mtime_differs ... ok
[INFO] [stdout] test domain::fingerprint::tests::matches_metadata_same ... ok
[INFO] [stdout] test domain::fingerprint::tests::matches_size_only_different ... ok
[INFO] [stdout] test domain::fingerprint::tests::matches_size_only_same ... ok
[INFO] [stdout] test domain::fingerprint::tests::precision_byte_level ... ok
[INFO] [stdout] test domain::fingerprint::tests::entity_model_reexport_with_ts_in_meta ... ok
[INFO] [stdout] test domain::fingerprint::tests::entity_model_meta_change_does_not_break_identity ... ok
[INFO] [stdout] test domain::fingerprint::tests::effective_precision_same_level ... ok
[INFO] [stdout] test domain::fingerprint::tests::matches_semantic_fallback_same ... ok
[INFO] [stdout] test domain::fingerprint::tests::precision_display ... ok
[INFO] [stdout] test domain::fingerprint::tests::matches_byte_level_different_trumps_semantic ... ok
[INFO] [stdout] test domain::fingerprint::tests::precision_meta_level ... ok
[INFO] [stdout] test domain::fingerprint::tests::precision_ordering ... ok
[INFO] [stdout] test domain::fingerprint::tests::precision_semantic ... ok
[INFO] [stdout] test domain::fingerprint::tests::precision_size_only ... ok
[INFO] [stdout] test domain::fingerprint::tests::precision_semantic_trumps_meta ... ok
[INFO] [stdout] test domain::graph::tests::add_and_has ... ok
[INFO] [stdout] test domain::graph::tests::destinations_ordered_chain ... ok
[INFO] [stdout] test domain::graph::tests::destinations_ordered_diamond ... ok
[INFO] [stdout] test domain::graph::tests::destinations_ordered_empty_graph ... ok
[INFO] [stdout] test domain::graph::tests::direct_from ... ok
[INFO] [stdout] test domain::graph::tests::multi_source_empty_targets ... ok
[INFO] [stdout] test domain::fingerprint::tests::matches_meta_digest_fallback_same ... ok
[INFO] [stdout] test domain::fingerprint::tests::matches_semantic_fallback_different ... ok
[INFO] [stdout] test domain::graph::tests::multi_source_empty_sources ... ok
[INFO] [stdout] test domain::graph::tests::multi_source_picks_cheaper_relay ... ok
[INFO] [stdout] test domain::fingerprint::tests::matches_hash_vs_metadata_size_match ... ok
[INFO] [stdout] test domain::graph::tests::multi_source_target_already_in_sources ... ok
[INFO] [stdout] test domain::graph::tests::optimal_tree_diamond_deduplicates ... ok
[INFO] [stdout] test domain::graph::tests::multi_source_multiple_targets_different_best_sources ... ok
[INFO] [stdout] test domain::graph::tests::multi_source_single_source_fallback ... ok
[INFO] [stdout] test domain::graph::tests::optimal_tree_chain_prefers_single_path ... ok
[INFO] [stdout] test domain::graph::tests::optimal_tree_direct_cheaper ... ok
[INFO] [stdout] test domain::fingerprint::tests::precision_metadata ... ok
[INFO] [stdout] test domain::graph::tests::optimal_tree_empty_dests ... ok
[INFO] [stdout] test domain::graph::tests::optimal_tree_dependency_order ... ok
[INFO] [stdout] test domain::graph::tests::all_destinations ... ok
[INFO] [stdout] test domain::graph::tests::optimal_tree_single_dest ... ok
[INFO] [stdout] test domain::graph::tests::optimal_tree_unreachable_dest_skipped ... ok
[INFO] [stdout] test domain::location::tests::location_id_local ... ok
[INFO] [stdout] test domain::fingerprint::tests::matches_metadata_size_differs ... ok
[INFO] [stdout] test domain::graph::tests::reachable_multi_hop ... ok
[INFO] [stdout] test domain::graph::tests::reachable_isolated_node ... ok
[INFO] [stdout] test domain::graph::tests::reachable_empty_graph ... ok
[INFO] [stdout] test domain::graph::tests::reachable_direct_only ... ok
[INFO] [stdout] test domain::graph::tests::reachable_excludes_origin ... ok
[INFO] [stdout] test domain::graph::tests::reachable_diamond ... ok
[INFO] [stdout] test domain::location::tests::location_id_non_local ... ok
[INFO] [stdout] test domain::graph::tests::remove_edge ... ok
[INFO] [stdout] test domain::location_file::tests::archive_from_syncing ... ok
[INFO] [stdout] test domain::location_file::tests::archive_idempotent ... ok
[INFO] [stdout] test domain::location_file::tests::cloud_different_size_is_changed ... ok
[INFO] [stdout] test domain::location_file::tests::cloud_same_size_not_changed ... ok
[INFO] [stdout] test domain::location_file::tests::active_is_source_eligible ... ok
[INFO] [stdout] test domain::location::tests::location_id_empty_rejected ... ok
[INFO] [stdout] test domain::graph::tests::self_loop_ignored ... ok
[INFO] [stdout] test domain::location::tests::location_id_valid ... ok
[INFO] [stdout] test domain::location::tests::location_id_serde_rejects_invalid ... ok
[INFO] [stdout] test domain::location_file::tests::archived_not_distribute_target ... ok
[INFO] [stdout] test domain::location_file::tests::mark_missing_from_active ... ok
[INFO] [stdout] test domain::location_file::tests::mark_syncing_from_archived_fails ... ok
[INFO] [stdout] test domain::location_file::tests::different_hash_is_changed ... ok
[INFO] [stdout] test domain::location_file::tests::cross_algo_byte_digest_falls_back_to_size ... ok
[INFO] [stdout] test domain::location_file::tests::mark_syncing_from_missing ... ok
[INFO] [stdout] test domain::location_file::tests::is_present_reflects_physical_existence ... ok
[INFO] [stdout] test domain::location_file::tests::mark_missing_from_stale ... ok
[INFO] [stdout] test domain::location::tests::location_id_invalid_chars_rejected ... ok
[INFO] [stdout] test domain::location_file::tests::new_rejects_empty_relative_path ... ok
[INFO] [stdout] test domain::location::tests::location_id_serde ... ok
[INFO] [stdout] test domain::location_file::tests::mark_stale_idempotent ... ok
[INFO] [stdout] test domain::location_file::tests::mark_stale_skips_archived ... ok
[INFO] [stdout] test domain::location_file::tests::mark_syncing_from_active_fails ... ok
[INFO] [stdout] test domain::location_file::tests::mark_active_from_stale_fails ... ok
[INFO] [stdout] test domain::location_file::tests::mark_active_from_syncing ... ok
[INFO] [stdout] test domain::location_file::tests::mark_missing_skips_archived ... ok
[INFO] [stdout] test domain::location_file::tests::mark_stale_from_active ... ok
[INFO] [stdout] test domain::location_file::tests::stale_candidates_marks_different_content_digest ... ok
[INFO] [stdout] test domain::location_file::tests::stale_candidates_size_fallback_different ... ok
[INFO] [stdout] test domain::location_file::tests::serde_roundtrip ... ok
[INFO] [stdout] test domain::location_file::tests::stale_candidates_skips_same_content_digest ... ok
[INFO] [stdout] test domain::location_file::tests::stale_candidates_size_fallback_same ... ok
[INFO] [stdout] test domain::location_file::tests::state_invalid_str ... ok
[INFO] [stdout] test domain::location_file::tests::mark_syncing_from_stale ... ok
[INFO] [stdout] test domain::location_file::tests::state_display ... ok
[INFO] [stdout] test domain::location_file::tests::mark_syncing_from_syncing_fails ... ok
[INFO] [stdout] test domain::location_file::tests::state_str_roundtrip ... ok
[INFO] [stdout] test domain::location_file::tests::new_rejects_empty_file_id ... ok
[INFO] [stdout] test domain::location_file::tests::stale_candidates_excludes_non_active ... ok
[INFO] [stdout] test domain::location_file::tests::new_sets_fields_and_active_state ... ok
[INFO] [stdout] test domain::location_file::tests::reconstitute_preserves_all ... ok
[INFO] [stdout] test domain::location_file::tests::update_fingerprint_resets_state_to_active ... ok
[INFO] [stdout] test domain::location_file::tests::same_hash_not_changed ... ok
[INFO] [stdout] test domain::location_file::tests::update_returns_false_on_same ... ok
[INFO] [stdout] test domain::location_file::tests::serde_roundtrip_archived ... ok
[INFO] [stdout] test domain::location_file::tests::update_returns_true_on_change ... ok
[INFO] [stdout] test domain::plan::tests::plan_deletes_creates_individual_transfers ... ok
[INFO] [stdout] test domain::plan::tests::plan_deletes_respects_pending ... ok
[INFO] [stdout] test domain::plan::tests::plan_deletes_ignores_non_delete_actions ... ok
[INFO] [stdout] test domain::location_file::tests::stale_candidates_excludes_origin ... ok
[INFO] [stdout] test domain::plan::tests::plan_distribution_chain_with_direct_picks_optimal ... ok
[INFO] [stdout] test domain::plan::tests::plan_distribution_single_send ... ok
[INFO] [stdout] test domain::plan::tests::plan_distribution_no_existing_presences_uses_source ... ok
[INFO] [stdout] test domain::plan::tests::plan_distribution_update_uses_sync_kind ... ok
[INFO] [stdout] test domain::plan::tests::plan_distribution_groups_same_file_targets ... ok
[INFO] [stdout] test domain::plan::tests::plan_distribution_multi_file_chain_depends_on_index_offset ... ok
[INFO] [stdout] test domain::plan::tests::plan_distribution_multiple_files ... ok
[INFO] [stdout] test domain::plan::tests::plan_distribution_multi_source_picks_cheaper_relay ... ok
[INFO] [stdout] test domain::retry::tests::error_kind_roundtrip ... ok
[INFO] [stdout] test domain::retry::tests::zero_clamped_to_one ... ok
[INFO] [stdout] test domain::topology_delta::tests::by_hash_same_path_unchanged_produces_none ... ok
[INFO] [stdout] test domain::retry::tests::custom_policy ... ok
[INFO] [stdout] test domain::plan::tests::plan_distribution_respects_pending ... ok
[INFO] [stdout] test domain::location_file::tests::unarchive_from_active_fails ... ok
[INFO] [stdout] test domain::retry::tests::default_policy ... ok
[INFO] [stdout] test domain::location_file::tests::archive_from_active ... ok
[INFO] [stdout] test domain::topology_delta::tests::by_path_no_location_file_produces_content_changed ... ok
[INFO] [stdout] test domain::topology_delta::tests::cloud_different_size_produces_content_changed ... ok
[INFO] [stdout] test domain::topology_delta::tests::display_discovered ... ok
[INFO] [stdout] test domain::topology_delta::tests::display_renamed ... ok
[INFO] [stdout] test domain::topology_delta::tests::content_changed_accessors ... ok
[INFO] [stdout] test domain::location_file::tests::unarchive_from_archived ... ok
[INFO] [stdout] test domain::topology_delta::tests::no_match_produces_discovered ... ok
[INFO] [stdout] test domain::topology_delta::tests::renamed_accessors ... ok
[INFO] [stdout] test domain::retry::tests::error_kind_invalid ... ok
[INFO] [stdout] test domain::topology_delta::tests::by_hash_different_path_produces_renamed ... ok
[INFO] [stdout] test domain::location_file::tests::mark_missing_idempotent ... ok
[INFO] [stdout] test domain::topology_delta::tests::discovered_accessors ... ok
[INFO] [stdout] test domain::topology_delta::tests::vanished_accessors ... ok
[INFO] [stdout] test domain::topology_delta::tests::by_path_changed_fingerprint_produces_content_changed ... ok
[INFO] [stdout] test domain::topology_delta::tests::by_path_unchanged_fingerprint_produces_none ... ok
[INFO] [stdout] test domain::topology_delta::tests::cloud_new_file_produces_discovered ... ok
[INFO] [stdout] test domain::topology_delta::tests::cloud_same_size_unchanged ... ok
[INFO] [stdout] test domain::topology_file::tests::mark_deleted_is_idempotent ... ok
[INFO] [stdout] test domain::topology_file::tests::matches_scan_by_path ... ok
[INFO] [stdout] test domain::topology_file::tests::matches_scan_by_hash ... ok
[INFO] [stdout] test domain::topology_file::tests::matches_scan_by_path_when_hash_differs ... ok
[INFO] [stdout] test domain::topology_file::tests::promote_none_fingerprint_no_change ... ok
[INFO] [stdout] test domain::topology_file::tests::new_sets_fields ... ok
[INFO] [stdout] test domain::topology_file::tests::promote_no_content_digest_no_change ... ok
[INFO] [stdout] test domain::topology_file::tests::reconstitute_preserves_all_fields ... ok
[INFO] [stdout] test domain::topology_file::tests::new_rejects_empty_path ... ok
[INFO] [stdout] test domain::topology_file::tests::matches_scan_cloud_no_hash_no_path ... ok
[INFO] [stdout] test domain::topology_file::tests::serde_omits_none_canonical_digest ... ok
[INFO] [stdout] test domain::topology_file::tests::matches_scan_no_match ... ok
[INFO] [stdout] test domain::topology_file::tests::promote_from_none_to_content_digest ... ok
[INFO] [stdout] test domain::topology_file::tests::promote_same_content_digest_no_change ... ok
[INFO] [stdout] test domain::topology_file::tests::serde_roundtrip ... ok
[INFO] [stdout] test domain::topology_file::tests::matches_scan_cloud_no_hash ... ok
[INFO] [stdout] test domain::topology_file::tests::update_path_changes_relative_path ... ok
[INFO] [stdout] test domain::transfer::tests::cancel_from_completed_fails ... ok
[INFO] [stdout] test domain::transfer::tests::cancelled_is_terminal ... ok
[INFO] [stdout] test domain::topology_file::tests::unmark_deleted_clears ... ok
[INFO] [stdout] test domain::topology_file::tests::promote_content_digest_updates ... ok
[INFO] [stdout] test domain::transfer::tests::cancel_transitions_inflight_to_cancelled ... ok
[INFO] [stdout] test domain::transfer::tests::complete_from_queued_fails ... ok
[INFO] [stdout] test domain::transfer::tests::cancel_from_failed_fails ... ok
[INFO] [stdout] test domain::transfer::tests::cancelled_state_str_roundtrip ... ok
[INFO] [stdout] test domain::transfer::tests::new_creates_queued_transfer ... ok
[INFO] [stdout] test domain::transfer::tests::new_rejects_empty_file_id ... ok
[INFO] [stdout] test domain::transfer::tests::new_rejects_self_transfer ... ok
[INFO] [stdout] test domain::transfer::tests::permanent_is_never_retryable ... ok
[INFO] [stdout] test domain::transfer::tests::resolve_from_completed_fails ... ok
[INFO] [stdout] test domain::transfer::tests::resolve_from_inflight_fails ... ok
[INFO] [stdout] test domain::transfer::tests::resolve_from_queued_fails ... ok
[INFO] [stdout] test domain::transfer::tests::complete_transitions_to_completed ... ok
[INFO] [stdout] test domain::transfer::tests::queued_is_not_retryable ... ok
[INFO] [stdout] test domain::transfer::tests::retry_preserves_original ... ok
[INFO] [stdout] test domain::transfer::tests::fail_from_queued_fails ... ok
[INFO] [stdout] test domain::transfer::tests::resolve_transitions_failed_to_completed ... ok
[INFO] [stdout] test domain::transfer::tests::retry_creates_new_queued_transfer ... ok
[INFO] [stdout] test domain::transfer::tests::serde_roundtrip ... ok
[INFO] [stdout] test domain::transfer::tests::retry_from_completed_fails ... ok
[INFO] [stdout] test domain::transfer::tests::start_transitions_to_in_flight ... ok
[INFO] [stdout] test domain::transfer::tests::state_roundtrip ... ok
[INFO] [stdout] test domain::transfer::tests::transient_at_limit_is_exhausted ... ok
[INFO] [stdout] test domain::transfer::tests::serde_roundtrip_failed_with_error_kind ... ok
[INFO] [stdout] test domain::transfer::tests::retry_from_non_failed_fails ... ok
[INFO] [stdout] test domain::view::tests::presence_from_failed_transient_exhausted ... ok
[INFO] [stdout] test domain::transfer::tests::transient_within_limit_is_retryable ... ok
[INFO] [stdout] test infra::hasher::tests::cross_language_hash_match ... ignored
[INFO] [stdout] test domain::transfer::tests::cancel_from_queued_fails ... ok
[INFO] [stdout] test domain::view::tests::presence_from_failed_permanent ... ok
[INFO] [stdout] test domain::transfer::tests::cancelled_is_not_actionable ... ok
[INFO] [stdout] test domain::view::tests::presence_from_completed ... ok
[INFO] [stdout] test infra::hasher::tests::hasher_png_file_hash_differs_from_content_hash ... ok
[INFO] [stdout] test infra::hasher::tests::file_hash_different_content ... ok
[INFO] [stdout] test domain::view::tests::presence_from_in_flight ... ok
[INFO] [stdout] test infra::hasher::tests::file_hash_empty_file ... ok
[INFO] [stdout] test infra::hasher::tests::hasher_png_has_both_hashes ... ok
[INFO] [stdout] test domain::transfer::tests::cancelled_roundtrip_serde ... ok
[INFO] [stdout] test domain::transfer::tests::fail_permanent_transitions_to_failed ... ok
[INFO] [stdout] test domain::view::tests::presence_from_failed_transient_retryable ... ok
[INFO] [stdout] test infra::hasher::tests::file_hash_deterministic ... ok
[INFO] [stdout] test infra::hasher::tests::png_deterministic ... ok
[INFO] [stdout] test infra::hasher::tests::png_different_pixels ... ok
[INFO] [stdout] test infra::hasher::tests::hasher_non_png_no_content_hash ... ok
[INFO] [stdout] test domain::transfer::tests::start_from_non_queued_fails ... ok
[INFO] [stdout] test domain::transfer::tests::fail_transient_transitions_to_failed ... ok
[INFO] [stdout] test domain::transfer::tests::is_actionable ... ok
[INFO] [stdout] test infra::hasher::tests::png_hash_not_png ... ok
[INFO] [stdout] test infra::hasher::tests::hasher_png_same_pixels_different_metadata_same_content_different_file ... ok
[INFO] [stdout] test domain::view::tests::presence_from_queued ... ok
[INFO] [stdout] test infra::hasher::tests::png_hash_valid ... ok
[INFO] [stdout] test infra::location::tests::location_id_rejects_invalid_chars ... ok
[INFO] [stdout] test infra::location::tests::new_delegates_to_local_id ... ok
[INFO] [stdout] test infra::hasher::tests::png_same_pixels_different_metadata ... ok
[INFO] [stdout] test infra::rclone::tests::backend_type ... ok
[INFO] [stdout] test infra::rclone::tests::is_sftp_detection ... ok
[INFO] [stdout] test infra::rclone::tests::parse_rclone_timestamp_invalid ... ok
[INFO] [stdout] test infra::rclone::tests::parse_rclone_timestamp_nanoseconds ... ok
[INFO] [stdout] test infra::rclone::tests::parse_rclone_timestamp_no_fraction ... ok
[INFO] [stdout] test infra::location::tests::new_with_id_kind_and_file_root ... ok
[INFO] [stdout] test infra::location::tests::new_with_id_stores_custom_id ... ok
[INFO] [stdout] test infra::rclone::tests::remote_path_construction ... ok
[INFO] [stdout] test infra::rclone::tests::remote_path_rejects_traversal ... ok
[INFO] [stdout] test infra::hasher::tests::file_hash_non_empty ... ok
[INFO] [stdout] test infra::rclone::tests::remote_path_rejects_flag_like_input ... ok
[INFO] [stdout] test infra::shell::tests::local_shell_empty_args ... ok
[INFO] [stdout] test infra::sqlite::schema::tests::newer_db_version_is_rejected ... ok
[INFO] [stdout] test infra::shell::tests::local_shell_exit_code ... ok
[INFO] [stdout] test infra::shell::tests::local_shell_nonexistent_command ... ok
[INFO] [stdout] test infra::sqlite::schema::tests::init_sets_schema_version_to_current ... ok
[INFO] [stdout] test infra::sqlite::schema::tests::location_files_fk_cascades_on_topology_delete ... ok
[INFO] [stdout] test infra::shell::tests::local_shell_echo ... ok
[INFO] [stdout] test infra::sqlite::schema::tests::init_is_idempotent ... ok
[INFO] [stdout] test infra::sqlite::tests::failed_transfers_excludes_retried ... ok
[INFO] [stdout] test infra::sqlite::tests::latest_transfers_by_file_returns_latest_per_dest ... ok
[INFO] [stdout] test infra::sqlite::tests::insert_and_query_transfer ... ok
[INFO] [stdout] test infra::sqlite::tests::failed_transfers_query ... ok
[INFO] [stdout] test infra::sqlite::tests::update_transfer_state ... ok
[INFO] [stdout] test infra::sqlite::tests::unblock_dependents_no_dependents_returns_zero ... ok
[INFO] [stdout] test infra::sqlite::tests::unblock_dependents_ignores_non_blocked_state ... ok
[INFO] [stdout] test infra::sqlite::tests::unblock_dependents_multiple_dependents ... ok
[INFO] [stdout] test infra::sqlite::tests::unblock_dependents_transitions_blocked_to_queued ... ok
[INFO] [stdout] test infra::sqlite::tests::discovered_vanished_rediscovered_no_stale_deleted ... ok
[INFO] [stdout] test infra::sqlite::tests::queued_returns_only_latest_per_file_dest ... ok
[INFO] [stdout] test infra::sqlite::tests::two_syncs_multi_origin_no_deleted ... ok
[INFO] [stdout] test infra::sqlite::tests::two_syncs_should_not_create_deleted_topology_files ... ok
[INFO] [stderr]    Doc-tests vdsl_sync
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 306 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.09s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test src/application/route.rs - application::route::TransferRoute::new (line 94) ... ignored
[INFO] [stdout] test src/application/sdk_impl/builder.rs - application::sdk_impl::builder::SdkImplBuilder (line 47) ... ignored
[INFO] [stdout] test src/infra/rclone.rs - infra::rclone::RcloneBackend::new (line 120) - compile ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.06s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "7721e3adb97c3fd4e75a0fdee8b2b4951ee40f23e575fdd6895e117aec056f7b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7721e3adb97c3fd4e75a0fdee8b2b4951ee40f23e575fdd6895e117aec056f7b", kill_on_drop: false }`
[INFO] [stdout] 7721e3adb97c3fd4e75a0fdee8b2b4951ee40f23e575fdd6895e117aec056f7b
