[INFO] cloning repository https://github.com/michaelasper/hackpi
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/michaelasper/hackpi" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmichaelasper%2Fhackpi", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmichaelasper%2Fhackpi'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 7af9be7da83d489cf9f5c090d4f85e31a67bd0e2
[INFO] testing michaelasper/hackpi against 1.98.0-beta.1 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmichaelasper%2Fhackpi" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/michaelasper/hackpi
[INFO] finished tweaking git repo https://github.com/michaelasper/hackpi
[INFO] tweaked toml for git repo https://github.com/michaelasper/hackpi written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/michaelasper/hackpi on toolchain 1.98.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/michaelasper/hackpi 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.98.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[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:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] efa91003fc10f6342aabe65306356cbe3f6d8a66a234ef50adeed1dd004d4aa1
[INFO] running `Command { std: "docker" "start" "efa91003fc10f6342aabe65306356cbe3f6d8a66a234ef50adeed1dd004d4aa1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "efa91003fc10f6342aabe65306356cbe3f6d8a66a234ef50adeed1dd004d4aa1", 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" "efa91003fc10f6342aabe65306356cbe3f6d8a66a234ef50adeed1dd004d4aa1" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "efa91003fc10f6342aabe65306356cbe3f6d8a66a234ef50adeed1dd004d4aa1", 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" "efa91003fc10f6342aabe65306356cbe3f6d8a66a234ef50adeed1dd004d4aa1" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling openssl v0.10.79
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling openssl-sys v0.9.115
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling yoke v0.8.2
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]    Compiling libz-sys v1.1.28
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling anyhow v1.0.102
[INFO] [stderr]    Compiling inotify-sys v0.1.5
[INFO] [stderr]    Compiling instant v0.1.13
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]    Compiling notify-types v1.0.1
[INFO] [stderr]    Compiling libssh2-sys v0.3.1
[INFO] [stderr]    Compiling filetime v0.2.29
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling home v0.5.12
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling libgit2-sys v0.17.0+1.8.1
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling inotify v0.10.2
[INFO] [stderr]    Compiling tokio v1.52.3
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling notify v7.0.0
[INFO] [stderr]    Compiling serde_yml v0.0.12
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling grep-matcher v0.1.8
[INFO] [stderr]    Compiling linux-raw-sys v0.4.15
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling instability v0.3.12
[INFO] [stderr]    Compiling foldhash v0.1.5
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling libyml v0.0.5
[INFO] [stderr]    Compiling encoding_rs_io v0.1.7
[INFO] [stderr]    Compiling memmap2 v0.9.10
[INFO] [stderr]    Compiling globset v0.4.18
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling unicode-width v0.1.14
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling unicode-segmentation v1.13.2
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling compact_str v0.8.1
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling grep-searcher v0.1.16
[INFO] [stderr]    Compiling grep-regex v0.1.14
[INFO] [stderr]    Compiling strum v0.26.3
[INFO] [stderr]    Compiling unicode-truncate v1.1.0
[INFO] [stderr]    Compiling lru v0.12.5
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling crossterm v0.28.1
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling paste v1.0.15
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling fs2 v0.4.3
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling hackpi-guardrails v0.1.0 (/opt/rustwide/workdir/hackpi-guardrails)
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling xxhash-rust v0.8.15
[INFO] [stderr]    Compiling cassowary v0.3.0
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling h2 v0.4.14
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling ratatui v0.28.1
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling tower-http v0.6.10
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling git2 v0.19.0
[INFO] [stderr]    Compiling hackpi-core v0.1.0 (/opt/rustwide/workdir/hackpi-core)
[INFO] [stderr]    Compiling hackpi-tools v0.1.0 (/opt/rustwide/workdir/hackpi-tools)
[INFO] [stderr]    Compiling hackpi-tasks v0.1.0 (/opt/rustwide/workdir/hackpi-tasks)
[INFO] [stderr]    Compiling hackpi-vcs v0.1.0 (/opt/rustwide/workdir/hackpi-vcs)
[INFO] [stderr]    Compiling hackpi-tui v0.1.0 (/opt/rustwide/workdir/hackpi-tui)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 17s
[INFO] running `Command { std: "docker" "inspect" "efa91003fc10f6342aabe65306356cbe3f6d8a66a234ef50adeed1dd004d4aa1", 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" "efa91003fc10f6342aabe65306356cbe3f6d8a66a234ef50adeed1dd004d4aa1" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling num_cpus v1.17.0
[INFO] [stderr]    Compiling deadpool-runtime v0.1.4
[INFO] [stderr]    Compiling assert-json-diff v2.0.2
[INFO] [stderr]    Compiling hackpi-guardrails v0.1.0 (/opt/rustwide/workdir/hackpi-guardrails)
[INFO] [stderr]    Compiling deadpool v0.12.3
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling wiremock v0.6.5
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling hackpi-core v0.1.0 (/opt/rustwide/workdir/hackpi-core)
[INFO] [stderr]    Compiling hackpi-vcs v0.1.0 (/opt/rustwide/workdir/hackpi-vcs)
[INFO] [stderr]    Compiling hackpi-tools v0.1.0 (/opt/rustwide/workdir/hackpi-tools)
[INFO] [stderr]    Compiling hackpi-tasks v0.1.0 (/opt/rustwide/workdir/hackpi-tasks)
[INFO] [stderr]    Compiling hackpi-tui v0.1.0 (/opt/rustwide/workdir/hackpi-tui)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 50.99s
[INFO] running `Command { std: "docker" "inspect" "efa91003fc10f6342aabe65306356cbe3f6d8a66a234ef50adeed1dd004d4aa1", 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" "efa91003fc10f6342aabe65306356cbe3f6d8a66a234ef50adeed1dd004d4aa1" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.49s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/hackpi_core-1b563664c0b7aa01)
[INFO] [stdout] 
[INFO] [stdout] running 91 tests
[INFO] [stdout] test agent::conversation::tests::test_build_assistant_message_does_not_add_for_empty_text_and_no_tool_calls ... ok
[INFO] [stdout] test agent::conversation::tests::test_build_assistant_message_does_not_add_for_empty_tool_calls_with_empty_text ... ok
[INFO] [stdout] test agent::conversation::tests::test_build_assistant_message_adds_for_whitespace_text ... ok
[INFO] [stdout] test agent::conversation::tests::test_build_assistant_message_multiple_calls ... ok
[INFO] [stdout] test agent::conversation::tests::test_build_assistant_message_adds_message_for_non_empty_text ... ok
[INFO] [stdout] test agent::events::tests::test_handle_step_stop_reason_other_reason_returns_false ... ok
[INFO] [stdout] test agent::events::tests::test_handle_step_stop_reason_other_does_not_send_done ... ok
[INFO] [stdout] test agent::events::tests::test_handle_step_stop_reason_end_turn_returns_true ... ok
[INFO] [stdout] test agent::events::tests::test_handle_step_stop_reason_stop_sends_done_event ... ok
[INFO] [stdout] test agent::events::tests::test_handle_step_stop_reason_end_turn_sends_done_event ... ok
[INFO] [stdout] test agent::conversation::tests::test_build_assistant_message_adds_message_for_only_tool_calls_with_empty_text ... ok
[INFO] [stdout] test agent::api::tests::test_process_sse_events_processes_normally_when_not_cancelled ... ok
[INFO] [stdout] test agent::state::tests::test_truncate_output_at_exact_limit_passthrough ... ok
[INFO] [stdout] test agent::api::tests::test_process_sse_events_returns_none_when_cancelled ... ok
[INFO] [stdout] test agent::api::tests::test_process_sse_events_mixed_text_and_partial_json ... ok
[INFO] [stdout] test agent::api::tests::test_process_sse_events_no_partial_json_still_works ... ok
[INFO] [stdout] test agent::api::tests::test_process_sse_events_accumulates_partial_json ... ok
[INFO] [stdout] test agent::api::tests::test_process_sse_events_git_read_via_partial_json ... ok
[INFO] [stdout] test agent::api::tests::test_process_sse_events_partial_json_write_tool_params ... ok
[INFO] [stdout] test agent::tests::test_atomic_bool_reset_makes_load_return_false ... ok
[INFO] [stdout] test agent::tool_dispatch::tests::test_no_empty_assistant_messages_in_tool_results ... ok
[INFO] [stdout] test agent::state::tests::test_truncate_output_one_byte_over_truncates ... ok
[INFO] [stdout] test agent::state::tests::test_truncate_output_unsafe_only_tool_id_falls_back ... ok
[INFO] [stdout] test agent::state::tests::test_truncate_output_over_limit_writes_full_content_to_disk ... ok
[INFO] [stdout] test agent::state::tests::test_truncate_output_sanitizes_tool_id ... ok
[INFO] [stdout] test api::tests::test_process_sse_stream_carriage_return_line_endings ... ok
[INFO] [stdout] test agent::state::tests::test_truncate_output_empty_tool_id_uses_fallback ... ok
[INFO] [stdout] test agent::state::tests::test_truncate_output_non_ascii_safe_boundary ... ok
[INFO] [stdout] test agent::state::tests::test_truncate_output_over_limit_clips_and_mentions_file ... ok
[INFO] [stdout] test api::tests::test_process_sse_stream_data_without_space ... ok
[INFO] [stdout] test api::tests::test_process_sse_stream_done_at_end_still_succeeds ... ok
[INFO] [stdout] test api::tests::test_process_sse_stream_empty_data_line_skipped ... ok
[INFO] [stdout] test api::tests::test_process_sse_stream_empty_stream_logs_warning ... ok
[INFO] [stdout] test api::tests::test_process_sse_stream_done_without_space ... ok
[INFO] [stdout] test api::tests::test_process_sse_stream_handles_split_utf8 ... ok
[INFO] [stdout] test api::tests::test_process_sse_stream_handles_done_only ... ok
[INFO] [stdout] test api::tests::test_process_sse_stream_handles_multiple_events_in_one_chunk ... ok
[INFO] [stdout] test api::tests::test_process_sse_stream_invalid_json_sends_diagnostic ... ok
[INFO] [stdout] test api::tests::test_process_sse_stream_incomplete_stream_logs_warning ... ok
[INFO] [stdout] test api::tests::test_process_sse_stream_non_data_lines_ignored ... ok
[INFO] [stdout] test api::tests::test_process_sse_stream_message_delta_without_input_tokens ... ok
[INFO] [stdout] test api::tests::test_process_sse_stream_normal_events ... ok
[INFO] [stdout] test api::tests::test_process_sse_stream_only_done_succeeds ... ok
[INFO] [stdout] test api::tests::test_process_sse_stream_skips_empty_lines ... ok
[INFO] [stdout] test agent::events::tests::test_handle_step_stop_reason_none_returns_false ... ok
[INFO] [stdout] test api::tests::test_process_sse_stream_normal_events_under_limit ... ok
[INFO] [stdout] test api::tests::test_process_sse_stream_exceeds_max_line_size ... ok
[INFO] [stdout] test system_prompt::tests::test_build_system_prompt_contains_all_sections ... ok
[INFO] [stdout] test system_prompt::tests::test_build_system_prompt_under_500_tokens ... ok
[INFO] [stdout] test system_prompt::tests::test_identity_section_non_empty ... ok
[INFO] [stdout] test system_prompt::tests::test_rules_section_contains_constraints ... ok
[INFO] [stdout] test system_prompt::tests::test_tools_section_contains_known_tools ... ok
[INFO] [stdout] test system_prompt::tests::test_workflow_section_contains_steps ... ok
[INFO] [stdout] test tools::tests::test_dispatch_no_guard_executes_normally ... ok
[INFO] [stdout] test tools::tests::test_dispatch_no_registry_fallback_executes_normally ... ok
[INFO] [stdout] test tools::tests::test_dispatch_permission_ask_allow_once_executes ... ok
[INFO] [stdout] test tools::tests::test_dispatch_clears_profile_when_none ... ok
[INFO] [stdout] test tools::tests::test_dispatch_permission_ask_cancelled_before_wait ... ok
[INFO] [stdout] test api::tests::test_process_sse_stream_exceeds_max_line_size_cumulative ... ok
[INFO] [stdout] test tools::tests::test_dispatch_profile_deny_overrides_guardrail_allow ... ok
[INFO] [stdout] test api::tests::test_process_sse_stream_exact_fit_does_not_overflow ... ok
[INFO] [stdout] test tools::tests::test_dispatch_with_god_mode_bypasses_checks ... ok
[INFO] [stdout] test tools::tests::test_dispatch_with_allow_guard_executes_normally ... ok
[INFO] [stdout] test tools::tests::test_dispatch_with_profile_allow_passes_through ... ok
[INFO] [stdout] test tools::tests::test_dispatch_with_profile_ask_prompts ... ok
[INFO] [stdout] test tools::tests::test_dispatch_with_unknown_tool_returns_none ... ok
[INFO] [stdout] test tools::tests::test_dispatch_with_profile_deny_blocks_tool ... ok
[INFO] [stdout] test types::tests::test_api_config_from_env_falls_back_to_defaults ... ok
[INFO] [stdout] test api::tests::test_process_sse_stream_skips_invalid_utf8_and_continues ... ok
[INFO] [stdout] test types::tests::test_delta_payload_deserializes_partial_json ... ok
[INFO] [stdout] test types::tests::test_delta_payload_deserializes_stop_reason ... ok
[INFO] [stdout] test types::tests::test_delta_payload_deserializes_text_without_partial_json ... ok
[INFO] [stdout] test types::tests::test_stream_event_deserializes_tool_input_delta ... ok
[INFO] [stdout] test types::tests::test_stream_event_deserializes_usage_without_input_tokens ... ok
[INFO] [stdout] test types::tests::test_usage_deserializes_with_all_fields_missing ... ok
[INFO] [stdout] test types::tests::test_usage_deserializes_with_missing_input_tokens ... ok
[INFO] [stdout] test agent::state::tests::test_truncate_output_under_limit_passthrough ... ok
[INFO] [stdout] test api::tests::test_process_sse_stream_leftover_bytes_on_eof ... ok
[INFO] [stdout] test types::tests::test_usage_round_trip ... ok
[INFO] [stdout] test tools::tests::test_dispatch_permission_ask_timeout_returns_system_error ... ok
[INFO] [stdout] test agent::conversation::tests::test_build_assistant_message_includes_tool_use_blocks ... ok
[INFO] [stdout] test agent::events::tests::test_handle_step_stop_reason_stop_returns_true ... ok
[INFO] [stdout] test types::tests::test_api_config_from_env_overrides_defaults ... ok
[INFO] [stdout] test tools::tests::test_dispatch_permission_ask_cancelled_during_wait ... ok
[INFO] [stdout] test agent::tool_dispatch::tests::test_valid_tool_json_passes_through ... ok
[INFO] [stdout] test agent::tests::test_run_does_not_exit_immediately_when_cancelled_reset ... ok
[INFO] [stdout] test api::tests::test_api_client_has_connect_timeout ... ok
[INFO] [stdout] test agent::tests::test_run_returns_immediately_when_cancelled_true ... ok
[INFO] [stdout] test api::tests::test_send_messages_http_401_returns_error ... ok
[INFO] [stdout] test api::tests::test_send_messages_http_500_returns_error ... ok
[INFO] [stdout] test agent::tool_dispatch::tests::test_malformed_tool_json_returns_system_error ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 91 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.51s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration_test.rs (/opt/rustwide/target/debug/deps/integration_test-22959c92ea6bb61b)
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test test_agent_basic_conversation ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/hackpi_guardrails-8bdd77639c044e1f)
[INFO] [stdout] 
[INFO] [stdout] running 408 tests
[INFO] [stdout] test command_gate::tests::test_chmod_r_uses_case_sensitive_matching ... ok
[INFO] [stdout] test command_gate::tests::test_config_allow_rule_overrides_vcs_deny ... ok
[INFO] [stdout] test command_gate::tests::test_dangerous_patterns_contains_expected_patterns ... ok
[INFO] [stdout] test command_gate::tests::test_allow_rule_overrides_built_in_rm_rf ... ok
[INFO] [stdout] test command_gate::tests::test_chmod_lowercase_r_not_flagged ... ok
[INFO] [stdout] test command_gate::tests::test_cargo_test_not_denied_by_vcs_patterns ... ok
[INFO] [stdout] test command_gate::tests::test_dangerous_patterns_safe_is_none ... ok
[INFO] [stdout] test command_gate::tests::test_add_not_flagged_by_dd ... ok
[INFO] [stdout] test command_gate::tests::test_address_book_not_flagged_by_dd ... ok
[INFO] [stdout] test command_gate::tests::test_cat_issue_not_flagged_by_su ... ok
[INFO] [stdout] test command_gate::tests::test_dd_uses_word_boundary_matching ... ok
[INFO] [stdout] test command_gate::tests::test_chmod_r_asks ... ok
[INFO] [stdout] test command_gate::tests::test_case_insensitive_sudo ... ok
[INFO] [stdout] test command_gate::tests::test_dangerous_patterns_sudo_denies ... ok
[INFO] [stdout] test command_gate::tests::test_curl_asks ... ok
[INFO] [stdout] test command_gate::tests::test_chpasswd_denies ... ok
[INFO] [stdout] test command_gate::tests::test_dd_denies ... ok
[INFO] [stdout] test command_gate::tests::test_dangerous_patterns_rm_rf_asks ... ok
[INFO] [stdout] test command_gate::tests::test_case_insensitive_rm_rf ... ok
[INFO] [stdout] test command_gate::tests::test_chained_commands_rm_rf_and_curl ... ok
[INFO] [stdout] test command_gate::tests::test_chown_r_asks ... ok
[INFO] [stdout] test command_gate::tests::test_deny_rule_scoped_to_different_tool_does_not_apply ... ok
[INFO] [stdout] test command_gate::tests::test_dev_sda_denies ... ok
[INFO] [stdout] test command_gate::tests::test_dev_nvme_denies ... ok
[INFO] [stdout] test command_gate::tests::test_doas_denies ... ok
[INFO] [stdout] test command_gate::tests::test_gh_uppercase_denied ... ok
[INFO] [stdout] test command_gate::tests::test_fork_bomb_denies ... ok
[INFO] [stdout] test command_gate::tests::test_gh_word_boundary_not_inside_other_word ... ok
[INFO] [stdout] test command_gate::tests::test_git_commit_denied_by_vcs_pattern ... ok
[INFO] [stdout] test command_gate::tests::test_gh_pr_create_denied_by_vcs_pattern ... ok
[INFO] [stdout] test command_gate::tests::test_git_status_denied_by_vcs_pattern ... ok
[INFO] [stdout] test command_gate::tests::test_git_log_denied_by_vcs_pattern ... ok
[INFO] [stdout] test command_gate::tests::test_git_uses_word_boundary_matching ... ok
[INFO] [stdout] test command_gate::tests::test_git_uppercase_denied ... ok
[INFO] [stdout] test command_gate::tests::test_mkfs_denies ... ok
[INFO] [stdout] test command_gate::tests::test_gh_uses_word_boundary_matching ... ok
[INFO] [stdout] test command_gate::tests::test_gh_issue_list_denied_by_vcs_pattern ... ok
[INFO] [stdout] test command_gate::tests::test_git_word_boundary_not_inside_other_word ... ok
[INFO] [stdout] test command_gate::tests::test_no_matching_pattern_allows ... ok
[INFO] [stdout] test command_gate::tests::test_ls_not_denied_by_vcs_patterns ... ok
[INFO] [stdout] test command_gate::tests::test_no_space_dev_sda_denies ... ok
[INFO] [stdout] test command_gate::tests::test_rm_r_asks ... ok
[INFO] [stdout] test command_gate::tests::test_piped_curl_to_bash_asks_for_curl ... ok
[INFO] [stdout] test command_gate::tests::test_no_space_dev_nvme_denies ... ok
[INFO] [stdout] test command_gate::tests::test_piped_curl_with_sudo_denies_for_sudo ... ok
[INFO] [stdout] test command_gate::tests::test_rm_rf_asks ... ok
[INFO] [stdout] test command_gate::tests::test_passwd_denies ... ok
[INFO] [stdout] test command_gate::tests::test_rm_rf_before_rm_r ... ok
[INFO] [stdout] test command_gate::tests::test_rules_allow_matches ... ok
[INFO] [stdout] test command_gate::tests::test_piped_wget_to_sh_asks_for_wget ... ok
[INFO] [stdout] test command_gate::tests::test_rules_no_command_pattern_skipped ... ok
[INFO] [stdout] test command_gate::tests::test_safe_command_allows ... ok
[INFO] [stdout] test command_gate::tests::test_su_denies ... ok
[INFO] [stdout] test command_gate::tests::test_su_uses_word_boundary_matching ... ok
[INFO] [stdout] test command_gate::tests::test_source_env_not_flagged_by_su ... ok
[INFO] [stdout] test command_gate::tests::test_rules_ask_matches ... ok
[INFO] [stdout] test command_gate::tests::test_sudo_denies ... ok
[INFO] [stdout] test command_gate::tests::test_vcs_patterns_exist_in_dangerous_patterns ... ok
[INFO] [stdout] test command_gate::tests::test_wget_asks ... ok
[INFO] [stdout] test command_gate::tests::test_wildcard_curl_deny_does_not_match_non_curl ... ok
[INFO] [stdout] test command_gate::tests::test_wildcard_curl_allow_overrides_built_in_ask ... ok
[INFO] [stdout] test command_gate::tests::test_wildcard_ssh_deny_does_not_match_echo ... ok
[INFO] [stdout] test command_gate::tests::test_word_boundary_dd_after_semicolon ... ok
[INFO] [stdout] test command_gate::tests::test_word_boundary_dd_in_heredoc_not_flagged ... ok
[INFO] [stdout] test command_gate::tests::test_word_boundary_dd_in_url_not_flagged ... ok
[INFO] [stdout] test command_gate::tests::test_word_boundary_su_after_pipe ... ok
[INFO] [stdout] test command_gate::tests::test_word_boundary_su_in_result_not_flagged ... ok
[INFO] [stdout] test command_gate::tests::test_word_boundary_su_with_dash_prefix ... ok
[INFO] [stdout] test command_gate::tests::test_wildcard_bare_asterisk_deny_matches_everything ... ok
[INFO] [stdout] test command_gate::tests::test_deny_rule_scoped_to_correct_tool_applies ... ok
[INFO] [stdout] test command_gate::tests::test_rules_deny_first_then_allow ... ok
[INFO] [stdout] test command_gate::tests::test_wildcard_pattern_without_asterisk_still_works ... ok
[INFO] [stdout] test command_gate::tests::test_wildcard_curl_deny_matches_curl_url ... ok
[INFO] [stdout] test command_gate::tests::test_rules_deny_matches ... ok
[INFO] [stdout] test command_gate::tests::test_wildcard_ssh_deny_matches_ssh_command ... ok
[INFO] [stdout] test command_gate::tests::test_wildcard_curl_deny_matches_curl_http_url ... ok
[INFO] [stdout] test config::tests::test_load_all_empty_directory ... ok
[INFO] [stdout] test config::tests::test_load_claude_settings_empty_permissions ... ok
[INFO] [stdout] test config::tests::test_load_all_skips_missing_files ... ok
[INFO] [stdout] test config::tests::test_load_all_invalid_json_returns_error ... ok
[INFO] [stdout] test config::tests::test_load_claude_settings_no_permissions_block ... ok
[INFO] [stdout] test config::tests::test_load_all_claude_local_overrides_claude_project ... ok
[INFO] [stdout] test config::tests::test_load_claude_settings_invalid_json ... ok
[INFO] [stdout] test config::tests::test_load_all_partial_failure_recovers ... ok
[INFO] [stdout] test command_gate::tests::test_allow_rule_for_rm_rf_bypasses_dangerous_patterns ... ok
[INFO] [stdout] test config::tests::test_load_claude_settings_with_allow_deny ... ok
[INFO] [stdout] test config::tests::test_merge_rules_empty_sources ... ok
[INFO] [stdout] test config::tests::test_parse_command_gate_block_allow_array ... ok
[INFO] [stdout] test config::tests::test_load_all_higher_priority_overrides_lower ... ok
[INFO] [stdout] test config::tests::test_parse_command_gate_block_ask_array ... ok
[INFO] [stdout] test config::tests::test_load_hackpi_config_invalid_json ... ok
[INFO] [stdout] test config::tests::test_load_hackpi_config_empty_object ... ok
[INFO] [stdout] test config::tests::test_parse_command_gate_block_deny_before_allow_order ... ok
[INFO] [stdout] test config::tests::test_parse_command_gate_block_empty_patterns ... ok
[INFO] [stdout] test config::tests::test_parse_command_gate_block_unknown_action_rejected ... ok
[INFO] [stdout] test config::tests::test_parse_command_gate_block_combined_patterns_and_arrays ... ok
[INFO] [stdout] test config::tests::test_parse_command_gate_block_non_string_action_rejected ... ok
[INFO] [stdout] test config::tests::test_parse_command_gate_block_patterns ... ok
[INFO] [stdout] test config::tests::test_parse_command_gate_extras_allow_git_in_bash_false ... ok
[INFO] [stdout] test config::tests::test_parse_command_gate_extras_allow_git_in_bash_true ... ok
[INFO] [stdout] test config::tests::test_parse_command_gate_extras_default_false ... ok
[INFO] [stdout] test config::tests::test_parse_file_protection_block_empty ... ok
[INFO] [stdout] test config::tests::test_parse_file_protection_block_invalid_operation_value_rejected ... ok
[INFO] [stdout] test config::tests::test_parse_file_protection_block_patterns ... ok
[INFO] [stdout] test config::tests::test_parse_file_protection_block_per_op_rules ... ok
[INFO] [stdout] test config::tests::test_parse_file_protection_block_single_op ... ok
[INFO] [stdout] test config::tests::test_parse_file_protection_block_unknown_action_rejected ... ok
[INFO] [stdout] test config::tests::test_parse_path_access_block_ask_true_generates_ask_rule ... ok
[INFO] [stdout] test config::tests::test_merge_rules_three_sources ... ok
[INFO] [stdout] test config::tests::test_parse_permissions_block_bare_pattern_is_valid ... ok
[INFO] [stdout] test config::tests::test_parse_permissions_block_bare_pattern_no_tool ... ok
[INFO] [stdout] test config::tests::test_load_hackpi_config_all_sections ... ok
[INFO] [stdout] test config::tests::test_merge_rules_concatenates_in_order ... ok
[INFO] [stdout] test config::tests::test_load_hackpi_config_file_not_found ... ok
[INFO] [stdout] test config::tests::test_parse_permissions_block_none_allow ... ok
[INFO] [stdout] test config::tests::test_parse_permissions_block_none_deny ... ok
[INFO] [stdout] test config::tests::test_parse_permissions_block_rejects_empty_entry ... ok
[INFO] [stdout] test config::tests::test_parse_permissions_block_rejects_unknown_tool ... ok
[INFO] [stdout] test config::tests::test_parse_permissions_block_valid_entries ... ok
[INFO] [stdout] test config::tests::test_parse_permissions_block_rejects_empty_tool_name ... ok
[INFO] [stdout] test config::tests::test_vcs_bypass_rules_returns_git_and_gh_allow ... ok
[INFO] [stdout] test config::tests::test_parse_permissions_block_rejects_missing_closing_paren ... ok
[INFO] [stdout] test config::tests::test_parse_permissions_block_rejects_empty_pattern ... ok
[INFO] [stdout] test config::tests::test_parse_file_protection_block_string_instead_of_object_rejected ... ok
[INFO] [stdout] test config::tests::test_parse_path_access_block_allow_deny ... ok
[INFO] [stdout] test config::tests::test_parse_path_access_block_ask_false_no_ask_rule ... ok
[INFO] [stdout] test command_gate::tests::test_deny_rule_overrides_built_in_ask_for_curl ... ok
[INFO] [stdout] test command_gate::tests::test_echo_sure_not_flagged_by_su ... ok
[INFO] [stdout] test command_gate::tests::test_empty_command_allows ... ok
[INFO] [stdout] test command_gate::tests::test_wildcard_cargo_allow_does_not_match_other_commands ... ok
[INFO] [stdout] test command_gate::tests::test_wildcard_wget_deny_matches_wget_url ... ok
[INFO] [stdout] test file_protection::tests::test_default_pattern_env_read_action ... ok
[INFO] [stdout] test command_gate::tests::test_wildcard_cargo_allow_matches_cargo_subcommands ... ok
[INFO] [stdout] test file_protection::tests::test_default_pattern_git_read_action ... ok
[INFO] [stdout] test file_protection::tests::test_default_protected_patterns_count ... ok
[INFO] [stdout] test config::tests::test_parse_path_access_block_no_ask_field ... ok
[INFO] [stdout] test config::tests::test_load_hackpi_config_minimal ... ok
[INFO] [stdout] test config::tests::test_parse_command_gate_block_deny_array ... ok
[INFO] [stdout] test file_protection::tests::test_file_rules_tool_scoped_no_match ... ok
[INFO] [stdout] test file_protection::tests::test_file_rules_no_path_pattern_skipped ... ok
[INFO] [stdout] test file_protection::tests::test_file_rules_tool_scoped_matches ... ok
[INFO] [stdout] test file_protection::tests::test_check_env_write_returns_deny ... ok
[INFO] [stdout] test file_protection::tests::test_check_env_read_returns_ask ... ok
[INFO] [stdout] test file_protection::tests::test_file_rules_ask_matches ... ok
[INFO] [stdout] test file_protection::tests::test_check_custom_rule_overrides_default ... ok
[INFO] [stdout] test file_protection::tests::test_nested_custom_rule_matches_subdirectory ... ok
[INFO] [stdout] test file_protection::tests::test_file_rules_allow_matches ... ok
[INFO] [stdout] test file_protection::tests::test_check_custom_deny_rule_blocks_non_protected ... ok
[INFO] [stdout] test file_protection::tests::test_file_rules_no_path_match_returns_none ... ok
[INFO] [stdout] test file_protection::tests::test_check_custom_ask_rule_overrides_default_allow ... ok
[INFO] [stdout] test file_protection::tests::test_file_rules_deny_matches ... ok
[INFO] [stdout] test file_protection::tests::test_read_env_local_returns_ask ... ok
[INFO] [stdout] test file_protection::tests::test_read_env_returns_ask ... ok
[INFO] [stdout] test file_protection::tests::test_nested_deeply_env_local ... ok
[INFO] [stdout] test file_protection::tests::test_nested_custom_rule_with_globstar ... ok
[INFO] [stdout] test file_protection::tests::test_read_nested_env_returns_ask ... ok
[INFO] [stdout] test file_protection::tests::test_nested_secrets_deeply ... ok
[INFO] [stdout] test file_protection::tests::test_read_credentials_file_returns_ask ... ok
[INFO] [stdout] test file_protection::tests::test_nested_credentials_in_subdir ... ok
[INFO] [stdout] test file_protection::tests::test_nested_pem_in_deep_path ... ok
[INFO] [stdout] test file_protection::tests::test_check_git_config_write_returns_deny ... ok
[INFO] [stdout] test file_protection::tests::test_check_git_config_read_returns_allow ... ok
[INFO] [stdout] test file_protection::tests::test_same_file_protected_both_ops_with_custom_rules ... ok
[INFO] [stdout] test file_protection::tests::test_same_file_read_asks_write_denies ... ok
[INFO] [stdout] test file_protection::tests::test_read_git_config_returns_allow ... ok
[INFO] [stdout] test file_protection::tests::test_write_env_returns_deny ... ok
[INFO] [stdout] test file_protection::tests::test_nested_git_in_inside_hidden_dir ... ok
[INFO] [stdout] test file_protection::tests::test_check_secrets_key_pem_read_returns_ask ... ok
[INFO] [stdout] test hot_reload::tests::test_try_reload_atomic_swap_visible_immediately ... ok
[INFO] [stdout] test hot_reload::tests::test_try_reload_no_config_files_ok ... ok
[INFO] [stdout] test file_protection::tests::test_write_nested_env_returns_deny ... ok
[INFO] [stdout] test file_protection::tests::test_key_file_in_deep_path_returns_ask ... ok
[INFO] [stdout] test file_protection::tests::test_read_ed25519_key_returns_ask ... ok
[INFO] [stdout] test hot_reload::tests::test_try_reload_preserves_old_rules_on_invalid_json ... ok
[INFO] [stdout] test hot_reload::tests::test_validate_empty_command_pattern_err ... ok
[INFO] [stdout] test hot_reload::tests::test_validate_empty_rules_ok ... ok
[INFO] [stdout] test hot_reload::tests::test_validate_invalid_glob_err ... ok
[INFO] [stdout] test hot_reload::tests::test_validate_none_path_and_command_ok ... ok
[INFO] [stdout] test hot_reload::tests::test_validate_rejects_empty_command_pattern ... ok
[INFO] [stdout] test hot_reload::tests::test_validate_rejects_invalid_glob_with_brackets ... ok
[INFO] [stdout] test hot_reload::tests::test_try_reload_merge_three_configs ... ok
[INFO] [stdout] test hot_reload::tests::test_validate_rejects_unknown_tool_name ... ok
[INFO] [stdout] test hot_reload::tests::test_validate_unknown_tool_err ... ok
[INFO] [stdout] test file_protection::tests::test_read_secrets_key_pem_returns_ask ... ok
[INFO] [stdout] test hot_reload::tests::test_watcher_detects_changes ... ignored, notify may not work reliably in CI on Linux
[INFO] [stdout] test hot_reload::tests::test_watcher_does_not_update_on_invalid_config ... ignored, notify may not work reliably in CI on Linux
[INFO] [stdout] test hot_reload::tests::test_try_reload_preserves_old_rules_on_invalid_config ... ok
[INFO] [stdout] test file_protection::tests::test_check_non_protected_path_returns_allow ... ok
[INFO] [stdout] test hot_reload::tests::test_try_reload_with_valid_config ... ok
[INFO] [stdout] test hot_reload::tests::test_validate_valid_rules_ok ... ok
[INFO] [stdout] test hot_reload::tests::test_validate_valid_glob_with_special_chars_ok ... ok
[INFO] [stdout] test path_guard::tests::test_check_path_inside_workspace_allows ... ok
[INFO] [stdout] test path_guard::tests::test_check_path_outside_workspace_no_rule_asks ... ok
[INFO] [stdout] test path_guard::tests::test_check_outside_workspace_with_glob_allow_rule ... ok
[INFO] [stdout] test path_guard::tests::test_check_path_outside_workspace_with_allow_rule_allows ... ok
[INFO] [stdout] test path_guard::tests::test_check_relative_path_inside_workspace ... ok
[INFO] [stdout] test path_guard::tests::test_check_dot_dot_traversal_asks ... ok
[INFO] [stdout] test path_guard::tests::test_check_rules_absolute_path_pattern ... ok
[INFO] [stdout] test path_guard::tests::test_check_path_inside_workspace_with_allow_rule_allows ... ok
[INFO] [stdout] test path_guard::tests::test_check_path_inside_workspace_with_deny_rule_denies ... ok
[INFO] [stdout] test path_guard::tests::test_check_path_outside_workspace_with_deny_rule_denies ... ok
[INFO] [stdout] test file_protection::tests::test_write_git_config_returns_deny ... ok
[INFO] [stdout] test hot_reload::tests::test_try_reload_preserves_old_rules_when_new_config_is_missing_required_fields ... ok
[INFO] [stdout] test path_guard::tests::test_check_rules_tool_scoped_matches_correct_tool ... ok
[INFO] [stdout] test path_guard::tests::test_check_rules_allow_match ... ok
[INFO] [stdout] test path_guard::tests::test_check_rules_ask_action_skipped ... ok
[INFO] [stdout] test path_guard::tests::test_check_rules_tool_scoped_no_match_for_different_tool ... ok
[INFO] [stdout] test path_guard::tests::test_check_symlink_to_outside_asks ... ok
[INFO] [stdout] test path_guard::tests::test_check_symlink_inside_workspace_allows ... ok
[INFO] [stdout] test file_protection::tests::test_nested_not_protected_returns_none ... ok
[INFO] [stdout] test path_guard::tests::test_is_outside_workspace_dot_dot_traversal ... ok
[INFO] [stdout] test path_guard::tests::test_check_tool_scoped_rule_only_matches_specific_tool ... ok
[INFO] [stdout] test path_guard::tests::test_check_rules_skip_command_only_rules ... ok
[INFO] [stdout] test path_guard::tests::test_check_rules_deny_match ... ok
[INFO] [stdout] test path_guard::tests::test_check_rules_deny_takes_precedence_over_allow ... ok
[INFO] [stdout] test file_protection::tests::test_read_secrets_in_subdir_returns_ask ... ok
[INFO] [stdout] test path_guard::tests::test_check_rules_no_match_returns_none ... ok
[INFO] [stdout] test path_guard::tests::test_check_rules_glob_pattern_nested ... ok
[INFO] [stdout] test file_protection::tests::test_read_src_main_rs_returns_none ... ok
[INFO] [stdout] test path_guard::tests::test_is_outside_workspace_outside ... ok
[INFO] [stdout] test file_protection::tests::test_nested_key_in_deep_path ... ok
[INFO] [stdout] test path_guard::tests::test_is_outside_workspace_symlink_inside_workspace ... ok
[INFO] [stdout] test path_guard::tests::test_resolve_tool_path_absolute ... ok
[INFO] [stdout] test path_guard::tests::test_resolve_tool_path_dot ... ok
[INFO] [stdout] test path_guard::tests::test_resolve_tool_path_tilde ... ok
[INFO] [stdout] test pattern::tests::test_command_matches_case_insensitive ... ok
[INFO] [stdout] test pattern::tests::test_command_matches_empty_command ... ok
[INFO] [stdout] test pattern::tests::test_command_matches_case_insensitive_reverse ... ok
[INFO] [stdout] test pattern::tests::test_command_matches_substring ... ok
[INFO] [stdout] test pattern::tests::test_command_matches_empty_pattern ... ok
[INFO] [stdout] test pattern::tests::test_is_known_tool_bash ... ok
[INFO] [stdout] test pattern::tests::test_is_known_tool_edit ... ok
[INFO] [stdout] test path_guard::tests::test_is_outside_workspace_workspace_root_itself ... ok
[INFO] [stdout] test pattern::tests::test_is_known_tool_read ... ok
[INFO] [stdout] test pattern::tests::test_is_known_tool_case_insensitive ... ok
[INFO] [stdout] test pattern::tests::test_is_known_tool_search_grep ... ok
[INFO] [stdout] test pattern::tests::test_is_known_tool_searchgrep ... ok
[INFO] [stdout] test path_guard::tests::test_is_outside_workspace_symlink_resolved_to_inside ... ok
[INFO] [stdout] test pattern::tests::test_is_known_tool_unknown ... ok
[INFO] [stdout] test pattern::tests::test_is_known_tool_write ... ok
[INFO] [stdout] test pattern::tests::test_compile_valid_glob ... ok
[INFO] [stdout] test pattern::tests::test_parse_bare_pattern_absolute ... ok
[INFO] [stdout] test pattern::tests::test_parse_bare_pattern_no_tool ... ok
[INFO] [stdout] test pattern::tests::test_command_matches_no_match ... ok
[INFO] [stdout] test path_guard::tests::test_resolve_tool_path_relative ... ok
[INFO] [stdout] test path_guard::tests::test_resolve_tool_path_tilde_only ... ok
[INFO] [stdout] test pattern::tests::test_compile_invalid_glob ... ok
[INFO] [stdout] test pattern::tests::test_parse_empty_tool_name_rejected ... ok
[INFO] [stdout] test pattern::tests::test_parse_no_parens_is_bare_not_error ... ok
[INFO] [stdout] test pattern::tests::test_parse_unknown_tool_rejected ... ok
[INFO] [stdout] test pattern::tests::test_parse_write_permission ... ok
[INFO] [stdout] test pattern::tests::test_parse_bash_permission ... ok
[INFO] [stdout] test pattern::tests::test_parse_empty_pattern_rejected ... ok
[INFO] [stdout] test pattern::tests::test_parse_empty_string_rejected ... ok
[INFO] [stdout] test pattern::tests::test_path_matches_glob_invalid_pattern ... ok
[INFO] [stdout] test pattern::tests::test_path_matches_glob_no_match ... ok
[INFO] [stdout] test pattern::tests::test_resolve_absolute_path ... ok
[INFO] [stdout] test pattern::tests::test_resolve_relative_path ... ok
[INFO] [stdout] test pattern::tests::test_resolve_tilde_path ... ok
[INFO] [stdout] test pattern::tests::test_resolve_tilde_only ... ok
[INFO] [stdout] test pattern::tests::test_rule_matches_operation_filter_read_only ... ok
[INFO] [stdout] test pattern::tests::test_rule_matches_operation_filter_write_only ... ok
[INFO] [stdout] test pattern::tests::test_rule_matches_operation_op_param_default_all_ops ... ok
[INFO] [stdout] test pattern::tests::test_rule_matches_operation_combined_rule_applies_to_all_ops ... ok
[INFO] [stdout] test pattern::tests::test_rule_matches_operation_path_rule ... ok
[INFO] [stdout] test pattern::tests::test_path_matches_glob_in_workspace ... ok
[INFO] [stdout] test pattern::tests::test_rule_matches_operation_path_rule_applies_to_read_and_write ... ok
[INFO] [stdout] test file_protection::tests::test_read_key_file_returns_ask ... ok
[INFO] [stdout] test pattern::tests::test_path_matches_glob_relative_pattern ... ok
[INFO] [stdout] test pattern::tests::test_path_matches_glob_absolute ... ok
[INFO] [stdout] test pattern::tests::test_rule_matches_operation_command_only_rule ... ok
[INFO] [stdout] test pattern::tests::test_rule_matches_tool_case_insensitive ... ok
[INFO] [stdout] test pattern::tests::test_rule_matches_tool_matching ... ok
[INFO] [stdout] test pattern::tests::test_rule_matches_tool_no_tool_pattern ... ok
[INFO] [stdout] test pattern::tests::test_parse_read_permission ... ok
[INFO] [stdout] test pattern::tests::test_parse_tool_name_case_insensitive ... ok
[INFO] [stdout] test path_guard::tests::test_is_outside_workspace_inside ... ok
[INFO] [stdout] test pattern::tests::test_session_key_lowercases_tool ... ok
[INFO] [stdout] test pattern::tests::test_compile_glob_matches ... ok
[INFO] [stdout] test pattern::tests::test_rule_matches_tool_not_matching ... ok
[INFO] [stdout] test pattern::tests::test_session_key_format ... ok
[INFO] [stdout] test file_protection::tests::test_read_rsa_key_returns_ask ... ok
[INFO] [stdout] test pattern::tests::test_wildcard_asterisk_in_middle ... ok
[INFO] [stdout] test pattern::tests::test_session_key_preserves_pattern_case ... ok
[INFO] [stdout] test pattern::tests::test_wildcard_cargo_asterisk_matches_subcommands ... ok
[INFO] [stdout] test pattern::tests::test_wildcard_bare_asterisk_matches_everything ... ok
[INFO] [stdout] test pattern::tests::test_wildcard_curl_alone_no_arg_not_matched_by_curl_space_asterisk ... ok
[INFO] [stdout] test pattern::tests::test_wildcard_curl_piped_to_sh ... ok
[INFO] [stdout] test pattern::tests::test_wildcard_curl_asterisk_matches_curl_url ... ok
[INFO] [stdout] test pattern::tests::test_wildcard_empty_pattern_matches ... ok
[INFO] [stdout] test pattern::tests::test_wildcard_cargo_asterisk_does_not_match_non_cargo ... ok
[INFO] [stdout] test pattern::tests::test_wildcard_ssh_asterisk_matches_ssh_command ... ok
[INFO] [stdout] test pattern::tests::test_wildcard_curl_asterisk_no_space ... ok
[INFO] [stdout] test pattern::tests::test_wildcard_sudo_asterisk_matches_sudo_commands ... ok
[INFO] [stdout] test pattern::tests::test_wildcard_trailing_segment_must_match_end ... ok
[INFO] [stdout] test pattern::tests::test_wildcard_no_wildcard_falls_back_to_substring ... ok
[INFO] [stdout] test pattern::tests::test_word_boundary_case_insensitive ... ok
[INFO] [stdout] test pattern::tests::test_wildcard_empty_command_no_match_for_non_empty_pattern ... ok
[INFO] [stdout] test pattern::tests::test_wildcard_curl_asterisk_does_not_match_other_commands ... ok
[INFO] [stdout] test pattern::tests::test_word_boundary_empty_pattern ... ok
[INFO] [stdout] test pattern::tests::test_word_boundary_case_sensitive ... ok
[INFO] [stdout] test pattern::tests::test_word_boundary_no_match ... ok
[INFO] [stdout] test pattern::tests::test_word_boundary_su_does_not_match_inside_word ... ok
[INFO] [stdout] test pattern::tests::test_word_boundary_respects_punctuation ... ok
[INFO] [stdout] test pattern::tests::test_wildcard_wget_asterisk_matches_wget_url ... ok
[INFO] [stdout] test pattern::tests::test_word_boundary_dd_does_not_match_inside_word ... ok
[INFO] [stdout] test pattern::tests::test_wildcard_leading_segment_must_match_start ... ok
[INFO] [stdout] test pattern::tests::test_wildcard_multiple_asterisks ... ok
[INFO] [stdout] test pattern::tests::test_word_boundary_su_matches_at_start ... ok
[INFO] [stdout] test pattern::tests::test_word_boundary_dd_matches_at_start ... ok
[INFO] [stdout] test pattern::tests::test_word_boundary_su_matches_with_space_prefix ... ok
[INFO] [stdout] test pattern::tests::test_wildcard_case_insensitive ... ok
[INFO] [stdout] test tests::profile_check_god_mode_bypasses_everything ... ok
[INFO] [stdout] test tests::profile_deny_short_circuits_before_guardrails ... ok
[INFO] [stdout] test tests::profile_allow_passes_through_to_guardrails ... ok
[INFO] [stdout] test tests::profile_allow_guardrails_deny_results_in_deny ... ok
[INFO] [stdout] test tests::profile_deny_wins_over_god_mode_false ... ok
[INFO] [stdout] test tests::profile_none_falls_back_to_normal_check ... ok
[INFO] [stdout] test tests::profile_ask_guardrails_deny_results_in_ask ... ok
[INFO] [stdout] test tests::test_allow_git_in_bash_true_bypasses_vcs_deny ... ok
[INFO] [stdout] test tests::profile_deny_guardrails_deny_both_deny ... ok
[INFO] [stdout] test tests::test_append_to_permissions_duplicate_prevention ... ok
[INFO] [stdout] test tests::test_append_to_permissions_duplicate_case_insensitive ... ok
[INFO] [stdout] test tests::test_append_to_permissions_creates_new_file_with_allow ... ok
[INFO] [stdout] test tests::test_allow_git_in_bash_true_allows_gh ... ok
[INFO] [stdout] test tests::test_bash_ls_still_allowed_with_vcs_patterns ... ok
[INFO] [stdout] test tests::test_bash_gh_issue_list_denied_by_default ... ok
[INFO] [stdout] test tests::test_check_tool_allow_rule_bypasses_dangerous_patterns ... ok
[INFO] [stdout] test tests::test_check_tool_consults_session_cache_allows ... ok
[INFO] [stdout] test tests::test_check_tool_session_cache_allow_bypasses_guards ... ok
[INFO] [stdout] test tests::test_check_tool_no_cache_entry_runs_normal_checks ... ok
[INFO] [stdout] test tests::test_check_tool_session_cache_deny_bypasses_guards ... ok
[INFO] [stdout] test tests::test_append_to_permissions_invalid_json_returns_error ... ok
[INFO] [stdout] test tests::test_check_tool_session_cache_allow_session_for_path ... ok
[INFO] [stdout] test tests::test_check_tool_session_cache_key_consistency ... ok
[INFO] [stdout] test tests::test_check_tool_session_cache_deny_on_path ... ok
[INFO] [stdout] test tests::test_append_to_permissions_appends_to_existing_deny ... ok
[INFO] [stdout] test tests::profile_ask_escalates_even_when_guardrails_allow ... ok
[INFO] [stdout] test tests::test_append_to_permissions_write_failure_returns_error ... ok
[INFO] [stdout] test tests::test_append_to_permissions_atomic_write_no_temp_file_left_behind ... ok
[INFO] [stdout] test tests::test_append_to_permissions_invalid_target_array ... ok
[INFO] [stdout] test tests::test_bash_git_status_denied_by_default ... ok
[INFO] [stdout] test tests::test_clear_session ... ok
[INFO] [stdout] test tests::test_git_write_add_and_commit_allowed ... ok
[INFO] [stdout] test tests::test_check_tool_with_both_command_and_path_command_wins ... ok
[INFO] [stdout] test tests::test_git_write_allow_rule_overrides_destructive ... ok
[INFO] [stdout] test tests::test_god_mode_bypasses_all_checks ... ok
[INFO] [stdout] test tests::test_command_gate_allow_overrides_vcs_deny ... ok
[INFO] [stdout] test tests::test_git_write_reset_hard_denied ... ok
[INFO] [stdout] test tests::test_git_write_branch_delete_asks ... ok
[INFO] [stdout] test tests::test_god_mode_stored_and_accessible ... ok
[INFO] [stdout] test tests::test_guard_type_display ... ok
[INFO] [stdout] test tests::test_load_rules_empty_config ... ok
[INFO] [stdout] test tests::test_permission_rule_both_patterns ... ok
[INFO] [stdout] test tests::test_non_bash_tool_git_not_blocked ... ok
[INFO] [stdout] test tests::test_permission_rule_path_only ... ok
[INFO] [stdout] test tests::test_permission_rule_serde_json_compatible ... ok
[INFO] [stdout] test tests::test_permission_rule_command_only ... ok
[INFO] [stdout] test tests::test_permission_rule_no_patterns ... ok
[INFO] [stdout] test tests::profile_deny_with_loaded_rules_still_short_circuits ... ok
[INFO] [stdout] test tests::test_git_write_checkout_asks ... ok
[INFO] [stdout] test tests::test_git_write_force_push_denied ... ok
[INFO] [stdout] test tests::test_git_write_rebase_asks ... ok
[INFO] [stdout] test tests::test_git_write_deny_rule_overrides_default_allow ... ok
[INFO] [stdout] test tests::test_git_write_merge_asks ... ok
[INFO] [stdout] test tests::test_persist_decision_non_persistable_returns_error ... ok
[INFO] [stdout] test tests::test_persist_decision_always_deny_appends_to_deny ... ok
[INFO] [stdout] test tests::test_persist_decision_always_allow_creates_file ... ok
[INFO] [stdout] test tests::test_session_cache_allow_once_not_cached ... ok
[INFO] [stdout] test tests::test_persist_to_hackpi_config_always_allow ... ok
[INFO] [stdout] test tests::test_persist_to_hackpi_config_always_deny ... ok
[INFO] [stdout] test tests::test_git_write_stash_pop_asks ... ok
[INFO] [stdout] test tests::test_session_cache_deny ... ok
[INFO] [stdout] test tests::test_session_cache_allow_session ... ok
[INFO] [stdout] test tests::test_settings_paths_new ... ok
[INFO] [stdout] test vcs_operation_gate::tests::test_checkout_asks ... ok
[INFO] [stdout] test vcs_operation_gate::tests::test_deny_rule_overrides_default_allow_for_add ... ok
[INFO] [stdout] test tests::test_try_reload_with_empty_config ... ok
[INFO] [stdout] test vcs_operation_gate::tests::test_commit_is_allowed ... ok
[INFO] [stdout] test vcs_operation_gate::tests::test_allow_rule_overrides_force_push ... ok
[INFO] [stdout] test vcs_operation_gate::tests::test_branch_delete_asks ... ok
[INFO] [stdout] test vcs_operation_gate::tests::test_allow_rule_overrides_reset_hard ... ok
[INFO] [stdout] test vcs_operation_gate::tests::test_allow_rule_scoped_to_different_tool_does_not_apply ... ok
[INFO] [stdout] test vcs_operation_gate::tests::test_branch_create_is_allowed ... ok
[INFO] [stdout] test vcs_operation_gate::tests::test_add_is_allowed ... ok
[INFO] [stdout] test vcs_operation_gate::tests::test_force_param_case_insensitive ... ok
[INFO] [stdout] test vcs_operation_gate::tests::test_fetch_is_allowed ... ok
[INFO] [stdout] test vcs_operation_gate::tests::test_merge_asks ... ok
[INFO] [stdout] test vcs_operation_gate::tests::test_pull_is_allowed ... ok
[INFO] [stdout] test vcs_operation_gate::tests::test_operation_case_insensitive ... ok
[INFO] [stdout] test vcs_operation_gate::tests::test_rebase_asks ... ok
[INFO] [stdout] test vcs_operation_gate::tests::test_reset_hard_before_reset ... ok
[INFO] [stdout] test vcs_operation_gate::tests::test_reset_default_mixed_asks ... ok
[INFO] [stdout] test vcs_operation_gate::tests::test_reset_hard_is_denied ... ok
[INFO] [stdout] test vcs_operation_gate::tests::test_reset_mixed_asks ... ok
[INFO] [stdout] test vcs_operation_gate::tests::test_reset_soft_asks ... ok
[INFO] [stdout] test vcs_operation_gate::tests::test_stash_is_allowed ... ok
[INFO] [stdout] test vcs_operation_gate::tests::test_stash_pop_asks ... ok
[INFO] [stdout] test vcs_operation_gate::tests::test_unknown_operation_is_allowed ... ok
[INFO] [stdout] test vcs_operation_gate::tests::test_force_push_is_denied ... ok
[INFO] [stdout] test vcs_operation_gate::tests::test_destructive_patterns_contain_expected_operations ... ok
[INFO] [stdout] test vcs_operation_gate::tests::test_push_asks_without_force ... ok
[INFO] [stdout] test vcs_operation_gate::tests::test_force_push_before_push ... ok
[INFO] [stdout] test tests::test_check_tool_non_god_mode_passes_with_no_rules ... ok
[INFO] [stdout] test file_protection::tests::test_write_ed25519_key_returns_deny ... ok
[INFO] [stdout] test file_protection::tests::test_same_file_git_config_read_allow_write_deny ... ok
[INFO] [stdout] test tests::profile_access_for_unlisted_tool_passes_through ... ok
[INFO] [stdout] test path_guard::tests::test_is_outside_workspace_complex_dot_dot_traversal ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- path_guard::tests::test_is_outside_workspace_complex_dot_dot_traversal stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'path_guard::tests::test_is_outside_workspace_complex_dot_dot_traversal' (3545) panicked at hackpi-guardrails/src/path_guard.rs:668:9:
[INFO] [stdout] complex .. traversal should be detected as outside workspace
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x6018484ec411 - std[73adb7dc35730857]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x6018484ec411 - std[73adb7dc35730857]::backtrace_rs::backtrace::trace_unsynchronized::<std[73adb7dc35730857]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x6018484ec411 - std[73adb7dc35730857]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x6018484ec411 - <<std[73adb7dc35730857]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[6883ba1bc0fe4ed1]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x601848502a6a - <core[6883ba1bc0fe4ed1]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x601848502a6a - core[6883ba1bc0fe4ed1]::fmt::write
[INFO] [stdout]    6:     0x6018484f0d5c - std[73adb7dc35730857]::io::default_write_fmt::<alloc[55a36b64bcbf2c0d]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/io/mod.rs:626:11
[INFO] [stdout]    7:     0x6018484f0d5c - <alloc[55a36b64bcbf2c0d]::vec::Vec<u8> as std[73adb7dc35730857]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/io/mod.rs:1730:13
[INFO] [stdout]    8:     0x6018484c7b96 - <std[73adb7dc35730857]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x6018484c7b96 - std[73adb7dc35730857]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x6018484e2e59 - std[73adb7dc35730857]::panicking::default_hook
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x601848081090 - <alloc[55a36b64bcbf2c0d]::boxed::Box<dyn for<'a, 'b> core[6883ba1bc0fe4ed1]::ops::function::Fn<(&'a std[73adb7dc35730857]::panic::PanicHookInfo<'b>,), Output = ()> + core[6883ba1bc0fe4ed1]::marker::Send + core[6883ba1bc0fe4ed1]::marker::Sync> as core[6883ba1bc0fe4ed1]::ops::function::Fn<(&std[73adb7dc35730857]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2333:9
[INFO] [stdout]   12:     0x601848081090 - test[980ffaebd391d06d]::test_main_inner::<test[980ffaebd391d06d]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x6018484e3182 - <alloc[55a36b64bcbf2c0d]::boxed::Box<dyn for<'a, 'b> core[6883ba1bc0fe4ed1]::ops::function::Fn<(&'a std[73adb7dc35730857]::panic::PanicHookInfo<'b>,), Output = ()> + core[6883ba1bc0fe4ed1]::marker::Send + core[6883ba1bc0fe4ed1]::marker::Sync> as core[6883ba1bc0fe4ed1]::ops::function::Fn<(&std[73adb7dc35730857]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2333:9
[INFO] [stdout]   14:     0x6018484e3182 - std[73adb7dc35730857]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:823:13
[INFO] [stdout]   15:     0x6018484c7c74 - std[73adb7dc35730857]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:681:13
[INFO] [stdout]   16:     0x6018484bf199 - std[73adb7dc35730857]::sys::backtrace::__rust_end_short_backtrace::<std[73adb7dc35730857]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x6018484c8a1d - __rustc[a7b7b02e776dd976]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:679:5
[INFO] [stdout]   18:     0x60184850331c - core[6883ba1bc0fe4ed1]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x601847fda606 - hackpi_guardrails[c4177cfc6919e8c8]::path_guard::tests::test_is_outside_workspace_complex_dot_dot_traversal
[INFO] [stdout]                                at /opt/rustwide/workdir/hackpi-guardrails/src/path_guard.rs:668:9
[INFO] [stdout]   20:     0x601847fd2917 - hackpi_guardrails[c4177cfc6919e8c8]::path_guard::tests::test_is_outside_workspace_complex_dot_dot_traversal::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/hackpi-guardrails/src/path_guard.rs:662:61
[INFO] [stdout]   21:     0x601847ffa9a6 - <hackpi_guardrails[c4177cfc6919e8c8]::path_guard::tests::test_is_outside_workspace_complex_dot_dot_traversal::{closure#0} as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   22:     0x6018480743cb - <fn() -> core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x6018480743cb - test[980ffaebd391d06d]::__rust_begin_short_backtrace::<core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>, fn() -> core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:724:18
[INFO] [stdout]   24:     0x601848081a15 - test[980ffaebd391d06d]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:747:74
[INFO] [stdout]   25:     0x601848081a15 - <core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   26:     0x601848081a15 - std[73adb7dc35730857]::panicking::catch_unwind::do_call::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}>, core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:576:43
[INFO] [stdout]   27:     0x601848081a15 - std[73adb7dc35730857]::panicking::catch_unwind::<core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>, core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:544:19
[INFO] [stdout]   28:     0x601848081a15 - std[73adb7dc35730857]::panic::catch_unwind::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}>, core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panic.rs:359:14
[INFO] [stdout]   29:     0x601848081a15 - test[980ffaebd391d06d]::run_test_in_process
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:747:27
[INFO] [stdout]   30:     0x601848081a15 - test[980ffaebd391d06d]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:668:43
[INFO] [stdout]   31:     0x60184807c4c4 - test[980ffaebd391d06d]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:698:41
[INFO] [stdout]   32:     0x60184807c4c4 - std[73adb7dc35730857]::sys::backtrace::__rust_begin_short_backtrace::<test[980ffaebd391d06d]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   33:     0x601848084b62 - std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked::<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   34:     0x601848084b62 - <core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   35:     0x601848084b62 - std[73adb7dc35730857]::panicking::catch_unwind::do_call::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:576:43
[INFO] [stdout]   36:     0x601848084b62 - std[73adb7dc35730857]::panicking::catch_unwind::<(), core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:544:19
[INFO] [stdout]   37:     0x601848084b62 - std[73adb7dc35730857]::panic::catch_unwind::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panic.rs:359:14
[INFO] [stdout]   38:     0x601848084b62 - std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked::<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   39:     0x601848084b62 - <std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1} as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   40:     0x6018484eb6ef - <alloc[55a36b64bcbf2c0d]::boxed::Box<dyn core[6883ba1bc0fe4ed1]::ops::function::FnOnce<(), Output = ()> + core[6883ba1bc0fe4ed1]::marker::Send> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2319:9
[INFO] [stdout]   41:     0x6018484eb6ef - <std[73adb7dc35730857]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/thread/unix.rs:123:17
[INFO] [stdout]   42:     0x786525e6eaa4 - <unknown>
[INFO] [stdout]   43:     0x786525efba64 - clone
[INFO] [stdout]   44:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     path_guard::tests::test_is_outside_workspace_complex_dot_dot_traversal
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 405 passed; 1 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.44s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `-p hackpi-guardrails --lib`
[INFO] running `Command { std: "docker" "inspect" "efa91003fc10f6342aabe65306356cbe3f6d8a66a234ef50adeed1dd004d4aa1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "efa91003fc10f6342aabe65306356cbe3f6d8a66a234ef50adeed1dd004d4aa1", kill_on_drop: false }`
[INFO] [stdout] efa91003fc10f6342aabe65306356cbe3f6d8a66a234ef50adeed1dd004d4aa1
