[INFO] fetching crate koda-sandbox 0.3.2...
[INFO] testing koda-sandbox-0.3.2 against 1.100.0-beta.1+cargoflags=--release for beta-release-1.100-2
[INFO] extracting crate koda-sandbox 0.3.2 into /workspace/builds/worker-4-tc2/source
[INFO] started tweaking crates.io crate koda-sandbox 0.3.2
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate koda-sandbox 0.3.2
[INFO] tweaked toml for crates.io crate koda-sandbox 0.3.2 written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate koda-sandbox 0.3.2 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 koda-sandbox 0.3.2 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:77:12
[INFO] [stderr]    |
[INFO] [stderr] 77 | homepage = "https://github.com/lijunzh/koda"
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 82 | repository = "https://github.com/lijunzh/koda"
[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: `koda-sandbox` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 316cf48e41d4ee6fddf83d7e9364bd8d2c7338429864592e17faaddd7acfc7fe
[INFO] running `Command { std: "docker" "start" "316cf48e41d4ee6fddf83d7e9364bd8d2c7338429864592e17faaddd7acfc7fe", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "316cf48e41d4ee6fddf83d7e9364bd8d2c7338429864592e17faaddd7acfc7fe", 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" "316cf48e41d4ee6fddf83d7e9364bd8d2c7338429864592e17faaddd7acfc7fe" "/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" "316cf48e41d4ee6fddf83d7e9364bd8d2c7338429864592e17faaddd7acfc7fe", 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" "316cf48e41d4ee6fddf83d7e9364bd8d2c7338429864592e17faaddd7acfc7fe" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]   --> Cargo.toml:77:12
[INFO] [stderr]    |
[INFO] [stderr] 77 | homepage = "https://github.com/lijunzh/koda"
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 82 | repository = "https://github.com/lijunzh/koda"
[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: `koda-sandbox` (manifest) generated 1 warning
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling anyhow v1.0.102
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling tokio v1.52.2
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling globset v0.4.18
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling ignore v0.4.25
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling koda-sandbox v0.3.2 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 1m 10s
[INFO] running `Command { std: "docker" "inspect" "316cf48e41d4ee6fddf83d7e9364bd8d2c7338429864592e17faaddd7acfc7fe", 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" "316cf48e41d4ee6fddf83d7e9364bd8d2c7338429864592e17faaddd7acfc7fe" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]   --> Cargo.toml:77:12
[INFO] [stderr]    |
[INFO] [stderr] 77 | homepage = "https://github.com/lijunzh/koda"
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 82 | repository = "https://github.com/lijunzh/koda"
[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: `koda-sandbox` (manifest) generated 1 warning
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling tokio v1.52.2
[INFO] [stderr]    Compiling koda-sandbox v0.3.2 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 1m 07s
[INFO] running `Command { std: "docker" "inspect" "316cf48e41d4ee6fddf83d7e9364bd8d2c7338429864592e17faaddd7acfc7fe", 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" "316cf48e41d4ee6fddf83d7e9364bd8d2c7338429864592e17faaddd7acfc7fe" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]   --> Cargo.toml:77:12
[INFO] [stderr]    |
[INFO] [stderr] 77 | homepage = "https://github.com/lijunzh/koda"
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 82 | repository = "https://github.com/lijunzh/koda"
[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: `koda-sandbox` (manifest) generated 1 warning
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.17s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/build/koda-sandbox/a50bc40ae72cbaa0/out/koda_sandbox-a50bc40ae72cbaa0)
[INFO] [stdout] 
[INFO] [stdout] running 311 tests
[INFO] [stdout] test bwrap::tests::git_config_deny_adds_ro_bind_for_existing_git_dir ... ok
[INFO] [stdout] test bwrap::tests::git_config_deny_pre_creates_for_non_git_dir_to_close_toctou ... ok
[INFO] [stdout] test bwrap::tests::git_config_deny_preserves_existing_config_mtime ... ok
[INFO] [stdout] test bwrap::tests::policy_overlay_args_render_allow_write_as_bind ... ok
[INFO] [stdout] test bwrap::tests::policy_overlay_args_emit_layers_in_correct_order ... ok
[INFO] [stdout] test bwrap::tests::policy_overlay_args_empty_for_default_policy ... ok
[INFO] [stdout] test bwrap::tests::policy_overlay_args_render_deny_read_as_tmpfs ... ok
[INFO] [stdout] test bwrap::tests::policy_overlay_args_render_deny_write_within_as_ro_bind ... ok
[INFO] [stdout] test bwrap::tests::stage2_binary_respects_env_override ... ok
[INFO] [stdout] test bwrap_proxy::tests::proxy_uds_path_distinct_for_distinct_inputs ... ok
[INFO] [stdout] test bwrap_proxy::tests::proxy_uds_path_includes_pid_and_port ... ok
[INFO] [stdout] test bwrap_proxy::tests::rewrite_proxy_url_port_handles_basic_http ... ok
[INFO] [stdout] test bwrap_proxy::tests::rewrite_proxy_url_port_handles_no_existing_port ... ok
[INFO] [stdout] test bwrap::tests::git_config_deny_skips_worktree_gitdir_pointer ... ok
[INFO] [stdout] test bwrap_proxy::tests::rewrite_proxy_url_port_handles_socks_scheme ... ok
[INFO] [stdout] test bwrap_proxy::tests::rewrite_proxy_url_port_preserves_path ... ok
[INFO] [stdout] test bwrap_proxy::tests::rewrite_proxy_url_port_preserves_userinfo ... ok
[INFO] [stdout] test bwrap_proxy::tests::rewrite_proxy_url_port_returns_none_for_garbage ... ok
[INFO] [stdout] test env::tests::parse_argv0_bash_dash_c ... ok
[INFO] [stdout] test env::tests::parse_argv0_empty ... ok
[INFO] [stdout] test env::tests::parse_argv0_simple_command ... ok
[INFO] [stdout] test env::tests::parse_argv0_strips_path_prefix ... ok
[INFO] [stdout] test env::tests::parse_argv0_whitespace_only ... ok
[INFO] [stdout] test env::tests::parse_argv0_with_pipeline ... ok
[INFO] [stdout] test env::tests::safe_base_vars_excludes_all_credential_patterns ... ok
[INFO] [stdout] test env::tests::tool_extras_for_cargo_includes_cargo_home ... ok
[INFO] [stdout] test env::tests::tool_extras_for_aws_excludes_secret_access_key ... ok
[INFO] [stdout] test env::tests::tool_extras_for_git_excludes_credential_vectors ... ok
[INFO] [stdout] test bwrap::tests::build_command_with_proxy_sets_stage2_env_vars ... ok
[INFO] [stdout] test bwrap::tests::build_command_with_proxy_adds_unshare_and_stage2 ... ok
[INFO] [stdout] test bwrap::tests::build_command_skips_git_deny_when_allowed ... ok
[INFO] [stdout] test env::tests::tool_extras_excludes_all_credential_patterns ... ok
[INFO] [stdout] test env::tests::scrub_keeps_path ... ok
[INFO] [stdout] test bwrap_proxy::tests::uds_bridge_forwards_bytes_to_tcp_listener ... ok
[INFO] [stdout] test env::tests::tool_extras_for_npm_excludes_token ... ok
[INFO] [stdout] test bwrap_proxy::tests::uds_bridge_removes_stale_socket_file ... ok
[INFO] [stdout] test env::tests::scrub_strips_aws_secret_access_key ... ok
[INFO] [stdout] test fs::local::tests::edit_missing_old_string_returns_edit_not_found ... ok
[INFO] [stdout] test env::tests::scrub_strips_github_token ... ok
[INFO] [stdout] test fs::local::tests::read_missing_file_returns_io_error ... ok
[INFO] [stdout] test fs::local::tests::grep_finds_matches_with_line_numbers ... ok
[INFO] [stdout] test fs::local::tests::read_max_bytes_above_size_returns_full_file ... ok
[INFO] [stdout] test env::tests::scrub_strips_openai_api_key ... ok
[INFO] [stdout] test env::tests::tool_extras_for_unknown_tool_returns_empty ... ok
[INFO] [stdout] test fs::local::tests::grep_skips_binary_files_silently ... ok
[INFO] [stdout] test fs::local::tests::glob_matches_files_relative_to_root ... ok
[INFO] [stdout] test fs::local::tests::glob_recursive_pattern_works ... ok
[INFO] [stdout] test fs::local::tests::grep_honors_ignore_files ... ok
[INFO] [stdout] test fs::local::tests::glob_invalid_pattern_returns_invalid_pattern ... ok
[INFO] [stdout] test fs::local::tests::grep_invalid_regex_returns_invalid_pattern ... ok
[INFO] [stdout] test fs::local::tests::stat_reports_file_size_and_type ... ok
[INFO] [stdout] test fs::local::tests::stat_reports_directory ... ok
[INFO] [stdout] test fs::local::tests::read_returns_full_contents_when_no_cap ... ok
[INFO] [stdout] test fs::local::tests::read_truncates_to_max_bytes ... ok
[INFO] [stdout] test fs::policy::tests::accepts_in_project_symlink ... ok
[INFO] [stdout] test fs::policy::tests::accepts_symlink_to_inside_root_at_final_component ... ok
[INFO] [stdout] test fs::policy::tests::accepts_fresh_write_inside_root ... ok
[INFO] [stdout] test fs::local::tests::edit_replaces_all_occurrences_when_all_true ... ok
[INFO] [stdout] test fs::tests::display_invalid_pattern ... ok
[INFO] [stdout] test fs::policy::tests::empty_allowed_roots_is_a_hard_error ... ok
[INFO] [stdout] test fs::tests::display_edit_not_found ... ok
[INFO] [stdout] test fs::policy::tests::race_swap_between_check_and_act_is_caught_by_reverify ... ok
[INFO] [stdout] test fs::policy::tests::rejects_symlinked_parent_dir_escaping_root ... ok
[INFO] [stdout] test fs::tests::display_io ... ok
[INFO] [stdout] test fs::policy::tests::nonexistent_root_is_skipped_not_fatal ... ok
[INFO] [stdout] test fs::tests::display_policy_denied ... ok
[INFO] [stdout] test fs::tests::display_transport ... ok
[INFO] [stdout] test fs::local::tests::edit_replaces_first_occurrence_when_all_false ... ok
[INFO] [stdout] test fs::tests::from_io_error_wraps_in_io_variant ... ok
[INFO] [stdout] test fs::policy::tests::rejects_path_outside_every_root ... ok
[INFO] [stdout] test ipc::tests::complex_request_roundtrips ... ok
[INFO] [stdout] test ipc::tests::payload_size_above_cap_is_rejected ... ok
[INFO] [stdout] test fs::tests::source_non_io_variants_return_none ... ok
[INFO] [stdout] test ipc::tests::clean_eof_before_any_bytes_returns_none ... ok
[INFO] [stdout] test ipc::tests::eof_mid_length_prefix_is_unexpected_eof ... ok
[INFO] [stdout] test ipc::tests::eof_mid_payload_is_unexpected_eof ... ok
[INFO] [stdout] test fs::tests::source_io_returns_some ... ok
[INFO] [stdout] test ipc::tests::error_response_roundtrips ... ok
[INFO] [stdout] test fs::local::tests::grep_respects_include_filter ... ok
[INFO] [stdout] test ipc::tests::malformed_json_payload_is_invalid_data ... ok
[INFO] [stdout] test ipc::tests::pong_roundtrips_through_framing ... ok
[INFO] [stdout] test monitor::tests::cp_cannot_create_classified_as_write ... ok
[INFO] [stdout] test fs::policy::tests::rejects_symlinked_final_component_escaping_root ... ok
[INFO] [stdout] test ipc::tests::ping_roundtrips_through_framing ... ok
[INFO] [stdout] test ipc::tests::multiple_messages_back_to_back_parse_correctly ... ok
[INFO] [stdout] test fs::local::tests::stat_reports_symlink_without_following ... ok
[INFO] [stdout] test monitor::tests::extracts_last_absolute_path_when_multiple_present ... ok
[INFO] [stdout] test monitor::tests::denial_without_path_still_recorded_as_other ... ok
[INFO] [stdout] test monitor::tests::empty_stderr_yields_no_violations ... ok
[INFO] [stdout] test monitor::tests::ignores_relative_paths ... ok
[INFO] [stdout] test monitor::tests::lines_without_denial_markers_are_ignored ... ok
[INFO] [stdout] test monitor::tests::cat_denial_classified_as_read ... ok
[INFO] [stdout] test env::tests::scrub_per_tool_extras_for_cargo_only ... ok
[INFO] [stdout] test fs::local::tests::write_creates_file_and_returns_byte_count ... ok
[INFO] [stdout] test monitor::tests::command_is_attached_to_every_violation ... ok
[INFO] [stdout] test path_defense::tests::child_is_inside ... ok
[INFO] [stdout] test monitor::tests::read_only_file_system_classified_as_write ... ok
[INFO] [stdout] test monitor::tests::shell_redirect_denial_classified_as_write ... ok
[INFO] [stdout] test path_defense::tests::effective_chain_depth_is_monotone_non_decreasing ... ok
[INFO] [stdout] test monitor::tests::ls_denial_classified_as_read ... ok
[INFO] [stdout] test monitor::tests::multiple_denials_yield_multiple_violations ... ok
[INFO] [stdout] test monitor::tests::touch_denial_classified_as_write ... ok
[INFO] [stdout] test path_defense::tests::prefix_match_respects_component_boundary ... ok
[INFO] [stdout] test path_defense::tests::effective_chain_depth_passes_through_in_band_values ... ok
[INFO] [stdout] test path_defense::tests::glob_wildcards_are_dangerous ... ok
[INFO] [stdout] test path_defense::tests::effective_chain_depth_respects_min_floor_for_plan_mode ... ok
[INFO] [stdout] test path_defense::tests::root_is_dangerous ... ok
[INFO] [stdout] test path_defense::tests::same_path_is_inside ... ok
[INFO] [stdout] test path_defense::tests::dangling_symlink_ancestor_resolved ... ok
[INFO] [stdout] test path_defense::tests::user_project_dirs_are_safe ... ok
[INFO] [stdout] test path_defense::tests::direct_children_of_root_are_dangerous ... ok
[INFO] [stdout] test path_defense::tests::ancestor_no_symlink_returns_none ... ok
[INFO] [stdout] test path_defense::tests::parent_is_not_inside_child ... ok
[INFO] [stdout] test path_defense::tests::effective_chain_depth_caps_at_kernel_max ... ok
[INFO] [stdout] test path_defense::tests::live_symlink_resolved ... ok
[INFO] [stdout] test path_defense::tests::sibling_is_not_inside ... ok
[INFO] [stdout] test path_defense::tests::subdirs_of_system_dirs_are_safe ... ok
[INFO] [stdout] test fs::local::tests::write_overwrites_existing_file ... ok
[INFO] [stdout] test path_defense::tests::no_symlink_returns_none ... ok
[INFO] [stdout] test policy::tests::compose_allow_git_config_is_logical_and ... ok
[INFO] [stdout] test path_defense::tests::symlink_component_detected ... ok
[INFO] [stdout] test path_defense::tests::real_file_returns_at_least_original ... ok
[INFO] [stdout] test policy::tests::compose_takes_max_mandatory_deny_search_depth ... ok
[INFO] [stdout] test policy::tests::compose_trust_picks_strictest ... ok
[INFO] [stdout] test policy::tests::compose_drops_child_allow_writes_so_child_cannot_widen ... ok
[INFO] [stdout] test policy::tests::compose_idempotent_with_self ... ok
[INFO] [stdout] test path_defense::tests::symlink_expands_to_full_chain ... ok
[INFO] [stdout] test policy::tests::compose_limits_take_minimum_with_none_meaning_unlimited ... ok
[INFO] [stdout] test policy::tests::compose_union_dedupes_overlapping_denies ... ok
[INFO] [stdout] test policy::tests::domain_pattern_serde_is_transparent ... ok
[INFO] [stdout] test policy::tests::compose_unions_denies_so_child_can_add_restrictions ... ok
[INFO] [stdout] test policy::tests::fs_policy_default_has_safe_baseline_depth ... ok
[INFO] [stdout] test policy::tests::default_policy_is_empty_and_auto ... ok
[INFO] [stdout] test policy::tests::compose_mitm_inherited_from_parent_only ... ok
[INFO] [stdout] test fs::local::tests::write_creates_missing_parent_dirs ... ok
[INFO] [stdout] test policy::tests::path_pattern_serde_is_transparent ... ok
[INFO] [stdout] test policy::tests::policy_accepts_partial_json_via_serde_default ... ok
[INFO] [stdout] test policy::tests::policy_round_trips_through_json ... ok
[INFO] [stdout] test policy_check::tests::resolve_home_dir_treats_empty_as_unset ... ok
[INFO] [stdout] test policy_check::tests::fully_denied_no_home_still_allows_normal_paths ... ok
[INFO] [stdout] test policy_check::tests::fully_denied_allows_project_and_system_paths ... ok
[INFO] [stdout] test policy_check::tests::fully_denied_blocks_koda_db ... ok
[INFO] [stdout] test policy_check::tests::fully_denied_uses_home_when_provided ... ok
[INFO] [stdout] test pool::tests::new_pool_is_empty ... ok
[INFO] [stdout] test policy_check::tests::fully_denied_blocks_koda_db_when_home_is_none ... ok
[INFO] [stdout] test policy::tests::compose_keeps_parent_depth_when_child_is_shallower ... ok
[INFO] [stdout] test pool::tests::drop_returns_clean_worker_to_pool ... ok
[INFO] [stdout] test pool::tests::dirty_slot_does_not_return_worker_to_pool ... ok
[INFO] [stdout] test pool::tests::acquired_worker_responds_to_ping ... ok
[INFO] [stdout] test policy::tests::compose_with_default_child_is_identity_for_parent_denies ... ok
[INFO] [stdout] test policy::tests::trust_preference_lowercase_serde ... ok
[INFO] [stdout] test pool::tests::cold_acquire_spawns_worker_and_calls_provision ... ok
[INFO] [stdout] test ipc::tests::write_rejects_oversize_payload_locally ... ok
[INFO] [stdout] test policy::tests::strict_default_matches_default ... ok
[INFO] [stdout] test policy_check::tests::fully_denied_allows_credential_dirs ... ok
[INFO] [stdout] test pool::tests::distinct_policies_do_not_share_bucket ... ok
[INFO] [stdout] test pool::tests::return_to_full_bucket_drops_worker ... ok
[INFO] [stdout] test proxy::builtin::tests::new_sets_defaults ... ok
[INFO] [stdout] test pool::tests::warm_acquire_is_faster_than_cold ... ok
[INFO] [stdout] test proxy::builtin_socks5::tests::new_sets_defaults ... ok
[INFO] [stdout] test pool::tests::new_with_zero_capacity_panics - should panic ... ok
[INFO] [stdout] test proxy::builtin::tests::linux_drop_removes_uds_path ... ok
[INFO] [stdout] test proxy::builtin_socks5::tests::spawn_returns_handle_with_assigned_port ... ok
[INFO] [stdout] test pool::tests::provision_failure_does_not_leak_worker_into_pool ... ok
[INFO] [stdout] test proxy::builtin::tests::spawn_returns_handle_with_assigned_port ... ok
[INFO] [stdout] test proxy::env::tests::no_proxy_default_covers_loopback_and_rfc1918 ... ok
[INFO] [stdout] test proxy::env::tests::ca_bundle_for_policy_handles_no_mitm ... ok
[INFO] [stdout] test proxy::env::tests::ca_bundle_for_policy_returns_path_when_mitm_set ... ok
[INFO] [stdout] test proxy::env::tests::policy_without_mitm_yields_no_ca_bouquet ... ok
[INFO] [stdout] test proxy::env::tests::proxy_env_vars_includes_all_four_ca_keys_when_some ... ok
[INFO] [stdout] test proxy::env::tests::policy_with_mitm_yields_full_ca_bouquet ... ok
[INFO] [stdout] test proxy::env::tests::proxy_env_vars_omits_ca_bundle_when_none ... ok
[INFO] [stdout] test proxy::env::tests::proxy_url_format_uses_loopback_ipv4 ... ok
[INFO] [stdout] test proxy::env::tests::socks5_env_vars_includes_upper_and_lower ... ok
[INFO] [stdout] test proxy::builtin::tests::linux_spawn_attaches_uds_bridge ... ok
[INFO] [stdout] test proxy::env::tests::socks5_env_vars_uses_loopback_ipv4 ... ok
[INFO] [stdout] test proxy::env::tests::socks5_env_vars_uses_socks5h_scheme ... ok
[INFO] [stdout] test proxy::builtin_socks5::tests::spawned_proxy_serves_403_equivalent_for_disallowed_host ... ok
[INFO] [stdout] test proxy::env::tests::proxy_env_vars_includes_all_six_proxy_keys ... ok
[INFO] [stdout] test proxy::builtin::tests::spawned_proxy_serves_403_for_disallowed_host ... ok
[INFO] [stdout] test proxy::external::tests::external_proxy_empty_command_errors ... ok
[INFO] [stdout] test proxy::filter::tests::allows_apex_and_wildcard_together ... ok
[INFO] [stdout] test proxy::filter::tests::allows_exact_does_not_match_subdomain ... ok
[INFO] [stdout] test proxy::filter::tests::allows_exact_does_not_match_suffix ... ok
[INFO] [stdout] test proxy::filter::tests::allows_exact_match ... ok
[INFO] [stdout] test proxy::filter::tests::allows_exact_match_case_insensitive ... ok
[INFO] [stdout] test pool::tests::warm_bucket_respects_target_cap ... ok
[INFO] [stdout] test proxy::filter::tests::allows_exact_strips_port ... ok
[INFO] [stdout] test pool::tests::pool_drop_releases_warm_workers ... ok
[INFO] [stdout] test proxy::builtin::tests::ca_bundle_is_none_for_builtin ... ok
[INFO] [stdout] test proxy::filter::tests::allows_returns_false_when_empty ... ok
[INFO] [stdout] test proxy::filter::tests::allows_short_circuits_on_first_match ... ok
[INFO] [stdout] test proxy::external::tests::external_proxy_new_sets_defaults ... ok
[INFO] [stdout] test proxy::filter::tests::allows_wildcard_case_insensitive ... ok
[INFO] [stdout] test proxy::filter::tests::allows_wildcard_does_not_match_apex ... ok
[INFO] [stdout] test proxy::filter::tests::default_dev_allowlist_covers_common_cases ... ok
[INFO] [stdout] test proxy::filter::tests::allows_wildcard_does_not_match_suffix_attack ... ok
[INFO] [stdout] test proxy::filter::tests::allows_wildcard_matches_one_subdomain ... ok
[INFO] [stdout] test proxy::filter::tests::allows_wildcard_strips_port ... ok
[INFO] [stdout] test proxy::filter::tests::default_dev_allowlist_parses_cleanly ... ok
[INFO] [stdout] test proxy::filter::tests::parse_pattern_accepts_wildcard ... ok
[INFO] [stdout] test proxy::filter::tests::parse_pattern_lowercases_wildcard ... ok
[INFO] [stdout] test proxy::filter::tests::parse_pattern_lowercases_exact ... ok
[INFO] [stdout] test proxy::filter::tests::parse_pattern_rejects_bare_wildcard ... ok
[INFO] [stdout] test proxy::filter::tests::parse_pattern_rejects_double_wildcard ... ok
[INFO] [stdout] test proxy::filter::tests::parse_pattern_rejects_trailing_wildcard ... ok
[INFO] [stdout] test proxy::filter::tests::parse_pattern_rejects_internal_wildcard ... ok
[INFO] [stdout] test proxy::filter::tests::parse_pattern_rejects_whitespace_only ... ok
[INFO] [stdout] test proxy::filter::tests::parse_pattern_rejects_empty ... ok
[INFO] [stdout] test proxy::filter::tests::parse_pattern_rejects_prefix_glob ... ok
[INFO] [stdout] test proxy::filter::tests::allows_wildcard_does_not_match_two_labels ... ok
[INFO] [stdout] test pool::tests::warm_bucket_is_idempotent_at_cap ... ok
[INFO] [stdout] test pool::tests::warm_then_acquire_uses_warm_worker ... ok
[INFO] [stdout] test proxy::filter::tests::parse_pattern_trims_whitespace ... ok
[INFO] [stdout] test proxy::filter::tests::strip_port_handles_port ... ok
[INFO] [stdout] test proxy::filter::tests::strip_port_handles_no_port ... ok
[INFO] [stdout] test proxy::filter::tests::len_and_is_empty ... ok
[INFO] [stdout] test proxy::filter::tests::parse_pattern_accepts_exact ... ok
[INFO] [stdout] test proxy::server::tests::parse_get_request ... ok
[INFO] [stdout] test proxy::server::tests::parse_connect_request ... ok
[INFO] [stdout] test proxy::server::tests::parse_rejects_no_crlf ... ok
[INFO] [stdout] test proxy::server::tests::parse_rejects_non_utf8 ... ok
[INFO] [stdout] test proxy::server::tests::chains_through_upstream_http_proxy ... ok
[INFO] [stdout] test proxy::server::tests::allows_listed_host_and_tunnels_payload ... ok
[INFO] [stdout] test proxy::server::tests::chains_skips_upstream_for_no_proxy_hosts ... ok
[INFO] [stdout] test proxy::relay::tests::relays_bytes_in_both_directions_until_eof ... ok
[INFO] [stdout] test proxy::server::tests::server_bind_uses_ephemeral_port_when_none ... ok
[INFO] [stdout] test proxy::socks5::tests::bind_command_refused ... ok
[INFO] [stdout] test proxy::server::tests::rejects_non_connect_with_405 ... ok
[INFO] [stdout] test proxy::server::tests::returns_502_when_upstream_unreachable ... ok
[INFO] [stdout] test proxy::server::tests::rejects_disallowed_host_with_403 ... ok
[INFO] [stdout] test proxy::server::tests::parse_rejects_bad_version ... ok
[INFO] [stdout] test proxy::server::tests::parse_rejects_missing_version ... ok
[INFO] [stdout] test proxy::socks5::tests::io_error_mapping_picks_sensible_codes ... ok
[INFO] [stdout] test proxy::server::tests::surfaces_upstream_407_as_502 ... ok
[INFO] [stdout] test proxy::upstream::tests::no_proxy_exact_match ... ok
[INFO] [stdout] test proxy::socks5::tests::greeting_rejects_no_acceptable_auth ... ok
[INFO] [stdout] test proxy::upstream::tests::no_proxy_star_matches_everything ... ok
[INFO] [stdout] test proxy::upstream::tests::no_proxy_empty_list_bypasses_nothing ... ok
[INFO] [stdout] test proxy::socks5::tests::connect_domain_blocked_by_filter ... ok
[INFO] [stdout] test proxy::upstream::tests::no_proxy_subdomain_match ... ok
[INFO] [stdout] test proxy::upstream::tests::parse_no_proxy_strips_dots_and_whitespace ... ok
[INFO] [stdout] test proxy::upstream::tests::parse_rejects_missing_port ... ok
[INFO] [stdout] test proxy::upstream::tests::parse_rejects_auth ... ok
[INFO] [stdout] test proxy::upstream::tests::parse_rejects_zero_port ... ok
[INFO] [stdout] test proxy::upstream::tests::parse_rejects_non_numeric_port ... ok
[INFO] [stdout] test proxy::upstream::tests::parse_strips_http_scheme ... ok
[INFO] [stdout] test proxy::socks5::tests::allowed_domain_succeeds_then_relays ... ok
[INFO] [stdout] test proxy::socks5::tests::ipv6_literal_rejected_with_atyp_unsupported ... ok
[INFO] [stdout] test proxy::upstream::tests::parse_bare_host_port ... ok
[INFO] [stdout] test proxy::upstream::tests::parse_strips_https_scheme ... ok
[INFO] [stdout] test proxy::upstream::tests::parse_strips_trailing_slash ... ok
[INFO] [stdout] test proxy::upstream::tests::parse_rejects_path_component ... ok
[INFO] [stdout] test stage2::tests::copy_until_eof_handles_simple_payload ... ok
[INFO] [stdout] test stage2::tests::osstring_to_cstring_rejects_nul ... ok
[INFO] [stdout] test rlimits::tests::unsatisfiable_limit_fails_at_spawn ... ok
[INFO] [stdout] test rlimits::tests::default_limits_are_a_no_op ... ok
[INFO] [stdout] test stage2::tests::stage2_setup_failed_exit_is_88 ... ok
[INFO] [stdout] test tests::bwrap_runtime_accepts_proxy_port_without_error ... ok
[INFO] [stdout] test proxy::socks5::tests::greeting_accepts_noauth ... ok
[INFO] [stdout] test stage2::tests::osstring_to_cstring_accepts_normal_strings ... ok
[INFO] [stdout] test tests::current_runtime_is_constructible ... ok
[INFO] [stdout] test tests::unsandboxed_runtime_reports_unavailable ... ok
[INFO] [stdout] test proxy::socks5::tests::ipv4_literal_rejected_with_atyp_unsupported ... ok
[INFO] [stdout] test tests::unsandboxed_runtime_ignores_proxy_port ... ok
[INFO] [stdout] test rlimits::tests::nofile_limit_is_observable_in_child ... ok
[INFO] [stdout] test tests::unsandboxed_runtime_produces_sh_command ... ok
[INFO] [stdout] test violations::tests::capacity_zero_records_nothing ... ok
[INFO] [stdout] test violations::tests::count_by_kind_tallies_per_variant ... ok
[INFO] [stdout] test violations::tests::drain_empties_the_buffer ... ok
[INFO] [stdout] test violations::tests::global_store_returns_same_handle_across_calls ... ok
[INFO] [stdout] test violations::tests::render_block_matches_cc_shape ... ok
[INFO] [stdout] test proxy::builtin::tests::dropping_handle_stops_accepting ... ok
[INFO] [stdout] test pool::tests::slot_outliving_pool_still_drops_cleanly ... ok
[INFO] [stdout] test proxy::builtin_socks5::tests::dropping_handle_stops_accepting ... ok
[INFO] [stdout] test violations::tests::ring_caps_at_capacity ... ok
[INFO] [stdout] test violations::tests::store_is_send_sync ... ok
[INFO] [stdout] test violations::tests::violation_serde_roundtrip ... ok
[INFO] [stdout] test violations::tests::store_clones_share_inner_buffer ... ok
[INFO] [stdout] test violations::tests::render_block_returns_none_when_empty ... ok
[INFO] [stdout] test worker::tests::peer_eof_exits_loop_cleanly ... ok
[INFO] [stdout] test worker::tests::read_handler_returns_file_contents ... ok
[INFO] [stdout] test worker::tests::dangerous_system_path_always_denied ... ok
[INFO] [stdout] test worker::tests::ping_returns_pong ... ok
[INFO] [stdout] test worker::tests::worker_loops_for_multiple_requests ... ok
[INFO] [stdout] test worker::tests::shutdown_acks_then_worker_exits ... ok
[INFO] [stdout] test workspace::tests::branch_name_is_readable ... ok
[INFO] [stdout] test worker::tests::symlink_escape_is_denied ... ok
[INFO] [stdout] test workspace::tests::cwd_provider_returns_root_unchanged ... ok
[INFO] [stdout] test workspace::tests::cwd_provider_provision_is_idempotent ... ok
[INFO] [stdout] test workspace::tests::cwd_provider_release_is_noop ... ok
[INFO] [stdout] test workspace::tests::invalid_slot_id_rejected ... ok
[INFO] [stdout] test worker::tests::stat_handler_reports_file_metadata ... ok
[INFO] [stdout] test worker::tests::write_outside_root_is_denied ... ok
[INFO] [stdout] test worker::tests::write_inside_root_is_allowed ... ok
[INFO] [stdout] test workspace::tests::release_fallback_path_is_noop ... ok
[INFO] [stdout] test worker::tests::edit_handler_replaces_string ... ok
[INFO] [stdout] test workspace::tests::safe_agent_strips_bad_chars ... ok
[INFO] [stdout] test worker::tests::write_handler_creates_file ... ok
[INFO] [stdout] test workspace::tests::provision_not_git_repo_falls_back ... ok
[INFO] [stdout] test worker::tests::read_missing_file_returns_io_error ... ok
[INFO] [stdout] test proxy::relay::tests::clean_half_close_propagates_without_idle_fire ... ok
[INFO] [stdout] test proxy::relay::tests::idle_timeout_fires_when_both_sides_silent ... ok
[INFO] [stdout] test workspace::tests::provision_reuses_existing_worktree ... ok
[INFO] [stdout] test workspace::tests::provision_in_git_repo ... ok
[INFO] [stdout] test workspace::tests::release_clean_worktree_removes_it ... ok
[INFO] [stdout] test workspace::tests::release_dirty_worktree_commits_and_hints ... ok
[INFO] [stdout] test proxy::relay::tests::total_timeout_fires_even_when_traffic_is_active ... ok
[INFO] [stdout] test proxy::external::tests::external_proxy_unbound_command_times_out ... ok
[INFO] [stdout] test rlimits::tests::cpu_limit_kills_busy_loop ... ok
[INFO] [stdout] test policy::tests::sandbox_policy_deserialize_only_used_in_fs_worker_binary has been running for over 60 seconds
[INFO] [stdout] test policy::tests::sandbox_policy_deserialize_only_used_in_fs_worker_binary ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- policy::tests::sandbox_policy_deserialize_only_used_in_fs_worker_binary stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'policy::tests::sandbox_policy_deserialize_only_used_in_fs_worker_binary' (1309) panicked at src/policy.rs:835:9:
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Unauthorized SandboxPolicy deserialization site(s) detected:
[INFO] [stdout]   workdir/src/policy.rs: matched `from_str::<SandboxPolicy>`
[INFO] [stdout]   workdir/src/policy.rs: matched `from_slice::<SandboxPolicy>`
[INFO] [stdout]   workdir/src/policy.rs: matched `from_str::<crate::policy::SandboxPolicy>`
[INFO] [stdout]   workdir/src/policy.rs: matched `: SandboxPolicy = serde_json`
[INFO] [stdout]   workdir/src/policy.rs: matched `: SandboxPolicy = serde`
[INFO] [stdout] 
[INFO] [stdout] koda is config-free at runtime. Trust mode → policy_for_agent is the
[INFO] [stdout] only path. The single allowed deserialization site is the koda-fs-worker
[INFO] [stdout] binary (IPC across a process boundary). If you have a legitimate IPC
[INFO] [stdout] reason to add another, update the ALLOWED allowlist in this test with
[INFO] [stdout] a comment explaining why. If your motivation is "users want to override",
[INFO] [stdout] extend `policy_for_agent` or add a trust mode instead.
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d4574d79301 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5d4574d91a8a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5d4574d7ec7c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5d4574d4fbb6 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5d4574d6f0b9 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5d4574cd0f70 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5d4574d6f3e2 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5d4574d4fc62 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5d4574d47d99 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5d4574d50f6d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5d4574d9226c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5d4574b5036e - <koda_sandbox[32fdaee440e3f1bd]::policy::tests::sandbox_policy_deserialize_only_used_in_fs_worker_binary::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   12:     0x5d4574cc43bb - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   13:     0x5d4574cd1595 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   14:     0x5d4574ccae84 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   15:     0x5d4574cd4622 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   16:     0x5d4574d77d0f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   17:     0x788db3af4dfa - <unknown>
[INFO] [stdout]   18:     0x788db3b883d4 - clone
[INFO] [stdout]   19:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     policy::tests::sandbox_policy_deserialize_only_used_in_fs_worker_binary
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 310 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 214.33s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "316cf48e41d4ee6fddf83d7e9364bd8d2c7338429864592e17faaddd7acfc7fe", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "316cf48e41d4ee6fddf83d7e9364bd8d2c7338429864592e17faaddd7acfc7fe", kill_on_drop: false }`
[INFO] [stdout] 316cf48e41d4ee6fddf83d7e9364bd8d2c7338429864592e17faaddd7acfc7fe
