[INFO] cloning repository https://github.com/kaija/arlo
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/kaija/arlo" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkaija%2Farlo", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkaija%2Farlo'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 8a47091c4a18e7ebb8cff0e74c59b07b94768a5b
[INFO] testing kaija/arlo against 1.99.0-beta.8 for beta-1.100-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkaija%2Farlo" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/kaija/arlo
[INFO] finished tweaking git repo https://github.com/kaija/arlo
[INFO] tweaked toml for git repo https://github.com/kaija/arlo written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/kaija/arlo on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/kaija/arlo 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.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Updating git repository `https://github.com/kaija/ag-ui-rust`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded futf v0.1.5
[INFO] [stderr]   Downloaded tendril v0.4.3
[INFO] [stderr]   Downloaded mac v0.1.1
[INFO] [stderr]   Downloaded new_debug_unreachable v1.0.6
[INFO] [stderr]   Downloaded scraper v0.21.0
[INFO] [stderr]   Downloaded cssparser-macros v0.6.1
[INFO] [stderr]   Downloaded match_token v0.1.0
[INFO] [stderr]   Downloaded html5ever v0.29.1
[INFO] [stderr]   Downloaded ego-tree v0.9.0
[INFO] [stderr]   Downloaded string_cache_codegen v0.5.4
[INFO] [stderr]   Downloaded dtoa-short v0.3.5
[INFO] [stderr]   Downloaded servo_arc v0.4.3
[INFO] [stderr]   Downloaded precomputed-hash v0.1.1
[INFO] [stderr]   Downloaded dtoa v1.0.11
[INFO] [stderr]   Downloaded json-patch v3.0.1
[INFO] [stderr]   Downloaded markup5ever v0.14.1
[INFO] [stderr]   Downloaded jsonptr v0.6.3
[INFO] [stderr]   Downloaded string_cache v0.8.9
[INFO] [stderr]   Downloaded selectors v0.26.0
[INFO] [stderr]   Downloaded cssparser v0.34.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 50fcd150946d71640ac595aa8b3ab2e8412a9813f1368cda6381d0777e580b69
[INFO] running `Command { std: "docker" "start" "50fcd150946d71640ac595aa8b3ab2e8412a9813f1368cda6381d0777e580b69", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "50fcd150946d71640ac595aa8b3ab2e8412a9813f1368cda6381d0777e580b69", 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" "50fcd150946d71640ac595aa8b3ab2e8412a9813f1368cda6381d0777e580b69" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "50fcd150946d71640ac595aa8b3ab2e8412a9813f1368cda6381d0777e580b69", 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" "50fcd150946d71640ac595aa8b3ab2e8412a9813f1368cda6381d0777e580b69" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling bytes v1.12.0
[INFO] [stderr]    Compiling syn v2.0.118
[INFO] [stderr]    Compiling memchr v2.8.2
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling socket2 v0.6.4
[INFO] [stderr]    Compiling phf_shared v0.11.3
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling rand v0.8.6
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling http v1.4.2
[INFO] [stderr]    Compiling phf_generator v0.11.3
[INFO] [stderr]    Compiling hashbrown v0.17.1
[INFO] [stderr]    Compiling cc v1.2.65
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling writeable v0.6.3
[INFO] [stderr]    Compiling litemap v0.8.2
[INFO] [stderr]    Compiling icu_normalizer_data v2.2.0
[INFO] [stderr]    Compiling icu_properties_data v2.2.0
[INFO] [stderr]    Compiling phf_codegen v0.11.3
[INFO] [stderr]    Compiling zerocopy v0.8.52
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling openssl v0.10.81
[INFO] [stderr]    Compiling new_debug_unreachable v1.0.6
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling ipnet v2.12.0
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling string_cache_codegen v0.5.4
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling mac v0.1.1
[INFO] [stderr]    Compiling precomputed-hash v0.1.1
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling openssl-probe v0.2.1
[INFO] [stderr]    Compiling dirs-sys v0.4.1
[INFO] [stderr]    Compiling futf v0.1.5
[INFO] [stderr]    Compiling markup5ever v0.14.1
[INFO] [stderr]    Compiling uuid v1.23.4
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling dtoa v1.0.11
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling dtoa-short v0.3.5
[INFO] [stderr]    Compiling tendril v0.4.3
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling openssl-sys v0.9.117
[INFO] [stderr]    Compiling dirs v5.0.1
[INFO] [stderr]    Compiling selectors v0.26.0
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling zeroize v1.9.0
[INFO] [stderr]    Compiling unicode-width v0.2.0
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling fxhash v0.2.1
[INFO] [stderr]    Compiling rustls-pki-types v1.15.0
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling servo_arc v0.4.3
[INFO] [stderr]    Compiling paste v1.0.15
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling foldhash v0.1.5
[INFO] [stderr]    Compiling linux-raw-sys v0.4.15
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling tokio v1.52.3
[INFO] [stderr]    Compiling zerofrom v0.1.8
[INFO] [stderr]    Compiling displaydoc v0.2.6
[INFO] [stderr]    Compiling yoke v0.8.3
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling phf_macros v0.11.3
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling phf v0.11.3
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling cssparser-macros v0.6.1
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling cssparser v0.34.0
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling match_token v0.1.0
[INFO] [stderr]    Compiling derive_more v0.99.20
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling serde_yaml v0.9.34+deprecated
[INFO] [stderr]    Compiling string_cache v0.8.9
[INFO] [stderr]    Compiling jsonptr v0.6.3
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling axum-core v0.5.6
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling html5ever v0.29.1
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling h2 v0.4.15
[INFO] [stderr]    Compiling agent-core v0.1.0 (/opt/rustwide/workdir/crates/agent-core)
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling tower-http v0.6.11
[INFO] [stderr]    Compiling getopts v0.2.24
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling unicode-width v0.1.14
[INFO] [stderr]    Compiling ego-tree v0.9.0
[INFO] [stderr]    Compiling matchit v0.8.4
[INFO] [stderr]    Compiling unicode-truncate v1.1.0
[INFO] [stderr]    Compiling scraper v0.21.0
[INFO] [stderr]    Compiling compact_str v0.8.2
[INFO] [stderr]    Compiling regex v1.12.4
[INFO] [stderr]    Compiling instability v0.3.12
[INFO] [stderr]    Compiling crossterm v0.28.1
[INFO] [stderr]    Compiling strum v0.26.3
[INFO] [stderr]    Compiling json-patch v3.0.1
[INFO] [stderr]    Compiling ag-ui-protocol v0.1.0 (https://github.com/kaija/ag-ui-rust#bfd3b545)
[INFO] [stderr]    Compiling lru v0.12.5
[INFO] [stderr]    Compiling glob v0.3.3
[INFO] [stderr]    Compiling cassowary v0.3.0
[INFO] [stderr]    Compiling ratatui v0.29.0
[INFO] [stderr]    Compiling agent-mcp v0.1.0 (/opt/rustwide/workdir/crates/agent-mcp)
[INFO] [stderr]    Compiling hyper v1.10.1
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-tls v0.6.0
[INFO] [stderr]    Compiling axum v0.8.9
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling agent-llm v0.1.0 (/opt/rustwide/workdir/crates/agent-llm)
[INFO] [stderr]    Compiling agent-tools v0.1.0 (/opt/rustwide/workdir/crates/agent-tools)
[INFO] [stderr]    Compiling ag-ui-server v0.1.0 (https://github.com/kaija/ag-ui-rust#bfd3b545)
[INFO] [stderr]    Compiling agent-cli v0.1.0 (/opt/rustwide/workdir/crates/agent-cli)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 49s
[INFO] running `Command { std: "docker" "inspect" "50fcd150946d71640ac595aa8b3ab2e8412a9813f1368cda6381d0777e580b69", 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" "50fcd150946d71640ac595aa8b3ab2e8412a9813f1368cda6381d0777e580b69" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling quick-error v1.2.3
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling rand v0.9.4
[INFO] [stderr]    Compiling unarray v0.1.4
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling scraper v0.21.0
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling proptest v1.11.0
[INFO] [stderr]    Compiling agent-core v0.1.0 (/opt/rustwide/workdir/crates/agent-core)
[INFO] [stderr]    Compiling agent-llm v0.1.0 (/opt/rustwide/workdir/crates/agent-llm)
[INFO] [stderr]    Compiling agent-tools v0.1.0 (/opt/rustwide/workdir/crates/agent-tools)
[INFO] [stderr]    Compiling agent-mcp v0.1.0 (/opt/rustwide/workdir/crates/agent-mcp)
[INFO] [stderr]    Compiling agent-cli v0.1.0 (/opt/rustwide/workdir/crates/agent-cli)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 55s
[INFO] running `Command { std: "docker" "inspect" "50fcd150946d71640ac595aa8b3ab2e8412a9813f1368cda6381d0777e580b69", 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" "50fcd150946d71640ac595aa8b3ab2e8412a9813f1368cda6381d0777e580b69" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.44s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/arlo-7b47c2a4266088f9)
[INFO] [stdout] 
[INFO] [stdout] running 248 tests
[INFO] [stdout] test assembly::tests::no_provider_returns_error ... ok
[INFO] [stdout] test assembly::tests::anthropic_base_url_applied_in_env_path ... ok
[INFO] [stdout] test assembly::tests::settings_permissions_reach_engine ... ok
[INFO] [stdout] test assembly::tests::project_settings_layer_over_empty_user ... ok
[INFO] [stdout] test assembly::tests::serve_normal_mode_needs_approval ... ok
[INFO] [stdout] test assembly::tests::model_override_respected ... ok
[INFO] [stdout] test assembly::tests::unknown_profile_returns_error ... ok
[INFO] [stdout] test assembly::tests::serve_no_deny_all_handler ... ok
[INFO] [stdout] test assembly::tests::serve_has_task_store ... ok
[INFO] [stdout] test assembly::tests::serve_skip_permissions_bypasses ... ok
[INFO] [stdout] test assembly::tests::single_prompt_has_no_task_store ... ok
[INFO] [stdout] test serve::approval::tests::cancelled_maps_to_deny ... ok
[INFO] [stdout] test serve::approval::tests::multiple_entries_mixed ... ok
[INFO] [stdout] test serve::approval::tests::resolved_maps_to_allow ... ok
[INFO] [stdout] test serve::approval::tests::approval_parks_and_resumes ... ok
[INFO] [stdout] test serve::approval::tests::channel_drop_returns_deny ... ok
[INFO] [stdout] test serve::approval::tests::resolved_with_deny_action_in_payload ... ok
[INFO] [stdout] test serve::bridge::tests::aborted_maps_to_run_error ... ok
[INFO] [stdout] test serve::bridge::tests::agent_end_closes_text_and_finishes ... ok
[INFO] [stdout] test serve::bridge::tests::convert_messages_assistant_empty_content_skipped ... ok
[INFO] [stdout] test serve::bridge::tests::convert_messages_empty_returns_fresh ... ok
[INFO] [stdout] test serve::bridge::tests::convert_messages_skips_tool_messages ... ok
[INFO] [stdout] test serve::bridge::tests::convert_messages_user_text ... ok
[INFO] [stdout] test serve::bridge::tests::convert_messages_system_and_developer ... ok
[INFO] [stdout] test serve::bridge::tests::drain_over_terminal_stream_returns_finished ... ok
[INFO] [stdout] test serve::bridge::tests::error_maps_to_run_error ... ok
[INFO] [stdout] test serve::bridge::tests::finish_closes_open_step ... ok
[INFO] [stdout] test serve::approval::tests::resolved_with_always_allow_no_pattern_defaults_to_star ... ok
[INFO] [stdout] test serve::bridge::tests::finish_closes_open_text_message ... ok
[INFO] [stdout] test serve::bridge::tests::finish_on_empty_produces_nothing ... ok
[INFO] [stdout] test serve::bridge::tests::interruption_maps_to_interrupt_outcome ... ok
[INFO] [stdout] test serve::bridge::tests::interrupt_fields_from_pending_approval ... ok
[INFO] [stdout] test serve::bridge::tests::message_id_consistent_across_deltas ... ok
[INFO] [stdout] test serve::bridge::tests::max_turns_maps_to_run_finished ... ok
[INFO] [stdout] test serve::bridge::tests::park_then_resume_delivers_to_second_emitter ... ok
[INFO] [stdout] test serve::approval::tests::resolved_with_always_allow_payload ... ok
[INFO] [stdout] test serve::bridge::tests::drain_over_interrupt_stream_returns_interrupted ... ok
[INFO] [stdout] test assembly::tests::tui_has_task_store ... ok
[INFO] [stdout] test assembly::tests::tui_normal_permissions ... ok
[INFO] [stdout] test serve::bridge::tests::resume_unknown_thread_returns_error ... ok
[INFO] [stdout] test serve::bridge::tests::subsequent_text_deltas_emit_content_only ... ok
[INFO] [stdout] test assembly::tests::tui_skip_permissions_bypasses ... ok
[INFO] [stdout] test serve::bridge::tests::terminal_event_closes_step ... ok
[INFO] [stdout] test serve::bridge::tests::prop_no_open_step_at_terminal ... ok
[INFO] [stdout] test serve::bridge::tests::thinking_delta_produces_no_events ... ok
[INFO] [stdout] test serve::bridge::tests::text_delta_starts_message_on_first_chunk ... ok
[INFO] [stdout] test serve::bridge::tests::tool_end_is_error_prefixes_content ... ok
[INFO] [stdout] test serve::bridge::tests::tool_end_maps_to_tool_call_end ... ok
[INFO] [stdout] test serve::bridge::tests::tool_end_success_no_error_prefix ... ok
[INFO] [stdout] test serve::bridge::tests::tool_use_input_delta_maps_to_args ... ok
[INFO] [stdout] test serve::bridge::tests::tool_use_start_closes_open_text ... ok
[INFO] [stdout] test serve::bridge::tests::turn_start_emits_step_finished_before_new_step_started ... ok
[INFO] [stdout] test serve::session::tests::concurrent_access ... ok
[INFO] [stdout] test serve::bridge::tests::turn_start_closes_text_and_emits_step ... ok
[INFO] [stdout] test serve::bridge::tests::unexecuted_tool_call_is_closed_before_terminal_event ... ok
[INFO] [stdout] test serve::session::tests::insert_and_get ... ok
[INFO] [stdout] test serve::session::tests::mark_interrupted_nonexistent_returns_false ... ok
[INFO] [stdout] test serve::session::tests::mark_interrupted_transitions_state ... ok
[INFO] [stdout] test serve::session::tests::reap_expired_drops_parked_run ... ok
[INFO] [stdout] test serve::session::tests::reap_expired_removes_old_sessions ... ok
[INFO] [stdout] test serve::session::tests::remove_nonexistent_returns_none ... ok
[INFO] [stdout] test serve::session::tests::remove_returns_session ... ok
[INFO] [stdout] test serve::session::tests::update_parked_nonexistent_returns_false ... ok
[INFO] [stdout] test serve::session::tests::update_parked_stores_parked_run ... ok
[INFO] [stdout] test serve::tests::host_port ... ok
[INFO] [stdout] test serve::tests::malformed_host ... ok
[INFO] [stdout] test serve::tests::invalid_non_numeric_port ... ok
[INFO] [stdout] test serve::tests::none_defaults_to_localhost_8080 ... ok
[INFO] [stdout] test serve::tests::port_only ... ok
[INFO] [stdout] test serve::tests::port_overflow ... ok
[INFO] [stdout] test serve::tests::prop_port_only_parses_to_localhost ... ok
[INFO] [stdout] test serve::tests::prop_valid_ipv4_host_port_parses ... ok
[INFO] [stdout] test serve::tests::prop_invalid_inputs_return_err ... ok
[INFO] [stdout] test tests::test_profile_flag_missing_value ... ok
[INFO] [stdout] test tests::test_serve_flag_at_end ... ok
[INFO] [stdout] test tests::test_serve_flag_followed_by_another_flag ... ok
[INFO] [stdout] test tests::test_serve_flag_host_port ... ok
[INFO] [stdout] test tests::test_serve_flag_no_value ... ok
[INFO] [stdout] test tests::test_serve_flag_port_only ... ok
[INFO] [stdout] test tui::app::p_key_handler_tests::editing_pattern_backspace_at_start_does_nothing ... ok
[INFO] [stdout] test tui::app::p_key_handler_tests::editing_pattern_backspace_removes_char ... ok
[INFO] [stdout] test tui::app::p_key_handler_tests::editing_pattern_char_inserts_at_cursor ... ok
[INFO] [stdout] test tui::app::p_key_handler_tests::editing_pattern_confirm_grants_session_allow ... ok
[INFO] [stdout] test tui::app::p_key_handler_tests::editing_pattern_delete_removes_char_at_cursor ... ok
[INFO] [stdout] test tui::app::p_key_handler_tests::editing_pattern_enter_resolves_handler_path ... ok
[INFO] [stdout] test tui::app::p_key_handler_tests::editing_pattern_enter_resolves_legacy_path ... ok
[INFO] [stdout] test tui::app::p_key_handler_tests::editing_pattern_esc_returns_to_awaiting_key ... ok
[INFO] [stdout] test tui::app::p_key_handler_tests::editing_pattern_left_arrow_moves_cursor ... ok
[INFO] [stdout] test tui::app::p_key_handler_tests::editing_pattern_left_at_start_does_nothing ... ok
[INFO] [stdout] test tui::app::p_key_handler_tests::editing_pattern_right_arrow_moves_cursor ... ok
[INFO] [stdout] test tui::app::p_key_handler_tests::editing_pattern_right_at_end_does_nothing ... ok
[INFO] [stdout] test tui::app::p_key_handler_tests::p_key_transitions_to_editing_pattern ... ok
[INFO] [stdout] test tui::app::p_key_handler_tests::p_key_with_no_approvals_stays_awaiting ... ok
[INFO] [stdout] test tui::app::p_key_handler_tests::y_a_n_still_work_in_awaiting_key ... ok
[INFO] [stdout] test serve::bridge::tests::prop_tool_call_lifecycle_completeness ... ok
[INFO] [stdout] test tui::app::property_tests::conversation_history_accumulates ... ok
[INFO] [stdout] test tui::app::property_tests::ctrl_c_in_running_aborts_without_exit ... ok
[INFO] [stdout] test tui::app::property_tests::double_ctrl_c_after_2s_resets ... ok
[INFO] [stdout] test tui::app::property_tests::double_ctrl_c_idle_after_2s_resets ... ok
[INFO] [stdout] test tui::app::property_tests::double_ctrl_c_idle_within_2s_exits ... ok
[INFO] [stdout] test tui::app::property_tests::ctrl_c_in_idle_clears_input ... ok
[INFO] [stdout] test tui::app::property_tests::double_ctrl_c_within_2s_exits ... ok
[INFO] [stdout] test tui::app::property_tests::permission_prompt_filters_non_yan_keys ... ok
[INFO] [stdout] test tests::prop_profile_flag_roundtrip ... ok
[INFO] [stdout] test serve::bridge::tests::prop_terminal_event_uniqueness ... ok
[INFO] [stdout] test tui::app::property_tests::running_state_blocks_submission ... ok
[INFO] [stdout] test tui::app::property_tests::session_allow_persists_after_a_press ... ok
[INFO] [stdout] test serve::bridge::tests::prop_text_message_lifecycle ... ok
[INFO] [stdout] test tui::app::property_tests::terminal_events_transition_running_to_idle ... ok
[INFO] [stdout] test tui::app::property_tests::interruption_populates_permission_prompt ... ok
[INFO] [stdout] test tui::app::suggest_pattern_property_tests::suggest_pattern_no_primary_arg_matches ... ok
[INFO] [stdout] test tui::app::suggest_pattern_tests::prompt_state_defaults_to_awaiting_key ... ok
[INFO] [stdout] test tui::app::suggest_pattern_tests::prompt_state_reset_on_approval_event ... ok
[INFO] [stdout] test tui::app::suggest_pattern_tests::prompt_state_reset_on_clear_approval ... ok
[INFO] [stdout] test tui::app::suggest_pattern_tests::prompt_state_reset_on_interruption ... ok
[INFO] [stdout] test tui::app::suggest_pattern_tests::suggest_pattern_bash_cargo_prefix ... ok
[INFO] [stdout] test tui::app::suggest_pattern_tests::suggest_pattern_bash_docker_prefix ... ok
[INFO] [stdout] test tui::app::suggest_pattern_tests::suggest_pattern_bash_git_prefix ... ok
[INFO] [stdout] test tui::app::suggest_pattern_tests::suggest_pattern_bash_lowercase_tool_name ... ok
[INFO] [stdout] test tui::app::suggest_pattern_tests::suggest_pattern_bash_make_prefix ... ok
[INFO] [stdout] test tui::app::suggest_pattern_tests::suggest_pattern_bash_npm_prefix ... ok
[INFO] [stdout] test tui::app::suggest_pattern_tests::suggest_pattern_bash_pip_prefix ... ok
[INFO] [stdout] test tui::app::property_tests::tool_lifecycle_produces_completed_entry ... ok
[INFO] [stdout] test tui::app::suggest_pattern_tests::suggest_pattern_bash_pnpm_prefix ... ok
[INFO] [stdout] test tui::app::suggest_pattern_tests::suggest_pattern_bash_unknown_command_uses_first_word ... ok
[INFO] [stdout] test tui::app::suggest_pattern_tests::suggest_pattern_bash_yarn_prefix ... ok
[INFO] [stdout] test tui::app::suggest_pattern_tests::suggest_pattern_empty_object ... ok
[INFO] [stdout] test tui::app::suggest_pattern_tests::suggest_pattern_fallback_matches_tool_name ... ok
[INFO] [stdout] test tui::app::suggest_pattern_tests::suggest_pattern_file_tool_with_directory ... ok
[INFO] [stdout] test tui::app::suggest_pattern_tests::suggest_pattern_file_tool_with_root_dir ... ok
[INFO] [stdout] test tui::app::suggest_pattern_tests::suggest_pattern_generic_tool_with_command ... ok
[INFO] [stdout] test tui::app::suggest_pattern_tests::suggest_pattern_no_primary_arg ... ok
[INFO] [stdout] test tui::app::suggest_pattern_tests::suggest_pattern_file_tool_without_slash ... ok
[INFO] [stdout] test tui::app::suggest_pattern_tests::suggest_pattern_read_tool_with_path ... ok
[INFO] [stdout] test tui::app::suggest_pattern_tests::suggest_pattern_result_matches_original_call ... ok
[INFO] [stdout] test tui::app::suggest_pattern_tests::suggest_pattern_short_generic_arg ... ok
[INFO] [stdout] test tui::app::suggest_pattern_tests::suggest_pattern_write_tool_with_path ... ok
[INFO] [stdout] test tui::app::tests::aborted_transitions_to_idle_with_warning ... ok
[INFO] [stdout] test tui::app::tests::compaction_is_ignored ... ok
[INFO] [stdout] test tui::app::tests::agent_end_transitions_to_idle ... ok
[INFO] [stdout] test tui::app::tests::error_transitions_to_idle_with_error_span ... ok
[INFO] [stdout] test tui::app::tests::exiting_mode_returns_exit_for_any_key ... ok
[INFO] [stdout] test tui::app::tests::guardrail_tripped_transitions_to_idle ... ok
[INFO] [stdout] test tui::app::tests::idle_char_key_inserts_into_buffer ... ok
[INFO] [stdout] test tui::app::tests::idle_ctrl_c_empty_input_sets_last_ctrl_c ... ok
[INFO] [stdout] test tui::app::tests::idle_ctrl_c_with_input_clears_buffer ... ok
[INFO] [stdout] test tui::app::tests::idle_double_ctrl_c_after_2s_does_not_exit ... ok
[INFO] [stdout] test tui::app::tests::idle_double_ctrl_c_within_2s_exits ... ok
[INFO] [stdout] test tui::app::tests::idle_backspace_removes_last_char ... ok
[INFO] [stdout] test tui::app::tests::idle_enter_with_nonempty_input_returns_start_run ... ok
[INFO] [stdout] test tui::app::tests::idle_exit_command_returns_exit ... ok
[INFO] [stdout] test tui::app::tests::idle_quit_command_returns_exit ... ok
[INFO] [stdout] test tui::app::tests::interruption_sets_permission_prompt_mode ... ok
[INFO] [stdout] test tui::app::tests::max_turns_transitions_to_idle ... ok
[INFO] [stdout] test tui::app::tests::idle_enter_with_empty_input_returns_continue ... ok
[INFO] [stdout] test tui::app::tests::prompt_a_grants_session_allow_and_resumes ... ok
[INFO] [stdout] test tui::app::tests::message_stop_does_not_push_span ... ok
[INFO] [stdout] test tui::app::tests::prompt_n_returns_resume_run_false ... ok
[INFO] [stdout] test tui::app::tests::prompt_other_keys_return_continue ... ok
[INFO] [stdout] test tui::app::tests::prompt_y_returns_resume_run_true ... ok
[INFO] [stdout] test tui::app::tests::running_double_ctrl_c_exits ... ok
[INFO] [stdout] test tui::app::tests::running_non_ctrl_c_keys_are_blocked ... ok
[INFO] [stdout] test tui::app::tests::text_delta_pushes_normal_span ... ok
[INFO] [stdout] test tui::app::tests::thinking_delta_pushes_thinking_span ... ok
[INFO] [stdout] test tui::app::tests::tool_end_updates_matching_entry ... ok
[INFO] [stdout] test tui::app::tests::running_ctrl_c_returns_abort_run ... ok
[INFO] [stdout] test tui::app::tests::tool_end_with_error_flag ... ok
[INFO] [stdout] test tui::app::tests::tool_start_adds_executing_entry ... ok
[INFO] [stdout] test tui::app::tests::tool_use_start_pushes_tool_name_span ... ok
[INFO] [stdout] test tui::app::tests::turn_start_is_ignored ... ok
[INFO] [stdout] test tui::app::tests::update_key_returns_continue ... ok
[INFO] [stdout] test tui::app::tests::update_resize_returns_continue ... ok
[INFO] [stdout] test tui::approval::tests::handler_denies_all_when_request_channel_closed ... ok
[INFO] [stdout] test tui::app::tests::update_tick_returns_continue ... ok
[INFO] [stdout] test tui::approval::tests::handler_sends_request_and_receives_response ... ok
[INFO] [stdout] test tui::approval::tests::handler_denies_all_when_response_channel_closed ... ok
[INFO] [stdout] test tui::approval::tests::handler_with_always_allow_response ... ok
[INFO] [stdout] test tui::approval::tests::handler_with_no_agent_name ... ok
[INFO] [stdout] test tui::commands::tests::non_slash_input_returns_none ... ok
[INFO] [stdout] test tui::commands::tests::no_store_shows_error ... ok
[INFO] [stdout] test tui::app::property_tests::text_deltas_preserve_order ... ok
[INFO] [stdout] test tui::app::property_tests::tool_start_without_end_stays_executing ... ok
[INFO] [stdout] test tui::commands::tests::slash_tasks_ack_empty ... ok
[INFO] [stdout] test tui::commands::tests::slash_tasks_ack_with_terminal_tasks ... ok
[INFO] [stdout] test tui::commands::tests::slash_tasks_clear_empty ... ok
[INFO] [stdout] test tui::commands::tests::slash_tasks_empty_state ... ok
[INFO] [stdout] test tui::commands::tests::slash_tasks_with_tasks_present ... ok
[INFO] [stdout] test tui::commands::tests::slash_tasks_with_whitespace_trimming ... ok
[INFO] [stdout] test tui::commands::tests::slash_todos_empty_state ... ok
[INFO] [stdout] test tui::commands::tests::slash_todos_with_items ... ok
[INFO] [stdout] test tui::commands::tests::slash_todos_with_whitespace_trimming ... ok
[INFO] [stdout] test tui::commands::tests::unknown_command_shows_error ... ok
[INFO] [stdout] test serve::approval::tests::prop_interrupt_round_trip_preserves_semantics ... ok
[INFO] [stdout] test tui::app::suggest_pattern_property_tests::suggest_pattern_always_matches_original_call ... ok
[INFO] [stdout] test serve::bridge::tests::prop_event_ordering_preserved ... ok
[INFO] [stdout] test tui::input::tests::test_backspace_at_start_is_noop ... ok
[INFO] [stdout] test tui::input::tests::test_backspace_multibyte_in_middle ... ok
[INFO] [stdout] test tui::input::tests::test_backspace_removes_previous_char ... ok
[INFO] [stdout] test tui::input::tests::test_backspace_unicode ... ok
[INFO] [stdout] test tui::input::tests::test_clear ... ok
[INFO] [stdout] test tui::input::tests::test_delete_at_end_is_noop ... ok
[INFO] [stdout] test tui::input::tests::test_delete_multibyte ... ok
[INFO] [stdout] test tui::input::tests::test_delete_removes_char_at_cursor ... ok
[INFO] [stdout] test tui::input::tests::test_insert_ascii ... ok
[INFO] [stdout] test tui::input::tests::test_insert_at_middle ... ok
[INFO] [stdout] test tui::input::tests::test_insert_between_multibyte_chars ... ok
[INFO] [stdout] test tui::input::tests::test_insert_unicode ... ok
[INFO] [stdout] test tui::input::tests::test_move_home_and_end ... ok
[INFO] [stdout] test tui::input::tests::test_move_left_and_right ... ok
[INFO] [stdout] test tui::input::tests::test_move_left_at_start_is_noop ... ok
[INFO] [stdout] test tui::input::tests::property_tests::insert_at_any_position_produces_correct_string ... ok
[INFO] [stdout] test tui::input::tests::test_move_right_at_end_is_noop ... ok
[INFO] [stdout] test tui::input::tests::test_take ... ok
[INFO] [stdout] test tui::input::tests::test_take_empty ... ok
[INFO] [stdout] test tui::input::tests::test_new_buffer_is_empty ... ok
[INFO] [stdout] test tui::notifications::tests::completed_with_empty_output ... ok
[INFO] [stdout] test tui::input::tests::test_unicode_cursor_navigation ... ok
[INFO] [stdout] test tui::notifications::tests::completed_with_long_output_truncated ... ok
[INFO] [stdout] test tui::notifications::tests::completed_with_no_output ... ok
[INFO] [stdout] test tui::notifications::tests::completed_with_short_output ... ok
[INFO] [stdout] test tui::notifications::tests::failed_with_empty_error ... ok
[INFO] [stdout] test tui::notifications::tests::failed_with_error ... ok
[INFO] [stdout] test tui::notifications::tests::failed_with_no_error ... ok
[INFO] [stdout] test tui::notifications::tests::completed_with_exactly_200_chars_no_truncation ... ok
[INFO] [stdout] test tui::notifications::tests::poll_notifications_formats_and_acknowledges ... ok
[INFO] [stdout] test tui::notifications::tests::poll_notifications_with_empty_store ... ok
[INFO] [stdout] test tui::notifications::tests::poll_notifications_with_no_store ... ok
[INFO] [stdout] test tui::notifications::tests::poll_notifications_handles_failed_task ... ok
[INFO] [stdout] test tui::commands::tests::prop_slash_command_whitespace_tolerance ... ok
[INFO] [stdout] test tui::commands::tests::prop_slash_command_never_produces_start_run ... ok
[INFO] [stdout] test tui::input::tests::property_tests::take_returns_accumulated_content ... ok
[INFO] [stdout] test tui::render::tests::cursor_byte_to_column_ascii ... ok
[INFO] [stdout] test tui::render::tests::cursor_byte_to_column_multibyte ... ok
[INFO] [stdout] test tui::render::tests::cursor_byte_to_column_unicode ... ok
[INFO] [stdout] test tui::render::tests::render_output_splits_newlines ... ok
[INFO] [stdout] test tui::render::tests::span_style_error_is_red_bold ... ok
[INFO] [stdout] test tui::render::tests::span_style_normal_is_default ... ok
[INFO] [stdout] test tui::render::tests::span_style_system_is_dark_gray_dim ... ok
[INFO] [stdout] test tui::render::tests::span_style_thinking_is_cyan_italic ... ok
[INFO] [stdout] test tui::render::tests::span_style_tool_name_is_yellow_bold ... ok
[INFO] [stdout] test tui::render::tests::span_style_warning_is_yellow ... ok
[INFO] [stdout] test tui::input::tests::property_tests::cursor_never_exceeds_content_length ... ok
[INFO] [stdout] test tui::notifications::tests::prop_acknowledge_prevents_duplicate_notification ... ok
[INFO] [stdout] test tui::commands::tests::prop_unknown_slash_command_error ... ok
[INFO] [stdout] test tui::render::property_tests::status_bar_todo_display ... ok
[INFO] [stdout] test tui::render::property_tests::layout_bounds_fit_terminal_dimensions ... ok
[INFO] [stdout] test tui::notifications::tests::prop_notification_formatting_and_truncation ... ok
[INFO] [stdout] test serve::session::tests::prop_reap_respects_timeout ... ok
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/agent_core-40ead774a3d80b44)
[INFO] [stdout] test result: ok. 248 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.87s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 625 tests
[INFO] [stdout] test agent::tests::agent_builder_additive_sub_agents ... ok
[INFO] [stdout] test agent::tests::agent_builder_additive_tools ... ok
[INFO] [stdout] test agent::tests::instructions_default_is_empty_static ... ok
[INFO] [stdout] test agent::tests::agent_builder_additive_guardrails ... ok
[INFO] [stdout] test agent::tests::agent_clone ... ok
[INFO] [stdout] test agent::tests::agent_builder_model_accepts_string_and_str ... ok
[INFO] [stdout] test agent::tests::agent_builder_with_all_fields ... ok
[INFO] [stdout] test agent::tests::agent_debug ... ok
[INFO] [stdout] test agent::tests::agent_is_send_sync ... ok
[INFO] [stdout] test agent::tests::sub_agent_def_debug ... ok
[INFO] [stdout] test agent::tests::instructions_static_debug ... ok
[INFO] [stdout] test agent::tests::sub_agent_def_clone ... ok
[INFO] [stdout] test agent::tests::agent_builder_defaults ... ok
[INFO] [stdout] test compaction::config::tests::default_compactable_tools ... ok
[INFO] [stdout] test compaction::config::tests::default_optional_fields_are_none ... ok
[INFO] [stdout] test agent::tests::instructions_dynamic_can_be_invoked ... ok
[INFO] [stdout] test agent::tests::instructions_dynamic_clone ... ok
[INFO] [stdout] test agent::tests::instructions_dynamic_debug ... ok
[INFO] [stdout] test compaction::full_summarize::tests::test_format_assistant_with_tool_use ... ok
[INFO] [stdout] test compaction::full_summarize::tests::test_format_system_message ... ok
[INFO] [stdout] test compaction::full_summarize::tests::test_format_tool_result ... ok
[INFO] [stdout] test agent::tests::instructions_static_clone ... ok
[INFO] [stdout] test compaction::config::tests::default_numeric_values ... ok
[INFO] [stdout] test compaction::full_summarize::tests::test_format_tool_result_error ... ok
[INFO] [stdout] test compaction::full_summarize::tests::test_format_user_message ... ok
[INFO] [stdout] test compaction::full_summarize::tests::test_pair_integrity_empty_indices ... ok
[INFO] [stdout] test compaction::full_summarize::tests::test_prompt_contains_all_9_sections ... ok
[INFO] [stdout] test compaction::full_summarize::tests::test_pair_integrity_no_tool_messages ... ok
[INFO] [stdout] test compaction::full_summarize::tests::test_pair_integrity_tool_result_at_boundary_pulled_in ... ok
[INFO] [stdout] test compaction::full_summarize::tests::test_format_assistant_message ... ok
[INFO] [stdout] test compaction::layer::tests::compaction_context_debug ... ok
[INFO] [stdout] test compaction::layer::tests::compaction_layer_trait_is_object_safe ... ok
[INFO] [stdout] test compaction::full_summarize::tests::test_prompt_contains_conversation ... ok
[INFO] [stdout] test compaction::full_summarize::tests::test_pair_integrity_tool_result_is_first_preserved ... ok
[INFO] [stdout] test compaction::layer::tests::layer_result_applied_equality ... ok
[INFO] [stdout] test compaction::layer::tests::compaction_context_clone ... ok
[INFO] [stdout] test compaction::full_summarize::tests::test_pair_integrity_last_is_assistant_tool_use ... ok
[INFO] [stdout] test compaction::layer::tests::layer_result_noop_equality ... ok
[INFO] [stdout] test compaction::layer::tests::layer_result_variants_are_distinct ... ok
[INFO] [stdout] test compaction::pipeline_tests::test_circuit_breaker_trips_after_3_failures ... ok
[INFO] [stdout] test compaction::layer::tests::layer_result_failed_equality ... ok
[INFO] [stdout] test compaction::pipeline_tests::test_pipeline_fails_when_all_layers_insufficient ... ok
[INFO] [stdout] test compaction::pipeline_tests::test_pipeline_stops_at_tools_compact_when_sufficient ... ok
[INFO] [stdout] test compaction::pipeline_tests::test_circuit_breaker_resets_on_success ... ok
[INFO] [stdout] test compaction::session_memory::proptests::prop_noop_when_tokens_below_minimum ... ok
[INFO] [stdout] test compaction::session_memory::proptests::prop_noop_when_fewer_than_min_text_messages ... ok
[INFO] [stdout] test compaction::session_memory::tests::applies_when_all_guards_pass ... ok
[INFO] [stdout] test compaction::session_memory::tests::layer_name_is_session_memory ... ok
[INFO] [stdout] test compaction::session_memory::tests::noop_when_fewer_than_min_text_block_messages ... ok
[INFO] [stdout] test compaction::session_memory::tests::noop_when_no_session_memory_path ... ok
[INFO] [stdout] test compaction::session_memory::tests::noop_when_nothing_to_remove_before_boundary ... ok
[INFO] [stdout] test compaction::session_memory::tests::noop_when_session_memory_path_does_not_exist ... ok
[INFO] [stdout] test compaction::session_memory::tests::noop_when_tokens_below_minimum ... ok
[INFO] [stdout] test compaction::session_memory::tests::preserves_system_messages ... ok
[INFO] [stdout] test compaction::session_memory::tests::session_memory_inserted_after_last_system_message ... ok
[INFO] [stdout] test compaction::tokens::tests::test_compute_token_count_falls_back_to_heuristic ... ok
[INFO] [stdout] test compaction::tokens::tests::test_compute_token_count_prefers_usage ... ok
[INFO] [stdout] test compaction::tokens::tests::test_estimate_assistant_message_with_tool_use ... ok
[INFO] [stdout] test compaction::tokens::tests::test_estimate_empty_messages ... ok
[INFO] [stdout] test compaction::tokens::tests::test_estimate_image_block ... ok
[INFO] [stdout] test compaction::tokens::tests::test_estimate_system_message ... ok
[INFO] [stdout] test compaction::tokens::tests::test_estimate_tokens_sums_all_messages ... ok
[INFO] [stdout] test compaction::tokens::tests::test_estimate_tool_result ... ok
[INFO] [stdout] test compaction::tokens::tests::test_estimate_user_message_multiple_blocks ... ok
[INFO] [stdout] test compaction::tokens::tests::test_estimate_user_message_text ... ok
[INFO] [stdout] test compaction::tokens::tests::test_integer_division_truncation ... ok
[INFO] [stdout] test compaction::pipeline_tests::prop_circuit_breaker_behavior ... ok
[INFO] [stdout] test compaction::full_summarize::tests::proptests::prop_full_summarize_failure_leaves_messages_unchanged ... ok
[INFO] [stdout] test compaction::tools_compact::tests::test_clears_old_compactable_results ... ok
[INFO] [stdout] test compaction::tools_compact::tests::test_name_returns_tools_compact ... ok
[INFO] [stdout] test compaction::tools_compact::tests::test_noop_when_all_results_in_exempt_zone ... ok
[INFO] [stdout] test compaction::tools_compact::tests::test_noop_when_no_tool_results ... ok
[INFO] [stdout] test compaction::tools_compact::tests::test_preserves_tool_use_id_and_is_error ... ok
[INFO] [stdout] test compaction::tools_compact::tests::test_skips_already_cleared_results ... ok
[INFO] [stdout] test compaction::tools_compact::tests::test_skips_non_compactable_tools ... ok
[INFO] [stdout] test compaction::tools_compact::tests::test_tokens_before_and_after_in_event ... ok
[INFO] [stdout] test config::tests::approval_handler_multiple_pending ... ok
[INFO] [stdout] test config::tests::approval_handler_send_sync_bounds ... ok
[INFO] [stdout] test config::tests::approval_handler_trait_object_safety ... ok
[INFO] [stdout] test config::tests::deny_all_handler_empty_pending_returns_empty ... ok
[INFO] [stdout] test config::tests::deny_all_handler_implements_approval_handler_trait ... ok
[INFO] [stdout] test config::tests::deny_all_handler_multiple_pending_returns_deny_for_all ... ok
[INFO] [stdout] test config::tests::deny_all_handler_never_blocks ... ok
[INFO] [stdout] test config::tests::deny_all_handler_send_sync ... ok
[INFO] [stdout] test config::tests::deny_all_handler_single_pending_returns_deny ... ok
[INFO] [stdout] test config::tests::input_fresh_variant ... ok
[INFO] [stdout] test config::tests::input_items_variant ... ok
[INFO] [stdout] test config::tests::input_resume_variant ... ok
[INFO] [stdout] test config::tests::load_settings_missing_files_empty_policy ... ok
[INFO] [stdout] test config::tests::load_settings_no_call_has_empty_policy ... ok
[INFO] [stdout] test config::tests::load_settings_valid_file_applies_rules ... ok
[INFO] [stdout] test config::tests::load_settings_with_runtime_overrides ... ok
[INFO] [stdout] test compaction::full_summarize::tests::proptests::prop_full_summarize_preserves_recent_messages ... ok
[INFO] [stdout] test compaction::pipeline_tests::prop_trigger_threshold_correctly_computed ... ok
[INFO] [stdout] test config::tests::prop_deny_all_handler_denies_all_items ... ok
[INFO] [stdout] test config::tests::prop_temperature_nan_rejected ... ok
[INFO] [stdout] test config::tests::prop_temperature_negative_infinity_rejected ... ok
[INFO] [stdout] test config::tests::prop_temperature_positive_infinity_rejected ... ok
[INFO] [stdout] test config::tests::prop_temperature_valid_values_accepted ... ok
[INFO] [stdout] test config::tests::run_config_builder_all_fields ... ok
[INFO] [stdout] test config::tests::run_config_builder_defaults ... ok
[INFO] [stdout] test config::tests::run_config_builder_temperature_max ... ok
[INFO] [stdout] test config::tests::run_config_builder_temperature_negative - should panic ... ok
[INFO] [stdout] test config::tests::run_config_builder_temperature_too_high - should panic ... ok
[INFO] [stdout] test config::tests::run_config_builder_temperature_very_high - should panic ... ok
[INFO] [stdout] test config::tests::run_config_builder_temperature_zero ... ok
[INFO] [stdout] test config::tests::run_config_debug ... ok
[INFO] [stdout] test config::tests::run_result_construction ... ok
[INFO] [stdout] test config::tests::run_result_debug ... ok
[INFO] [stdout] test config_resolver::tests::apply_env_overrides_all_providers ... ok
[INFO] [stdout] test config_resolver::tests::apply_model_override_none_leaves_model_unchanged ... ok
[INFO] [stdout] test config_resolver::tests::apply_model_override_replaces_model ... ok
[INFO] [stdout] test config_resolver::tests::load_profiles_from_path_invalid_json ... ok
[INFO] [stdout] test config_resolver::tests::load_profiles_from_path_missing_file ... ok
[INFO] [stdout] test config_resolver::tests::load_profiles_from_path_no_profiles_key ... ok
[INFO] [stdout] test config_resolver::tests::load_profiles_from_path_valid_profiles ... ok
[INFO] [stdout] test config_resolver::tests::load_profiles_from_project_uses_correct_path ... ok
[INFO] [stdout] test config_resolver::tests::merge_default_falls_back_to_user_when_project_has_none ... ok
[INFO] [stdout] test config_resolver::tests::merge_default_project_takes_priority ... ok
[INFO] [stdout] test config_resolver::tests::merge_empty_inputs_returns_empty ... ok
[INFO] [stdout] test config_resolver::tests::merge_non_conflicting_profiles_unioned ... ok
[INFO] [stdout] test config_resolver::tests::merge_project_fully_replaces_user_for_same_name ... ok
[INFO] [stdout] test config_resolver::tests::merge_project_only_profiles_preserved ... ok
[INFO] [stdout] test config_resolver::tests::merge_user_only_profiles_preserved ... ok
[INFO] [stdout] test config::tests::prop_temperature_below_range_rejected ... ok
[INFO] [stdout] test config::tests::prop_temperature_above_range_rejected ... ok
[INFO] [stdout] test config_resolver::tests::prop_tests::prop_default_key_project_over_user ... ok
[INFO] [stdout] test config_resolver::tests::prop_tests::prop_env_vars_override_profile_credentials ... ok
[INFO] [stdout] test config_resolver::tests::prop_tests::prop_cli_profile_selects_correct_profile ... ok
[INFO] [stdout] test config_resolver::tests::prop_tests::prop_missing_credentials_produce_error ... ok
[INFO] [stdout] test config_resolver::tests::prop_tests::prop_model_override_replaces_model_only ... ok
[INFO] [stdout] test config_resolver::tests::prop_tests::prop_project_overrides_user_for_same_name ... ok
[INFO] [stdout] test config_resolver::tests::resolve_cli_profile_selects_named_profile ... ok
[INFO] [stdout] test config_resolver::tests::resolve_cli_unknown_profile_errors ... ok
[INFO] [stdout] test config_resolver::tests::resolve_model_override_applied ... ok
[INFO] [stdout] test config_resolver::tests::resolve_returns_none_when_default_references_nonexistent ... ok
[INFO] [stdout] test config_resolver::tests::resolve_returns_none_when_no_default_and_no_flag ... ok
[INFO] [stdout] test config_resolver::tests::resolve_returns_none_when_no_profiles_and_no_flag ... ok
[INFO] [stdout] test config_resolver::tests::resolve_selects_default_profile_from_project ... ok
[INFO] [stdout] test config_resolver::tests::select_profile_default_references_nonexistent_returns_none ... ok
[INFO] [stdout] test config_resolver::tests::prop_tests::prop_merge_preserves_disjoint_profiles ... ok
[INFO] [stdout] test config_resolver::tests::select_profile_maps_all_fields_from_config ... ok
[INFO] [stdout] test config_resolver::tests::select_profile_defaults_missing_provider_and_model ... ok
[INFO] [stdout] test config_resolver::tests::select_profile_no_cli_no_default_returns_none ... ok
[INFO] [stdout] test config_resolver::tests::select_profile_uses_default_key ... ok
[INFO] [stdout] test config_resolver::tests::select_profile_with_cli_flag_existing_profile ... ok
[INFO] [stdout] test config_resolver::tests::select_profile_with_cli_flag_unknown_profile_errors ... ok
[INFO] [stdout] test config_resolver::tests::test_config_error_equality ... ok
[INFO] [stdout] test config_resolver::tests::test_config_error_missing_credentials_display ... ok
[INFO] [stdout] test config_resolver::tests::test_config_inputs_default ... ok
[INFO] [stdout] test config_resolver::tests::test_resolved_profile_construction ... ok
[INFO] [stdout] test config_resolver::tests::test_config_error_unknown_profile_display ... ok
[INFO] [stdout] test config_resolver::tests::validate_credentials_anthropic_no_key_errors ... ok
[INFO] [stdout] test config_resolver::tests::validate_credentials_ollama_no_key_passes ... ok
[INFO] [stdout] test config_resolver::tests::validate_credentials_openai_no_key_errors ... ok
[INFO] [stdout] test config_resolver::tests::validate_credentials_openai_with_key_passes ... ok
[INFO] [stdout] test config_resolver::tests::validate_credentials_unknown_provider_no_key_passes ... ok
[INFO] [stdout] test error::tests::from_model_error_to_run_error ... ok
[INFO] [stdout] test error::tests::model_error_display_api ... ok
[INFO] [stdout] test error::tests::from_tool_error_to_run_error ... ok
[INFO] [stdout] test error::tests::model_error_display_connection ... ok
[INFO] [stdout] test error::tests::model_error_display_max_output_tokens ... ok
[INFO] [stdout] test error::tests::model_error_display_prompt_too_long ... ok
[INFO] [stdout] test error::tests::model_error_display_rate_limited ... ok
[INFO] [stdout] test error::tests::model_error_display_stream_interrupted ... ok
[INFO] [stdout] test error::tests::prop_model_error_api_display_contains_context ... ok
[INFO] [stdout] test error::tests::prop_model_error_prompt_too_long_display_contains_context ... ok
[INFO] [stdout] test error::tests::prop_model_error_rate_limited_display_contains_context ... ok
[INFO] [stdout] test error::tests::prop_model_error_connection_display_contains_context ... ok
[INFO] [stdout] test error::tests::prop_run_error_aborted_display_contains_context ... ok
[INFO] [stdout] test error::tests::prop_run_error_budget_exceeded_display_contains_context ... ok
[INFO] [stdout] test error::tests::prop_model_error_stream_interrupted_display_contains_context ... ok
[INFO] [stdout] test config_resolver::tests::prop_tests::prop_unknown_profile_produces_error_with_name ... ok
[INFO] [stdout] test error::tests::prop_run_error_max_turns_display_contains_context ... ok
[INFO] [stdout] test error::tests::prop_run_error_guardrail_display_contains_context ... ok
[INFO] [stdout] test error::tests::prop_run_error_mcp_display_contains_context ... ok
[INFO] [stdout] test error::tests::prop_run_error_model_prompt_too_long_display_contains_context ... ok
[INFO] [stdout] test error::tests::prop_run_error_model_rate_limited_display_contains_context ... ok
[INFO] [stdout] test error::tests::prop_run_error_model_api_display_contains_context ... ok
[INFO] [stdout] test error::tests::prop_run_error_model_connection_display_contains_context ... ok
[INFO] [stdout] test error::tests::prop_run_error_recovery_exhausted_display_contains_context ... ok
[INFO] [stdout] test error::tests::prop_run_error_model_stream_interrupted_display_contains_context ... ok
[INFO] [stdout] test error::tests::prop_run_error_serialization_display_contains_context ... ok
[INFO] [stdout] test error::tests::prop_run_error_tool_execution_failed_display_contains_context ... ok
[INFO] [stdout] test error::tests::prop_run_error_tool_invalid_input_display_contains_context ... ok
[INFO] [stdout] test error::tests::prop_run_error_tool_not_available_display_contains_context ... ok
[INFO] [stdout] test error::tests::prop_tool_error_not_available_display_contains_context ... ok
[INFO] [stdout] test error::tests::question_mark_operator_with_model_error ... ok
[INFO] [stdout] test error::tests::question_mark_operator_with_tool_error ... ok
[INFO] [stdout] test error::tests::run_error_display_aborted ... ok
[INFO] [stdout] test error::tests::run_error_display_budget_exceeded ... ok
[INFO] [stdout] test error::tests::prop_tool_error_execution_failed_display_contains_context ... ok
[INFO] [stdout] test error::tests::run_error_display_guardrail ... ok
[INFO] [stdout] test error::tests::run_error_display_includes_tool_error_context ... ok
[INFO] [stdout] test error::tests::run_error_display_max_turns ... ok
[INFO] [stdout] test error::tests::run_error_display_mcp ... ok
[INFO] [stdout] test error::tests::run_error_display_recovery_exhausted ... ok
[INFO] [stdout] test error::tests::run_error_display_serialization ... ok
[INFO] [stdout] test error::tests::tool_error_display_execution_failed ... ok
[INFO] [stdout] test error::tests::tool_error_display_invalid_input ... ok
[INFO] [stdout] test error::tests::tool_error_display_not_available ... ok
[INFO] [stdout] test error::tests::tool_error_display_timeout ... ok
[INFO] [stdout] test executor::tests::test_empty_queue_execute_all ... ok
[INFO] [stdout] test executor::tests::test_error_cascading_cancels_siblings ... ok
[INFO] [stdout] test executor::tests::test_exclusive_between_safe_batches ... ok
[INFO] [stdout] test executor::tests::test_exclusive_tool_runs_alone ... ok
[INFO] [stdout] test error::tests::run_error_display_includes_model_error_context ... ok
[INFO] [stdout] test executor::tests::test_multiple_safe_tools_parallel ... ok
[INFO] [stdout] test executor::tests::test_new_clamps_min_concurrency ... ok
[INFO] [stdout] test executor::tests::test_non_cascading_error_does_not_cancel ... ok
[INFO] [stdout] test error::tests::prop_tool_error_invalid_input_display_contains_context ... ok
[INFO] [stdout] test executor::tests::test_single_safe_tool ... ok
[INFO] [stdout] test fs_session_store::tests::append_then_load_roundtrip ... ok
[INFO] [stdout] test executor::tests::test_max_concurrency_respected ... ok
[INFO] [stdout] test fs_session_store::tests::delete_removes_session ... ok
[INFO] [stdout] test executor::tests::test_results_in_enqueue_order_despite_varying_durations ... ok
[INFO] [stdout] test fs_session_store::tests::list_returns_sessions_newest_first ... ok
[INFO] [stdout] test fs_session_store::tests::rejects_path_traversal_ids ... ok
[INFO] [stdout] test fs_session_store::tests::load_missing_is_not_found ... ok
[INFO] [stdout] test fs_session_store::tests::save_overwrites ... ok
[INFO] [stdout] test guardrail::prop_tests::prop_all_pass_yields_overall_pass ... ok
[INFO] [stdout] test guardrail::prop_tests::prop_guardrails_after_failure_never_checked ... ok
[INFO] [stdout] test guardrail::prop_tests::prop_failure_reason_matches_first_failing_guardrail ... ok
[INFO] [stdout] test guardrail::tests::all_guardrails_pass_when_input_clean ... ok
[INFO] [stdout] test guardrail::tests::guardrail_result_clone_and_eq ... ok
[INFO] [stdout] test guardrail::tests::guardrail_result_debug ... ok
[INFO] [stdout] test guardrail::tests::guardrail_result_fail ... ok
[INFO] [stdout] test guardrail::tests::guardrail_result_fail_with_metadata ... ok
[INFO] [stdout] test guardrail::tests::guardrail_result_pass ... ok
[INFO] [stdout] test guardrail::tests::input_guardrail_blocks_banned_word ... ok
[INFO] [stdout] test guardrail::tests::input_guardrail_is_object_safe ... ok
[INFO] [stdout] test guardrail::tests::input_guardrail_name ... ok
[INFO] [stdout] test guardrail::tests::input_guardrail_passes_clean_input ... ok
[INFO] [stdout] test guardrail::tests::input_guardrail_send_sync ... ok
[INFO] [stdout] test guardrail::tests::multiple_input_guardrails_sequential_check ... ok
[INFO] [stdout] test guardrail::tests::output_guardrail_blocks_long_output ... ok
[INFO] [stdout] test guardrail::tests::output_guardrail_is_object_safe ... ok
[INFO] [stdout] test guardrail::tests::output_guardrail_name ... ok
[INFO] [stdout] test guardrail::tests::output_guardrail_passes_short_output ... ok
[INFO] [stdout] test guardrail::tests::output_guardrail_send_sync ... ok
[INFO] [stdout] test guardrail::tests::output_guardrail_with_structured_output ... ok
[INFO] [stdout] test guardrail::prop_tests::prop_first_failure_short_circuits ... ok
[INFO] [stdout] test guardrail::tests::tool_guardrail_blocks_forbidden_tool ... ok
[INFO] [stdout] test guardrail::tests::tool_guardrail_check_output_blocks_sensitive ... ok
[INFO] [stdout] test guardrail::tests::tool_guardrail_is_object_safe ... ok
[INFO] [stdout] test guardrail::tests::tool_guardrail_name ... ok
[INFO] [stdout] test guardrail::tests::tool_guardrail_passes_allowed_tool ... ok
[INFO] [stdout] test guardrail::tests::tool_guardrail_check_output_passes ... ok
[INFO] [stdout] test guardrail::tests::tool_guardrail_send_sync ... ok
[INFO] [stdout] test guardrail::prop_tests::prop_input_guardrails_first_turn_only ... ok
[INFO] [stdout] test in_memory_task_store::tests::dep_failed_returns_dependency_failed_error ... ok
[INFO] [stdout] test in_memory_task_store::tests::all_deps_completed_transition_succeeds ... ok
[INFO] [stdout] test compaction::tools_compact::tests::proptests::prop_tools_compact_preserves_tool_use_id_and_is_error ... ok
[INFO] [stdout] test in_memory_task_store::tests::dep_killed_returns_dependency_failed_error ... ok
[INFO] [stdout] test in_memory_task_store::tests::acknowledge_excludes_from_terminal_queries ... ok
[INFO] [stdout] test in_memory_task_store::tests::dep_pending_returns_invalid_transition ... ok
[INFO] [stdout] test in_memory_task_store::tests::evict_acknowledged_safety ... ok
[INFO] [stdout] test in_memory_task_store::tests::dep_running_returns_invalid_transition ... ok
[INFO] [stdout] test in_memory_task_store::tests::evict_older_than_safety ... ok
[INFO] [stdout] test in_memory_task_store::tests::invalid_transition_from_completed ... ok
[INFO] [stdout] test compaction::tools_compact::tests::proptests::prop_tools_compact_clears_only_eligible_tool_results ... ok
[INFO] [stdout] test in_memory_task_store::tests::invalid_transition_from_failed ... ok
[INFO] [stdout] test in_memory_task_store::tests::invalid_transition_from_killed ... ok
[INFO] [stdout] test in_memory_task_store::tests::invalid_transition_pending_to_completed ... ok
[INFO] [stdout] test in_memory_task_store::tests::invalid_transition_pending_to_failed ... ok
[INFO] [stdout] test in_memory_task_store::tests::retry_logic_semantics ... ok
[INFO] [stdout] test in_memory_task_store::tests::status_filtering_correctness ... ok
[INFO] [stdout] test in_memory_task_store::tests::task_entry_crud_round_trip ... ok
[INFO] [stdout] test in_memory_task_store::tests::task_id_uniqueness ... ok
[INFO] [stdout] test in_memory_task_store::tests::todo_item_crud_round_trip ... ok
[INFO] [stdout] test in_memory_task_store::tests::valid_transition_pending_to_killed ... ok
[INFO] [stdout] test in_memory_task_store::tests::valid_transition_pending_to_running_no_deps ... ok
[INFO] [stdout] test compaction::session_memory::proptests::prop_noop_when_no_session_memory_file ... ok
[INFO] [stdout] test message::tests::test_assistant_message_with_tool_use ... ok
[INFO] [stdout] test message::tests::test_assistant_message_without_usage ... ok
[INFO] [stdout] test message::tests::test_content_block_text_roundtrip ... ok
[INFO] [stdout] test message::tests::test_multiple_content_blocks ... ok
[INFO] [stdout] test message::tests::test_system_message_roundtrip ... ok
[INFO] [stdout] test message::tests::test_tool_result_error ... ok
[INFO] [stdout] test message::tests::test_tool_result_message ... ok
[INFO] [stdout] test message::tests::test_tool_use_block_with_complex_input ... ok
[INFO] [stdout] test message::tests::test_usage_default ... ok
[INFO] [stdout] test message::tests::test_user_message_with_image ... ok
[INFO] [stdout] test message::tests::test_user_message_with_text ... ok
[INFO] [stdout] test model::tests::content_block_text_variant ... ok
[INFO] [stdout] test model::tests::content_block_tool_use_variant ... ok
[INFO] [stdout] test model::tests::model_request_serialization ... ok
[INFO] [stdout] test model::tests::model_request_with_no_optional_fields ... ok
[INFO] [stdout] test model::tests::model_request_with_output_schema ... ok
[INFO] [stdout] test model::tests::model_response_serialization_roundtrip ... ok
[INFO] [stdout] test model::tests::tool_definition_equality ... ok
[INFO] [stdout] test model::tests::tool_definition_serialization_roundtrip ... ok
[INFO] [stdout] test next_step::tests::pending_approval_serialization_roundtrip ... ok
[INFO] [stdout] test pattern::tests::display_bare ... ok
[INFO] [stdout] test pattern::tests::display_compound ... ok
[INFO] [stdout] test pattern::tests::display_round_trips_through_parse ... ok
[INFO] [stdout] test pattern::tests::extract_primary_arg_command_key ... ok
[INFO] [stdout] test pattern::tests::extract_primary_arg_empty_object ... ok
[INFO] [stdout] test pattern::tests::extract_primary_arg_no_recognized_key ... ok
[INFO] [stdout] test pattern::tests::extract_primary_arg_non_object ... ok
[INFO] [stdout] test pattern::tests::extract_primary_arg_non_string_value ... ok
[INFO] [stdout] test pattern::tests::extract_primary_arg_null_value ... ok
[INFO] [stdout] test pattern::tests::extract_primary_arg_path_key ... ok
[INFO] [stdout] test pattern::tests::extract_primary_arg_priority_order ... ok
[INFO] [stdout] test pattern::tests::extract_primary_arg_url_key ... ok
[INFO] [stdout] test pattern::tests::glob_all_star ... ok
[INFO] [stdout] test pattern::tests::glob_complex_patterns ... ok
[INFO] [stdout] test pattern::tests::glob_empty_pattern_matches_empty_text ... ok
[INFO] [stdout] test pattern::tests::glob_exact_match ... ok
[INFO] [stdout] test pattern::tests::glob_multiple_stars ... ok
[INFO] [stdout] test pattern::tests::glob_no_meta_exact_only ... ok
[INFO] [stdout] test pattern::tests::glob_question_and_star ... ok
[INFO] [stdout] test pattern::tests::glob_question_matches_one ... ok
[INFO] [stdout] test pattern::tests::glob_star_at_start ... ok
[INFO] [stdout] test pattern::tests::glob_star_in_middle ... ok
[INFO] [stdout] test pattern::tests::glob_star_matches_empty ... ok
[INFO] [stdout] test pattern::tests::glob_star_matches_many ... ok
[INFO] [stdout] test pattern::tests::is_glob_bare_no_meta ... ok
[INFO] [stdout] test pattern::tests::is_glob_bare_question ... ok
[INFO] [stdout] test pattern::tests::is_glob_bare_star ... ok
[INFO] [stdout] test pattern::tests::is_glob_compound_no_meta ... ok
[INFO] [stdout] test pattern::tests::is_glob_compound_question_in_tool_name ... ok
[INFO] [stdout] test pattern::tests::is_glob_compound_star_in_arg ... ok
[INFO] [stdout] test pattern::tests::matches_bare_exact_no_glob ... ok
[INFO] [stdout] test pattern::tests::matches_bare_ignores_tool_input ... ok
[INFO] [stdout] test pattern::tests::matches_bare_pattern_tool_name_only ... ok
[INFO] [stdout] test pattern::tests::matches_bare_question_mark_glob ... ok
[INFO] [stdout] test pattern::tests::matches_compound_empty_arg_glob_matches_empty_arg ... ok
[INFO] [stdout] test pattern::tests::matches_compound_exact_tool_name_and_arg_glob ... ok
[INFO] [stdout] test pattern::tests::matches_compound_returns_false_when_no_input ... ok
[INFO] [stdout] test pattern::tests::matches_compound_returns_false_when_no_primary_arg ... ok
[INFO] [stdout] test pattern::tests::matches_compound_tool_name_case_sensitive ... ok
[INFO] [stdout] test pattern::tests::matches_compound_with_path_arg ... ok
[INFO] [stdout] test pattern::tests::matches_compound_with_url_arg ... ok
[INFO] [stdout] test pattern::tests::matches_compound_wrong_tool_name ... ok
[INFO] [stdout] test pattern::tests::parse_bare_simple ... ok
[INFO] [stdout] test pattern::tests::parse_bare_with_glob ... ok
[INFO] [stdout] test pattern::tests::parse_bare_with_unmatched_close_paren_returns_none ... ok
[INFO] [stdout] test pattern::tests::parse_compound_empty_arg_glob ... ok
[INFO] [stdout] test pattern::tests::parse_compound_empty_tool_name_returns_none ... ok
[INFO] [stdout] test pattern::tests::parse_compound_simple ... ok
[INFO] [stdout] test pattern::tests::parse_compound_unclosed_paren_returns_none ... ok
[INFO] [stdout] test pattern::tests::parse_compound_with_path ... ok
[INFO] [stdout] test pattern::tests::parse_compound_with_spaces_in_arg ... ok
[INFO] [stdout] test pattern::tests::parse_empty_returns_none ... ok
[INFO] [stdout] test pattern::tests::parse_trims_whitespace ... ok
[INFO] [stdout] test in_memory_task_store::tests::valid_transition_pending_to_running_deps_completed ... ok
[INFO] [stdout] test pattern::tests::property_tests::bare_exact_pattern_matches_name_only_no_input ... ok
[INFO] [stdout] test in_memory_task_store::tests::valid_transition_running_to_completed ... ok
[INFO] [stdout] test pattern::tests::property_tests::bare_exact_string_matches_only_itself ... ok
[INFO] [stdout] test pattern::tests::property_tests::bare_pattern_matches_without_input ... ok
[INFO] [stdout] test pattern::tests::property_tests::glob_exact_matches_only_itself ... ok
[INFO] [stdout] test pattern::tests::property_tests::glob_question_does_not_match_zero_chars ... ok
[INFO] [stdout] test in_memory_task_store::tests::valid_transition_running_to_failed_no_retries ... ok
[INFO] [stdout] test pattern::tests::property_tests::glob_question_matches_exactly_one ... ok
[INFO] [stdout] test permission::tests::clear_session_allows_removes_all ... ok
[INFO] [stdout] test permission::tests::engine_add_static_rules ... ok
[INFO] [stdout] test permission::tests::engine_builder_pattern ... ok
[INFO] [stdout] test permission::tests::engine_new_defaults ... ok
[INFO] [stdout] test permission::tests::full_pipeline_normal_flow ... ok
[INFO] [stdout] test permission::tests::full_pipeline_with_session_allow_after_approval ... ok
[INFO] [stdout] test permission::tests::grant_session_allow_idempotent ... ok
[INFO] [stdout] test permission::tests::grant_session_allow_persists ... ok
[INFO] [stdout] test permission::tests::layer1_bypass_mode_allows_all ... ok
[INFO] [stdout] test permission::tests::layer1_bypass_overrides_static_deny ... ok
[INFO] [stdout] test permission::tests::layer1_deny_all_mode_denies_all ... ok
[INFO] [stdout] test permission::tests::layer1_deny_all_overrides_static_allow ... ok
[INFO] [stdout] test permission::tests::layer2_static_allow_short_circuits ... ok
[INFO] [stdout] test permission::tests::layer2_static_deny_short_circuits ... ok
[INFO] [stdout] test permission::tests::layer2_static_deny_takes_precedence_over_static_allow ... ok
[INFO] [stdout] test permission::tests::layer3_session_allow_does_not_override_static_deny ... ok
[INFO] [stdout] test permission::tests::layer3_session_allow_short_circuits ... ok
[INFO] [stdout] test permission::tests::layer4_approval_always_needs_approval ... ok
[INFO] [stdout] test permission::tests::layer4_approval_conditional_needs_approval ... ok
[INFO] [stdout] test permission::tests::layer4_approval_never_allows ... ok
[INFO] [stdout] test permission::tests::permission_decision_allow_variant ... ok
[INFO] [stdout] test permission::tests::permission_decision_deny_variant ... ok
[INFO] [stdout] test permission::tests::permission_decision_needs_approval_variant ... ok
[INFO] [stdout] test permission::tests::permission_mode_debug_clone_copy_eq ... ok
[INFO] [stdout] test pattern::tests::property_tests::compound_pattern_rejects_missing_primary_arg ... ok
[INFO] [stdout] test pattern::tests::property_tests::glob_star_matches_zero_or_more ... ok
[INFO] [stdout] test in_memory_task_store::tests::todo_item_insertion_order_preserved ... ok
[INFO] [stdout] test pattern::tests::property_tests::glob_star_requires_prefix ... ok
[INFO] [stdout] test permission::tests::property_tests::first_match_rule_ordering ... ok
[INFO] [stdout] test permission::tests::property_tests::pattern_based_session_grants ... ok
[INFO] [stdout] test permission::tests::property_tests::shared_session_grant_propagation ... ok
[INFO] [stdout] test permission::tests::property_tests::shared_session_grant_propagation_compound ... ok
[INFO] [stdout] test permission::tests::property_tests::shared_session_grant_propagation_with_glob ... ok
[INFO] [stdout] test permission::tests::property_tests::session_allow_does_not_override_static_deny ... ok
[INFO] [stdout] test in_memory_task_store::tests::valid_transition_running_to_killed ... ok
[INFO] [stdout] test permission::tests::property_tests::static_allow_always_allows ... ok
[INFO] [stdout] test permission::tests::set_mode_changes_behavior ... ok
[INFO] [stdout] test permission::tests::property_tests::session_allow_works_for_non_static_tools ... ok
[INFO] [stdout] test permission::tests::property_tests::bypass_mode_always_allows ... ok
[INFO] [stdout] test profile::tests::test_profile_config_all_fields ... ok
[INFO] [stdout] test profile::tests::test_profile_config_empty_object ... ok
[INFO] [stdout] test profile::tests::test_profile_config_ignores_unknown_fields ... ok
[INFO] [stdout] test profile::tests::test_profile_config_partial_fields ... ok
[INFO] [stdout] test profile::tests::test_profiles_section_from_value_full ... ok
[INFO] [stdout] test profile::tests::test_profiles_section_from_value_no_default ... ok
[INFO] [stdout] test profile::tests::test_profiles_section_from_value_not_object ... ok
[INFO] [stdout] test permission::tests::property_tests::static_deny_takes_precedence_over_static_allow ... ok
[INFO] [stdout] test profile::tests::test_profiles_section_skips_unparseable_entries ... ok
[INFO] [stdout] test profile::tests::test_profiles_section_from_value_null ... ok
[INFO] [stdout] test recovery::tests::prop_recovery_escalates_to_give_up_after_max_attempts ... ok
[INFO] [stdout] test recovery::tests::test_api_error_gives_up_immediately ... ok
[INFO] [stdout] test recovery::tests::test_attempts_for_returns_current_count ... ok
[INFO] [stdout] test recovery::tests::test_connection_error_gives_up_immediately ... ok
[INFO] [stdout] test recovery::tests::test_different_error_variants_tracked_independently ... ok
[INFO] [stdout] test recovery::tests::test_escalation_to_give_up_after_max_attempts ... ok
[INFO] [stdout] test recovery::tests::test_max_output_tokens_escalates_on_third_attempt ... ok
[INFO] [stdout] test recovery::tests::test_max_output_tokens_maps_to_continue_message ... ok
[INFO] [stdout] test recovery::tests::test_prompt_too_long_maps_to_compact_and_retry ... ok
[INFO] [stdout] test recovery::tests::test_rate_limited_gives_up ... ok
[INFO] [stdout] test recovery::tests::test_reset_clears_all_attempts ... ok
[INFO] [stdout] test recovery::tests::test_stream_interrupted_maps_to_continue_message ... ok
[INFO] [stdout] test permission::tests::property_tests::deny_all_mode_always_denies ... ok
[INFO] [stdout] test permission::tests::property_tests::static_deny_always_denies ... ok
[INFO] [stdout] test run_loop::tests::test_accumulate_usage_sums_correctly ... ok
[INFO] [stdout] test run_loop::tests::test_accumulate_usage_with_zero_usage ... ok
[INFO] [stdout] test run_loop::tests::test_approval_handler_allow_continues_run ... ok
[INFO] [stdout] test run_loop::tests::test_approval_handler_always_allow_grants_session_permission ... ok
[INFO] [stdout] test run_loop::tests::test_approval_handler_deny_injects_denial_result ... ok
[INFO] [stdout] test run_loop::tests::test_approval_handler_receives_agent_name ... ok
[INFO] [stdout] test run_loop::tests::test_budget_enforcement_in_stream ... ok
[INFO] [stdout] test run_loop::tests::test_budget_enforcement_triggers_when_exceeded ... ok
[INFO] [stdout] test run_loop::tests::test_budget_not_exceeded_stays_within ... ok
[INFO] [stdout] test run_loop::tests::test_build_tool_definitions ... ok
[INFO] [stdout] test run_loop::tests::test_cost_accumulates_over_multiple_turns ... ok
[INFO] [stdout] test recovery::tests::prop_recovery_different_variants_tracked_independently ... ok
[INFO] [stdout] test run_loop::tests::test_deny_all_approval_handler_denies_tool_in_non_interactive_mode ... ok
[INFO] [stdout] test run_loop::tests::test_deny_all_approval_handler_run_loop_continues_after_denial ... ok
[INFO] [stdout] test run_loop::tests::test_extract_text_from_content ... ok
[INFO] [stdout] test run_loop::tests::test_guardrail_tripped_in_stream ... ok
[INFO] [stdout] test run_loop::tests::test_initialize_state_fresh ... ok
[INFO] [stdout] test run_loop::tests::test_initialize_state_items ... ok
[INFO] [stdout] test run_loop::tests::test_initialize_state_resume ... ok
[INFO] [stdout] test run_loop::tests::test_input_guardrail_passes_allows_run ... ok
[INFO] [stdout] test run_loop::tests::test_input_guardrail_trips_on_first_turn ... ok
[INFO] [stdout] test run_loop::tests::test_input_guardrails_not_invoked_on_subsequent_turns ... ok
[INFO] [stdout] test run_loop::tests::test_input_guardrails_short_circuit_at_first_failure ... ok
[INFO] [stdout] test run_loop::tests::test_no_approval_handler_returns_interruption ... ok
[INFO] [stdout] test run_loop::tests::test_no_budget_enforcement_when_none ... ok
[INFO] [stdout] test run_loop::tests::test_output_guardrail_passes_allows_delivery ... ok
[INFO] [stdout] test run_loop::tests::test_output_guardrail_trips_on_final_output ... ok
[INFO] [stdout] test run_loop::tests::test_recovery_connection_error_gives_up_immediately ... ok
[INFO] [stdout] test run_loop::tests::test_recovery_exhausted_gives_up_after_max_attempts ... ok
[INFO] [stdout] test run_loop::tests::test_output_guardrail_tripped_in_stream ... ok
[INFO] [stdout] test run_loop::tests::test_recovery_prompt_too_long_compacts_and_retries ... ok
[INFO] [stdout] test run_loop::tests::test_recovery_stream_interrupted_retries_with_continuation ... ok
[INFO] [stdout] test run_loop::tests::test_resolve_next_step_content_filter_aborts ... ok
[INFO] [stdout] test run_loop::tests::test_resolve_next_step_content_filter_takes_priority_over_max_turns ... ok
[INFO] [stdout] test run_loop::tests::test_resolve_next_step_end_turn_final_output ... ok
[INFO] [stdout] test run_loop::tests::test_resolve_next_step_max_tokens_recovery_continue_message ... ok
[INFO] [stdout] test run_loop::tests::test_recovery_max_tokens_continues_with_prompt ... ok
[INFO] [stdout] test run_loop::tests::test_resolve_next_step_max_turns_check ... ok
[INFO] [stdout] test run_loop::tests::test_resolve_next_step_permission_deny_aborts ... ok
[INFO] [stdout] test run_loop::tests::test_resolve_next_step_permission_interruption ... ok
[INFO] [stdout] test run_loop::tests::test_resolve_next_step_stop_sequence_final_output ... ok
[INFO] [stdout] test run_loop::tests::test_resolve_next_step_max_tokens_recovery_escalate ... ok
[INFO] [stdout] test run_loop::tests::test_resolve_next_step_structured_output ... ok
[INFO] [stdout] test run_loop::tests::test_resolve_next_step_tool_use_continue ... ok
[INFO] [stdout] test run_loop::tests::test_resolve_next_step_structured_output_invalid_json ... ok
[INFO] [stdout] test run_loop::tests::test_run_max_turns_reached ... ok
[INFO] [stdout] test run_loop::tests::test_run_simple_text_response ... ok
[INFO] [stdout] test run_loop::tests::test_run_stream_emits_events ... ok
[INFO] [stdout] test run_loop::tests::test_run_with_items_input ... ok
[INFO] [stdout] test run_loop::tests::test_tool_output_to_string ... ok
[INFO] [stdout] test settings::tests::end_to_end_load_and_merge ... ok
[INFO] [stdout] test settings::tests::load_handles_missing_allow_or_deny_arrays ... ok
[INFO] [stdout] test settings::tests::load_ignores_unrecognized_top_level_keys ... ok
[INFO] [stdout] test settings::tests::load_invalid_json_returns_default ... ok
[INFO] [stdout] test run_loop::tests::test_run_with_tool_calls ... ok
[INFO] [stdout] test settings::tests::load_missing_file_returns_default ... ok
[INFO] [stdout] test settings::tests::load_skips_unparseable_entries ... ok
[INFO] [stdout] test settings::tests::load_skips_non_string_entries ... ok
[INFO] [stdout] test settings::tests::load_valid_json_no_permissions_key ... ok
[INFO] [stdout] test settings::tests::load_valid_settings_with_allow_and_deny ... ok
[INFO] [stdout] test settings::tests::merge_compound_patterns_override_correctly ... ok
[INFO] [stdout] test settings::tests::merge_deny_wins_within_same_level ... ok
[INFO] [stdout] test settings::tests::merge_multiple_levels_with_complex_scenario ... ok
[INFO] [stdout] test settings::tests::merge_non_conflicting_rules_are_unioned ... ok
[INFO] [stdout] test settings::tests::merge_empty_inputs_returns_empty_policy ... ok
[INFO] [stdout] test settings::tests::merge_project_overrides_user_for_same_pattern ... ok
[INFO] [stdout] test settings::tests::merge_runtime_deny_overrides_runtime_allow_for_same_pattern ... ok
[INFO] [stdout] test settings::tests::merge_runtime_overrides_project_and_user ... ok
[INFO] [stdout] test settings::tests::merge_runtime_strings_parsed_with_bare_fallback ... ok
[INFO] [stdout] test settings::tests::merge_runtime_unparseable_falls_back_to_bare ... ok
[INFO] [stdout] test settings::tests::merge_user_rules_preserved_when_no_conflict ... ok
[INFO] [stdout] test settings::tests::project_path_returns_correct_path ... ok
[INFO] [stdout] test settings::tests::project_path_concatenates_correctly ... ok
[INFO] [stdout] test profile::tests::profile_config_any_field_subset_parses ... ok
[INFO] [stdout] test run_loop::tests::prop_usage_and_cost_accumulation ... ok
[INFO] [stdout] test settings::tests::property_tests::deny_wins_over_allow_at_same_level ... ok
[INFO] [stdout] test settings::tests::property_tests::merge_precedence_highest_level_wins ... ok
[INFO] [stdout] test settings::tests::property_tests::merge_project_overrides_user_when_no_runtime ... ok
[INFO] [stdout] test settings::tests::property_tests::invalid_patterns_skipped_valid_preserved ... ok
[INFO] [stdout] test settings::tests::property_tests::invalid_json_returns_default_without_panic ... ok
[INFO] [stdout] test settings::tests::user_path_returns_some_with_home_dir ... ok
[INFO] [stdout] test skill::tests::parse_invalid_yaml ... ok
[INFO] [stdout] test skill::tests::parse_missing_frontmatter ... ok
[INFO] [stdout] test skill::tests::parse_missing_name_field ... ok
[INFO] [stdout] test skill::tests::parse_valid_fork_skill ... ok
[INFO] [stdout] test skill::tests::parse_valid_inline_skill ... ok
[INFO] [stdout] test settings::tests::property_tests::non_conflicting_rules_are_unioned ... ok
[INFO] [stdout] test profile::tests::profile_config_serialization_roundtrip ... ok
[INFO] [stdout] test settings::tests::property_tests::parsing_preserves_valid_patterns_in_order ... ok
[INFO] [stdout] test skill::tests::prop_skill_template_positional_substituted ... ok
[INFO] [stdout] test skill::tests::prop_skill_template_arguments_substituted ... ok
[INFO] [stdout] test skill::tests::registry_activate_for_path ... ok
[INFO] [stdout] test skill::tests::registry_find_nonexistent ... ok
[INFO] [stdout] test skill::tests::registry_load_from_directory ... ok
[INFO] [stdout] test skill::tests::registry_load_mixed_formats ... ok
[INFO] [stdout] test skill::tests::registry_load_subdirectory_format ... ok
[INFO] [stdout] test skill::tests::registry_nonexistent_directory ... ok
[INFO] [stdout] test skill::tests::registry_project_takes_precedence ... ok
[INFO] [stdout] test skill::tests::registry_skips_invalid_files ... ok
[INFO] [stdout] test skill::tests::registry_subdirectory_without_skill_md_is_skipped ... ok
[INFO] [stdout] test skill::tests::registry_system_prompt_section_empty ... ok
[INFO] [stdout] test skill::tests::registry_system_prompt_section_with_skills ... ok
[INFO] [stdout] test skill::tests::render_body_all_variables ... ok
[INFO] [stdout] test skill::tests::render_body_empty_arguments ... ok
[INFO] [stdout] test skill::tests::render_body_no_variables ... ok
[INFO] [stdout] test skill::tests::render_body_unresolved_positional ... ok
[INFO] [stdout] test skill::tests::skill_context_enum_equality ... ok
[INFO] [stdout] test skill::tests::skill_source_enum_equality ... ok
[INFO] [stdout] test skill::tests::skill_tool_fork_execution ... ok
[INFO] [stdout] test skill::tests::skill_tool_inline_execution ... ok
[INFO] [stdout] test skill::tests::skill_tool_no_arguments ... ok
[INFO] [stdout] test state::tests::compaction_state_default ... ok
[INFO] [stdout] test state::tests::compaction_state_serialization_roundtrip ... ok
[INFO] [stdout] test state::tests::deserialize_empty_bytes_returns_error ... ok
[INFO] [stdout] test state::tests::deserialize_malformed_bytes_returns_error ... ok
[INFO] [stdout] test state::tests::deserialize_unrecognized_schema_version_returns_error ... ok
[INFO] [stdout] test state::tests::deserialize_valid_json_but_wrong_shape_returns_error ... ok
[INFO] [stdout] test state::tests::new_defaults_are_correct ... ok
[INFO] [stdout] test state::tests::new_sets_schema_version ... ok
[INFO] [stdout] test state::tests::run_state_partial_eq_works ... ok
[INFO] [stdout] test state::tests::run_state_with_none_session_and_max_turns ... ok
[INFO] [stdout] test state::tests::serialize_deserialize_roundtrip_empty ... ok
[INFO] [stdout] test state::tests::serialize_deserialize_roundtrip_with_messages ... ok
[INFO] [stdout] test skill::tests::prop_skill_template_all_vars_substituted ... ok
[INFO] [stdout] test sub_agent::tests::extract_prompt_with_task_object ... ok
[INFO] [stdout] test sub_agent::tests::extract_prompt_with_task_string ... ok
[INFO] [stdout] test sub_agent::tests::extract_prompt_without_task_field ... ok
[INFO] [stdout] test run_loop::tests::prop_budget_enforcement ... ok
[INFO] [stdout] test sub_agent::tests::prop_cost_accumulation::prop_sub_agent_accumulation ... ok
[INFO] [stdout] test sub_agent::tests::sub_agent_config_creates_shared_session_grants_store ... ok
[INFO] [stdout] test sub_agent::tests::sub_agent_config_no_override ... ok
[INFO] [stdout] test sub_agent::tests::sub_agent_config_overrides_max_turns ... ok
[INFO] [stdout] test sub_agent::tests::sub_agent_config_sets_agent_name_from_def ... ok
[INFO] [stdout] test sub_agent::tests::sub_agent_config_shares_approval_handler_via_arc ... ok
[INFO] [stdout] test sub_agent::tests::sub_agent_config_without_handler_has_none ... ok
[INFO] [stdout] test sub_agent::tests::sub_agent_tool_approval_is_never ... ok
[INFO] [stdout] test sub_agent::tests::sub_agent_tool_as_dyn_tool ... ok
[INFO] [stdout] test sub_agent::tests::sub_agent_tool_concurrency_is_safe ... ok
[INFO] [stdout] test sub_agent::tests::sub_agent_tool_description_falls_back ... ok
[INFO] [stdout] test sub_agent::tests::sub_agent_tool_description_uses_custom ... ok
[INFO] [stdout] test sub_agent::tests::sub_agent_tool_execute_background ... ok
[INFO] [stdout] test sub_agent::tests::sub_agent_tool_execute_foreground ... ok
[INFO] [stdout] test sub_agent::tests::sub_agent_tool_is_send_sync ... ok
[INFO] [stdout] test sub_agent::tests::sub_agent_tool_name_falls_back_to_agent_name ... ok
[INFO] [stdout] test sub_agent::tests::sub_agent_tool_name_uses_tool_name_field ... ok
[INFO] [stdout] test sub_agent::tests::sub_agent_tool_parameters_schema_custom ... ok
[INFO] [stdout] test sub_agent::tests::sub_agent_tool_parameters_schema_default ... ok
[INFO] [stdout] test sub_agent::tests::sub_agent_usage_from_run_result ... ok
[INFO] [stdout] test sub_agent::tests::prop_cost_accumulation::prop_sub_agent_usage_extraction ... ok
[INFO] [stdout] test task_store::tests::error_display_contains_context ... ok
[INFO] [stdout] test skill::tests::prop_skill_template_skill_dir_substituted ... ok
[INFO] [stdout] test todolist_tool::tests::add_active_form_too_long_returns_error ... ok
[INFO] [stdout] test todolist_tool::tests::add_content_too_long_returns_error ... ok
[INFO] [stdout] test todolist_tool::tests::add_missing_content_returns_error ... ok
[INFO] [stdout] test todolist_tool::tests::add_returns_id ... ok
[INFO] [stdout] test todolist_tool::tests::add_with_active_form ... ok
[INFO] [stdout] test todolist_tool::tests::clear_completed_removes_only_completed ... ok
[INFO] [stdout] test todolist_tool::tests::concurrency_returns_safe ... ok
[INFO] [stdout] test todolist_tool::tests::description_mentions_tracking_plans ... ok
[INFO] [stdout] test todolist_tool::tests::list_empty_returns_empty_array ... ok
[INFO] [stdout] test todolist_tool::tests::list_returns_all_items ... ok
[INFO] [stdout] test todolist_tool::tests::missing_action_returns_error ... ok
[INFO] [stdout] test todolist_tool::tests::name_returns_todolist ... ok
[INFO] [stdout] test todolist_tool::tests::parameters_schema_has_action_enum ... ok
[INFO] [stdout] test task_store::tests::todo_item_serialization_round_trip ... ok
[INFO] [stdout] test compaction::session_memory::proptests::prop_preserves_recent_messages_and_injects_summary ... ok
[INFO] [stdout] test task_store::tests::task_entry_serialization_round_trip ... ok
[INFO] [stdout] test skill::tests::prop_tests::skill_registry_project_takes_precedence_over_user ... ok
[INFO] [stdout] test todolist_tool::tests::prop_invalid_action_error ... ok
[INFO] [stdout] test todolist_tool::tests::prop_missing_parameter_error ... ok
[INFO] [stdout] test todolist_tool::tests::prop_clear_completed_correctness ... ok
[INFO] [stdout] test todolist_tool::tests::prop_not_found_propagation ... ok
[INFO] [stdout] test todolist_tool::tests::remove_deletes_item ... ok
[INFO] [stdout] test todolist_tool::tests::remove_missing_id_returns_error ... ok
[INFO] [stdout] test todolist_tool::tests::remove_nonexistent_id_returns_error ... ok
[INFO] [stdout] test todolist_tool::tests::unknown_action_returns_error ... ok
[INFO] [stdout] test todolist_tool::tests::update_changes_status ... ok
[INFO] [stdout] test todolist_tool::tests::update_invalid_status_returns_error ... ok
[INFO] [stdout] test todolist_tool::tests::update_missing_id_returns_error ... ok
[INFO] [stdout] test todolist_tool::tests::update_missing_status_returns_error ... ok
[INFO] [stdout] test todolist_tool::tests::update_nonexistent_id_returns_error ... ok
[INFO] [stdout] test tool::tests::approval_requirement_always ... ok
[INFO] [stdout] test tool::tests::approval_requirement_conditional ... ok
[INFO] [stdout] test sub_agent::prop_tests::prop_sub_agent_starts_with_empty_history ... ok
[INFO] [stdout] test tool::tests::approval_requirement_never ... ok
[INFO] [stdout] test tool::tests::concurrency_enum_debug_clone_copy_eq ... ok
[INFO] [stdout] test tool::tests::dangerous_tool_overrides_defaults ... ok
[INFO] [stdout] test tool::tests::echo_tool_basic_properties ... ok
[INFO] [stdout] test tool::tests::approval_requirement_inequality ... ok
[INFO] [stdout] test tool::tests::echo_tool_default_implementations ... ok
[INFO] [stdout] test tool::tests::echo_tool_execute_success ... ok
[INFO] [stdout] test tool::tests::echo_tool_execute_invalid_input ... ok
[INFO] [stdout] test tool::tests::shell_tool_dynamic_concurrency ... ok
[INFO] [stdout] test tool::tests::shell_tool_execute ... ok
[INFO] [stdout] test tool::tests::tool_context_debug_clone ... ok
[INFO] [stdout] test tool::tests::tool_output_error_variant ... ok
[INFO] [stdout] test tool::tests::tool_output_inequality ... ok
[INFO] [stdout] test tool::tests::tool_output_structured_variant ... ok
[INFO] [stdout] test tool::tests::tool_output_text_variant ... ok
[INFO] [stdout] test tool::tests::tool_trait_is_object_safe ... ok
[INFO] [stdout] test tool::tests::tool_trait_send_sync_bounds ... ok
[INFO] [stdout] test settings::tests::property_tests::profiles_and_permissions_are_independent ... ok
[INFO] [stdout] test todolist_tool::tests::prop_add_round_trip ... ok
[INFO] [stdout] test todolist_tool::tests::prop_remove_round_trip ... ok
[INFO] [stdout] test todolist_tool::tests::prop_update_confirmation ... ok
[INFO] [stdout] test todolist_tool::tests::prop_list_completeness ... ok
[INFO] [stdout] test compaction::session_memory::proptests::prop_preserved_messages_respect_token_limit ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 625 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 29.99s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/background_subagent_repro.rs (/opt/rustwide/target/debug/deps/background_subagent_repro-b25440c32f7eee4c)
[INFO] [stdout] 
[INFO] [stdout] running 2 tests
[INFO] [stdout] test background_sub_agent_completes_in_store ... ok
[INFO] [stdout] test parent_run_receives_background_sub_agent_result ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.22s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/compaction_integration.rs (/opt/rustwide/target/debug/deps/compaction_integration-b83e80f9e403da84)
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test test_property12_successful_compaction_event_and_state ... ok
[INFO] [stdout] test test_property15_summary_insertion_after_last_system_msg ... ok
[INFO] [stdout] test test_property14_system_messages_preserved_tools_compact ... ok
[INFO] [stdout] test test_property13_relative_ordering_preserved ... ok
[INFO] [stdout] test test_property16_tool_pairs_preserved_in_retained_messages ... ok
[INFO] [stdout] test prop_tool_pairs_preserved_after_compaction ... ok
[INFO] [stderr]      Running tests/event_stream_property_tests.rs (/opt/rustwide/target/debug/deps/event_stream_property_tests-1f44b3454fe8e8ee)
[INFO] [stdout] test prop_successful_compaction_event_and_state ... ok
[INFO] [stdout] test prop_relative_ordering_preserved ... ok
[INFO] [stdout] test prop_system_messages_never_removed ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 8 tests
[INFO] [stdout] test test_event_stream_single_tool_call ... ok
[INFO] [stdout] test test_event_stream_max_turns_one ... ok
[INFO] [stdout] test test_event_stream_budget_exceeded ... ok
[INFO] [stdout] test test_event_stream_simple_text_response ... ok
[INFO] [stdout] test test_event_stream_items_input ... ok
[INFO] [stdout] test test_event_stream_max_turns_reached ... ok
[INFO] [stdout] test test_event_stream_parametric_text_responses ... ok
[INFO] [stdout] test test_event_stream_model_error ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/executor_property_tests.rs (/opt/rustwide/target/debug/deps/executor_property_tests-0ef508c7d6e36608)
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test prop_safe_tools_can_run_concurrently ... ok
[INFO] [stdout] test prop_drain_completed_preserves_enqueue_order ... ok
[INFO] [stdout] test prop_exclusive_tools_never_overlap_with_any_other_tool ... ok
[INFO] [stdout] test prop_drain_completed_preserves_order_limited_concurrency ... ok
[INFO] [stderr]      Running tests/property_tests.rs (/opt/rustwide/target/debug/deps/property_tests-d9a8aefd5eb80588)
[INFO] [stdout] test prop_drain_completed_preserves_order_sequential ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 34.77s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test run_state_deserialize_wrong_schema_version_returns_err ... ok
[INFO] [stdout] test stream_chunk_serialization_roundtrip ... ok
[INFO] [stdout] test run_state_deserialize_wrong_schema_json_returns_err ... ok
[INFO] [stdout] test usage_serialization_roundtrip ... ok
[INFO] [stdout] test run_state_deserialize_arbitrary_bytes_never_panics ... ok
[INFO] [stdout] test content_block_serialization_roundtrip ... ok
[INFO] [stdout] test tool_use_block_serialization_roundtrip ... ok
[INFO] [stdout] test message_serialization_roundtrip ... ok
[INFO] [stdout] test run_state_serialization_roundtrip ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.34s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/agent_llm-92ce784668e49fd0)
[INFO] [stdout] 
[INFO] [stdout] running 152 tests
[INFO] [stdout] test anthropic_http::tests::empty_stream_events_received_stays_false ... ok
[INFO] [stdout] test anthropic_http::tests::html_error_body_extracts_title ... ok
[INFO] [stdout] test anthropic_http::tests::html_error_body_without_title_returns_proxy_error ... ok
[INFO] [stdout] test anthropic_http::tests::http_529_returns_rate_limited ... ok
[INFO] [stdout] test anthropic_http::tests::non_html_error_body_passed_through_truncated ... ok
[INFO] [stdout] test anthropic_http::tests::ping_event_discarded ... ok
[INFO] [stdout] test anthropic_http::tests::malformed_tool_input_json_emits_empty_object ... ok
[INFO] [stdout] test anthropic_http::tests::interleaved_content_blocks_routed_by_index ... ok
[INFO] [stdout] test anthropic_http::tests::cache_read_input_tokens_populated ... ok
[INFO] [stdout] test anthropic_http::tests::premature_stream_termination_flush_emits_message_stop ... ok
[INFO] [stdout] test anthropic_http::tests::overloaded_error_in_stream_detected ... ok
[INFO] [stdout] test anthropic_http::tests::prop_http_529_treated_as_rate_limited ... ok
[INFO] [stdout] test anthropic_http::tests::empty_api_key_construction_succeeds ... ok
[INFO] [stdout] test anthropic_http::tests::prop_cache_read_tokens_propagation ... ok
[INFO] [stdout] test anthropic_http::tests::prop_non_streaming_fallback_on_empty_stream ... ok
[INFO] [stdout] test anthropic_http::tests::prop_html_error_body_sanitization ... ok
[INFO] [stdout] test anthropic_http::tests::prop_rate_limit_default_when_header_absent ... ok
[INFO] [stdout] test anthropic_http::tests::prop_overloaded_error_detection_in_stream ... ok
[INFO] [stdout] test anthropic_http::tests::prop_error_body_truncation ... ok
[INFO] [stdout] test anthropic_http::tests::prop_rate_limit_retry_after_parsing ... ok
[INFO] [stdout] test anthropic_http::tests::prop_retry_after_header_parsed_as_seconds ... ok
[INFO] [stdout] test anthropic_http::tests::prop_partial_line_buffering_across_chunk_boundaries ... ok
[INFO] [stdout] test anthropic_http::tests::prop_malformed_sse_lines_do_not_corrupt_state ... ok
[INFO] [stdout] test anthropic_http::tests::prop_stream_idle_timeout_triggers_flush ... ok
[INFO] [stdout] test anthropic_http::tests::prop_indexed_content_block_routing ... ok
[INFO] [stdout] test anthropic_http::tests::prop_sse_event_to_stream_chunk_mapping ... ok
[INFO] [stdout] test anthropic_http::tests::prop_tool_input_json_accumulation_round_trip ... ok
[INFO] [stdout] test anthropic_http::tests::prop_unknown_stop_reason_defaults_to_end_turn ... ok
[INFO] [stdout] test anthropic_http::tests::prop_usage_accumulation_across_stream_events ... ok
[INFO] [stdout] test anthropic_http::tests::required_headers_present ... ok
[INFO] [stdout] test anthropic_http::tests::retry_after_header_parsed_as_seconds ... ok
[INFO] [stdout] test anthropic_http::tests::stop_reason_end_turn ... ok
[INFO] [stdout] test anthropic_http::tests::stop_reason_max_tokens ... ok
[INFO] [stdout] test anthropic_http::tests::stop_reason_stop_sequence ... ok
[INFO] [stdout] test anthropic_http::tests::stop_reason_tool_use ... ok
[INFO] [stdout] test convert::anthropic::tests::assistant_message_with_tool_use_to_wire ... ok
[INFO] [stdout] test convert::anthropic::tests::from_wire_image_block ... ok
[INFO] [stdout] test convert::anthropic::tests::from_wire_message_object ... ok
[INFO] [stdout] test convert::anthropic::tests::from_wire_missing_tool_use_id_returns_error ... ok
[INFO] [stdout] test convert::anthropic::tests::from_wire_text_block ... ok
[INFO] [stdout] test convert::anthropic::tests::from_wire_tool_use_block ... ok
[INFO] [stdout] test convert::anthropic::tests::from_wire_unknown_type_returns_error ... ok
[INFO] [stdout] test convert::anthropic::tests::image_to_wire ... ok
[INFO] [stdout] test convert::anthropic::tests::multiple_system_messages_concatenated ... ok
[INFO] [stdout] test convert::anthropic::tests::no_system_messages_yields_none ... ok
[INFO] [stdout] test convert::anthropic::tests::proptests::prop_anthropic_assistant_roundtrip ... ok
[INFO] [stdout] test convert::anthropic::tests::proptests::prop_anthropic_text_and_tool_use_roundtrip ... ok
[INFO] [stdout] test convert::anthropic::tests::proptests::prop_anthropic_text_only_roundtrip ... ok
[INFO] [stdout] test convert::anthropic::tests::roundtrip_text_and_tool_use ... ok
[INFO] [stdout] test convert::anthropic::tests::system_message_extracted_separately ... ok
[INFO] [stdout] test convert::anthropic::tests::tool_result_error_to_wire ... ok
[INFO] [stdout] test convert::anthropic::tests::tool_result_to_wire ... ok
[INFO] [stdout] test convert::anthropic::tests::user_message_to_wire ... ok
[INFO] [stdout] test convert::openai::tests::assistant_simple_text_to_wire ... ok
[INFO] [stdout] test convert::openai::tests::assistant_with_tool_calls_to_wire ... ok
[INFO] [stdout] test convert::openai::tests::from_wire_array_content ... ok
[INFO] [stdout] test convert::openai::tests::from_wire_image_url ... ok
[INFO] [stdout] test convert::openai::tests::from_wire_missing_tool_call_id_returns_error ... ok
[INFO] [stdout] test convert::openai::tests::from_wire_null_content ... ok
[INFO] [stdout] test convert::openai::tests::from_wire_simple_text ... ok
[INFO] [stdout] test convert::openai::tests::from_wire_unknown_block_type_returns_error ... ok
[INFO] [stdout] test convert::openai::tests::from_wire_with_tool_calls ... ok
[INFO] [stdout] test convert::openai::tests::proptests::prop_openai_single_text_roundtrip ... ok
[INFO] [stdout] test convert::openai::tests::proptests::prop_openai_text_and_tool_calls_roundtrip ... ok
[INFO] [stdout] test convert::openai::tests::proptests::prop_openai_tool_calls_only_roundtrip ... ok
[INFO] [stdout] test convert::openai::tests::roundtrip_text_message ... ok
[INFO] [stdout] test convert::openai::tests::roundtrip_tool_use_message ... ok
[INFO] [stdout] test convert::openai::tests::system_message_to_wire ... ok
[INFO] [stdout] test convert::openai::tests::tool_result_to_wire ... ok
[INFO] [stdout] test convert::openai::tests::user_message_with_image_to_wire ... ok
[INFO] [stdout] test convert::openai::tests::user_message_with_text_to_wire ... ok
[INFO] [stdout] test model_override::tests::complete_delegates_to_inner ... ok
[INFO] [stdout] test model_override::tests::delegated_methods_pass_through ... ok
[INFO] [stdout] test model_override::tests::prop_context_window_override_applied ... ok
[INFO] [stdout] test model_override::tests::prop_max_output_tokens_override_applied ... ok
[INFO] [stdout] test model_override::tests::prop_passthrough_non_overridden_methods ... ok
[INFO] [stdout] test model_override::tests::wrap_if_needed_returns_inner_when_no_overrides ... ok
[INFO] [stdout] test model_override::tests::wrap_if_needed_wraps_when_both_overrides_present ... ok
[INFO] [stdout] test model_override::tests::wrap_if_needed_wraps_when_context_window_override_present ... ok
[INFO] [stdout] test model_override::tests::wrap_if_needed_wraps_when_max_output_tokens_override_present ... ok
[INFO] [stdout] test openai_responses_http::tests::body_has_instructions_flat_tools_and_reasoning ... ok
[INFO] [stdout] test openai_responses_http::tests::input_items_cover_tool_round_trip ... ok
[INFO] [stdout] test openai_responses_http::tests::parse_incomplete_max_tokens ... ok
[INFO] [stdout] test openai_responses_http::tests::parse_non_streaming_response ... ok
[INFO] [stdout] test openai_responses_http::tests::stream_failed_event_yields_error ... ok
[INFO] [stdout] test openai_responses_http::tests::stream_text_reasoning_and_tool_call ... ok
[INFO] [stdout] test openai_responses_http::tests::temperature_only_sent_when_reasoning_disabled ... ok
[INFO] [stdout] test provider::prop_tests::parse_identifies_known_prefixes ... ok
[INFO] [stdout] test provider::prop_tests::parse_rejects_unknown_prefixes ... ok
[INFO] [stdout] test anthropic_http::tests::prop_temperature_absent_when_none ... ok
[INFO] [stdout] test anthropic_http::tests::prop_request_body_required_fields ... ok
[INFO] [stdout] test anthropic_http::tests::prop_temperature_clamping ... ok
[INFO] [stdout] test provider::tests::available_models_returns_empty ... ok
[INFO] [stdout] test provider::tests::from_profile_anthropic_succeeds ... ok
[INFO] [stdout] test provider::tests::from_profile_openai_rejects_unknown_api ... ok
[INFO] [stdout] test provider::tests::from_profile_openai_responses_options ... ok
[INFO] [stdout] test provider::tests::from_profile_openai_succeeds ... ok
[INFO] [stdout] test provider::tests::from_profile_unknown_provider_error_contains_name ... ok
[INFO] [stdout] test provider::tests::from_profile_unknown_provider_returns_error ... ok
[INFO] [stdout] test provider::tests::has_any_provider_with_no_keys_returns_false ... ok
[INFO] [stdout] test provider::tests::has_any_provider_with_openai_key_returns_true ... ok
[INFO] [stdout] test provider::tests::new_with_no_credentials_returns_error ... ok
[INFO] [stdout] test provider::tests::new_with_openai_key_succeeds ... ok
[INFO] [stdout] test anthropic_http::tests::prop_model_name_prefix_stripping ... ok
[INFO] [stdout] test provider::tests::parse_model_name_colon_only ... ok
[INFO] [stdout] test provider::tests::parse_model_name_empty_string ... ok
[INFO] [stdout] test provider::tests::parse_model_name_no_prefix ... ok
[INFO] [stdout] test provider::tests::parse_model_name_unknown_prefix_treated_as_no_prefix ... ok
[INFO] [stdout] test provider::tests::parse_model_name_with_ollama_prefix ... ok
[INFO] [stdout] test provider::tests::parse_model_name_with_openai_prefix ... ok
[INFO] [stdout] test provider::tests::parse_model_name_with_prefix ... ok
[INFO] [stdout] test provider::tests::openai_model_stream_returns_connection_error_with_bad_endpoint ... ok
[INFO] [stdout] test provider::tests::resolve_no_default_returns_error ... ok
[INFO] [stdout] test provider::tests::resolve_model_with_colons_in_name ... ok
[INFO] [stdout] test provider::tests::resolve_prefixed_anthropic_model ... ok
[INFO] [stdout] test provider::tests::resolve_prefixed_openai_model ... ok
[INFO] [stdout] test provider::tests::resolve_unavailable_prefix_returns_error ... ok
[INFO] [stdout] test provider::tests::stub_model_metadata ... ok
[INFO] [stdout] test provider::tests::resolve_unprefixed_model_uses_default ... ok
[INFO] [stdout] test anthropic_http::tests::prop_base_url_trailing_slash_normalization ... ok
[INFO] [stdout] test retry::proptests::zero_jitter_is_deterministic ... ok
[INFO] [stdout] test retry::tests::compute_backoff_capped_at_max ... ok
[INFO] [stdout] test retry::proptests::backoff_within_jitter_bounds ... ok
[INFO] [stdout] test retry::tests::compute_backoff_second_attempt ... ok
[INFO] [stdout] test retry::tests::compute_backoff_third_attempt ... ok
[INFO] [stdout] test retry::tests::compute_backoff_with_jitter_deterministic ... ok
[INFO] [stdout] test retry::tests::default_retry_config ... ok
[INFO] [stdout] test retry::tests::compute_backoff_first_attempt ... ok
[INFO] [stdout] test retry::tests::compute_backoff_with_jitter_clamped ... ok
[INFO] [stdout] test retry::tests::effective_backoff_caps_retry_after ... ok
[INFO] [stdout] test retry::tests::effective_backoff_zero_retry_after_uses_exponential ... ok
[INFO] [stdout] test retry::tests::effective_backoff_non_rate_limited_uses_exponential ... ok
[INFO] [stdout] test retry::tests::effective_backoff_respects_retry_after ... ok
[INFO] [stdout] test retry::tests::is_retryable_api_with_retryable_status ... ok
[INFO] [stdout] test retry::tests::is_retryable_connection ... ok
[INFO] [stdout] test retry::tests::is_retryable_max_output_tokens ... ok
[INFO] [stdout] test retry::tests::is_retryable_api_with_non_retryable_status ... ok
[INFO] [stdout] test retry::tests::is_retryable_prompt_too_long ... ok
[INFO] [stdout] test retry::tests::is_retryable_rate_limited ... ok
[INFO] [stdout] test retry::tests::is_retryable_stream_interrupted ... ok
[INFO] [stdout] test retry::tests::retry_with_fallback_first_attempt_succeeds ... ok
[INFO] [stdout] test retry::tests::retry_with_fallback_all_models_exhausted ... ok
[INFO] [stdout] test retry::tests::retry_with_fallback_non_retryable_error_no_retry ... ok
[INFO] [stdout] test retry::tests::retry_with_fallback_uses_fallback_on_exhaustion ... ok
[INFO] [stdout] test tests::unified_provider_is_exported ... ok
[INFO] [stdout] test retry::tests::retry_with_fallback_no_models_returns_error ... ok
[INFO] [stdout] test anthropic_http::tests::prop_tool_definition_wire_format_mapping ... ok
[INFO] [stdout] test retry::tests::is_retryable_custom_status_list ... ok
[INFO] [stdout] test anthropic_http::tests::prop_system_prompt_concatenation ... ok
[INFO] [stdout] test provider::prop_tests::prefixed_model_routes_to_correct_provider ... ok
[INFO] [stdout] test provider::prop_tests::unknown_prefix_treated_as_model_name ... ok
[INFO] [stdout] test provider::prop_tests::unprefixed_model_routes_to_default_provider ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 152 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 57.89s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/anthropic_http_props.rs (/opt/rustwide/target/debug/deps/anthropic_http_props-e4f33b4143ff4847)
[INFO] [stdout] 
[INFO] [stdout] running 10 tests
[INFO] [stdout] test html_error_page_returns_sanitized_api_error ... ok
[INFO] [stdout] test http_401_returns_api_error ... ok
[INFO] [stdout] test non_streaming_completion_with_mock ... ok
[INFO] [stdout] test http_529_returns_rate_limited_error ... ok
[INFO] [stdout] test http_429_returns_rate_limited_error ... ok
[INFO] [stdout] test http_500_returns_api_error ... ok
[INFO] [stdout] test connection_failure_returns_connection_error ... ok
[INFO] [stdout] test streaming_http_429_returns_rate_limited_error ... ok
[INFO] [stdout] test streaming_round_trip_with_mock ... ok
[INFO] [stdout] test streaming_with_tool_use_interleaved ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.25s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/agent_mcp-faed8a30139ec88b)
[INFO] [stdout] 
[INFO] [stdout] running 28 tests
[INFO] [stdout] test client::tests::build_call_tool_request_structure ... ok
[INFO] [stdout] test client::tests::parse_json_rpc_response_error ... ok
[INFO] [stdout] test client::tests::parse_json_rpc_response_malformed ... ok
[INFO] [stdout] test client::tests::parse_json_rpc_response_no_result_no_error ... ok
[INFO] [stdout] test client::tests::parse_json_rpc_response_success ... ok
[INFO] [stdout] test client::tests::mcp_tool_definition_serde ... ok
[INFO] [stdout] test client::tests::build_list_tools_request_structure ... ok
[INFO] [stdout] test client::tests::stdio_server_connect_and_list_tools ... ok
[INFO] [stdout] test client::tests::mcp_tool_wrapper_execute_not_connected ... ok
[INFO] [stdout] test client::tests::stdio_server_connect_and_call_tool ... ok
[INFO] [stdout] test client::tests::stdio_server_name ... ok
[INFO] [stdout] test client::tests::stdio_server_not_connected_call_tool ... ok
[INFO] [stdout] test client::tests::mcp_tool_wrapper_execute_connected ... ok
[INFO] [stdout] test client::tests::stdio_server_not_connected_list_tools ... ok
[INFO] [stdout] test error::tests::json_rpc_display ... ok
[INFO] [stdout] test client::tests::stdio_server_close ... ok
[INFO] [stdout] test error::tests::connection_timeout_display ... ok
[INFO] [stdout] test error::tests::not_connected_display ... ok
[INFO] [stdout] test error::tests::protocol_error_display ... ok
[INFO] [stdout] test error::tests::io_error_display ... ok
[INFO] [stdout] test client::tests::stdio_server_accessors ... ok
[INFO] [stdout] test transport::tests::stdio_transport_type ... ok
[INFO] [stdout] test transport::tests::transport_is_clone ... ok
[INFO] [stdout] test client::tests::mcp_tool_wrapper_properties ... ok
[INFO] [stdout] test client::tests::convert_mcp_tools_produces_correct_count ... ok
[INFO] [stdout] test transport::tests::http_transport_type ... ok
[INFO] [stdout] test transport::tests::sse_transport_type ... ok
[INFO] [stdout] test transport::tests::transport_is_debug ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 28 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/agent_tools-4c42b20cedbf2155)
[INFO] [stdout] 
[INFO] [stdout] running 331 tests
[INFO] [stdout] test file_edit::tests::file_edit_tool_properties ... ok
[INFO] [stdout] test file_edit::tests::file_edit_tool_missing_path ... ok
[INFO] [stdout] test file_edit::tests::file_edit_tool_missing_old_string ... ok
[INFO] [stdout] test file_edit::tests::file_edit_tool_missing_new_string ... ok
[INFO] [stdout] test file_edit::tests::file_edit_tool_schema_has_required_fields ... ok
[INFO] [stdout] test file_read::tests::file_read_tool_missing_path_field ... ok
[INFO] [stdout] test file_edit::tests::file_edit_tool_ambiguous_match_without_replace_all ... ok
[INFO] [stdout] test file_edit::tests::file_edit_tool_rejects_empty_old_string ... ok
[INFO] [stdout] test file_read::tests::file_read_tool_properties ... ok
[INFO] [stdout] test file_read::tests::file_read_tool_nonexistent_file ... ok
[INFO] [stdout] test file_edit::tests::file_edit_tool_not_found ... ok
[INFO] [stdout] test file_edit::tests::file_edit_tool_missing_file ... ok
[INFO] [stdout] test file_read::tests::file_read_tool_absolute_path ... ok
[INFO] [stdout] test file_read::tests::file_read_tool_reads_file ... ok
[INFO] [stdout] test file_write::tests::file_write_tool_missing_path ... ok
[INFO] [stdout] test file_write::tests::file_write_tool_properties ... ok
[INFO] [stdout] test file_write::tests::file_write_tool_schema_has_required_fields ... ok
[INFO] [stdout] test file_edit::tests::file_edit_tool_replace_all_multiple_matches ... ok
[INFO] [stdout] test file_read::tests::file_read_tool_schema_has_path ... ok
[INFO] [stdout] test file_write::tests::file_write_tool_writes_file ... ok
[INFO] [stdout] test file_write::tests::file_write_tool_missing_content ... ok
[INFO] [stdout] test glob_tool::tests::glob_tool_missing_pattern ... ok
[INFO] [stdout] test glob_tool::tests::glob_tool_no_matches ... ok
[INFO] [stdout] test glob_tool::tests::glob_tool_schema_has_pattern ... ok
[INFO] [stdout] test glob_tool::tests::glob_tool_finds_files ... ok
[INFO] [stdout] test grep_tool::tests::grep_tool_missing_pattern ... ok
[INFO] [stdout] test file_edit::tests::file_edit_tool_replaces_unique_match ... ok
[INFO] [stdout] test grep_tool::tests::grep_tool_properties ... ok
[INFO] [stdout] test glob_tool::tests::glob_tool_recursive_pattern ... ok
[INFO] [stdout] test glob_tool::tests::glob_tool_properties ... ok
[INFO] [stdout] test grep_tool::tests::grep_tool_schema_has_pattern ... ok
[INFO] [stdout] test file_write::tests::file_write_tool_overwrites_existing ... ok
[INFO] [stdout] test file_write::tests::file_write_tool_creates_parent_dirs ... ok
[INFO] [stdout] test grep_tool::tests::grep_tool_invalid_regex ... ok
[INFO] [stdout] test grep_tool::tests::grep_tool_with_include_filter ... ok
[INFO] [stdout] test grep_tool::tests::grep_tool_single_file_path ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_blockquote_empty_content ... ok
[INFO] [stdout] test grep_tool::tests::grep_tool_finds_matching_lines ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_blockquote_filter_matches ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_blockquote_filter_rejects_non_blockquote ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_blockquote_multiline ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_blockquote_single_line ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_blockquote_with_empty_line ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_builtin_rules_blockquote_matches ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_builtin_rules_code_block_matches ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_builtin_rules_emphasis_matches ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_builtin_rules_heading_matches ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_builtin_rules_horizontal_rule_matches ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_builtin_rules_image_matches ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_builtin_rules_inline_code_matches ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_builtin_rules_inline_link_matches ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_builtin_rules_line_break_matches ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_builtin_rules_list_item_matches ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_builtin_rules_list_matches ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_builtin_rules_paragraph_matches ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_builtin_rules_returns_thirteen_rules ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_builtin_rules_strong_matches ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_emphasis_custom_delimiter ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_emphasis_empty_content_returns_empty ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_emphasis_filter_matches_em ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_emphasis_filter_matches_i ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_emphasis_filter_rejects_non_emphasis ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_emphasis_wraps_content ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_fenced_code_block_even_longer_fence ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_fenced_code_block_filter_matches_pre_with_code_child ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_fenced_code_block_filter_rejects_non_fenced_style ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_fenced_code_block_filter_rejects_pre_without_code_child ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_fenced_code_block_longer_fence_for_backticks_in_content ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_fenced_code_block_simple ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_fenced_code_block_strips_trailing_newlines ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_fenced_code_block_tilde_fence_char ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_fenced_code_block_tilde_fence_longer_for_tildes_in_content ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_blockquote_trims_surrounding_whitespace ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_fenced_code_block_with_language ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_fenced_code_block_with_multiple_classes ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_heading_empty_content ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_heading_filter_matches_h1_through_h6 ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_heading_filter_rejects_non_heading ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_heading_setext_falls_back_to_atx_for_h3_plus ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_heading_setext_style_h1 ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_heading_setext_style_h2 ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_heading_trims_content ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_horizontal_rule_custom_hr_string ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_horizontal_rule_default_output ... ok
[INFO] [stdout] test grep_tool::tests::grep_tool_regex_pattern ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_horizontal_rule_filter_matches_hr ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_heading_atx_style ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_image_escapes_alt_special_chars ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_image_escapes_src_parens ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_horizontal_rule_filter_rejects_non_hr ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_image_empty_src_returns_empty ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_image_escapes_title_quotes ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_image_no_alt_uses_empty ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_image_filter_matches_img ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_image_filter_rejects_non_img ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_image_with_title ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_inline_code_backtick_in_content_uses_double ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_inline_code_empty_returns_empty ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_image_simple ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_inline_code_double_backtick_in_content_uses_triple ... ok
[INFO] [stdout] test grep_tool::tests::grep_tool_no_matches ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_inline_code_ends_with_backtick_adds_space ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_inline_code_filter_rejects_code_inside_pre ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_inline_code_filter_rejects_non_code ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_inline_code_normalizes_newlines ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_inline_code_simple ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_inline_code_single_space_no_padding ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_inline_code_starts_with_backtick_adds_space ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_inline_code_starts_and_ends_with_space_adds_padding ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_inline_link_escapes_destination_parens ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_inline_link_escapes_title_quotes ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_inline_link_filter_rejects_reference_style ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_inline_link_filter_matches_a_with_href ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_inline_link_filter_rejects_a_without_href ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_inline_link_with_title ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_line_break_custom_br ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_line_break_default_output ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_inline_link_with_spaces_in_url ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_line_break_filter_rejects_non_br ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_list_filter_matches_ol ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_list_filter_matches_ul ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_list_filter_rejects_non_list ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_list_item_custom_bullet_marker ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_list_item_filter_matches_li ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_line_break_filter_matches_br ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_inline_code_filter_matches_code_not_in_pre ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_list_item_filter_rejects_non_li ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_inline_link_simple ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_list_item_multiline_indentation ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_list_item_multiline_with_empty_line ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_list_item_ordered_numbering ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_list_item_unordered_bullet ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_list_replacement_nested_not_last_child ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_list_replacement_top_level ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_paragraph_filter_matches_p ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_paragraph_filter_rejects_non_p ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_paragraph_replacement_trims_content ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_paragraph_replacement_wraps_content ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_strong_custom_delimiter ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_strong_empty_content_returns_empty ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_strong_filter_matches_b ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_strong_filter_matches_strong ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_strong_filter_rejects_non_strong ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_strong_wraps_content ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_list_item_ordered_with_start_attr ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_list_item_unordered_last_item_no_trailing_newline ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::test_list_replacement_nested_last_child ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::prop_fence_longer_than_content_backticks ... ok
[INFO] [stdout] test html_to_markdown::escape::tests::test_angle_bracket_escaped_always ... ok
[INFO] [stdout] test html_to_markdown::escape::tests::test_empty_input ... ok
[INFO] [stdout] test html_to_markdown::escape::tests::test_escape_line_start_blockquote ... ok
[INFO] [stdout] test html_to_markdown::escape::tests::test_escape_line_start_heading ... ok
[INFO] [stdout] test html_to_markdown::escape::tests::test_escape_line_start_list ... ok
[INFO] [stdout] test html_to_markdown::escape::tests::test_escape_link_destination_basic ... ok
[INFO] [stdout] test html_to_markdown::escape::tests::test_escape_link_title_basic ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::prop_heading_level_maps_to_hash_count ... ok
[INFO] [stdout] test html_to_markdown::escape::tests::test_escape_setext_heading ... ok
[INFO] [stdout] test html_to_markdown::escape::tests::test_escape_special_chars ... ok
[INFO] [stdout] test html_to_markdown::escape::tests::test_escape_tilde_fence ... ok
[INFO] [stdout] test html_to_markdown::escape::tests::test_escape_multiline ... ok
[INFO] [stdout] test html_to_markdown::escape::tests::test_no_special_chars ... ok
[INFO] [stdout] test html_to_markdown::node_info::tests::test_block_elements_classification ... ok
[INFO] [stdout] test html_to_markdown::node_info::tests::test_meaningful_when_blank ... ok
[INFO] [stdout] test html_to_markdown::node_info::tests::test_node_info_construction_and_accessors ... ok
[INFO] [stdout] test html_to_markdown::node_info::tests::test_node_info_inside_pre ... ok
[INFO] [stdout] test html_to_markdown::node_info::tests::test_flanking_whitespace ... ok
[INFO] [stdout] test html_to_markdown::node_info::tests::test_node_info_last_child ... ok
[INFO] [stdout] test html_to_markdown::node_info::tests::test_void_elements ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::prop_ordered_list_respects_start_attr ... ok
[INFO] [stdout] test html_to_markdown::commonmark::tests::prop_inline_code_delimiter_avoids_conflict ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_conversion_rule_custom_append ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_conversion_rule_default_append ... ok
[INFO] [stdout] test html_to_markdown::escape::tests::prop_escape_preserves_all_content ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_named_rule_new ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_named_rule_send_sync ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_conversion_rule_filter_and_replacement ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_rule_filter_tag ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_rule_filter_predicate ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_rule_filter_tags ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_ruleset_add_keep_rule ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_ruleset_add_remove_inserts_at_front ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_ruleset_add_remove_rule ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_ruleset_add_keep_inserts_at_front ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_ruleset_add_remove_with_tags_filter ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_ruleset_apply_rule_blank_block_node ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_ruleset_apply_rule_blank_inline_node ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_ruleset_apply_rule_default_block ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_ruleset_apply_rule_default_inline ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_ruleset_add_rule_inserts_at_front ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_ruleset_apply_rule_primary_rule_matches ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_ruleset_collect_appends_empty ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_ruleset_later_added_rule_matches_first ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_ruleset_collect_appends ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_ruleset_new_creates_empty_keep_remove ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::prop_tests::prop_added_rule_overrides_initial_rules ... ok
[INFO] [stdout] test html_to_markdown::escape::tests::prop_escape_never_shortens ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_ruleset_priority_keep_over_remove ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_ruleset_priority_primary_over_keep ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_ruleset_predicate_remove_rule ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_ruleset_with_commonmark_rules ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::test_ruleset_priority_blank_over_all ... ok
[INFO] [stdout] test html_to_markdown::tests::test_all_disallowed_elements_removed ... ok
[INFO] [stdout] test html_to_markdown::tests::test_compute_flanking_whitespace_all_whitespace ... ok
[INFO] [stdout] test html_to_markdown::tests::test_add_rule_overrides_builtin ... ok
[INFO] [stdout] test html_to_markdown::tests::test_compute_flanking_whitespace_both ... ok
[INFO] [stdout] test html_to_markdown::tests::test_compute_flanking_whitespace_empty ... ok
[INFO] [stdout] test html_to_markdown::tests::test_compute_flanking_whitespace_leading ... ok
[INFO] [stdout] test html_to_markdown::tests::test_compute_flanking_whitespace_no_whitespace ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::prop_tests::prop_last_added_rule_always_wins ... ok
[INFO] [stdout] test html_to_markdown::tests::test_compute_flanking_whitespace_trailing ... ok
[INFO] [stdout] test html_to_markdown::tests::test_convert_blockquote ... ok
[INFO] [stdout] test html_to_markdown::tests::test_convert_code_block ... ok
[INFO] [stdout] test html_to_markdown::tests::test_convert_emphasis ... ok
[INFO] [stdout] test html_to_markdown::tests::test_convert_h2 ... ok
[INFO] [stdout] test html_to_markdown::tests::test_convert_heading ... ok
[INFO] [stdout] test html_to_markdown::escape::tests::prop_escape_neutralizes_line_start_patterns ... ok
[INFO] [stdout] test html_to_markdown::tests::test_convert_empty_input ... ok
[INFO] [stdout] test html_to_markdown::tests::test_convert_horizontal_rule ... ok
[INFO] [stdout] test html_to_markdown::tests::test_convert_code_block_with_language ... ok
[INFO] [stdout] test html_to_markdown::tests::test_convert_image ... ok
[INFO] [stdout] test html_to_markdown::tests::test_convert_inline_code ... ok
[INFO] [stdout] test html_to_markdown::rules::tests::prop_tests::prop_later_added_rules_have_priority ... ok
[INFO] [stdout] test html_to_markdown::tests::test_convert_line_break ... ok
[INFO] [stdout] test html_to_markdown::tests::test_convert_unordered_list ... ok
[INFO] [stdout] test html_to_markdown::tests::test_convert_nested_structure ... ok
[INFO] [stdout] test html_to_markdown::tests::test_convert_whitespace_collapsing ... ok
[INFO] [stdout] test html_to_markdown::tests::test_convert_ordered_list ... ok
[INFO] [stdout] test html_to_markdown::tests::test_convert_inline_link ... ok
[INFO] [stdout] test html_to_markdown::tests::test_convert_simple_paragraph ... ok
[INFO] [stdout] test html_to_markdown::tests::test_disallowed_elements_dont_affect_other_content ... ok
[INFO] [stdout] test html_to_markdown::tests::test_disallowed_elements_nested_content_suppressed ... ok
[INFO] [stdout] test html_to_markdown::escape::tests::prop_escape_covers_all_special_chars ... ok
[INFO] [stdout] test html_to_markdown::tests::test_post_process_trims_trailing_whitespace ... ok
[INFO] [stdout] test html_to_markdown::tests::test_is_ancestor_pre_in_pre ... ok
[INFO] [stdout] test html_to_markdown::tests::test_remove_produces_empty_output ... ok
[INFO] [stdout] test html_to_markdown::tests::test_is_ancestor_pre_not_in_pre ... ok
[INFO] [stdout] test html_to_markdown::tests::test_post_process_trims_leading_newlines ... ok
[INFO] [stdout] test html_to_markdown::tests::test_script_element_removed ... ok
[INFO] [stdout] test html_to_markdown::tests::test_remove_with_tags_filter ... ok
[INFO] [stdout] test html_to_markdown::tests::test_script_inline_with_surrounding_text ... ok
[INFO] [stdout] test html_to_markdown::tests::test_smart_join_both_empty ... ok
[INFO] [stdout] test html_to_markdown::tests::test_smart_join_leading_newline_in_right ... ok
[INFO] [stdout] test html_to_markdown::tests::test_smart_join_caps_at_two ... ok
[INFO] [stdout] test html_to_markdown::tests::test_smart_join_empty_left ... ok
[INFO] [stdout] test html_to_markdown::tests::test_keep_preserves_content ... ok
[INFO] [stdout] test html_to_markdown::tests::test_smart_join_many_newlines_capped ... ok
[INFO] [stdout] test html_to_markdown::tests::test_smart_join_trailing_newline_in_left ... ok
[INFO] [stdout] test html_to_markdown::tests::test_smart_join_empty_right ... ok
[INFO] [stdout] test html_to_markdown::tests::test_smart_join_no_newlines ... ok
[INFO] [stdout] test html_to_markdown::tests::test_smart_join_uses_max_of_both ... ok
[INFO] [stdout] test html_to_markdown::tests::test_use_plugin_can_add_remove_and_keep ... ok
[INFO] [stdout] test html_to_markdown::tests::test_style_element_removed ... ok
[INFO] [stdout] test html_to_markdown::tests::test_use_plugin_adds_multiple_rules ... ok
[INFO] [stdout] test html_to_markdown::tests::test_smart_join_two_newlines_max ... ok
[INFO] [stdout] test html_to_markdown::whitespace::tests::test_collapse_consecutive_spaces_between_inline ... ok
[INFO] [stdout] test html_to_markdown::whitespace::tests::test_collapse_multiple_inline_nodes ... ok
[INFO] [stdout] test html_to_markdown::whitespace::tests::test_collapse_newlines_in_inline_text ... ok
[INFO] [stdout] test html_to_markdown::whitespace::tests::test_collapse_empty_text_omitted ... ok
[INFO] [stdout] test html_to_markdown::whitespace::tests::test_collapse_preserves_pre_content ... ok
[INFO] [stdout] test html_to_markdown::whitespace::tests::test_collapse_runs_tabs_and_newlines ... ok
[INFO] [stdout] test html_to_markdown::whitespace::tests::test_collapse_runs_basic ... ok
[INFO] [stdout] test html_to_markdown::whitespace::tests::test_collapse_simple_paragraph ... ok
[INFO] [stdout] test html_to_markdown::whitespace::tests::test_collapse_strips_trailing_before_block ... ok
[INFO] [stdout] test html_to_markdown::whitespace::tests::test_collapse_strips_leading_after_block ... ok
[INFO] [stdout] test html_to_markdown::whitespace::tests::test_collapsed_document_is_empty ... ok
[INFO] [stdout] test html_to_markdown::whitespace::tests::test_collapsed_document_get_text ... ok
[INFO] [stdout] test html_to_markdown::whitespace::tests::test_is_inside_pre_false_for_normal ... ok
[INFO] [stdout] test html_to_markdown::whitespace::tests::test_is_inside_pre_nested ... ok
[INFO] [stdout] test shell::tests::shell_tool_custom_timeout ... ok
[INFO] [stdout] test shell::tests::shell_tool_execute_missing_command ... ok
[INFO] [stdout] test shell::tests::shell_tool_execute_nonzero_exit ... ok
[INFO] [stdout] test shell::tests::shell_tool_properties ... ok
[INFO] [stdout] test shell::tests::shell_tool_schema_has_command ... ok
[INFO] [stdout] test shell::tests::shell_tool_uses_working_dir ... ok
[INFO] [stdout] test shell::tests::shell_tool_execute_success ... ok
[INFO] [stdout] test html_to_markdown::tests::prop_smart_join_never_exceeds_two_newlines ... ok
[INFO] [stdout] test web_fetch::tests::cache_expired_entry_returns_none ... ok
[INFO] [stdout] test web_fetch::tests::cache_different_urls_are_independent ... ok
[INFO] [stdout] test web_fetch::tests::different_hosts ... ok
[INFO] [stdout] test web_fetch::tests::different_subdomains ... ok
[INFO] [stdout] test web_fetch::tests::html_body_gets_converted ... ok
[INFO] [stdout] test web_fetch::tests::non_html_body_passes_through_unchanged ... ok
[INFO] [stdout] test web_fetch::tests::non_html_content_type_detection ... ok
[INFO] [stdout] test web_fetch::tests::cache_fresh_entry_returns_content ... ok
[INFO] [stdout] test html_to_markdown::tests::prop_removed_elements_produce_empty_output ... ok
[INFO] [stdout] test html_to_markdown::whitespace::tests::prop_no_consecutive_spaces_outside_pre ... ok
[INFO] [stdout] test web_fetch::tests::cache_round_trip_returns_identical_content ... ok
[INFO] [stdout] test html_to_markdown::whitespace::tests::prop_pre_content_preserved_verbatim ... ok
[INFO] [stdout] test web_fetch::tests::prop_same_host_symmetric ... ok
[INFO] [stdout] test web_fetch::tests::same_host_both_www ... ok
[INFO] [stdout] test web_fetch::tests::same_host_case_insensitive ... ok
[INFO] [stdout] test web_fetch::tests::same_host_strips_www ... ok
[INFO] [stdout] test web_fetch::tests::truncate_content_at_limit ... ok
[INFO] [stdout] test web_fetch::tests::truncate_content_multibyte_chars ... ok
[INFO] [stdout] test html_to_markdown::whitespace::tests::prop_collapse_never_increases_length ... ok
[INFO] [stdout] test web_fetch::tests::prop_http_upgraded_to_https ... ok
[INFO] [stdout] test web_fetch::tests::prop_same_host_www_stripping ... ok
[INFO] [stdout] test web_fetch::tests::truncate_content_over_limit ... ok
[INFO] [stdout] test web_fetch::tests::truncate_content_under_limit ... ok
[INFO] [stdout] test web_fetch::tests::validate_url_http_upgraded_to_https ... ok
[INFO] [stdout] test web_fetch::tests::validate_url_https_unchanged ... ok
[INFO] [stdout] test web_fetch::tests::validate_url_malformed ... ok
[INFO] [stdout] test web_fetch::tests::validate_url_no_dot_in_hostname ... ok
[INFO] [stdout] test web_fetch::tests::validate_url_too_long ... ok
[INFO] [stdout] test web_fetch::tests::validate_url_valid_with_subdomain ... ok
[INFO] [stdout] test web_fetch::tests::validate_url_with_username_only ... ok
[INFO] [stdout] test web_search::tests::parse_brave_results_empty_results_array ... ok
[INFO] [stdout] test web_search::tests::parse_brave_results_missing_description ... ok
[INFO] [stdout] test web_fetch::tests::validate_url_with_credentials ... ok
[INFO] [stdout] test web_search::tests::parse_brave_results_null_json ... ok
[INFO] [stdout] test web_search::tests::parse_brave_results_skips_items_missing_title ... ok
[INFO] [stdout] test web_search::tests::parse_brave_results_missing_web_key ... ok
[INFO] [stdout] test web_search::tests::parse_brave_results_missing_results_key ... ok
[INFO] [stdout] test web_search::tests::parse_brave_results_with_full_response ... ok
[INFO] [stdout] test web_search::tests::web_search_tool_description ... ok
[INFO] [stdout] test web_search::tests::web_search_tool_execute_default_count_is_10 ... ok
[INFO] [stdout] test web_search::tests::web_search_tool_execute_empty_results ... ok
[INFO] [stdout] test web_search::tests::web_search_tool_execute_missing_query_returns_invalid_input ... ok
[INFO] [stdout] test web_search::tests::web_search_tool_execute_propagates_provider_error ... ok
[INFO] [stdout] test web_search::tests::web_search_tool_execute_respects_count_param ... ok
[INFO] [stdout] test web_search::tests::web_search_tool_execute_returns_structured_json_array ... ok
[INFO] [stdout] test web_search::tests::web_search_tool_name ... ok
[INFO] [stdout] test web_search::tests::web_search_tool_parameters_schema_has_required_query ... ok
[INFO] [stdout] test web_search::tests::web_search_tool_timeout_is_30_seconds ... ok
[INFO] [stdout] test web_search::tests::web_search_tool_concurrency_is_safe ... ok
[INFO] [stdout] test web_search::tests::parse_brave_results_skips_items_missing_url ... ok
[INFO] [stdout] test html_to_markdown::whitespace::tests::prop_collapse_is_idempotent ... ok
[INFO] [stdout] test web_search::tests::brave_search_provider_new_stores_api_key ... ok
[INFO] [stdout] test web_fetch::tests::prop_truncation_preserves_under_limit ... ok
[INFO] [stdout] test web_fetch::tests::prop_oversized_urls_rejected ... ok
[INFO] [stdout] test web_fetch::tests::prop_truncation_adds_notice_over_limit ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 331 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.75s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests agent_core
[INFO] [stdout] 
[INFO] [stdout] running 7 tests
[INFO] [stdout] test crates/agent-core/src/agent.rs - agent::Agent (line 100) ... ignored
[INFO] [stdout] test crates/agent-core/src/permission.rs - permission::PermissionEngine (line 66) ... ok
[INFO] [stdout] test crates/agent-core/src/pattern.rs - pattern::ToolPattern (line 22) ... ok
[INFO] [stdout] test crates/agent-core/src/pattern.rs - pattern::glob_matches (line 232) ... ok
[INFO] [stdout] test crates/agent-core/src/pattern.rs - pattern::ToolPattern::parse (line 57) ... ok
[INFO] [stdout] test crates/agent-core/src/pattern.rs - pattern::ToolPattern::matches (line 138) ... ok
[INFO] [stdout] test crates/agent-core/src/pattern.rs - pattern::extract_primary_arg (line 194) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 1.67s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests agent_llm
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests agent_mcp
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test crates/agent-mcp/src/lib.rs - (line 15) ... ignored
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests agent_tools
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "50fcd150946d71640ac595aa8b3ab2e8412a9813f1368cda6381d0777e580b69", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "50fcd150946d71640ac595aa8b3ab2e8412a9813f1368cda6381d0777e580b69", kill_on_drop: false }`
[INFO] [stdout] 50fcd150946d71640ac595aa8b3ab2e8412a9813f1368cda6381d0777e580b69
