[INFO] cloning repository https://github.com/Skyline10124/LATTICE-Runtime [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Skyline10124/LATTICE-Runtime" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSkyline10124%2FLATTICE-Runtime", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSkyline10124%2FLATTICE-Runtime'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 6f6d13d782a2edbc143198d7d1ad6ae687ae7b78 [INFO] testing Skyline10124/LATTICE-Runtime against try#28f95933dc0727396c07b48d0a8cb5211b7fb472 for pr-154065-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSkyline10124%2FLATTICE-Runtime" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/Skyline10124/LATTICE-Runtime [INFO] finished tweaking git repo https://github.com/Skyline10124/LATTICE-Runtime [INFO] tweaked toml for git repo https://github.com/Skyline10124/LATTICE-Runtime written to /workspace/builds/worker-0-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/Skyline10124/LATTICE-Runtime on toolchain 28f95933dc0727396c07b48d0a8cb5211b7fb472 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/Skyline10124/LATTICE-Runtime 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" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 5ddcb2f14b2407c475ddee72b08ab0aa1a9d3196a3b87b0a510fa7c55fe943be [INFO] running `Command { std: "docker" "start" "-a" "5ddcb2f14b2407c475ddee72b08ab0aa1a9d3196a3b87b0a510fa7c55fe943be", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "5ddcb2f14b2407c475ddee72b08ab0aa1a9d3196a3b87b0a510fa7c55fe943be", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "5ddcb2f14b2407c475ddee72b08ab0aa1a9d3196a3b87b0a510fa7c55fe943be", kill_on_drop: false }` [INFO] [stdout] 5ddcb2f14b2407c475ddee72b08ab0aa1a9d3196a3b87b0a510fa7c55fe943be [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] eae868e797c0ca03d2db044503d05b960b579d475934175637ba3f52a1824a18 [INFO] running `Command { std: "docker" "start" "-a" "eae868e797c0ca03d2db044503d05b960b579d475934175637ba3f52a1824a18", kill_on_drop: false }` [INFO] [stderr] Compiling mio v1.2.0 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling openssl-sys v0.9.115 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling tinystr v0.8.3 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling zerotrie v0.2.4 [INFO] [stderr] Compiling icu_locale_core v2.2.0 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling tokio v1.52.2 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling icu_collections v2.2.0 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling icu_provider v2.2.0 [INFO] [stderr] Compiling http-body v1.0.1 [INFO] [stderr] Compiling zeroize v1.8.2 [INFO] [stderr] Compiling openssl v0.10.79 [INFO] [stderr] Compiling rustls-pki-types v1.14.1 [INFO] [stderr] Compiling bitflags v2.11.1 [INFO] [stderr] Compiling icu_properties v2.2.0 [INFO] [stderr] Compiling icu_normalizer v2.2.0 [INFO] [stderr] Compiling num-integer v0.1.46 [INFO] [stderr] Compiling rustls v0.23.40 [INFO] [stderr] Compiling native-tls v0.2.18 [INFO] [stderr] Compiling ipnet v2.12.0 [INFO] [stderr] Compiling bit-set v0.8.0 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling idna_adapter v1.2.2 [INFO] [stderr] Compiling num-bigint v0.4.6 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling ref-cast v1.0.25 [INFO] [stderr] Compiling num-iter v0.1.45 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling webpki-roots v1.0.7 [INFO] [stderr] Compiling http-body-util v0.1.3 [INFO] [stderr] Compiling num-complex v0.4.6 [INFO] [stderr] Compiling borrow-or-share v0.2.4 [INFO] [stderr] Compiling num-rational v0.4.2 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling fluent-uri v0.3.2 [INFO] [stderr] Compiling num v0.4.3 [INFO] [stderr] Compiling rustls-webpki v0.103.13 [INFO] [stderr] Compiling uuid v1.23.1 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling enumflags2_derive v0.7.12 [INFO] [stderr] Compiling inotify-sys v0.1.5 [INFO] [stderr] Compiling blake3 v1.8.5 [INFO] [stderr] Compiling instant v0.1.13 [INFO] [stderr] Compiling num_threads v0.1.7 [INFO] [stderr] Compiling time v0.3.47 [INFO] [stderr] Compiling enumflags2 v0.7.12 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling uuid-simd v0.8.0 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling tokio-native-tls v0.3.1 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling inotify v0.10.2 [INFO] [stderr] Compiling h2 v0.4.14 [INFO] [stderr] Compiling tower-http v0.6.9 [INFO] [stderr] Compiling notify-types v1.0.1 [INFO] [stderr] Compiling referencing v0.26.2 [INFO] [stderr] Compiling fraction v0.15.4 [INFO] [stderr] Compiling fancy-regex v0.14.0 [INFO] [stderr] Compiling bstr v1.12.1 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling fancy-regex v0.17.0 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling futures-executor v0.3.32 [INFO] [stderr] Compiling tracing-serde v0.2.0 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling email_address v0.2.9 [INFO] [stderr] Compiling filetime v0.2.27 [INFO] [stderr] Compiling num-cmp v0.1.0 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling notify v7.0.0 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling tiktoken-rs v0.11.0 [INFO] [stderr] Compiling hyper v1.9.0 [INFO] [stderr] Compiling tokio-rustls v0.26.4 [INFO] [stderr] Compiling futures v0.3.32 [INFO] [stderr] Compiling toml v0.8.23 [INFO] [stderr] Compiling landlock v0.4.4 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling hyper-tls v0.6.0 [INFO] [stderr] Compiling hyper-rustls v0.27.9 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling jsonschema v0.26.2 [INFO] [stderr] Compiling lattice v0.1.0 (/opt/rustwide/workdir/lattice) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 09s [INFO] running `Command { std: "docker" "inspect" "eae868e797c0ca03d2db044503d05b960b579d475934175637ba3f52a1824a18", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "eae868e797c0ca03d2db044503d05b960b579d475934175637ba3f52a1824a18", kill_on_drop: false }` [INFO] [stdout] eae868e797c0ca03d2db044503d05b960b579d475934175637ba3f52a1824a18 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 2d74bc615ad6f36f6fd8f60ce7e8a27303d7521534415db04865eb3429016b98 [INFO] running `Command { std: "docker" "start" "-a" "2d74bc615ad6f36f6fd8f60ce7e8a27303d7521534415db04865eb3429016b98", kill_on_drop: false }` [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling openssl v0.10.79 [INFO] [stderr] Compiling crossbeam-epoch v0.9.18 [INFO] [stderr] Compiling tower-http v0.6.9 [INFO] [stderr] Compiling half v2.7.1 [INFO] [stderr] Compiling plotters-backend v0.3.7 [INFO] [stderr] Compiling clap_builder v4.6.0 [INFO] [stderr] Compiling crossbeam-deque v0.8.6 [INFO] [stderr] Compiling ciborium-ll v0.2.2 [INFO] [stderr] Compiling plotters-svg v0.3.7 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling rayon-core v1.13.0 [INFO] [stderr] Compiling itertools v0.10.5 [INFO] [stderr] Compiling cast v0.3.0 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling fluent-uri v0.3.2 [INFO] [stderr] Compiling num-integer v0.1.46 [INFO] [stderr] Compiling num-complex v0.4.6 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling num-bigint v0.4.6 [INFO] [stderr] Compiling num-iter v0.1.45 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling email_address v0.2.9 [INFO] [stderr] Compiling referencing v0.26.2 [INFO] [stderr] Compiling tracing-serde v0.2.0 [INFO] [stderr] Compiling rayon v1.12.0 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling criterion-plot v0.5.0 [INFO] [stderr] Compiling clap v4.6.1 [INFO] [stderr] Compiling plotters v0.3.7 [INFO] [stderr] Compiling num-rational v0.4.2 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling native-tls v0.2.18 [INFO] [stderr] Compiling num v0.4.3 [INFO] [stderr] Compiling fraction v0.15.4 [INFO] [stderr] Compiling tokio-native-tls v0.3.1 [INFO] [stderr] Compiling toml v0.8.23 [INFO] [stderr] Compiling tinytemplate v1.2.1 [INFO] [stderr] Compiling hyper-tls v0.6.0 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling ciborium v0.2.2 [INFO] [stderr] Compiling rand v0.8.6 [INFO] [stderr] Compiling oorandom v11.1.5 [INFO] [stderr] Compiling anes v0.1.6 [INFO] [stderr] Compiling criterion v0.5.1 [INFO] [stderr] Compiling jsonschema v0.26.2 [INFO] [stderr] Compiling lattice v0.1.0 (/opt/rustwide/workdir/lattice) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 56s [INFO] running `Command { std: "docker" "inspect" "2d74bc615ad6f36f6fd8f60ce7e8a27303d7521534415db04865eb3429016b98", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2d74bc615ad6f36f6fd8f60ce7e8a27303d7521534415db04865eb3429016b98", kill_on_drop: false }` [INFO] [stdout] 2d74bc615ad6f36f6fd8f60ce7e8a27303d7521534415db04865eb3429016b98 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 08692554c546cf5ce0be07edba7a24ba4476e74290856f9baf7a9b5decb9b6d5 [INFO] running `Command { std: "docker" "start" "-a" "08692554c546cf5ce0be07edba7a24ba4476e74290856f9baf7a9b5decb9b6d5", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.58s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/lattice-ff77c788889df0d4) [INFO] [stdout] [INFO] [stdout] running 470 tests [INFO] [stdout] test agent::audit::tests::test_behavior_switch_serialization ... ok [INFO] [stdout] test agent::audit::tests::test_hook_deny_serialization ... ok [INFO] [stdout] test agent::behavior::tests::test_default_behavior_is_strict ... ok [INFO] [stdout] test agent::behavior::tests::test_behavior_mode_clone ... ok [INFO] [stdout] test agent::bus_event_collector::tests::test_drain_empty ... ok [INFO] [stdout] test agent::behavior::tests::test_yolo_behavior ... ok [INFO] [stdout] test agent::hook::tests::empty_hook_chain_all_commands_pass ... ok [INFO] [stdout] test agent::hook::tests::hook_chain_passes_modified_command_through ... ok [INFO] [stdout] test agent::hook::tests::hook_chain_warning_continues ... ok [INFO] [stdout] test agent::hook::tests::multiple_hooks_second_sees_modified_command ... ok [INFO] [stdout] test agent::bus_event_collector::tests::test_push_many ... ok [INFO] [stdout] test agent::audit::tests::test_audit_log_lazy_open ... ok [INFO] [stdout] test agent::audit::tests::test_tool_exec_serialization ... ok [INFO] [stdout] test agent::audit::tests::test_audit_log_write_and_read ... ok [INFO] [stdout] test agent::bus_event_collector::tests::test_push_and_drain ... ok [INFO] [stdout] test agent::hook::tests::hook_chain_first_deny_wins ... ok [INFO] [stdout] test agent::hook::tests::tirith_default_constructs ... ok [INFO] [stdout] test agent::hook::tests::empty_command_passes_hook_chain ... ok [INFO] [stdout] test agent::hook::tests::tirith_blocks_chmod_777 ... ok [INFO] [stdout] test agent::hook::tests::tirith_allows_safe_command ... ok [INFO] [stdout] test agent::hook::tests::tirith_blocks_curl_pipe_sh ... ok [INFO] [stdout] test agent::hook::tests::tirith_allows_rm_rf_home_user ... ok [INFO] [stdout] test agent::hook::tests::tirith_blocks_rm_rf_root_reconfirmed ... ok [INFO] [stdout] test agent::hook::tests::tirith_empty_command_passes ... ok [INFO] [stdout] test agent::hook::tests::tirith_name_returns_tirith ... ok [INFO] [stdout] test agent::hook::tests::tirith_blocks_rm_rf_root ... ok [INFO] [stdout] test agent::hook::tests::vet_handles_malformed_curl_no_url ... ok [INFO] [stdout] test agent::hook::tests::vet_name_returns_vet ... ok [INFO] [stdout] test agent::hook::tests::warning_only_hook_chain_returns_ok ... ok [INFO] [stdout] test agent::memory::tests::test_can_read_empty_list ... ok [INFO] [stdout] test agent::memory::tests::test_can_read_named_in_list ... ok [INFO] [stdout] test agent::memory::tests::test_can_read_named_not_in_list ... ok [INFO] [stdout] test agent::memory::tests::test_can_read_shared_all ... ok [INFO] [stdout] test agent::memory::tests::test_can_write_empty_list ... ok [INFO] [stdout] test agent::memory::tests::test_can_write_named_in_list ... ok [INFO] [stdout] test agent::memory::tests::test_entries_by_kind_inmemory ... ok [INFO] [stdout] test agent::memory::tests::test_entries_by_kind_sorts_by_created_at_desc ... ok [INFO] [stdout] test agent::memory::tests::test_recall_empty ... ok [INFO] [stdout] test agent::memory::tests::test_recall_sorts_matching_entries_by_created_at_desc ... ok [INFO] [stdout] test agent::memory::tests::test_save_and_recall_inmemory ... ok [INFO] [stdout] test agent::message_source::tests::test_default_registry_is_empty ... ok [INFO] [stdout] test agent::message_source::tests::test_format_for_retrieved_context ... ok [INFO] [stdout] test agent::message_source::tests::test_format_for_system_and_user_are_passthrough ... ok [INFO] [stdout] test agent::message_source::tests::test_format_for_tool_output ... ok [INFO] [stdout] test agent::message_source::tests::test_source_for_layer_mapping ... ok [INFO] [stdout] test agent::message_source::tests::test_source_registry_default_is_user_input ... ok [INFO] [stdout] test agent::message_source::tests::test_source_registry_push_and_get ... ok [INFO] [stdout] test agent::message_source::tests::test_source_registry_trim_front ... ok [INFO] [stdout] test agent::message_source::tests::test_trim_front_overshoot ... ok [INFO] [stdout] test agent::message_source::tests::test_trim_front_zero ... ok [INFO] [stdout] test agent::prompt::compiler::tests::allocate_budgets_dynamic_priority_order ... ok [INFO] [stdout] test agent::prompt::compiler::tests::allocate_budgets_fixed_deducted_first ... ok [INFO] [stdout] test agent::prompt::compiler::tests::allocate_budgets_fixed_exhausts_budget ... ok [INFO] [stdout] test agent::prompt::compiler::tests::allocate_budgets_ratio_after_fixed ... ok [INFO] [stdout] test agent::prompt::compiler::tests::allocate_budgets_zero_budget ... ok [INFO] [stdout] test agent::prompt::compiler::tests::budget_overflow_drops_lowest_priority_layer ... ok [INFO] [stdout] test agent::prompt::compiler::tests::compile_with_system_and_tools_and_input ... ok [INFO] [stdout] test agent::prompt::compiler::tests::dynamic_sections_dropped_when_no_budget_remains ... ok [INFO] [stdout] test agent::prompt::compiler::tests::empty_input_still_produces_input_section ... ok [INFO] [stdout] test agent::prompt::compiler::tests::fixed_budget_reserved_first ... ok [INFO] [stdout] test agent::prompt::compiler::tests::input_only_renders_as_raw_text ... ok [INFO] [stdout] test agent::prompt::compiler::tests::multiple_ratio_providers_sequential ... ok [INFO] [stdout] test agent::prompt::compiler::tests::ratio_above_one_clamped ... ok [INFO] [stdout] test agent::prompt::compiler::tests::ratio_budget_proportional_allocation ... ok [INFO] [stdout] test agent::prompt::compiler::tests::ratio_nan_clamped_to_zero ... ok [INFO] [stdout] test agent::prompt::compiler::tests::ratio_negative_clamped_to_zero ... ok [INFO] [stdout] test agent::prompt::compiler::tests::ratio_overclaimed_drops_underfunded_sections ... ok [INFO] [stdout] test agent::prompt::compiler::tests::same_layer_respects_priority ... ok [INFO] [stdout] test agent::prompt::compiler::tests::system_and_input_produces_two_messages ... ok [INFO] [stdout] test agent::prompt::compiler::tests::system_prompt_and_system_provider_coexist ... ok [INFO] [stdout] test agent::prompt::compiler::tests::tiny_budget_only_system_and_input_survive ... ok [INFO] [stdout] test agent::prompt::compiler::tests::total_tokens_matches_sections_sum ... ok [INFO] [stdout] test agent::prompt::compiler::tests::zero_effective_budget_drops_all_non_input ... ok [INFO] [stdout] test agent::prompt::memory_provider::tests::produces_memory_section_from_query ... ok [INFO] [stdout] test agent::hook::tests::vet_blocks_curl_http_url ... ok [INFO] [stdout] test agent::prompt::registry::tests::empty_registry_returns_kernel_system_section ... ok [INFO] [stdout] test agent::prompt::registry::tests::provider_returning_none_is_skipped ... ok [INFO] [stdout] test agent::prompt::registry::tests::none_provider_skipped_between_real_providers ... ok [INFO] [stdout] test agent::hook::tests::vet_default_constructs ... ok [INFO] [stdout] test agent::hook::tests::vet_blocks_curl_http_url_with_options ... ok [INFO] [stdout] test agent::prompt::registry::tests::set_system_prompt_replaces_previous ... ok [INFO] [stdout] test agent::prompt::system_stack::tests::kernel_is_always_present ... ok [INFO] [stdout] test agent::prompt::registry::tests::system_prompt_produces_section_with_fixed_budget ... ok [INFO] [stdout] test agent::prompt::system_stack::tests::agent_prompt_is_incremental ... ok [INFO] [stdout] test agent::prompt::system_stack::tests::rejects_untrusted_delta_variables ... ok [INFO] [stdout] test agent::prompt::template::tests::rejects_missing_variables ... ok [INFO] [stdout] test agent::prompt::template::tests::rejects_unknown_variables ... ok [INFO] [stdout] test agent::prompt::template::tests::renders_allowed_variables ... ok [INFO] [stdout] test agent::state::tests::test_push_system_message_inserts_before_seeded_history ... ok [INFO] [stdout] test agent::state::tests::test_replace_first_user_message_replaces_in_place ... ok [INFO] [stdout] test agent::state::tests::test_replace_first_user_message_no_user_falls_back_to_push ... ok [INFO] [stdout] test agent::state::tests::test_snapshot_restore_recovers_messages_and_usage ... ok [INFO] [stdout] test agent::state::tests::test_trim_messages_always_keeps_minimum ... ok [INFO] [stdout] test agent::state::tests::test_trim_messages_noop_if_within_budget ... ok [INFO] [stdout] test agent::state::tests::test_trim_messages_removes_old_messages ... ok [INFO] [stdout] test agent::state::tests::test_upsert_user_message_from_preserves_older_user_messages ... ok [INFO] [stdout] test agent::tests::test_agent_prompt_compilation_integration ... ok [INFO] [stdout] test agent::tests::test_behavior_getter_returns_ref ... ok [INFO] [stdout] test agent::tests::test_budget_overflow_drops_low_priority_provider ... ok [INFO] [stdout] test agent::tests::test_default_behavior_is_strict ... ok [INFO] [stdout] test agent::tests::test_empty_registry_falls_through_to_raw_input ... ok [INFO] [stdout] test agent::tests::test_set_behavior_switches_mode ... ok [INFO] [stdout] test agent::tests::test_set_system_prompt_does_not_panic ... ok [INFO] [stdout] test agent::tests::test_with_permissive_preserves_custom_strict ... ok [INFO] [stdout] test agent::tests::test_with_permissive_restores_on_err ... ok [INFO] [stdout] test agent::tests::test_with_permissive_switches_and_restores_on_ok ... ok [INFO] [stdout] test bus::handoff_rule::tests::reexported_rules_parse_and_eval ... ok [INFO] [stdout] test bus::lattice_dir::tests::test_bus_toml_defaults ... ok [INFO] [stdout] test bus::lattice_dir::tests::test_bus_toml_load_invalid_syntax ... ok [INFO] [stdout] test bus::lattice_dir::tests::test_bus_toml_to_bus_config ... ok [INFO] [stdout] test bus::lattice_dir::tests::test_bus_toml_to_bus_config_at_least_once ... ok [INFO] [stdout] test bus::lattice_dir::tests::test_bus_toml_to_bus_config_unknown_policy ... ok [INFO] [stdout] test bus::lattice_dir::tests::test_lattice_dir_discover_missing ... ok [INFO] [stdout] test bus::lattice_dir::tests::test_lattice_dir_discover_with_agents ... ok [INFO] [stdout] test agent::prompt::registry::tests::registered_provider_appears_in_collect ... ok [INFO] [stdout] test bus::lattice_dir::tests::test_lattice_dir_discover_with_bus_toml ... ok [INFO] [stdout] test agent::prompt::system_stack::tests::renders_trusted_delta_variables ... ok [INFO] [stdout] test bus::lattice_dir::tests::test_bus_toml_custom_values ... ok [INFO] [stdout] test bus::micro_agent::tests::test_extract_content_empty_events ... ok [INFO] [stdout] test bus::micro_agent::tests::test_extract_content_no_tokens ... ok [INFO] [stdout] test bus::micro_agent::tests::test_extract_content_token_events_mixed ... ok [INFO] [stdout] test bus::micro_agent::tests::test_extract_input_null_payload ... ok [INFO] [stdout] test bus::micro_agent::tests::test_extract_input_object_without_input_key ... ok [INFO] [stdout] test bus::micro_agent::tests::test_extract_input_object_with_input_key ... ok [INFO] [stdout] test bus::micro_agent::tests::test_extract_input_number_payload ... ok [INFO] [stdout] test agent::hook::tests::vet_blocks_wget_http_url_with_options ... ok [INFO] [stdout] test bus::micro_agent::tests::test_parse_output_valid_json ... ok [INFO] [stdout] test bus::micro_agent::tests::test_extract_input_string_payload ... ok [INFO] [stdout] test bus::pipeline::tests::test_dry_run_fork_invalid_target ... ok [INFO] [stdout] test agent::hook::tests::vet_passthrough_empty_command ... ok [INFO] [stdout] test agent::hook::tests::vet_blocks_wget_http_url ... ok [INFO] [stdout] test bus::micro_agent::tests::test_parse_output_empty_string ... ok [INFO] [stdout] test bus::micro_agent::tests::test_parse_output_markdown_fenced_json ... ok [INFO] [stdout] test bus::micro_agent::tests::test_parse_output_non_json_fallback ... ok [INFO] [stdout] test bus::pipeline::tests::test_dry_run_missing_agent ... ok [INFO] [stdout] test bus::pipeline::tests::test_dry_run_valid_pipeline ... ok [INFO] [stdout] test bus::pipeline::tests::test_dry_run_fork_valid ... ok [INFO] [stdout] test bus::pipeline::tests::test_merge_fork_outputs ... ok [INFO] [stdout] test bus::profile::tests::test_blake3_corrupted_hash_rejected ... ok [INFO] [stdout] test bus::profile::tests::test_blake3_first_load_creates_hash ... ok [INFO] [stdout] test bus::profile::tests::test_blake3_second_load_verifies ... ok [INFO] [stdout] test bus::profile::tests::test_default_bus_and_memory ... ok [INFO] [stdout] test bus::profile::tests::test_blake3_tampered_profile_rejected ... ok [INFO] [stdout] test bus::profile::tests::test_default_behavior ... ok [INFO] [stdout] test bus::profile::tests::test_default_skippable_and_tags ... ok [INFO] [stdout] test bus::profile::tests::test_load_profile_from_toml ... ok [INFO] [stdout] test bus::profile::tests::test_system_prompt_rejects_path_traversal ... ok [INFO] [stdout] test bus::profile::tests::test_plugins_config_toml_deserialize ... ok [INFO] [stdout] test bus::profile::tests::test_system_prompt_rejects_absolute_path ... ok [INFO] [stdout] test bus::runner::tests::does_not_treat_normal_text_as_error ... ok [INFO] [stdout] test bus::profile::tests::test_bus_and_memory_sections ... ok [INFO] [stdout] test bus::runner::tests::detects_provider_and_transport_error_text ... ok [INFO] [stdout] test bus::tests::test_bus_config_defaults ... ok [INFO] [stdout] test bus::profile::tests::test_handoff_rules_deserialization ... ok [INFO] [stdout] test bus::tests::test_deregister ... ok [INFO] [stdout] test bus::tests::test_deregister_nonexistent ... ok [INFO] [stdout] test bus::tests::test_discover_no_match ... ok [INFO] [stdout] test bus::tests::test_publish_capability_enforced ... ok [INFO] [stdout] test bus::tests::test_pub_sub_no_subscribers ... ok [INFO] [stdout] test bus::tests::test_register_duplicate_rejected ... ok [INFO] [stdout] test bus::tests::test_registration_yields_request_rx ... ok [INFO] [stdout] test bus::tests::test_register_and_discover ... ok [INFO] [stdout] test bus::tests::test_rpc_call_success ... ok [INFO] [stdout] test bus::tests::test_rpc_target_not_found ... ok [INFO] [stdout] test bus::tests::test_rpc_timeout ... ok [INFO] [stdout] test bus::tests::test_subscribe_capability_empty_means_all ... ok [INFO] [stdout] test bus::tests::test_subscribe_capability_enforced ... ok [INFO] [stdout] test core::catalog::loader::tests::test_api_protocol_custom_variant ... ok [INFO] [stdout] test core::catalog::loader::tests::test_api_protocol_from_str ... ok [INFO] [stdout] test core::catalog::loader::tests::test_catalog_loads ... ok [INFO] [stdout] test core::catalog::loader::tests::test_get_model_claude_sonnet ... ok [INFO] [stdout] test core::catalog::loader::tests::test_gpt_oss_120b_has_context_length ... ok [INFO] [stdout] test core::catalog::loader::tests::test_provider_defaults_anthropic ... ok [INFO] [stdout] test core::catalog::loader::tests::test_resolve_alias_sonnet ... ok [INFO] [stdout] test core::catalog::types::tests::test_api_protocol_serde_accepts_short_alias ... ok [INFO] [stdout] test bus::tests::test_rpc_caller_not_found ... ok [INFO] [stdout] test bus::tests::test_rpc_unauthorized ... ok [INFO] [stdout] test core::catalog::types::tests::test_api_protocol_serde_rejects_typo ... ok [INFO] [stdout] test core::catalog::types::tests::test_debug_hides_api_key ... ok [INFO] [stdout] test core::catalog::types::tests::test_serialize_hides_api_key ... ok [INFO] [stdout] test core::catalog::types::tests::test_api_protocol_serde_custom_unknown ... ok [INFO] [stdout] test core::errors::tests::test_classify_400_rate_limit_error ... ok [INFO] [stdout] test core::errors::tests::test_classify_authentication_401 ... ok [INFO] [stdout] test core::errors::tests::test_classify_authentication_403 ... ok [INFO] [stdout] test core::errors::tests::test_classify_context_window_exceeded ... ok [INFO] [stdout] test core::errors::tests::test_classify_model_not_found ... ok [INFO] [stdout] test core::errors::tests::test_classify_model_not_found_no_model_field ... ok [INFO] [stdout] test bus::pipeline::tests::test_run_async_error_handling ... ok [INFO] [stdout] test bus::tests::test_bus_handler_function ... ok [INFO] [stdout] test bus::tests::test_pub_sub_basic ... ok [INFO] [stdout] test bus::tests::test_bus_handler_macro ... ok [INFO] [stdout] test core::errors::tests::test_classify_rate_limit_no_retry_after ... ok [INFO] [stdout] test core::errors::tests::test_classify_rate_limit_with_retry_after ... ok [INFO] [stdout] test core::errors::tests::test_display_authentication ... ok [INFO] [stdout] test core::errors::tests::test_display_config ... ok [INFO] [stdout] test core::errors::tests::test_display_context_window_exceeded ... ok [INFO] [stdout] test core::errors::tests::test_display_model_not_found ... ok [INFO] [stdout] test core::errors::tests::test_display_network ... ok [INFO] [stdout] test core::errors::tests::test_display_provider_unavailable ... ok [INFO] [stdout] test core::errors::tests::test_display_rate_limit ... ok [INFO] [stdout] test core::errors::tests::test_display_streaming ... ok [INFO] [stdout] test core::errors::tests::test_display_tool_execution ... ok [INFO] [stdout] test core::errors::tests::test_extract_model_from_body ... ok [INFO] [stdout] test core::errors::tests::test_extract_model_from_body_no_model ... ok [INFO] [stdout] test core::errors::tests::test_extract_retry_after_json ... ok [INFO] [stdout] test core::errors::tests::test_extract_retry_after_json_float ... ok [INFO] [stdout] test core::errors::tests::test_extract_retry_after_not_found ... ok [INFO] [stdout] test core::errors::tests::test_classify_400_overloaded_error ... ok [INFO] [stdout] test core::errors::tests::test_classify_provider_unavailable_500 ... ok [INFO] [stdout] test core::errors::tests::test_classify_network_error_418 ... ok [INFO] [stdout] test core::errors::tests::test_classify_network_error_unknown_status ... ok [INFO] [stdout] test core::errors::tests::test_classify_400_no_context_overflow ... ok [INFO] [stdout] test core::errors::tests::test_classify_provider_unavailable_503 ... ok [INFO] [stdout] test core::errors::tests::test_scrub_credentials_anthropic_key ... ok [INFO] [stdout] test core::errors::tests::test_scrub_credentials_preserves_safe_body ... ok [INFO] [stdout] test core::errors::tests::test_scrub_credentials_openai_key ... ok [INFO] [stdout] test core::errors::tests::test_scrub_credentials_bearer_token ... ok [INFO] [stdout] test core::errors::tests::test_scrub_credentials_json_field ... ok [INFO] [stdout] test agent::hook::tests::vet_passthrough_normal_command ... ok [INFO] [stdout] test core::invocation::send_streaming_request_tests::test_streaming_error_403_authentication ... ok [INFO] [stdout] test core::invocation::send_streaming_request_tests::test_streaming_error_418_network ... ok [INFO] [stdout] test core::invocation::validate_header_tests::test_validate_injected_header_accepts_whitelisted ... ok [INFO] [stdout] test core::invocation::validate_header_tests::test_validate_injected_header_rejects_sensitive ... ok [INFO] [stdout] test core::invocation::send_streaming_request_tests::test_streaming_error_401_authentication ... ok [INFO] [stdout] test core::invocation::validate_header_tests::test_validate_injected_header_rejects_unknown ... ok [INFO] [stdout] test core::provider::tests::test_chat_request_new ... ok [INFO] [stdout] test core::resolve_tests::resolve_gpt4o_missing_credential_errors ... ok [INFO] [stdout] test core::resolve_tests::test_resolve_nonexistent_model ... ok [INFO] [stdout] test core::resolve_tests::test_resolve_sonnet_alias_missing_credential ... ok [INFO] [stdout] test core::retry::tests::test_backoff_high_attempt_no_panic ... ok [INFO] [stdout] test core::resolve_tests::test_resolve_gpt4o_with_key_ok ... ok [INFO] [stdout] test core::retry::tests::test_backoff_increases_median ... ok [INFO] [stdout] test core::router::tests::test_credentialed_provider_wins_over_credentialless_at_same_priority ... ok [INFO] [stdout] test core::resolve_tests::test_resolve_sonnet_alias_with_credential ... ok [INFO] [stdout] test core::invocation::send_streaming_request_tests::test_streaming_error_404_model_not_found ... ok [INFO] [stdout] test core::router::tests::test_credentialless_provider_wins_over_lower_priority_credentialed ... ok [INFO] [stdout] test core::router::tests::test_inspect_model_allows_empty_base_url ... ok [INFO] [stdout] test core::router::tests::test_inspect_model_returns_missing_credential ... ok [INFO] [stdout] test core::router::tests::test_is_private_or_reserved_ipv4 ... ok [INFO] [stdout] test core::router::tests::test_list_models_includes_catalog ... ok [INFO] [stdout] test core::router::tests::test_is_private_or_reserved_ipv6 ... ok [INFO] [stdout] test core::router::tests::test_normalize_model_for_provider ... ok [INFO] [stdout] test core::router::tests::test_normalize_model_id_double_slash ... ok [INFO] [stdout] test core::router::tests::test_normalize_model_id_empty ... ok [INFO] [stdout] test core::router::tests::test_list_authenticated_models ... ok [INFO] [stdout] test core::invocation::send_streaming_request_tests::test_streaming_error_400_context_window_exceeded ... ok [INFO] [stdout] test core::router::tests::test_resolve_model_with_no_providers_returns_config_error ... ok [INFO] [stdout] test core::router::tests::test_resolve_deepseek_with_direct_key ... ok [INFO] [stdout] test core::router::tests::test_normalize_model_id_openrouter_prefix ... ok [INFO] [stdout] test core::router::tests::test_provider_override ... ok [INFO] [stdout] test core::router::tests::test_resolve_rejects_empty_base_url_for_credentialed_provider ... ok [INFO] [stdout] test core::router::tests::test_custom_registration ... ok [INFO] [stdout] test core::router::tests::test_unknown_provider_is_not_credentialless ... ok [INFO] [stdout] test core::router::tests::test_resolve_rejects_unknown_model_no_permissive_fallthrough ... ok [INFO] [stdout] test core::router::tests::test_resolve_rejects_unknown_provider_model_format ... ok [INFO] [stdout] test core::router::tests::test_validate_base_url_no_host ... ok [INFO] [stdout] test core::router::tests::test_validate_base_url_no_scheme ... ok [INFO] [stdout] test core::router::tests::test_validate_base_url_empty ... ok [INFO] [stdout] test core::router::tests::test_validate_base_url_rejects_non_http_schemes ... ok [INFO] [stdout] test core::router::tests::test_validate_base_url_rejects_userinfo ... ok [INFO] [stdout] test core::router::tests::test_resolve_with_normalized_name ... ok [INFO] [stdout] test core::streaming::anthropic::tests::test_empty_data_is_noop ... ok [INFO] [stdout] test core::router::tests::test_validate_base_url_valid ... ok [INFO] [stdout] test core::streaming::anthropic::tests::test_error_event ... ok [INFO] [stdout] test core::streaming::anthropic::tests::test_message_stop_ignored ... ok [INFO] [stdout] test core::streaming::anthropic::tests::test_ping_ignored ... ok [INFO] [stdout] test core::streaming::anthropic::tests::test_text_streaming ... ok [INFO] [stdout] test core::streaming::anthropic::tests::test_tool_call_streaming ... ok [INFO] [stdout] test core::invocation::send_streaming_request_tests::test_streaming_error_429_rate_limit ... ok [INFO] [stdout] test core::streaming::anthropic::tests::test_usage_tracks_input_tokens ... ok [INFO] [stdout] test core::streaming::gemini::tests::test_done_sentinel ... ok [INFO] [stdout] test core::streaming::gemini::tests::test_empty_data ... ok [INFO] [stdout] test core::streaming::gemini::tests::test_error_chunk ... ok [INFO] [stdout] test core::streaming::gemini::tests::test_finish_reason_mapping ... ok [INFO] [stdout] test core::streaming::gemini::tests::test_finish_with_tool_calls ... ok [INFO] [stdout] test core::streaming::gemini::tests::test_function_call_chunk ... ok [INFO] [stdout] test core::streaming::gemini::tests::test_text_chunk ... ok [INFO] [stdout] test core::streaming::gemini::tests::test_thinking_chunk ... ok [INFO] [stdout] test core::streaming::openai::tests::test_api_error ... ok [INFO] [stdout] test core::streaming::openai::tests::test_content_chunk ... ok [INFO] [stdout] test core::streaming::openai::tests::test_done_with_usage ... ok [INFO] [stdout] test core::streaming::openai::tests::test_empty_delta_skipped ... ok [INFO] [stdout] test core::streaming::openai::tests::test_multiple_content_chunks ... ok [INFO] [stdout] test core::streaming::openai::tests::test_multiple_tool_calls ... ok [INFO] [stdout] test core::streaming::openai::tests::test_reasoning_content_empty_skipped ... ok [INFO] [stdout] test core::streaming::openai::tests::test_reasoning_content ... ok [INFO] [stdout] test core::streaming::openai::tests::test_tool_call_streaming ... ok [INFO] [stdout] test core::streaming::openai::tests::test_very_large_content_chunk ... ok [INFO] [stdout] test core::streaming::openai::tests::test_whitespace_done ... ok [INFO] [stdout] test core::streaming::tests::test_parse_raw_sse_data_only ... ok [INFO] [stdout] test core::streaming::tests::test_parse_raw_sse_empty_input ... ok [INFO] [stdout] test core::streaming::tests::test_parse_raw_sse_multiple_events ... ok [INFO] [stdout] test core::streaming::tests::test_parse_raw_sse_multi_data ... ok [INFO] [stdout] test core::streaming::tests::test_parse_raw_sse_no_trailing_newline ... ok [INFO] [stdout] test core::streaming::tests::test_parse_sse_text_anthropic ... ok [INFO] [stdout] test core::streaming::gemini::tests::test_usage_only_chunk ... ok [INFO] [stdout] test core::streaming::tests::test_parse_sse_text_openai ... ok [INFO] [stdout] test core::streaming::tests::test_reasoning_roundtrip ... ok [INFO] [stdout] test core::streaming::tests::test_sse_stream_integration ... ignored, requires a running SSE HTTP server or mock EventSource [INFO] [stdout] test core::streaming::openai::tests::test_done_sentinel ... ok [INFO] [stdout] test core::streaming::tests::test_stream_event_roundtrip ... ok [INFO] [stdout] test core::streaming::tests::test_token_usage_roundtrip ... ok [INFO] [stdout] test core::tokens::tests::test_estimate_empty ... ok [INFO] [stdout] test core::tokens::tests::test_estimate_messages_includes_tool_calls ... ok [INFO] [stdout] test core::tokens::tests::test_estimate_short ... ok [INFO] [stdout] test core::streaming::openai::tests::test_reasoning_with_content ... ok [INFO] [stdout] test core::streaming::tests::test_parse_raw_sse_single ... ok [INFO] [stdout] test core::streaming::tests::test_parse_raw_sse_with_id ... ok [INFO] [stdout] test core::tokens::tests::test_tiktoken_fallback_non_openai ... ok [INFO] [stdout] test core::transport::anthropic::tests::test_consecutive_tool_results_merged ... ok [INFO] [stdout] test core::transport::anthropic::tests::test_denormalize_text_response ... ok [INFO] [stdout] test core::transport::anthropic::tests::test_denormalize_thinking_response ... ok [INFO] [stdout] test core::transport::anthropic::tests::test_empty_assistant_gets_placeholder ... ok [INFO] [stdout] test core::transport::anthropic::tests::test_extra_headers_contains_anthropic_version ... ok [INFO] [stdout] test core::transport::anthropic::tests::test_max_tokens_stop_reason ... ok [INFO] [stdout] test core::transport::anthropic::tests::test_multiple_system_messages_merged ... ok [INFO] [stdout] test core::transport::anthropic::tests::test_normalize_assistant_with_tool_use ... ok [INFO] [stdout] test core::transport::anthropic::tests::test_normalize_tool_result ... ok [INFO] [stdout] test core::transport::anthropic::tests::test_normalize_tools_uses_input_schema ... ok [INFO] [stdout] test core::transport::anthropic::tests::test_normalize_user_message ... ok [INFO] [stdout] test core::transport::anthropic::tests::test_system_extraction ... ok [INFO] [stdout] test core::transport::chat_completions::tests::test_api_mode ... ok [INFO] [stdout] test core::transport::chat_completions::tests::test_custom_base_url ... ok [INFO] [stdout] test core::transport::chat_completions::tests::test_default_base_url ... ok [INFO] [stdout] test core::transport::chat_completions::tests::test_denormalize_response_rejects_empty_content_no_tool_calls ... ok [INFO] [stdout] test core::transport::chat_completions::tests::test_denormalize_response_rejects_missing_choices ... ok [INFO] [stdout] test core::transport::chat_completions::tests::test_denormalize_simple_response ... ok [INFO] [stdout] test core::transport::chat_completions::tests::test_denormalize_tool_call_response ... ok [INFO] [stdout] test core::transport::chat_completions::tests::test_extra_headers_default_empty ... ok [INFO] [stdout] test core::transport::chat_completions::tests::test_normalize_request_with_streaming ... ok [INFO] [stdout] test core::transport::chat_completions::tests::test_normalize_request_with_tools ... ok [INFO] [stdout] test core::transport::chat_completions::tests::test_normalize_simple_request ... ok [INFO] [stdout] test core::transport::chat_completions::tests::test_roundtrip_simple_message ... ok [INFO] [stdout] test core::transport::dispatcher::tests::test_anthropic_denormalize_response ... ok [INFO] [stdout] test core::transport::dispatcher::tests::test_anthropic_normalize_request ... ok [INFO] [stdout] test core::transport::dispatcher::tests::test_default_impl ... ok [INFO] [stdout] test core::transport::dispatcher::tests::test_dispatch_anthropic ... ok [INFO] [stdout] test core::transport::dispatcher::tests::test_dispatch_chat_completions ... ok [INFO] [stdout] test core::transport::dispatcher::tests::test_dispatch_for_resolved ... ok [INFO] [stdout] test core::transport::dispatcher::tests::test_dispatch_for_resolved_chat_completions ... ok [INFO] [stdout] test core::transport::dispatcher::tests::test_dispatch_for_resolved_gemini ... ok [INFO] [stdout] test core::transport::dispatcher::tests::test_dispatch_for_resolved_unregistered ... ok [INFO] [stdout] test core::transport::dispatcher::tests::test_dispatch_gemini ... ok [INFO] [stdout] test core::transport::dispatcher::tests::test_dispatch_unregistered_returns_none ... ok [INFO] [stdout] test core::transport::dispatcher::tests::test_register_custom_transport ... ok [INFO] [stdout] test core::transport::dispatcher::tests::test_register_replaces_existing ... ok [INFO] [stdout] test core::transport::gemini::tests::test_api_mode ... ok [INFO] [stdout] test core::transport::gemini::tests::test_custom_base_url ... ok [INFO] [stdout] test core::transport::gemini::tests::test_default_base_url ... ok [INFO] [stdout] test core::transport::gemini::tests::test_denormalize_empty_response ... ok [INFO] [stdout] test core::transport::gemini::tests::test_denormalize_function_call_response ... ok [INFO] [stdout] test core::transport::gemini::tests::test_denormalize_max_tokens_finish ... ok [INFO] [stdout] test core::transport::gemini::tests::test_denormalize_recitation_finish ... ok [INFO] [stdout] test core::transport::gemini::tests::test_denormalize_safety_finish ... ok [INFO] [stdout] test core::transport::gemini::tests::test_denormalize_stream_chunk_text ... ok [INFO] [stdout] test core::transport::gemini::tests::test_denormalize_stream_chunk_tool_calls_finish_reason ... ok [INFO] [stdout] test core::transport::gemini::tests::test_denormalize_stream_chunk_with_finish ... ok [INFO] [stdout] test core::transport::gemini::tests::test_denormalize_stream_chunk_with_thinking ... ok [INFO] [stdout] test core::transport::gemini::tests::test_denormalize_text_response ... ok [INFO] [stdout] test core::transport::gemini::tests::test_denormalize_thinking_part_skipped_in_content ... ok [INFO] [stdout] test core::transport::gemini::tests::test_finish_reason_mapping ... ok [INFO] [stdout] test core::transport::anthropic::tests::test_default_base_url ... ok [INFO] [stdout] test core::transport::gemini::tests::test_normalize_function_response ... ok [INFO] [stdout] test core::transport::anthropic::tests::test_denormalize_tool_use_response ... ok [INFO] [stdout] test core::transport::gemini::tests::test_normalize_model_with_function_call ... ok [INFO] [stdout] test core::transport::gemini::tests::test_normalize_multiple_system_messages ... ok [INFO] [stdout] test core::transport::gemini::tests::test_normalize_request_includes_generation_config ... ok [INFO] [stdout] test core::transport::gemini::tests::test_normalize_tools ... ok [INFO] [stdout] test core::transport::gemini::tests::test_normalize_tools_empty ... ok [INFO] [stdout] test core::transport::gemini::tests::test_normalize_function_response_plain_text ... ok [INFO] [stdout] test core::transport::gemini::tests::test_system_instruction_extraction ... ok [INFO] [stdout] test core::transport::gemini::tests::test_normalize_user_message ... ok [INFO] [stdout] test core::types::tests::test_function_call_roundtrip ... ok [INFO] [stdout] test core::types::tests::test_message_simple_roundtrip ... ok [INFO] [stdout] test core::types::tests::test_message_tool_result_roundtrip ... ok [INFO] [stdout] test core::types::tests::test_message_with_tool_calls_roundtrip ... ok [INFO] [stdout] test core::types::tests::test_role_roundtrip ... ok [INFO] [stdout] test core::types::tests::test_role_serialization_variants ... ok [INFO] [stdout] test core::types::tests::test_tool_call_roundtrip ... ok [INFO] [stdout] test core::types::tests::test_tool_definition_roundtrip ... ok [INFO] [stdout] test plugin::dag_runner::tests::test_find_edge_first_match_wins ... ok [INFO] [stdout] test plugin::loader::tests::load_dir_ignores_missing_directory ... ok [INFO] [stdout] test plugin::manifest::tests::load_manifest_from_files ... ok [INFO] [stdout] test plugin::dag_runner::tests::test_dag_error_display ... ok [INFO] [stdout] test plugin::manifest::tests::manifest_plugin_renders_and_parses_json ... ok [INFO] [stdout] test plugin::orchestration::tests::evals_any_array_path ... ok [INFO] [stdout] test plugin::orchestration::tests::evals_numeric_and_contains_conditions ... ok [INFO] [stdout] test plugin::orchestration::tests::first_matching_rule_wins ... ok [INFO] [stdout] test plugin::registry::tests::remove_deletes_future_lookups ... ok [INFO] [stdout] test plugin::registry::tests::replace_all_keeps_old_registry_when_new_set_is_invalid ... ok [INFO] [stdout] test plugin::tests::test_behavior_mode_to_behavior ... ok [INFO] [stdout] test plugin::tests::test_default_parse_json ... ok [INFO] [stdout] test plugin::loader::tests::load_dir_rejects_duplicate_local_plugin_names ... ok [INFO] [stdout] test plugin::registry::tests::replace_swaps_future_lookups_without_mutating_old_arc ... ok [INFO] [stdout] test plugin::tests::test_default_parse_markdown ... ok [INFO] [stdout] test plugin::tests::test_plugin_config_defaults ... ok [INFO] [stdout] test plugin::tests::test_plugin_error_display ... ok [INFO] [stdout] test plugin::tests::test_plugin_registry_duplicate_rejected ... ok [INFO] [stdout] test plugin::tests::test_extract_confidence ... ok [INFO] [stdout] test plugin::tests::test_plugin_registry_register_and_get ... ok [INFO] [stdout] test plugin::tests::test_plugin_runner_hooks_lifecycle ... ok [INFO] [stdout] test plugin::tests::test_plugin_runner_output_too_large ... ok [INFO] [stdout] test plugin::tests::test_plugin_runner_max_turns_exceeded ... ok [INFO] [stdout] test plugin::tests::test_strict_behavior_retries_low_confidence ... ok [INFO] [stdout] test plugin::tests::test_plugin_runner_memory_save ... ok [INFO] [stdout] test plugin::tests::test_yolo_always_done ... ok [INFO] [stdout] test plugin::tests::test_strict_escalates_after_retries ... ok [INFO] [stdout] test plugin::watcher::tests::load_registry_bundles_handles_missing_directory ... ok [INFO] [stdout] test core::transport::anthropic::tests::test_api_mode ... ok [INFO] [stdout] test runtime::tests::micro_agent_uses_runtime_owned_parts ... ok [INFO] [stdout] test runtime::tests::pipeline_uses_runtime_owned_parts ... ok [INFO] [stdout] test plugin::watcher::tests::local_manifest_loads_bundle_name_once ... ok [INFO] [stdout] test runtime::tests::runtime_owns_shared_registries_and_events ... ok [INFO] [stdout] test tools::sandbox::tests::test_allowed_command_passes ... ok [INFO] [stdout] test tools::sandbox::tests::test_allowlist_component_boundary_not_byte_prefix ... ok [INFO] [stdout] test tools::sandbox::tests::test_ansi_c_quoting_rejected ... ok [INFO] [stdout] test tools::sandbox::tests::test_check_read_allowlist_empty_allows_all ... ok [INFO] [stdout] test tools::sandbox::tests::test_check_read_allowlist_enforced ... ok [INFO] [stdout] test tools::sandbox::tests::test_command_matches_allowlist_token_prefix ... ok [INFO] [stdout] test tools::sandbox::tests::test_component_matches_pattern ... ok [INFO] [stdout] test tools::sandbox::tests::test_default_sandbox_disallows_cargo_commands ... ok [INFO] [stdout] test tools::sandbox::tests::test_default_sandbox_has_no_hook_chain ... ok [INFO] [stdout] test tools::sandbox::tests::test_disallowed_program_rejected ... ok [INFO] [stdout] test tools::sandbox::tests::test_dns_rebinding_domains_rejected ... ok [INFO] [stdout] test tools::sandbox::tests::test_empty_command_rejected ... ok [INFO] [stdout] test tools::sandbox::tests::test_hook_chain_allows_safe_command_in_restricted_sandbox ... ok [INFO] [stdout] test tools::sandbox::tests::test_hook_chain_allows_safe_command_through_to_allowlist ... ok [INFO] [stdout] test tools::sandbox::tests::security_pipeline_hook_chain_order_matters ... ok [INFO] [stdout] test tools::sandbox::tests::test_hook_chain_blocks_rm_rf_root_before_allowlist ... ok [INFO] [stdout] test tools::sandbox::tests::test_hook_chain_blocks_curl_pipe_sh_before_metachar ... ok [INFO] [stdout] test tools::sandbox::tests::test_is_path_prefix_component_boundary ... ok [INFO] [stdout] test tools::sandbox::tests::test_is_private_ip ... ok [INFO] [stdout] test tools::sandbox::tests::test_path_env_override_rejected ... ok [INFO] [stdout] test tools::sandbox::tests::test_path_matches_sensitive ... ok [INFO] [stdout] test tools::sandbox::tests::test_legitimate_commands_with_multiple_args ... ok [INFO] [stdout] test tools::sandbox::tests::test_path_matches_sensitive_wildcards ... ok [INFO] [stdout] test tools::sandbox::tests::test_permissive_mode_allows_any_program ... ok [INFO] [stdout] test tools::sandbox::tests::test_permissive_mode_rejects_newline_injection ... ok [INFO] [stdout] test tools::sandbox::tests::test_permissive_mode_still_rejects_metachars ... ok [INFO] [stdout] test tools::sandbox::tests::test_sandbox_config_has_max_http_response_size ... ok [INFO] [stdout] test tools::sandbox::tests::test_prefix_match_injection_rejected ... ok [INFO] [stdout] test tools::sandbox::tests::test_shell_injection_via_ampersand_permissive_rejected ... ok [INFO] [stdout] test tools::sandbox::tests::test_shell_injection_via_ampersand_rejected ... ok [INFO] [stdout] test tools::sandbox::tests::test_shell_injection_via_andand_rejected ... ok [INFO] [stdout] test tools::sandbox::tests::test_shell_injection_via_backtick_rejected ... ok [INFO] [stdout] test tools::sandbox::tests::test_shell_injection_via_carriage_return_rejected ... ok [INFO] [stdout] test tools::sandbox::tests::test_shell_injection_via_newline_rejected ... ok [INFO] [stdout] test tools::sandbox::tests::test_shell_injection_via_oror_rejected ... ok [INFO] [stdout] test tools::sandbox::tests::test_shell_injection_via_pipe_rejected ... ok [INFO] [stdout] test tools::sandbox::tests::test_shell_injection_via_semicolon_rejected ... ok [INFO] [stdout] test tools::sandbox::tests::test_shell_injection_via_subshell_rejected ... ok [INFO] [stdout] test tools::sandbox::tests::test_url_http_localhost_allowed ... ok [INFO] [stdout] test tools::sandbox::tests::test_url_http_remote_rejected ... ok [INFO] [stdout] test tools::sandbox::tests::test_url_https_allowed ... ok [INFO] [stdout] test tools::sandbox::tests::test_url_https_private_ip_rejected ... ok [INFO] [stdout] test tools::sandbox::tests::test_url_invalid_rejected ... ok [INFO] [stdout] test tools::sandbox::tests::test_url_localhost_prefix_wildcard_rejected ... ok [INFO] [stdout] test tools::sandbox::tests::sandbox_config_audit_logs_hook_denials ... ok [INFO] [stdout] test core::invocation::send_streaming_request_tests::test_streaming_error_500_provider_unavailable ... ok [INFO] [stdout] test core::invocation::send_streaming_request_tests::test_streaming_error_503_provider_unavailable ... ok [INFO] [stdout] test tools::sandbox::tests::yolo_mode_enforces_command_allowlist ... ok [INFO] [stdout] test tools::tool_registry::tests::test_merge_plugin_overrides ... ok [INFO] [stdout] test tools::tool_registry::tests::test_merge_tool_definitions ... ok [INFO] [stdout] test tools::sandbox::tests::test_vet_hook_intercepts_curl_https ... ok [INFO] [stdout] test tools::sandbox::tests::test_vet_hook_passthrough_non_curl ... ok [INFO] [stdout] test tools::sandbox::tests::test_vet_hook_blocks_curl_http ... ok [INFO] [stdout] test tools::sandbox::tests::test_vet_hook_neutralizes_curl_pipe_sh ... ok [INFO] [stdout] test tools::sandbox::tests::security_pipeline_vet_intercepts_curl_download ... ok [INFO] [stdout] test core::tokens::tests::test_tiktoken_openai_model ... ok [INFO] [stdout] test core::tokens::tests::test_fits_in_context ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 469 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 3.69s [INFO] [stdout] [INFO] [stderr] Running tests/agent_mock.rs (/opt/rustwide/target/debug/deps/agent_mock-5b68537b229121a3) [INFO] [stdout] [INFO] [stdout] running 5 tests [INFO] [stdout] test test_agent_send_message_async_basic ... ok [INFO] [stdout] test test_agent_send_message_basic ... ok [INFO] [stdout] test test_agent_run_basic ... ok [INFO] [stdout] test test_agent_run_streaming_observer_receives_tokens ... ok [INFO] [stdout] test test_agent_run_with_tool_call_no_executor ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s [INFO] [stdout] [INFO] [stderr] Running tests/context_e2e.rs (/opt/rustwide/target/debug/deps/context_e2e-55e8786b11a4f07c) [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] Running tests/e2e.rs (/opt/rustwide/target/debug/deps/e2e-6c9aef981c7045fe) [INFO] [stdout] [INFO] [stdout] running 175 tests [INFO] [stdout] test credential_resolution_characterization::bug_ollama_not_selected_when_anthropic_has_creds ... ok [INFO] [stdout] test credential_resolution_characterization::copilot_uses_github_token_not_api_key ... ok [INFO] [stdout] test credential_resolution_characterization::all_19_credentialed_providers_have_env_var_mapping ... ok [INFO] [stdout] test credential_resolution_characterization::credentialless_provider_ollama_resolves_with_none_api_key ... ok [INFO] [stdout] test credential_resolution_characterization::fallback_errors_when_no_credentials_available ... ok [INFO] [stdout] test credential_resolution_characterization::fallback_returns_config_error_when_no_credentials ... ok [INFO] [stdout] test credential_resolution_characterization::each_env_var_maps_to_at_most_one_primary_provider ... ok [INFO] [stdout] test credential_resolution_characterization::normalize_does_not_affect_non_claude_dots ... ok [INFO] [stdout] test credential_resolution_characterization::normalize_claude_dots_to_hyphens ... ok [INFO] [stdout] test credential_resolution_characterization::normalize_double_slash_strips_all_prefixes ... ok [INFO] [stdout] test credential_resolution_characterization::normalize_empty_string ... ok [INFO] [stdout] test credential_resolution_characterization::normalize_noop_for_plain_ids ... ok [INFO] [stdout] test credential_resolution_characterization::normalize_strips_openrouter_vendor_prefix ... ok [INFO] [stdout] test credential_resolution_characterization::normalize_lowercase ... ok [INFO] [stdout] test credential_resolution_characterization::ollama_is_credentialless ... ok [INFO] [stdout] test credential_resolution_characterization::normalize_strips_suffix ... ok [INFO] [stdout] test credential_resolution_characterization::inspect_model_used_for_unknown_provider_model_format ... ok [INFO] [stdout] test credential_resolution_characterization::openai_codex_shares_openai_key ... ok [INFO] [stdout] test credential_resolution_characterization::normalize_strips_prefix ... ok [INFO] [stdout] test credential_resolution_characterization::permissive_deepseek_provider ... ok [INFO] [stdout] test credential_resolution_characterization::permissive_looks_up_provider_defaults ... ok [INFO] [stdout] test credential_resolution_characterization::permissive_fails_without_slash ... ok [INFO] [stdout] test credential_resolution_characterization::permissive_fails_for_unknown_provider ... ok [INFO] [stdout] test credential_resolution_characterization::permissive_openrouter_not_in_defaults ... ok [INFO] [stdout] test credential_resolution_characterization::permissive_provider_model_becomes_canonical_id ... ok [INFO] [stdout] test credential_resolution_characterization::permissive_resolves_credentials_from_defaults ... ok [INFO] [stdout] test credential_resolution_characterization::permissive_returns_none_api_key_without_env_var ... ok [INFO] [stdout] test credential_resolution_characterization::priority_loop_bug_ollama_skipped_despite_highest_priority ... ok [INFO] [stdout] test credential_resolution_characterization::permissive_splits_provider_model_format ... ok [INFO] [stdout] test credential_resolution_characterization::permissive_uses_default_context_length ... ok [INFO] [stdout] test credential_resolution_characterization::provider_credentials_all_provider_slugs ... ok [INFO] [stdout] test credential_resolution_characterization::provider_credentials_env_var_mapping ... ok [INFO] [stdout] test credential_resolution_characterization::provider_credentials_has_20_entries ... ok [INFO] [stdout] test credential_resolution_characterization::priority_loop_selects_first_provider_with_credential ... ok [INFO] [stdout] test credential_resolution_characterization::priority_loop_skips_providers_without_credentials ... ok [INFO] [stdout] test credential_resolution_characterization::resolve_credentials_returns_none_for_credentialless_provider ... ok [INFO] [stdout] test credential_resolution_characterization::resolve_provider_override_nonexistent_returns_error ... ok [INFO] [stdout] test credential_resolution_characterization::resolve_unknown_provider_model_returns_error ... ok [INFO] [stdout] test credential_resolution_characterization::resolve_credentials_prefers_entry_credential_keys_over_fallback ... ok [INFO] [stdout] test credential_resolution_characterization::resolve_credentials_finds_env_var_for_provider ... ok [INFO] [stdout] test credential_resolution_characterization::resolve_credentials_ignores_empty_env_var_values ... ok [INFO] [stdout] test error_classification_characterization::errors_classify_400_context_window_exceeded ... ok [INFO] [stdout] test error_classification_characterization::errors_classify_401_authentication ... ok [INFO] [stdout] test credential_resolution_characterization::resolve_unnormalized_input_gets_normalized ... ok [INFO] [stdout] test error_classification_characterization::errors_classify_403_authentication ... ok [INFO] [stdout] test credential_resolution_characterization::resolve_with_provider_override_skips_priority_loop ... ok [INFO] [stdout] test error_classification_characterization::errors_classify_404_model_from_body ... ok [INFO] [stdout] test error_classification_characterization::errors_classify_404_no_model_in_body ... ok [INFO] [stdout] test error_classification_characterization::errors_classify_429_no_retry_after_in_body ... ok [INFO] [stdout] test error_classification_characterization::errors_classify_429_rate_limit ... ok [INFO] [stdout] test error_classification_characterization::errors_classify_502_provider_unavailable ... ok [INFO] [stdout] test error_classification_characterization::errors_classify_503_provider_unavailable ... ok [INFO] [stdout] test error_classification_characterization::errors_classify_400_no_context_overflow_is_network ... ok [INFO] [stdout] test error_classification_characterization::errors_classify_status_0_is_network ... ok [INFO] [stdout] test error_classification_characterization::errors_classify_other_status_is_network ... ok [INFO] [stdout] test error_classification_characterization::errors_classify_500_provider_unavailable ... ok [INFO] [stdout] test error_classification_characterization::is_retryable_authentication_no ... ok [INFO] [stdout] test error_classification_characterization::is_retryable_config_no ... ok [INFO] [stdout] test error_classification_characterization::is_retryable_context_window_exceeded_no ... ok [INFO] [stdout] test error_classification_characterization::is_retryable_model_not_found_no ... ok [INFO] [stdout] test error_classification_characterization::is_retryable_network_no ... ok [INFO] [stdout] test error_classification_characterization::is_retryable_rate_limit_yes ... ok [INFO] [stdout] test error_classification_characterization::is_retryable_streaming_no ... ok [INFO] [stdout] test error_classification_characterization::is_retryable_tool_execution_no ... ok [INFO] [stdout] test error_classification_characterization::is_retryable_provider_unavailable_yes ... ok [INFO] [stdout] test error_classification_characterization::model_from_body_case_insensitive_key ... ok [INFO] [stdout] test error_classification_characterization::model_from_body_hyphenated_name ... ok [INFO] [stdout] test error_classification_characterization::model_from_body_null_model ... ok [INFO] [stdout] test error_classification_characterization::model_from_body_standard_json ... ok [INFO] [stdout] test error_classification_characterization::model_from_body_no_model_key ... ok [INFO] [stdout] test error_classification_characterization::model_from_body_whitespace_truncation_bug ... ok [INFO] [stdout] test error_classification_characterization::retry_after_hyphenated_key ... ok [INFO] [stdout] test error_classification_characterization::retry_after_not_present ... ok [INFO] [stdout] test error_classification_characterization::retry_after_numeric_integer ... ok [INFO] [stdout] test error_classification_characterization::retry_after_string_encoded_number_bug ... ok [INFO] [stdout] test error_classification_characterization::retry_after_numeric_float ... ok [INFO] [stdout] test error_classification_characterization::retry_after_unquoted_key ... ok [INFO] [stdout] test error_classification_characterization::status_code_matrix ... ok [INFO] [stdout] test regression_wave1::regress_debug_api_key_masked ... ok [INFO] [stdout] test regression_wave1::regress_deprecated_consolidation_provider_compile ... ok [INFO] [stdout] test regression_wave1::regress_debug_api_key_none ... ok [INFO] [stdout] test regression_wave1::regress_deprecated_consolidation_types_compile ... ok [INFO] [stdout] test regression_wave1::regress_engine_mock_provider_auth_error_typed ... ok [INFO] [stdout] test regression_wave1::regress_error_classifier_is_retryable ... ok [INFO] [stdout] test regression_wave1::regress_error_classifier_status_zero_network ... ok [INFO] [stdout] test regression_wave1::regress_engine_mock_provider_metadata_correct ... ok [INFO] [stdout] test regression_wave1::regress_error_classifier_unified_classify ... ok [INFO] [stdout] test regression_wave1::regress_engine_mock_provider_multi_provider ... ok [INFO] [stdout] test regression_wave1::regress_lazylock_normalize_model_id_case_insensitive ... ok [INFO] [stdout] test regression_wave1::regress_lazylock_normalize_model_id_edge_cases ... ok [INFO] [stdout] test regression_wave1::regress_provider_config_resolved_model_roundtrip ... ok [INFO] [stdout] test regression_wave1::regress_engine_mock_provider_resolves_correctly ... ok [INFO] [stdout] test regression_wave1::regress_lazylock_normalize_model_id_correctness ... ok [INFO] [stdout] test regression_wave1::regress_missing_credential_errors ... ok [INFO] [stdout] test regression_wave1::regress_saturating_pow_attempt_zero ... ok [INFO] [stdout] test regression_wave1::regress_saturating_pow_clamped_to_max ... ok [INFO] [stdout] test regression_wave1::regress_rig_core_model_resolution_works ... ok [INFO] [stdout] test regression_wave1::regress_rig_core_aliases_intact ... ok [INFO] [stdout] test regression_wave1::regress_transport_type_api_protocol_works ... ok [INFO] [stdout] test regression_wave4_5::anthropic_sse_error_event_no_message_field ... ok [INFO] [stdout] test regression_wave4_5::anthropic_sse_error_event_no_type_or_message ... ok [INFO] [stdout] test regression_wave4_5::anthropic_sse_error_event_surfaced ... ok [INFO] [stdout] test regression_wave4_5::anthropic_sse_message_stop_ignored ... ok [INFO] [stdout] test regression_wave4_5::anthropic_sse_ping_event_ignored ... ok [INFO] [stdout] test regression_wave4_5::anthropic_sse_unknown_event_type_ignored ... ok [INFO] [stdout] test regression_wave4_5::catalog_claude_sonnet_entry_exists ... ok [INFO] [stdout] test regression_wave4_5::catalog_loads_successfully_with_embedded_data ... ok [INFO] [stdout] test regression_wave1::regress_saturating_pow_no_panic_on_high_attempt ... ok [INFO] [stdout] test regression_wave1::regress_saturating_pow_normal_backoff_increases ... ok [INFO] [stdout] test regression_wave4_5::catalog_resolve_alias_sonnet_works ... ok [INFO] [stdout] test regression_wave4_5::chat_request_model_equals_resolved_api_model_id ... ok [INFO] [stdout] test regression_wave1::regress_transport_type_all_variants_serialize ... ok [INFO] [stdout] test regression_wave4_5::chat_request_model_is_distinct_from_canonical_id ... ok [INFO] [stdout] test regression_wave4_5::chat_request_preserves_resolved_model_fields ... ok [INFO] [stdout] test regression_wave4_5::error_classify_404_extracts_model_from_body ... ok [INFO] [stdout] test regression_wave4_5::error_classify_404_no_model_in_body_falls_back ... ok [INFO] [stdout] test regression_wave4_5::error_classify_429_extracts_retry_after_float ... ok [INFO] [stdout] test regression_wave4_5::error_classify_429_extracts_retry_after_hyphenated_key ... ok [INFO] [stdout] test regression_wave4_5::error_body_not_truncated_for_small_body ... ok [INFO] [stdout] test regression_wave4_5::error_classify_429_no_retry_after_returns_none ... ok [INFO] [stdout] test regression_wave4_5::error_classify_429_retry_after_from_non_json_body ... ok [INFO] [stdout] test regression_wave4_5::error_classify_is_not_retryable_for_other_errors ... ok [INFO] [stdout] test regression_wave4_5::error_classify_is_retryable_provider_unavailable ... ok [INFO] [stdout] test regression_wave4_5::error_classify_is_retryable_rate_limit ... ok [INFO] [stdout] test regression_wave4_5::error_classify_status_0_is_network ... ok [INFO] [stdout] test regression_wave4_5::error_classify_status_400_context_window_exceeded ... ok [INFO] [stdout] test regression_wave4_5::error_body_truncated_for_network_error ... ok [INFO] [stdout] test regression_wave4_5::error_classify_status_400_without_context_overflow_is_network ... ok [INFO] [stdout] test regression_wave4_5::error_classify_status_401_authentication ... ok [INFO] [stdout] test regression_wave4_5::error_classify_status_403_authentication ... ok [INFO] [stdout] test regression_wave4_5::error_classify_status_404_model_not_found ... ok [INFO] [stdout] test regression_wave4_5::error_classify_status_408_is_retryable ... ok [INFO] [stdout] test regression_wave4_5::error_classify_status_429_rate_limit ... ok [INFO] [stdout] test regression_wave4_5::error_classify_status_500_provider_unavailable ... ok [INFO] [stdout] test regression_wave4_5::error_body_truncated_for_provider_unavailable ... ok [INFO] [stdout] test regression_wave4_5::error_classify_status_502_provider_unavailable ... ok [INFO] [stdout] test regression_wave4_5::error_classify_unhandled_status_is_network ... ok [INFO] [stdout] test regression_wave4_5::inspect_model_rejects_unknown_provider ... ok [INFO] [stdout] test regression_wave4_5::error_classify_status_503_provider_unavailable ... ok [INFO] [stdout] test regression_wave4_5::inspect_model_openai_codex_uses_callable_protocol ... ok [INFO] [stdout] test regression_wave4_5::inspect_model_uses_provider_defaults_for_base_url ... ok [INFO] [stdout] test regression_wave4_5::inspect_model_uses_provider_defaults_for_gemini ... ok [INFO] [stdout] test regression_wave4_5::inspect_model_works_with_mixed_case_provider ... ok [INFO] [stdout] test regression_wave4_5::inspect_model_works_with_lowercase_provider ... ok [INFO] [stdout] test regression_wave4_5::error_classify_429_extracts_retry_after_numeric ... ok [INFO] [stdout] test regression_wave4_5::normalize_model_id_claude_dots_to_hyphens ... ok [INFO] [stdout] test regression_wave4_5::inspect_model_works_with_uppercase_provider ... ok [INFO] [stdout] test regression_wave4_5::normalize_model_id_strips_openrouter_prefix ... ok [INFO] [stdout] test regression_wave4_5::normalize_model_id_lowercases ... ok [INFO] [stdout] test regression_wave4_5::normalize_model_id_noop_for_non_claude ... ok [INFO] [stdout] test regression_wave4_5::openai_sse_delta_requires_prior_tool_call_start ... ok [INFO] [stdout] test regression_wave4_5::openai_sse_multiple_tool_calls_tracked_correctly ... ok [INFO] [stdout] test regression_wave4_5::openai_sse_tool_call_start_then_delta_works ... ok [INFO] [stdout] test regression_wave4_5::tool_definition_parameters_must_be_object ... ok [INFO] [stdout] test regression_wave4_5::validate_base_url_custom_scheme_rejected ... ok [INFO] [stdout] test regression_wave4_5::validate_base_url_empty_ok ... ok [INFO] [stdout] test regression_wave4_5::router_resolve_uses_correct_provider_details ... ok [INFO] [stdout] test regression_wave4_5::router_inspect_model_gives_api_model_id_not_canonical_id ... ok [INFO] [stdout] test regression_wave4_5::tool_definition_serialization_roundtrip ... ok [INFO] [stdout] test regression_wave4_5::validate_base_url_https_ok ... ok [INFO] [stdout] test regression_wave4_5::validate_base_url_no_host_rejected ... ok [INFO] [stdout] test regression_wave4_5::validate_base_url_no_scheme_rejected ... ok [INFO] [stdout] test regression_wave4_5::validate_base_url_localhost_ok ... ok [INFO] [stdout] test unknown_model::test_permissive_fallback_deepseek_model ... ok [INFO] [stdout] test unknown_model::test_inspect_model_gemini_model ... ok [INFO] [stdout] test unknown_model::test_inspect_model_provider_model_format ... ok [INFO] [stdout] test unknown_model::test_unknown_model_no_provider_prefix_fails ... ok [INFO] [stdout] test unknown_model::test_permissive_resolved_model_fields ... ok [INFO] [stdout] test unknown_model::test_permissive_fallback_openai_model ... ok [INFO] [stdout] test unknown_model::test_unknown_provider_prefix_fails ... ok [INFO] [stdout] test unknown_model::test_permissive_resolved_model_usable_in_chat_request ... ok [INFO] [stdout] test chat_mock::test_chat_with_tool_call_streaming ... ok [INFO] [stdout] test chat_mock::test_chat_basic_streaming ... ok [INFO] [stdout] test chat_mock::test_chat_http_error_classification ... ok [INFO] [stdout] test chat_mock::test_chat_empty_stream_yields_no_tokens ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 175 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.22s [INFO] [stdout] [INFO] [stderr] Running tests/transport_dispatcher_characterization.rs (/opt/rustwide/target/debug/deps/transport_dispatcher_characterization-e7ea4d082ce56364) [INFO] [stdout] [INFO] [stdout] running 29 tests [INFO] [stdout] test anthropic_dispatch_adapter::normalize_request_temperature_handling ... ok [INFO] [stdout] test anthropic_dispatch_adapter::normalize_request_defaults_max_tokens_to_4096 ... ok [INFO] [stdout] test anthropic_dispatch_adapter::denormalize_response_stop_reason_mapping ... ok [INFO] [stdout] test anthropic_dispatch_adapter::normalize_request_extracts_system_to_top_level ... ok [INFO] [stdout] test anthropic_dispatch_adapter::denormalize_response_text_content ... ok [INFO] [stdout] test chat_completions_via_dispatcher::normalize_preserves_all_message_roles ... ok [INFO] [stdout] test anthropic_dispatch_adapter::denormalize_response_tool_use ... ok [INFO] [stdout] test anthropic_dispatch_adapter::normalize_request_then_denormalize_response_roundtrip ... ok [INFO] [stdout] test dispatch_for_resolved::custom_protocol_resolved_model_returns_none ... ok [INFO] [stdout] test dispatch_for_resolved::codex_responses_resolved_model_returns_none ... ok [INFO] [stdout] test dispatch_routing::anthropic_messages_returns_anthropic_dispatch_transport ... ok [INFO] [stdout] test chat_completions_via_dispatcher::denormalize_text_response_with_usage_and_model ... ok [INFO] [stdout] test dispatch_routing::gemini_returns_gemini_transport ... ok [INFO] [stdout] test chat_completions_via_dispatcher::roundtrip_normalize_then_denormalize ... ok [INFO] [stdout] test dispatch_for_resolved::gemini_resolved_model ... ok [INFO] [stdout] test dispatch_routing::openai_chat_returns_chat_completions_transport ... ok [INFO] [stdout] test dispatcher_construction::default_same_as_new ... ok [INFO] [stdout] test dispatcher_construction::new_registers_three_protocols ... ok [INFO] [stdout] test dispatcher_construction::register_adds_and_replaces ... ok [INFO] [stdout] test gemini_via_dispatcher::denormalize_text_response_with_usage ... ok [INFO] [stdout] test gemini_via_dispatcher::finish_reason_mapping ... ok [INFO] [stdout] test gemini_via_dispatcher::normalize_extracts_system_and_maps_roles ... ok [INFO] [stdout] test gemini_via_dispatcher::roundtrip_with_tools ... ok [INFO] [stdout] test unregistered_protocols::codex_responses_not_registered ... ok [INFO] [stdout] test unregistered_protocols::custom_protocol_not_registered ... ok [INFO] [stdout] test dispatch_for_resolved::anthropic_messages_resolved_model ... ok [INFO] [stdout] test dispatch_for_resolved::openai_chat_resolved_model ... ok [INFO] [stdout] test anthropic_dispatch_adapter::normalize_request_normalizes_tools_with_input_schema ... ok [INFO] [stdout] test anthropic_dispatch_adapter::normalize_request_stream_flag ... ok [INFO] [stderr] Running tests/transport_integration.rs (/opt/rustwide/target/debug/deps/transport_integration-5c60a194ad172efa) [INFO] [stdout] [INFO] [stdout] test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 36 tests [INFO] [stdout] test anthropic::denormalize_stream_chunk_returns_empty_vec ... ok [INFO] [stdout] test anthropic::normalize_messages_with_tool_result ... ok [INFO] [stdout] test anthropic::normalize_messages_with_tool_use_content_blocks ... ok [INFO] [stdout] test anthropic::normalize_tools_uses_input_schema ... ok [INFO] [stdout] test anthropic::normalize_messages_with_system_extraction ... ok [INFO] [stdout] test anthropic::denormalize_response_text_content ... ok [INFO] [stdout] test anthropic::full_pipeline_anthropic_roundtrip ... ok [INFO] [stdout] test anthropic::denormalize_response_tool_use_content ... ok [INFO] [stdout] test cross_transport::all_format_transports_normalize_without_error ... ok [INFO] [stdout] test cross_transport::all_transports_denormalize_tool_call_response ... ok [INFO] [stdout] test cross_transport::same_user_message_across_all_transports ... ok [INFO] [stdout] test dispatcher::dispatch_unregistered_protocol_returns_none ... ok [INFO] [stdout] test dispatcher::dispatch_protocol_returns_correct_transport ... ok [INFO] [stdout] test dispatcher::dispatch_for_resolved_returns_correct_transport ... ok [INFO] [stdout] test cross_transport::all_transports_denormalize_text_response ... ok [INFO] [stdout] test gemini::denormalize_stream_chunk_with_finish_and_usage ... ok [INFO] [stdout] test dispatcher::dispatcher_gemini_normalize_denormalize ... ok [INFO] [stdout] test dispatcher::register_custom_transport_and_dispatch ... ok [INFO] [stdout] test dispatcher::dispatcher_anthropic_normalize_denormalize ... ok [INFO] [stdout] test gemini::denormalize_response_function_call_candidate ... ok [INFO] [stdout] test gemini::denormalize_stream_chunk_text ... ok [INFO] [stdout] test dispatcher::dispatcher_chat_completions_normalize_denormalize ... ok [INFO] [stdout] test gemini::denormalize_response_text_candidate ... ok [INFO] [stdout] test gemini::normalize_messages_with_function_call_parts ... ok [INFO] [stdout] test gemini::normalize_messages_with_function_response_parts ... ok [INFO] [stdout] test gemini::full_pipeline_gemini_roundtrip ... ok [INFO] [stdout] test gemini::normalize_messages_with_system_instruction_extraction ... ok [INFO] [stdout] test gemini::normalize_tools_gemini_format ... ok [INFO] [stderr] Doc-tests lattice [INFO] [stdout] test openai_chat_completions::denormalize_stream_chunk_content_delta ... ok [INFO] [stdout] test openai_chat_completions::denormalize_stream_chunk_done ... ok [INFO] [stdout] test openai_chat_completions::denormalize_response_content_only ... ok [INFO] [stdout] test openai_chat_completions::full_pipeline_roundtrip ... ok [INFO] [stdout] test openai_chat_completions::denormalize_stream_chunk_tool_call_delta ... ok [INFO] [stdout] test openai_chat_completions::denormalize_response_tool_calls ... ok [INFO] [stdout] test openai_chat_completions::normalize_tools_with_function_definitions ... ok [INFO] [stdout] test openai_chat_completions::normalize_messages_with_all_roles ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 36 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test lattice/src/agent/mod.rs - agent::Agent (line 95) ... ignored [INFO] [stdout] test lattice/src/core/transport/dispatcher.rs - core::transport::dispatcher::create_transport (line 38) ... ignored [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "08692554c546cf5ce0be07edba7a24ba4476e74290856f9baf7a9b5decb9b6d5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "08692554c546cf5ce0be07edba7a24ba4476e74290856f9baf7a9b5decb9b6d5", kill_on_drop: false }` [INFO] [stdout] 08692554c546cf5ce0be07edba7a24ba4476e74290856f9baf7a9b5decb9b6d5