[INFO] fetching crate every-other-token 4.1.2... [INFO] testing every-other-token-4.1.2 against master#562dee4820c458d823175268e41601d4c060588a for pr-154210-1 [INFO] extracting crate every-other-token 4.1.2 into /workspace/builds/worker-3-tc1/source [INFO] started tweaking crates.io crate every-other-token 4.1.2 [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate every-other-token 4.1.2 [INFO] tweaked toml for crates.io crate every-other-token 4.1.2 written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate every-other-token 4.1.2 on toolchain 562dee4820c458d823175268e41601d4c060588a [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate every-other-token 4.1.2 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded uuid v1.21.0 [INFO] [stderr] Downloaded wasm-bindgen-macro v0.2.110 [INFO] [stderr] Downloaded wasm-bindgen-shared v0.2.110 [INFO] [stderr] Downloaded wasm-bindgen-futures v0.4.60 [INFO] [stderr] Downloaded wasm-bindgen-macro-support v0.2.110 [INFO] [stderr] Downloaded wasm-bindgen v0.2.110 [INFO] [stderr] Downloaded clap_complete v4.6.0 [INFO] [stderr] Downloaded js-sys v0.3.87 [INFO] [stderr] Downloaded rusqlite v0.31.0 [INFO] [stderr] Downloaded redis v0.26.1 [INFO] [stderr] Downloaded web-sys v0.3.87 [INFO] [stderr] Downloaded libsqlite3-sys v0.28.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/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" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 0981622ec8dd9cbf13ae2b595f51c12c43e26ef0ea356d74882dfba3709a11bb [INFO] running `Command { std: "docker" "start" "-a" "0981622ec8dd9cbf13ae2b595f51c12c43e26ef0ea356d74882dfba3709a11bb", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "0981622ec8dd9cbf13ae2b595f51c12c43e26ef0ea356d74882dfba3709a11bb", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0981622ec8dd9cbf13ae2b595f51c12c43e26ef0ea356d74882dfba3709a11bb", kill_on_drop: false }` [INFO] [stdout] 0981622ec8dd9cbf13ae2b595f51c12c43e26ef0ea356d74882dfba3709a11bb [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/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" "+562dee4820c458d823175268e41601d4c060588a" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 69b9ba364d7ee2732509271c9d4ec2be66020c2b8ba4c54814a764b8d7ca6eb9 [INFO] running `Command { std: "docker" "start" "-a" "69b9ba364d7ee2732509271c9d4ec2be66020c2b8ba4c54814a764b8d7ca6eb9", kill_on_drop: false }` [INFO] [stderr] Compiling quote v1.0.44 [INFO] [stderr] Compiling libc v0.2.182 [INFO] [stderr] Compiling cc v1.2.56 [INFO] [stderr] Compiling zerocopy v0.8.39 [INFO] [stderr] Compiling http v1.4.0 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling native-tls v0.2.18 [INFO] [stderr] Compiling anstyle-parse v0.2.7 [INFO] [stderr] Compiling futures-channel v0.3.32 [INFO] [stderr] Compiling anstyle v1.0.13 [INFO] [stderr] Compiling openssl-probe v0.2.1 [INFO] [stderr] Compiling colorchoice v1.0.4 [INFO] [stderr] Compiling getrandom v0.4.1 [INFO] [stderr] Compiling clap_lex v1.0.0 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling data-encoding v2.10.0 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling fallible-streaming-iterator v0.1.9 [INFO] [stderr] Compiling fallible-iterator v0.3.0 [INFO] [stderr] Compiling every-other-token v4.1.2 (/opt/rustwide/workdir) [INFO] [stderr] Compiling colored v2.2.0 [INFO] [stderr] Compiling subtle v2.6.1 [INFO] [stderr] Compiling anstream v0.6.21 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling clap_builder v4.5.60 [INFO] [stderr] Compiling http-body v1.0.1 [INFO] [stderr] Compiling http-body-util v0.1.3 [INFO] [stderr] Compiling openssl-sys v0.9.111 [INFO] [stderr] Compiling libsqlite3-sys v0.28.0 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling socket2 v0.6.2 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling uuid v1.21.0 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling openssl v0.10.75 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Compiling hashbrown v0.14.5 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling rand v0.8.5 [INFO] [stderr] Compiling hashlink v0.9.1 [INFO] [stderr] Compiling zerovec-derive v0.11.2 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling futures-macro v0.3.32 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling clap_derive v4.5.55 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling tokio v1.49.0 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling zerofrom v0.1.6 [INFO] [stderr] Compiling yoke v0.8.1 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling zerotrie v0.2.3 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling clap v4.5.60 [INFO] [stderr] Compiling zerovec v0.11.5 [INFO] [stderr] Compiling clap_complete v4.6.0 [INFO] [stderr] Compiling tinystr v0.8.2 [INFO] [stderr] Compiling potential_utf v0.1.4 [INFO] [stderr] Compiling icu_locale_core v2.1.1 [INFO] [stderr] Compiling icu_collections v2.1.1 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling icu_provider v2.1.1 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling icu_normalizer v2.1.1 [INFO] [stderr] Compiling icu_properties v2.1.2 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling tungstenite v0.21.0 [INFO] [stderr] Compiling toml v0.8.23 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling tokio-native-tls v0.3.1 [INFO] [stderr] Compiling tokio-stream v0.1.18 [INFO] [stderr] Compiling tokio-tungstenite v0.21.0 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling rusqlite v0.31.0 [INFO] [stderr] Compiling h2 v0.4.13 [INFO] [stderr] Compiling hyper v1.8.1 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling hyper-tls v0.6.0 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stdout] warning: field `provider` is never read [INFO] [stdout] --> src/web.rs:921:17 [INFO] [stdout] | [INFO] [stdout] 916 | struct BatchRequest { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 921 | provider: String, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 07s [INFO] running `Command { std: "docker" "inspect" "69b9ba364d7ee2732509271c9d4ec2be66020c2b8ba4c54814a764b8d7ca6eb9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "69b9ba364d7ee2732509271c9d4ec2be66020c2b8ba4c54814a764b8d7ca6eb9", kill_on_drop: false }` [INFO] [stdout] 69b9ba364d7ee2732509271c9d4ec2be66020c2b8ba4c54814a764b8d7ca6eb9 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/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" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] b0f05f173687d10e07e6e8398be783740ecbe3ff8275bde5a3a6fa41ddc8cea2 [INFO] running `Command { std: "docker" "start" "-a" "b0f05f173687d10e07e6e8398be783740ecbe3ff8275bde5a3a6fa41ddc8cea2", kill_on_drop: false }` [INFO] [stderr] Compiling tokio v1.49.0 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling openssl v0.10.75 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling semver v1.0.27 [INFO] [stderr] Compiling rustix v1.1.3 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling linux-raw-sys v0.11.0 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling rusqlite v0.31.0 [INFO] [stderr] Compiling wait-timeout v0.2.1 [INFO] [stderr] Compiling bit-vec v0.8.0 [INFO] [stderr] Compiling quick-error v1.2.3 [INFO] [stderr] Compiling relative-path v1.9.3 [INFO] [stderr] Compiling glob v0.3.3 [INFO] [stderr] Compiling rand_core v0.9.5 [INFO] [stderr] Compiling rustc_version v0.4.1 [INFO] [stderr] Compiling bit-set v0.8.0 [INFO] [stderr] Compiling futures-timer v3.0.3 [INFO] [stderr] Compiling unarray v0.1.4 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling rand_xorshift v0.4.0 [INFO] [stderr] Compiling rand v0.9.2 [INFO] [stderr] Compiling rstest_macros v0.18.2 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling tempfile v3.25.0 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling rusty-fork v0.3.1 [INFO] [stderr] Compiling proptest v1.10.0 [INFO] [stderr] Compiling native-tls v0.2.18 [INFO] [stderr] Compiling futures-executor v0.3.32 [INFO] [stderr] Compiling futures v0.3.32 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling tokio-native-tls v0.3.1 [INFO] [stderr] Compiling tokio-stream v0.1.18 [INFO] [stderr] Compiling tokio-tungstenite v0.21.0 [INFO] [stderr] Compiling tokio-test v0.4.5 [INFO] [stderr] Compiling h2 v0.4.13 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling rstest v0.18.2 [INFO] [stderr] Compiling hyper v1.8.1 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling hyper-tls v0.6.0 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling every-other-token v4.1.2 (/opt/rustwide/workdir) [INFO] [stdout] warning: field `provider` is never read [INFO] [stdout] --> src/web.rs:921:17 [INFO] [stdout] | [INFO] [stdout] 916 | struct BatchRequest { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 921 | provider: String, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `provider` is never read [INFO] [stdout] --> src/web.rs:921:17 [INFO] [stdout] | [INFO] [stdout] 916 | struct BatchRequest { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 921 | provider: String, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 49.00s [INFO] running `Command { std: "docker" "inspect" "b0f05f173687d10e07e6e8398be783740ecbe3ff8275bde5a3a6fa41ddc8cea2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b0f05f173687d10e07e6e8398be783740ecbe3ff8275bde5a3a6fa41ddc8cea2", kill_on_drop: false }` [INFO] [stdout] b0f05f173687d10e07e6e8398be783740ecbe3ff8275bde5a3a6fa41ddc8cea2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/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" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] ce22c4dcd7fd5da8970c5e17fb0aff8af67394d8ee736d5e4fb14dfc6a786bab [INFO] running `Command { std: "docker" "start" "-a" "ce22c4dcd7fd5da8970c5e17fb0aff8af67394d8ee736d5e4fb14dfc6a786bab", kill_on_drop: false }` [INFO] [stderr] warning: field `provider` is never read [INFO] [stderr] --> src/web.rs:921:17 [INFO] [stderr] | [INFO] [stderr] 916 | struct BatchRequest { [INFO] [stderr] | ------------ field in this struct [INFO] [stderr] ... [INFO] [stderr] 921 | provider: String, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: `every-other-token` (lib) generated 1 warning [INFO] [stderr] warning: `every-other-token` (lib test) generated 1 warning (1 duplicate) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.41s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/every_other_token-907bb87241a1f8f0) [INFO] [stdout] [INFO] [stdout] running 695 tests [INFO] [stdout] test cli::tests::test_apply_template_multiple_placeholders ... ok [INFO] [stdout] test cli::tests::test_apply_template_no_placeholder ... ok [INFO] [stdout] test cli::tests::test_apply_template_prompt_with_placeholder_not_reexpanded ... ok [INFO] [stdout] test cli::tests::test_args_custom_port ... ok [INFO] [stdout] test cli::tests::test_args_dry_run_flag ... ok [INFO] [stdout] test cli::tests::test_args_collapse_window ... ok [INFO] [stdout] test cli::tests::test_args_format_jsonl ... ok [INFO] [stdout] test cli::tests::test_args_max_retries_custom ... ok [INFO] [stdout] test cli::tests::test_args_max_retries_zero ... ok [INFO] [stdout] test cli::tests::test_args_max_retries_default ... ok [INFO] [stdout] test cli::tests::test_args_orchestrator_url_default ... ok [INFO] [stdout] test cli::tests::test_apply_template_with_placeholder ... ok [INFO] [stdout] test cli::tests::test_args_orchestrator_url_custom ... ok [INFO] [stdout] test cli::tests::test_args_min_confidence ... ok [INFO] [stdout] test cli::tests::test_args_output_default_none ... ok [INFO] [stdout] test cli::tests::test_args_parse_minimal ... ok [INFO] [stdout] test cli::tests::test_args_parse_full ... ok [INFO] [stdout] test cli::tests::test_args_parse_research_custom_output ... ok [INFO] [stdout] test cli::tests::test_args_parse_research_custom_runs ... ok [INFO] [stdout] test cli::tests::test_args_output_custom ... ok [INFO] [stdout] test cli::tests::test_args_default_port ... ok [INFO] [stdout] test cli::tests::test_args_research_with_runs_and_output ... ok [INFO] [stdout] test cli::tests::test_args_parse_system_b ... ok [INFO] [stdout] test cli::tests::test_args_parse_research_flag ... ok [INFO] [stdout] test cli::tests::test_args_parse_provider_openai ... ok [INFO] [stdout] test cli::tests::test_args_research_does_not_require_web ... ok [INFO] [stdout] test cli::tests::test_args_research_flag_default_false ... ok [INFO] [stdout] test cli::tests::test_args_runs_custom ... ok [INFO] [stdout] test cli::tests::test_args_runs_default_one ... ok [INFO] [stdout] test cli::tests::test_args_system_prompt_default_none ... ok [INFO] [stdout] test cli::tests::test_args_parse_system_a ... ok [INFO] [stdout] test cli::tests::test_args_parse_provider_anthropic ... ok [INFO] [stdout] test cli::tests::test_known_anthropic_models_contain_sonnet ... ok [INFO] [stdout] test cli::tests::test_known_anthropic_models_nonempty ... ok [INFO] [stdout] test cli::tests::test_json_schema_flag_outputs_valid_json ... ok [INFO] [stdout] test cli::tests::test_args_timeout_zero_disables ... ok [INFO] [stdout] test cli::tests::test_export_timeseries_flag_set ... ok [INFO] [stdout] test cli::tests::test_known_openai_models_contain_gpt4 ... ok [INFO] [stdout] test cli::tests::test_args_system_prompt_set ... ok [INFO] [stdout] test cli::tests::test_parse_rate_range_no_separator_returns_none ... ok [INFO] [stdout] test cli::tests::test_args_parse_short_visual ... ok [INFO] [stdout] test cli::tests::test_parse_rate_range_scientific_notation ... ok [INFO] [stdout] test cli::tests::test_parse_rate_range_valid ... ok [INFO] [stdout] test cli::tests::test_record_path_unwritable_detected ... ok [INFO] [stdout] test cli::tests::test_known_openai_models_nonempty ... ok [INFO] [stdout] test cli::tests::test_resolve_model_anthropic_default_swap ... ok [INFO] [stdout] test cli::tests::test_list_models_openai_includes_gpt4 ... ok [INFO] [stdout] test cli::tests::test_args_timeout_default ... ok [INFO] [stdout] test cli::tests::test_parse_rate_range_min_greater_than_max ... ok [INFO] [stdout] test cli::tests::test_list_models_flag_accepts_openai ... ok [INFO] [stdout] test cli::tests::test_export_timeseries_flag_default_none ... ok [INFO] [stdout] test cli::tests::test_parse_rate_range_invalid ... ok [INFO] [stdout] test cli::tests::test_parse_rate_range_equal ... ok [INFO] [stdout] test cli::tests::test_resolve_model_anthropic_explicit_model_kept ... ok [INFO] [stdout] test cli::tests::test_validate_model_known_anthropic_no_warn ... ok [INFO] [stdout] test collab::tests::test_add_chat_nonexistent_room_is_noop ... ok [INFO] [stdout] test collab::tests::test_apply_surgery_appends_to_log ... ok [INFO] [stdout] test collab::tests::test_add_chat_stores_correct_text ... ok [INFO] [stdout] test cli::tests::test_validate_model_mock_always_silent ... ok [INFO] [stdout] test cli::tests::test_validate_model_known_openai_no_warn ... ok [INFO] [stdout] test collab::tests::test_apply_surgery_multiple_edits_all_stored ... ok [INFO] [stdout] test cli::tests::test_args_timeout_custom ... ok [INFO] [stdout] test cli::tests::test_args_research_flag_set ... ok [INFO] [stdout] test cli::tests::test_list_models_flag_accepts_all ... ok [INFO] [stdout] test collab::tests::test_chat_message_null_token_index_serializes ... ok [INFO] [stdout] test collab::tests::test_chat_message_roundtrip ... ok [INFO] [stdout] test cli::tests::test_validate_model_unknown_does_not_panic ... ok [INFO] [stdout] test collab::tests::test_add_chat_appends_to_log ... ok [INFO] [stdout] test collab::tests::test_broadcast_token_reaches_subscriber ... ok [INFO] [stdout] test collab::tests::test_broadcast_to_empty_room_no_panic ... ok [INFO] [stdout] test cli::tests::test_resolve_model_openai_default_kept ... ok [INFO] [stdout] test collab::tests::test_broadcast_to_nonexistent_room_is_noop ... ok [INFO] [stdout] test collab::tests::test_broadcast_to_existing_room_sends_to_subscriber ... ok [INFO] [stdout] test collab::tests::test_broadcast_token_also_records_when_active ... ok [INFO] [stdout] test collab::tests::test_apply_surgery_stores_correct_fields ... ok [INFO] [stdout] test collab::tests::test_apply_surgery_nonexistent_room_is_noop ... ok [INFO] [stdout] test cli::tests::test_resolve_model_openai_explicit_model_kept ... ok [INFO] [stdout] test collab::tests::test_add_chat_multiple_messages ... ok [INFO] [stdout] test cli::tests::test_validate_config_flag_exists ... ok [INFO] [stdout] test collab::tests::test_chat_message_serializes ... ok [INFO] [stdout] test collab::tests::test_create_room_code_is_uppercase_alphanumeric ... ok [INFO] [stdout] test collab::tests::test_create_room_inserts_into_store ... ok [INFO] [stdout] test collab::tests::test_evict_idle_rooms_keeps_active_room ... ok [INFO] [stdout] test collab::tests::test_create_room_starts_with_empty_logs ... ok [INFO] [stdout] test collab::tests::test_evict_idle_rooms_is_pub ... ok [INFO] [stdout] test collab::tests::test_create_room_starts_with_empty_participants ... ok [INFO] [stdout] test collab::tests::test_generate_code_all_uppercase ... ok [INFO] [stdout] test collab::tests::test_evict_idle_rooms_mixed ... ok [INFO] [stdout] test collab::tests::test_generate_code_adjective_from_list ... ok [INFO] [stdout] test collab::tests::test_evict_idle_rooms_removes_stale ... ok [INFO] [stdout] test collab::tests::test_create_multiple_rooms_all_stored ... ok [INFO] [stdout] test collab::tests::test_generate_code_all_uppercase_alphanumeric ... ok [INFO] [stdout] test collab::tests::test_evict_idle_rooms_keeps_active ... ok [INFO] [stdout] test collab::tests::test_evict_idle_rooms_empty_store_is_noop ... ok [INFO] [stdout] test collab::tests::test_evict_idle_rooms_removes_stale_room ... ok [INFO] [stdout] test collab::tests::test_full_session_lifecycle ... ok [INFO] [stdout] test collab::tests::test_create_room_returns_meaningful_code ... ok [INFO] [stdout] test collab::tests::test_create_room_starts_not_recording ... ok [INFO] [stdout] test collab::tests::test_concurrent_room_creation ... ok [INFO] [stdout] test collab::tests::test_generate_code_length_is_reasonable ... ok [INFO] [stdout] test collab::tests::test_generate_code_has_hyphen_format ... ok [INFO] [stdout] test collab::tests::test_join_room_error_on_nonexistent_code ... ok [INFO] [stdout] test collab::tests::test_join_room_assigns_unique_ids ... ok [INFO] [stdout] test collab::tests::test_generate_code_noun_from_list ... ok [INFO] [stdout] test collab::tests::test_join_room_guest_does_not_override_host_id ... ok [INFO] [stdout] test collab::tests::test_leave_room_nonexistent_code_returns_none ... ok [INFO] [stdout] test collab::tests::test_join_room_participant_added ... ok [INFO] [stdout] test collab::tests::test_generate_code_no_lowercase ... ok [INFO] [stdout] test collab::tests::test_leave_room_only_removes_matching_participant ... ok [INFO] [stdout] test collab::tests::test_leave_room_returns_broadcast_sender ... ok [INFO] [stdout] test collab::tests::test_join_room_joined_at_ms_is_plausible ... ok [INFO] [stdout] test collab::tests::test_generate_code_no_collision_at_small_scale ... ok [INFO] [stdout] test collab::tests::test_generate_code_uniqueness_across_calls ... ok [INFO] [stdout] test collab::tests::test_lag_warning_message_format ... ok [INFO] [stdout] test collab::tests::test_leave_room_nonexistent_participant_returns_none ... ok [INFO] [stdout] test collab::tests::test_maybe_record_appends_event_when_recording ... ok [INFO] [stdout] test collab::tests::test_leave_room_removes_participant ... ok [INFO] [stdout] test collab::tests::test_maybe_record_cap_exceeded_broadcasts_truncated_warning ... ok [INFO] [stdout] test collab::tests::test_maybe_record_chat_and_token_interleaved ... ok [INFO] [stdout] test collab::tests::test_maybe_record_does_nothing_when_not_recording ... ok [INFO] [stdout] test collab::tests::test_maybe_record_multiple_events_ordered ... ok [INFO] [stdout] test collab::tests::test_maybe_record_nonexistent_room_is_noop ... ok [INFO] [stdout] test collab::tests::test_join_room_colors_cycle_through_palette ... ok [INFO] [stdout] test collab::tests::test_maybe_record_sets_offset_ms ... ok [INFO] [stdout] test collab::tests::test_maybe_record_stores_payload ... ok [INFO] [stdout] test collab::tests::test_join_room_host_sets_host_id ... ok [INFO] [stdout] test collab::tests::test_join_room_multiple_participants ... ok [INFO] [stdout] test collab::tests::test_multiple_rooms_record_independently ... ok [INFO] [stdout] test collab::tests::test_maybe_record_cap_enforced ... ok [INFO] [stdout] test collab::tests::test_new_room_store_is_empty ... ok [INFO] [stdout] test collab::tests::test_now_ms_monotonic ... ok [INFO] [stdout] test collab::tests::test_join_room_host_flag_set_correctly ... ok [INFO] [stdout] test collab::tests::test_now_ms_nonzero ... ok [INFO] [stdout] test collab::tests::test_now_ms_plausible_epoch ... ok [INFO] [stdout] test collab::tests::test_participant_roundtrip ... ok [INFO] [stdout] test collab::tests::test_participant_serializes_all_fields ... ok [INFO] [stdout] test collab::tests::test_participant_colors_are_hex ... ok [INFO] [stdout] test collab::tests::test_recorded_event_serializes ... ok [INFO] [stdout] test collab::tests::test_participant_colors_are_unique ... ok [INFO] [stdout] test collab::tests::test_record_token_not_recorded_when_not_active ... ok [INFO] [stdout] test collab::tests::test_recording_cap_enforced ... ok [INFO] [stdout] test collab::tests::test_participant_colors_count ... ok [INFO] [stdout] test collab::tests::test_recording_full_lifecycle ... ok [INFO] [stdout] test collab::tests::test_recording_offset_ms_is_non_decreasing ... ok [INFO] [stdout] test collab::tests::test_room_state_snapshot_reflects_participants ... ok [INFO] [stdout] test collab::tests::test_start_recording_sets_start_time ... ok [INFO] [stdout] test collab::tests::test_room_state_snapshot_returns_code ... ok [INFO] [stdout] test collab::tests::test_start_recording_sets_flag ... ok [INFO] [stdout] test collab::tests::test_room_state_snapshot_has_all_keys ... ok [INFO] [stdout] test collab::tests::test_stop_recording_clears_flag ... ok [INFO] [stdout] test collab::tests::test_room_state_snapshot_nonexistent_returns_null ... ok [INFO] [stdout] test collab::tests::test_stop_recording_nonexistent_room_returns_empty ... ok [INFO] [stdout] test collab::tests::test_surgery_edit_roundtrip ... ok [INFO] [stdout] test collab::tests::test_stop_recording_returns_recorded_events ... ok [INFO] [stdout] test collab::tests::test_surgery_edit_serializes ... ok [INFO] [stdout] test collab::tests::test_truncate_utf8_ascii_unchanged ... ok [INFO] [stdout] test collab::tests::test_token_broadcast_increments_room_count_independently ... ok [INFO] [stdout] test collab::tests::test_stream_done_broadcast_reaches_subscriber ... ok [INFO] [stdout] test collab::tests::test_stop_recording_drains_events_from_store ... ok [INFO] [stdout] test collab::tests::test_recording_cap_default_is_ten_thousand ... ok [INFO] [stdout] test collab::tests::test_truncate_utf8_ascii_truncated ... ok [INFO] [stdout] test collab::tests::test_truncate_utf8_exact_limit ... ok [INFO] [stdout] test collab::tests::test_truncate_utf8_multibyte_no_panic ... ok [INFO] [stdout] test collab::tests::test_truncate_utf8_multibyte_boundary_aligned ... ok [INFO] [stdout] test collab::tests::test_vote_invalid_dir_does_not_change_counts ... ok [INFO] [stdout] test collab::tests::test_vote_nonexistent_room_returns_none ... ok [INFO] [stdout] test collab::tests::test_vote_down_increments_downvotes ... ok [INFO] [stdout] test collab::tests::test_ws_msg_malformed_json_ignored ... ok [INFO] [stdout] test collab::tests::test_vote_up_increments_upvotes ... ok [INFO] [stdout] test collab::tests::test_vote_multiple_up_accumulates ... ok [INFO] [stdout] test collab::tests::test_ws_msg_unknown_type_ignored ... ok [INFO] [stdout] test config::tests::test_default_config_all_none ... ok [INFO] [stdout] test collab::tests::test_recorded_event_roundtrip ... ok [INFO] [stdout] test collab::tests::test_start_recording_clears_previous_events ... ok [INFO] [stdout] test collab::tests::test_vote_different_transforms_independent ... ok [INFO] [stdout] test config::tests::test_load_file_missing_returns_default ... ok [INFO] [stdout] test collab::tests::test_vote_mixed_up_and_down ... ok [INFO] [stdout] test config::tests::test_load_does_not_panic_without_config_files ... ok [INFO] [stdout] test config::tests::test_merge_all_fields ... ok [INFO] [stdout] test config::tests::test_merge_does_not_overwrite_with_none ... ok [INFO] [stdout] test collab::tests::test_vote_saturation_at_u32_max_does_not_panic ... ok [INFO] [stdout] test config::tests::test_home_dir_no_panic ... ok [INFO] [stdout] test error::tests::test_api_key_missing_message ... ok [INFO] [stdout] test error::tests::test_debug_format ... ok [INFO] [stdout] test error::tests::test_invalid_transform_message ... ok [INFO] [stdout] test error::tests::test_from_string ... ok [INFO] [stdout] test error::tests::test_json_error_wraps ... ok [INFO] [stdout] test error::tests::test_other_wraps_string ... ok [INFO] [stdout] test config::tests::test_merge_local_wins_over_home ... ok [INFO] [stdout] test error::tests::test_provider_json_message ... ok [INFO] [stdout] test error::tests::test_io_error_wraps ... ok [INFO] [stdout] test error::tests::test_provider_http_message ... ok [INFO] [stdout] test providers::tests::test_anthropic_content_block_delta_deserializes ... ok [INFO] [stdout] test providers::tests::test_anthropic_event_message_delta ... ok [INFO] [stdout] test providers::tests::test_anthropic_api_version_format ... ok [INFO] [stdout] test config::tests::test_merge_overwrites_none_fields ... ok [INFO] [stdout] test providers::tests::test_anthropic_plugin_api_url_contains_anthropic ... ok [INFO] [stdout] test providers::tests::test_anthropic_event_ping ... ok [INFO] [stdout] test providers::tests::test_anthropic_api_version_nonempty ... ok [INFO] [stdout] test providers::tests::test_anthropic_plugin_api_url_https ... ok [INFO] [stdout] test providers::tests::test_anthropic_message_start_deserializes ... ok [INFO] [stdout] test providers::tests::test_anthropic_plugin_default_model_nonempty ... ok [INFO] [stdout] test providers::tests::test_anthropic_plugin_name_matches_display ... ok [INFO] [stdout] test providers::tests::test_anthropic_request_with_system_serializes ... ok [INFO] [stdout] test providers::tests::test_anthropic_request_without_system_omits_field ... ok [INFO] [stdout] test providers::tests::test_mcp_infer_request_contains_all_fields ... ok [INFO] [stdout] test providers::tests::test_mcp_response_empty_content ... ok [INFO] [stdout] test providers::tests::test_mcp_request_serializes ... ok [INFO] [stdout] test providers::tests::test_mcp_response_deserializes_success ... ok [INFO] [stdout] test providers::tests::test_mcp_response_deserializes_error ... ok [INFO] [stdout] test providers::tests::test_mcp_response_null_text ... ok [INFO] [stdout] test providers::tests::test_openai_chunk_deserializes ... ok [INFO] [stdout] test providers::tests::test_openai_chat_request_has_logprobs_fields ... ok [INFO] [stdout] test providers::tests::test_openai_chunk_empty_delta ... ok [INFO] [stdout] test providers::tests::test_openai_choice_with_logprobs_deserializes ... ok [INFO] [stdout] test providers::tests::test_openai_choice_without_logprobs_is_none ... ok [INFO] [stdout] test providers::tests::test_openai_chunk_logprobs_empty_content ... ok [INFO] [stdout] test providers::tests::test_openai_chunk_multiple_choices ... ok [INFO] [stdout] test providers::tests::test_openai_chunk_no_choices ... ok [INFO] [stdout] test providers::tests::test_openai_logprob_content_deserializes ... ok [INFO] [stdout] test providers::tests::test_openai_logprob_content_no_top_logprobs ... ok [INFO] [stdout] test providers::tests::test_openai_plugin_api_url_contains_openai ... ok [INFO] [stdout] test providers::tests::test_openai_plugin_api_url_https ... ok [INFO] [stdout] test providers::tests::test_openai_plugin_name_matches_display ... ok [INFO] [stdout] test providers::tests::test_openai_top_logprob_serializes ... ok [INFO] [stdout] test providers::tests::test_openai_top_logprob_deserializes ... ok [INFO] [stdout] test providers::tests::test_openai_top_logprob_clone ... ok [INFO] [stdout] test providers::tests::test_openai_plugin_default_model_nonempty ... ok [INFO] [stdout] test providers::tests::test_provider_anthropic_display_lowercase ... ok [INFO] [stdout] test providers::tests::test_provider_display ... ok [INFO] [stdout] test providers::tests::test_provider_equality ... ok [INFO] [stdout] test config::tests::test_load_file_rate_negative_clamped_to_zero ... ok [INFO] [stdout] test providers::tests::test_provider_clone ... ok [INFO] [stdout] test providers::tests::test_provider_openai_display_lowercase ... ok [INFO] [stdout] test render::tests::test_confidence_band_boundary_exact_04 ... ok [INFO] [stdout] test collab::tests::test_room_not_found_returns_none ... ok [INFO] [stdout] test config::tests::test_load_file_invalid_toml_returns_default ... ok [INFO] [stdout] test render::tests::test_confidence_band_boundary_exact_07 ... ok [INFO] [stdout] test render::tests::test_confidence_band_high ... ok [INFO] [stdout] test render::tests::test_confidence_band_indicators_distinct ... ok [INFO] [stdout] test render::tests::test_confidence_band_mid ... ok [INFO] [stdout] test render::tests::test_format_visual_high_perplexity_shown ... ok [INFO] [stdout] test render::tests::test_confidence_band_low ... ok [INFO] [stdout] test render::tests::test_format_visual_low_perplexity_hidden ... ok [INFO] [stdout] test render::tests::test_heat_colorize_returns_text ... ok [INFO] [stdout] test render::tests::test_format_visual_with_confidence ... ok [INFO] [stdout] test render::tests::test_format_visual_no_extras ... ok [INFO] [stdout] test heatmap::tests::test_multiple_runs_alignment ... ok [INFO] [stdout] test render::tests::test_heat_level_0 ... ok [INFO] [stdout] test render::tests::test_heat_level_2 ... ok [INFO] [stdout] test heatmap::tests::test_empty_exporter ... ok [INFO] [stdout] test config::tests::test_load_file_rate_too_high_clamped_to_one ... ok [INFO] [stdout] test heatmap::tests::test_min_confidence_filter ... ok [INFO] [stdout] test render::tests::test_heat_level_3 ... ok [INFO] [stdout] test heatmap::tests::test_nan_confidence_sorts_last ... ok [INFO] [stdout] test heatmap::tests::test_record_and_export ... ok [INFO] [stdout] test config::tests::test_load_file_valid_toml_parses_fields ... ok [INFO] [stdout] test replay::tests::test_replay_to_channel_preserves_order ... ok [INFO] [stdout] test config::tests::test_load_file_rate_valid_unchanged ... ok [INFO] [stdout] test render::tests::test_heat_level_4 ... ok [INFO] [stdout] test render::tests::test_format_visual_with_alternatives ... ok [INFO] [stdout] test replay::tests::test_replayer_load_invalid_json_returns_err ... ok [INFO] [stdout] test replay::tests::test_replay_to_channel ... ok [INFO] [stdout] test replay::tests::test_recorder_save_load ... ok [INFO] [stdout] test replay::tests::test_recorder_timestamps_non_decreasing ... ok [INFO] [stdout] test render::tests::test_token_alternative_fields ... ok [INFO] [stdout] test research::tests::test_aligned_length_empty ... ok [INFO] [stdout] test replay::tests::test_replay_to_channel_timed_instant_speed ... ok [INFO] [stdout] test research::tests::test_aligned_length_is_min_token_count ... ok [INFO] [stdout] test research::tests::test_build_aggregate_empty ... ok [INFO] [stdout] test research::tests::test_build_aggregate_mean_token_count_fractional ... ok [INFO] [stdout] test research::tests::test_build_aggregate_no_confidence ... ok [INFO] [stdout] test research::tests::test_build_aggregate_std_dev_fields_present ... ok [INFO] [stdout] test research::tests::test_collapse_positions_none_when_run_too_short ... ok [INFO] [stdout] test research::tests::test_cost_disclaimer_message_contains_outdated ... ok [INFO] [stdout] test research::tests::test_cost_per_1k_tokens_known_models ... ok [INFO] [stdout] test research::tests::test_empty_prompt_file_returns_ok ... ok [INFO] [stdout] test research::tests::test_build_aggregate_single_run ... ok [INFO] [stdout] test research::tests::test_percentile_latency_p0_is_min ... ok [INFO] [stdout] test research::tests::test_collapse_positions_detected ... ok [INFO] [stdout] test research::tests::test_latency_increases_monotonically ... ok [INFO] [stdout] test research::tests::test_percentile_latency_p95 ... ok [INFO] [stdout] test research::tests::test_percentile_latency_p100_is_max ... ok [INFO] [stdout] test research::tests::test_research_output_serializes ... ok [INFO] [stdout] test research::tests::test_build_aggregate_multiple_runs ... ok [INFO] [stdout] test research::tests::test_research_run_serializes ... ok [INFO] [stdout] test research::tests::test_two_sample_t_test_too_few_samples_returns_none ... ok [INFO] [stdout] test research::tests::test_std_dev_calculation ... ok [INFO] [stdout] test research::tests::test_two_sample_t_test_same_means ... ok [INFO] [stdout] test research::tests::test_two_sample_t_test_different_means_returns_some ... ok [INFO] [stdout] test research_tests::test_circuit_breaker_429_does_not_trip ... ok [INFO] [stdout] test render::tests::test_heat_level_1 ... ok [INFO] [stdout] test research::tests::test_ci_95_with_two_samples ... ok [INFO] [stdout] test research::tests::test_percentile_latency_single_element ... ok [INFO] [stdout] test replay::tests::test_replayer_load_empty_array ... ok [INFO] [stdout] test research::tests::test_percentile_latency_empty_returns_none ... ok [INFO] [stdout] test research::tests::test_percentile_latency_p50_even ... ok [INFO] [stdout] test research::tests::test_write_timeseries_csv_creates_file ... ok [INFO] [stdout] test research::tests::test_build_aggregate_total_runs_matches_param ... ok [INFO] [stdout] test research::tests::test_run_research_runs_zero_returns_error ... ok [INFO] [stdout] test research_tests::test_circuit_breaker_reopens_after_timeout ... ok [INFO] [stdout] test research_tests::test_dropped_chunk_counter_increments ... ok [INFO] [stdout] test research_tests::test_research_session_estimated_cost_scales_with_tokens ... ok [INFO] [stdout] test research_tests::test_research_session_top_tokens_at_most_ten ... ok [INFO] [stdout] test research_tests::test_research_session_vocab_diversity_in_bounds ... ok [INFO] [stdout] test research_tests::test_research_session_citation_contains_prompt ... ok [INFO] [stdout] test research_tests::test_research_session_serializes_basic_fields ... ok [INFO] [stdout] test research_tests::test_research_session_transform_field ... ok [INFO] [stdout] test research_tests::test_research_session_none_fields_serialize_as_null ... ok [INFO] [stdout] test research_tests::test_research_session_runs_field_roundtrips ... ok [INFO] [stdout] test store::tests::test_dedup_check_miss ... ok [INFO] [stdout] test store::tests::test_dedup_expired ... ok [INFO] [stdout] test store::tests::test_insert_and_query_experiment ... ok [INFO] [stdout] test store::tests::test_insert_experiment_with_run_atomic ... ok [INFO] [stdout] test store::tests::test_insert_experiment_with_run_run_is_linked ... ok [INFO] [stdout] test store::tests::test_insert_run ... ok [INFO] [stdout] test store::tests::test_dedup_register_and_hit ... ok [INFO] [stdout] test store::tests::test_open_in_memory ... ok [INFO] [stdout] test store::tests::test_load_runs_by_transform_cached_stmt ... ok [INFO] [stdout] test store::tests::test_storage_trait_list_empty ... ok [INFO] [stdout] test store::tests::test_storage_trait_list_experiments ... ok [INFO] [stdout] test store::tests::test_storage_trait_store_experiment ... ok [INFO] [stdout] test store::tests::test_storage_trait_store_run ... ok [INFO] [stdout] test research_tests::test_with_rate_sets_rate ... ok [INFO] [stdout] test tests::test_chaos_label_serialization ... ok [INFO] [stdout] test research_tests::test_with_rate_clamps_above_one ... ok [INFO] [stdout] test tests::test_chaos_label_skipped_when_none ... ok [INFO] [stdout] test tests::test_confidence_omitted_when_none ... ok [INFO] [stdout] test tests::test_confidence_serialized_when_some ... ok [INFO] [stdout] test research_tests::test_with_rate_zero_transforms_no_tokens ... ok [INFO] [stdout] test research_tests::test_timeout_field_default ... ok [INFO] [stdout] test research_tests::test_run_research_headless_empty_prompt_returns_error ... ok [INFO] [stdout] test tests::test_chaos_label_none_for_reverse_transform ... ok [INFO] [stdout] test research_tests::test_with_rate_one_transforms_all_tokens ... ok [INFO] [stdout] test tests::test_chaos_label_none_for_even_tokens ... ok [INFO] [stdout] test research_tests::test_run_research_headless_mock_token_count_positive ... ok [INFO] [stdout] test research_tests::test_with_rate_clamps_below_zero ... ok [INFO] [stdout] test research_tests::test_run_research_headless_mock_transform_label_in_citation ... ok [INFO] [stdout] test research_tests::test_run_research_headless_mock_vocab_diversity_in_bounds ... ok [INFO] [stdout] test tests::test_new_anthropic_requires_api_key ... ok [INFO] [stdout] test tests::test_new_openai_requires_api_key ... ok [INFO] [stdout] test research_tests::test_run_research_headless_mock_returns_session ... ok [INFO] [stdout] test tests::test_even_odd_alternation ... ok [INFO] [stdout] test tests::test_export_all_tokens_have_valid_importance ... ok [INFO] [stdout] test tests::test_interceptor_fields_match_construction ... ok [INFO] [stdout] test tests::test_chaos_label_set_for_chaos_transform ... ok [INFO] [stdout] test tests::test_export_array_sequential_indices ... ok [INFO] [stdout] test tests::test_print_footer ... ok [INFO] [stdout] test tests::test_graph_indices_sequential ... ok [INFO] [stdout] test tests::test_interceptor_initial_counts_zero ... ok [INFO] [stdout] test tests::test_export_large_set_serializes ... ok [INFO] [stdout] test tests::test_original_field_preserved_for_all_tokens ... ok [INFO] [stdout] test tests::test_print_footer_after_processing ... ok [INFO] [stdout] test tests::test_multiple_tokens_form_valid_export_array ... ok [INFO] [stdout] test tests::test_logprob_confidence_clamps_at_one ... ok [INFO] [stdout] test research_tests::test_with_seed_different_seeds_may_differ ... ok [INFO] [stdout] test research_tests::test_with_seed_produces_deterministic_noise_output ... ok [INFO] [stdout] test tests::test_print_header_with_heatmap_mode ... ok [INFO] [stdout] test tests::test_print_header_with_orchestrator ... ok [INFO] [stdout] test tests::test_graph_pairs_alternate ... ok [INFO] [stdout] test tests::test_print_header_with_visual_mode ... ok [INFO] [stdout] test tests::test_print_header_all_modes ... ok [INFO] [stdout] test tests::test_process_content_delegates_to_logprob ... ok [INFO] [stdout] test research_tests::test_run_research_headless_mock_multiple_runs_accumulate ... ok [INFO] [stdout] test tests::test_process_content_cross_call_continuity ... ok [INFO] [stdout] test tests::test_process_content_increments_transformed_count ... ok [INFO] [stdout] test tests::test_process_content_logprob_attaches_alternatives_to_first_token ... ok [INFO] [stdout] test tests::test_process_content_heatmap_mode_no_crash ... ok [INFO] [stdout] test tests::test_process_content_logprob_computes_perplexity ... ok [INFO] [stdout] test tests::test_provider_label_none_means_skipped_in_json ... ok [INFO] [stdout] test tests::test_process_content_mock_transform ... ok [INFO] [stdout] test tests::test_process_content_noise_transform ... ok [INFO] [stdout] test tests::test_provider_label_some_appears_in_json ... ok [INFO] [stdout] test tests::test_process_content_empty_string ... ok [INFO] [stdout] test tests::test_process_content_logprob_attaches_confidence ... ok [INFO] [stdout] test tests::test_process_content_logprob_multiple_tokens_only_first_gets_logprob ... ok [INFO] [stdout] test tests::test_provider_label_propagates_to_event ... ok [INFO] [stdout] test tests::test_token_alternative_clone ... ok [INFO] [stdout] test tests::test_token_alternative_serializes ... ok [INFO] [stdout] test transforms::confidence_tests::test_confidence_thresholds_custom ... ok [INFO] [stdout] test transforms::confidence_tests::test_confidence_thresholds_default_unchanged ... ok [INFO] [stdout] test transforms::confidence_tests::test_dry_run_chain_shows_steps ... ok [INFO] [stdout] test transforms::confidence_tests::test_mock_preserves_grapheme_count ... ok [INFO] [stdout] test transforms::confidence_tests::test_reverse_combining_marks ... ok [INFO] [stdout] test transforms::confidence_tests::test_scramble_preserves_length ... ok [INFO] [stdout] test transforms::confidence_tests::test_synonym_load_error_includes_line_number ... ok [INFO] [stdout] test tests::test_process_content_transforms_odd_tokens ... ok [INFO] [stdout] test tests::test_process_content_single_token ... ok [INFO] [stdout] test tests::test_process_content_six_tokens_three_transformed ... ok [INFO] [stdout] test transforms::proptests::chain_applies_in_order ... ok [INFO] [stdout] test tests::test_provider_label_none_by_default ... ok [INFO] [stdout] test transforms::tests::param_tests::test_all_transforms_parse::case_1 ... ok [INFO] [stdout] test transforms::tests::param_tests::test_all_transforms_parse::case_2 ... ok [INFO] [stdout] test transforms::tests::param_tests::test_all_transforms_parse::case_3 ... ok [INFO] [stdout] test transforms::tests::param_tests::test_all_transforms_parse::case_4 ... ok [INFO] [stdout] test transforms::tests::param_tests::test_all_transforms_parse::case_5 ... ok [INFO] [stdout] test transforms::tests::param_tests::test_all_transforms_parse::case_6 ... ok [INFO] [stdout] test transforms::tests::param_tests::test_all_transforms_parse::case_8 ... ok [INFO] [stdout] test transforms::tests::param_tests::test_all_transforms_parse::case_7 ... ok [INFO] [stdout] test transforms::tests::param_tests::test_all_transforms_parse::case_9 ... ok [INFO] [stdout] test transforms::tests::param_tests::test_case_insensitive_parse::case_2 ... ok [INFO] [stdout] test transforms::tests::param_tests::test_case_insensitive_parse::case_3 ... ok [INFO] [stdout] test transforms::tests::param_tests::test_case_insensitive_parse::case_4 ... ok [INFO] [stdout] test transforms::tests::param_tests::test_deterministic_transforms::case_1 ... ok [INFO] [stdout] test transforms::tests::param_tests::test_deterministic_transforms::case_2 ... ok [INFO] [stdout] test transforms::tests::param_tests::test_deterministic_transforms::case_3 ... ok [INFO] [stdout] test transforms::tests::param_tests::test_case_insensitive_parse::case_1 ... ok [INFO] [stdout] test transforms::tests::param_tests::test_deterministic_transforms::case_4 ... ok [INFO] [stdout] test transforms::tests::param_tests::test_invalid_transforms_error::case_1 ... ok [INFO] [stdout] test transforms::tests::param_tests::test_invalid_transforms_error::case_2 ... ok [INFO] [stdout] test transforms::tests::param_tests::test_invalid_transforms_error::case_3 ... ok [INFO] [stdout] test transforms::tests::param_tests::test_invalid_transforms_error::case_4 ... ok [INFO] [stdout] test transforms::tests::test_apply_with_label_non_chaos_label_matches_name ... ok [INFO] [stdout] test transforms::tests::test_all_transforms_produce_different_results ... ok [INFO] [stdout] test transforms::tests::test_apply_with_label_text_matches_apply ... ok [INFO] [stdout] test transforms::tests::test_chain_from_str_loose_two ... ok [INFO] [stdout] test transforms::tests::test_chain_label_joined_with_plus ... ok [INFO] [stdout] test transforms::tests::test_chain_mock_noise_label ... ok [INFO] [stdout] test transforms::tests::test_chain_prefix_equivalent_to_comma ... ok [INFO] [stdout] test transforms::tests::test_chain_prefix_invalid_propagates_err ... ok [INFO] [stdout] test transforms::tests::test_chain_prefix_single_unwraps ... ok [INFO] [stdout] test transforms::tests::test_chain_prefix_two_transforms ... ok [INFO] [stdout] test transforms::tests::test_chain_reverse_uppercase ... ok [INFO] [stdout] test transforms::tests::test_chain_from_str_loose_single_no_chain ... ok [INFO] [stdout] test transforms::tests::test_delete_always_returns_empty ... ok [INFO] [stdout] test transforms::tests::test_heatmap_color_contains_text ... ok [INFO] [stdout] test transforms::tests::test_heatmap_color_nonempty ... ok [INFO] [stdout] test transforms::tests::test_importance_all_tokens_in_range ... ok [INFO] [stdout] test transforms::tests::test_importance_clamped ... ok [INFO] [stdout] test transforms::tests::test_importance_early_position_boost ... ok [INFO] [stdout] test transforms::tests::test_importance_keyword_boost ... ok [INFO] [stdout] test transforms::tests::test_importance_long_token_boost ... ok [INFO] [stdout] test transforms::tests::test_importance_rng_different_seeds_differ ... ok [INFO] [stdout] test transforms::tests::test_importance_rng_in_range ... ok [INFO] [stdout] test transforms::tests::test_importance_rng_same_seed_same_output ... ok [INFO] [stdout] test transforms::tests::test_mock_longer_string ... ok [INFO] [stdout] test transforms::tests::test_noise_length_always_plus_one ... ok [INFO] [stdout] test transforms::tests::test_importance_uppercase_boost ... ok [INFO] [stdout] test transforms::tests::test_punctuation_low_importance ... ok [INFO] [stdout] test transforms::tests::test_reverse_is_involution ... ok [INFO] [stdout] test transforms::tests::test_reverse_with_numbers ... ok [INFO] [stdout] test transforms::tests::test_scramble_preserves_chars ... ok [INFO] [stdout] test transforms::tests::test_scramble_empty_string ... ok [INFO] [stdout] test transforms::tests::test_scramble_produces_variety ... ok [INFO] [stdout] test transforms::tests::test_scramble_single_char ... ok [INFO] [stdout] test transforms::tests::test_scramble_two_chars_both_permutations ... ok [INFO] [stdout] test tests::test_process_content_terminal_mode_no_crash ... ok [INFO] [stdout] test transforms::tests::test_tokenize_cjk_individual_chars ... ok [INFO] [stdout] test transforms::tests::test_tokenize_cjk_mixed_with_latin ... ok [INFO] [stdout] test transforms::tests::test_tokenize_cjk_with_spaces ... ok [INFO] [stdout] test transforms::tests::test_tokenize_ellipsis_unicode ... ok [INFO] [stdout] test transforms::tests::test_tokenize_empty ... ok [INFO] [stdout] test transforms::tests::test_tokenize_en_dash ... ok [INFO] [stdout] test transforms::tests::test_synonym_overrides_all ... ok [INFO] [stdout] test transforms::tests::test_tokenize_leading_trailing_space ... ok [INFO] [stdout] test transforms::tests::test_tokenize_mixed ... ok [INFO] [stdout] test transforms::tests::test_tokenize_multiple_spaces ... ok [INFO] [stdout] test transforms::tests::test_tokenize_only_punctuation ... ok [INFO] [stdout] test transforms::tests::test_tokenize_only_whitespace ... ok [INFO] [stdout] test transforms::tests::test_tokenize_preserves_all_chars ... ok [INFO] [stdout] test transforms::tests::test_tokenize_simple_sentence ... ok [INFO] [stdout] test transforms::tests::test_tokenize_em_dash ... ok [INFO] [stdout] test transforms::tests::test_tokenize_smart_quotes ... ok [INFO] [stdout] test transforms::tests::test_tokenize_numbers ... ok [INFO] [stdout] test transforms::tests::test_tokenize_unicode_punct_preserves_all_chars ... ok [INFO] [stdout] test transforms::tests::test_tokenize_with_punctuation ... ok [INFO] [stdout] test transforms::tests::test_tokenize_single_word ... ok [INFO] [stdout] test transforms::tests::test_transform_chaos_apply_nonempty ... ok [INFO] [stdout] test transforms::tests::test_transform_chaos_apply_with_label_returns_known_label ... ok [INFO] [stdout] test transforms::tests::test_transform_chaos_apply_with_label_text_nonempty ... ok [INFO] [stdout] test transforms::tests::test_transform_chaos_empty_input ... ok [INFO] [stdout] test transforms::tests::test_transform_chaos_produces_variety_over_many_calls ... ok [INFO] [stdout] test transforms::tests::test_transform_chaos_from_str ... ok [INFO] [stdout] test transforms::proptests::noise_appends_one_char ... ok [INFO] [stdout] test transforms::tests::test_transform_delete_empty ... ok [INFO] [stdout] test transforms::tests::test_transform_delete_label ... ok [INFO] [stdout] test transforms::tests::test_transform_chaos_from_str_case_insensitive ... ok [INFO] [stdout] test tests::test_process_content_whitespace_only ... ok [INFO] [stdout] test transforms::tests::test_transform_delay_passthrough ... ok [INFO] [stdout] test transforms::tests::test_transform_empty_inputs ... ok [INFO] [stdout] test transforms::tests::test_transform_from_str_case_insensitive ... ok [INFO] [stdout] test transforms::tests::test_transform_from_str_delete ... ok [INFO] [stdout] test transforms::tests::test_transform_from_str_delay_default ... ok [INFO] [stdout] test transforms::proptests::uppercase_is_idempotent ... ok [INFO] [stdout] test transforms::tests::test_transform_from_str_invalid ... ok [INFO] [stdout] test transforms::tests::test_transform_from_str_synonym ... ok [INFO] [stdout] test transforms::tests::test_transform_from_str_scramble ... ok [INFO] [stdout] test transforms::tests::test_transform_mock ... ok [INFO] [stdout] test transforms::tests::test_transform_from_str_valid ... ok [INFO] [stdout] test transforms::tests::test_transform_mock_two_chars ... ok [INFO] [stdout] test transforms::tests::test_transform_noise ... ok [INFO] [stdout] test transforms::tests::test_transform_from_str_delay_colon ... ok [INFO] [stdout] test transforms::tests::test_transform_noise_appends_one_char ... ok [INFO] [stdout] test transforms::tests::test_transform_preserves_length ... ok [INFO] [stdout] test transforms::tests::test_transform_reverse ... ok [INFO] [stdout] test transforms::tests::test_transform_scramble_label ... ok [INFO] [stdout] test transforms::tests::test_transform_scramble_same_chars ... ok [INFO] [stdout] test tests::test_system_prompt_can_be_set ... ok [INFO] [stdout] test transforms::tests::test_transform_synonym_known ... ok [INFO] [stdout] test transforms::tests::test_transform_synonym_label ... ok [INFO] [stdout] test transforms::tests::test_uppercase_is_idempotent ... ok [INFO] [stdout] test transforms::tests::test_uppercase_with_numbers ... ok [INFO] [stdout] test web::tests::test_batch_request_invalid_json_fails ... ok [INFO] [stdout] test transforms::tests::test_uppercase_already_upper ... ok [INFO] [stdout] test transforms::tests::test_transform_noise_char_from_set ... ok [INFO] [stdout] test transforms::tests::test_transform_single_char ... ok [INFO] [stdout] test transforms::tests::test_transform_synonym_unknown_passthrough ... ok [INFO] [stdout] test transforms::tests::test_transform_uppercase ... ok [INFO] [stdout] test web::tests::test_batch_request_parse_empty_prompts_rejected ... ok [INFO] [stdout] test web::tests::test_batch_request_parse_valid ... ok [INFO] [stdout] test web::tests::test_batch_request_max_10_prompts_allowed ... ok [INFO] [stdout] test web::tests::test_batch_request_parse_too_many_prompts_rejected ... ok [INFO] [stdout] test web::tests::test_collab_module_join_nonexistent_room_errors ... ok [INFO] [stdout] test web::tests::test_collab_module_generate_code_uppercase ... ok [INFO] [stdout] test web::tests::test_collab_module_generate_code_alphanumeric ... ok [INFO] [stdout] test web::tests::test_collab_module_create_room_returns_code ... ok [INFO] [stdout] test web::tests::test_collab_module_broadcast_reaches_subscriber ... ok [INFO] [stdout] test web::tests::test_collab_module_generate_code_length ... ok [INFO] [stdout] test web::tests::test_collab_module_participant_colors_nonempty ... ok [INFO] [stdout] test web::tests::test_cors_origin_default_is_star ... ok [INFO] [stdout] test web::tests::test_collab_module_vote_increments_correctly ... ok [INFO] [stdout] test web::tests::test_diff_token_event_serializes_with_side ... ok [INFO] [stdout] test web::tests::test_index_html_contains_title ... ok [INFO] [stdout] test web::tests::test_index_html_content_length_matches ... ok [INFO] [stdout] test web::tests::test_index_html_has_ab_panel_a ... ok [INFO] [stdout] test web::tests::test_diff_token_event_anthropic_side ... ok [INFO] [stdout] test web::tests::test_index_html_has_ab_panel_b ... ok [INFO] [stdout] test web::tests::test_collab_module_vote_down ... ok [INFO] [stdout] test web::tests::test_index_html_has_ab_stream_route ... ok [INFO] [stdout] test web::tests::test_collab_module_room_state_snapshot_has_expected_fields ... ok [INFO] [stdout] test web::tests::test_index_html_has_ab_system_prompts ... ok [INFO] [stdout] test web::tests::test_index_html_has_auto_join_logic ... ok [INFO] [stdout] test web::tests::test_index_html_has_chaos_tooltip_css ... ok [INFO] [stdout] test web::tests::test_index_html_has_chaos_js_transform ... ok [INFO] [stdout] test web::tests::test_index_html_has_chaos_transform ... ok [INFO] [stdout] test web::tests::test_index_html_has_bezier_curves ... ok [INFO] [stdout] test web::tests::test_index_html_has_chaos_label_in_mkspan ... ok [INFO] [stdout] test web::tests::test_index_html_has_confidence_rendering ... ok [INFO] [stdout] test web::tests::test_index_html_has_diff_button ... ok [INFO] [stdout] test web::tests::test_index_html_has_chat_send_fn ... ok [INFO] [stdout] test web::tests::test_index_html_has_chat_panel ... ok [INFO] [stdout] test web::tests::test_index_html_has_confidence_css_classes ... ok [INFO] [stdout] test web::tests::test_index_html_has_copy_link_button ... ok [INFO] [stdout] test web::tests::test_index_html_has_dark_theme ... ok [INFO] [stdout] test web::tests::test_index_html_has_diff_highlight_fn ... ok [INFO] [stdout] test web::tests::test_index_html_has_diff_css ... ok [INFO] [stdout] test web::tests::test_index_html_has_diff_stream_fn ... ok [INFO] [stdout] test web::tests::test_index_html_has_diff_view ... ok [INFO] [stdout] test web::tests::test_index_html_has_done_signal_handling ... ok [INFO] [stdout] test tests::test_process_content_visual_mode_no_crash ... ok [INFO] [stdout] test web::tests::test_index_html_has_experiment_divergence ... ok [INFO] [stdout] test web::tests::test_index_html_has_experiment_view ... ok [INFO] [stdout] test web::tests::test_index_html_has_heatmap_toggle ... ok [INFO] [stdout] test web::tests::test_index_html_has_heat_color_function ... ok [INFO] [stdout] test web::tests::test_index_html_has_high_perp_animation ... ok [INFO] [stdout] test web::tests::test_index_html_has_export_button ... ok [INFO] [stdout] test web::tests::test_index_html_has_join_button ... ok [INFO] [stdout] test web::tests::test_index_html_has_export_download ... ok [INFO] [stdout] test web::tests::test_index_html_has_join_toast_css ... ok [INFO] [stdout] test web::tests::test_index_html_has_experiment_button ... ok [INFO] [stdout] test web::tests::test_index_html_has_experiment_view_in_views_map ... ok [INFO] [stdout] test web::tests::test_index_html_has_graph_canvas ... ok [INFO] [stdout] test web::tests::test_index_html_has_mp_count_badge ... ok [INFO] [stdout] test web::tests::test_index_html_has_graph_toggle ... ok [INFO] [stdout] test web::tests::test_index_html_has_host_session_button ... ok [INFO] [stdout] test web::tests::test_index_html_has_js_transforms ... ok [INFO] [stdout] test web::tests::test_index_html_has_mp_panel ... ok [INFO] [stdout] test web::tests::test_index_html_has_mutation_observer_for_surgery ... ok [INFO] [stdout] test web::tests::test_index_html_has_on_ws_msg_handler ... ok [INFO] [stdout] test web::tests::test_index_html_has_leave_room_fn ... ok [INFO] [stdout] test web::tests::test_index_html_has_participant_join_handler ... ok [INFO] [stdout] test web::tests::test_index_html_has_multi_panel_colors ... ok [INFO] [stdout] test web::tests::test_index_html_has_perplexity_rendering ... ok [INFO] [stdout] test web::tests::test_index_html_has_perplexity_sparkline ... ok [INFO] [stdout] test web::tests::test_index_html_has_provider_selector ... ok [INFO] [stdout] test web::tests::test_index_html_has_join_session_input ... ok [INFO] [stdout] test web::tests::test_index_html_has_participant_leave_handler ... ok [INFO] [stdout] test web::tests::test_index_html_has_participant_sidebar ... ok [INFO] [stdout] test web::tests::test_index_html_has_peer_edited_css ... ok [INFO] [stdout] test web::tests::test_index_html_has_render_research_fn ... ok [INFO] [stdout] test web::tests::test_index_html_has_record_button ... ok [INFO] [stdout] test web::tests::test_index_html_has_record_started_handler ... ok [INFO] [stdout] test web::tests::test_index_html_has_replay_button ... ok [INFO] [stdout] test web::tests::test_index_html_has_research_button ... ok [INFO] [stdout] test tests::test_system_prompt_field_initializes_none ... ok [INFO] [stdout] test web::tests::test_index_html_has_mode_buttons ... ok [INFO] [stdout] test web::tests::test_index_html_has_research_grid ... ok [INFO] [stdout] test web::tests::test_index_html_has_room_code_input ... ok [INFO] [stdout] test web::tests::test_index_html_has_room_create_fetch ... ok [INFO] [stdout] test web::tests::test_index_html_has_send_ws_fn ... ok [INFO] [stdout] test web::tests::test_index_html_has_start_experiment_fn ... ok [INFO] [stdout] test web::tests::test_index_html_has_stats_display ... ok [INFO] [stdout] test web::tests::test_index_html_has_stream_button ... ok [INFO] [stdout] test web::tests::test_index_html_has_stream_done_handler ... ok [INFO] [stdout] test web::tests::test_index_html_has_surgery_css ... ok [INFO] [stdout] test web::tests::test_index_html_has_peer_colors_map ... ok [INFO] [stdout] test web::tests::test_index_html_has_sse_event_source ... ok [INFO] [stdout] test web::tests::test_index_html_has_replay_event_handler ... ok [INFO] [stdout] test web::tests::test_index_html_has_record_stopped_handler ... ok [INFO] [stdout] test web::tests::test_index_html_has_update_perp_sparkline_fn ... ok [INFO] [stdout] test web::tests::test_index_html_has_surgery_peer_handler ... ok [INFO] [stdout] test web::tests::test_index_html_has_token_animation ... ok [INFO] [stdout] test web::tests::test_index_html_has_transform_selector ... ok [INFO] [stdout] test web::tests::test_index_html_has_view_modes ... ok [INFO] [stdout] test web::tests::test_index_html_has_surgery_fn ... ok [INFO] [stdout] test web::tests::test_index_html_has_vote_bar ... ok [INFO] [stdout] test web::tests::test_index_html_has_side_by_side_labels ... ok [INFO] [stdout] test transforms::proptests::reverse_is_involution ... ok [INFO] [stdout] test web::tests::test_index_html_has_vote_buttons ... ok [INFO] [stdout] test web::tests::test_index_html_has_ws_route_pattern ... ok [INFO] [stdout] test web::tests::test_index_html_is_valid_html ... ok [INFO] [stdout] test web::tests::test_index_html_host_session_broadcasts_tokens ... ok [INFO] [stdout] test web::tests::test_index_html_multiplayer_token_broadcast_via_ws ... ok [INFO] [stdout] test web::tests::test_index_html_mutation_observer_broadcasts_surgery ... ok [INFO] [stdout] test web::tests::test_index_html_has_vote_update_handler ... ok [INFO] [stdout] test web::tests::test_index_html_render_research_called_on_done ... ok [INFO] [stdout] test web::tests::test_index_html_has_websocket_init ... ok [INFO] [stdout] test web::tests::test_index_html_stream_done_enables_guests ... ok [INFO] [stdout] test web::tests::test_index_html_has_welcome_message_handler ... ok [INFO] [stdout] test web::tests::test_index_html_responsive_viewport ... ok [INFO] [stdout] test web::tests::test_index_html_surgery_log_in_export ... ok [INFO] [stdout] test web::tests::test_max_prompt_len_is_100k ... ok [INFO] [stdout] test web::tests::test_parse_query_empty_string_no_panic ... ok [INFO] [stdout] test web::tests::test_parse_query_empty ... ok [INFO] [stdout] test web::tests::test_index_html_no_external_deps ... ok [INFO] [stdout] test web::tests::test_parse_query_basic ... ok [INFO] [stdout] test transforms::proptests::delete_always_empty ... ok [INFO] [stdout] test web::tests::test_parse_query_duplicate_keys_last_wins ... ok [INFO] [stdout] test web::tests::test_parse_query_encoded_values ... ok [INFO] [stdout] test web::tests::test_parse_query_many_params ... ok [INFO] [stdout] test web::tests::test_parse_query_multiple_pairs ... ok [INFO] [stdout] test web::tests::test_parse_query_url_decoded_value ... ok [INFO] [stdout] test web::tests::test_parse_query_special_chars_in_value ... ok [INFO] [stdout] test web::tests::test_parse_query_no_value ... ok [INFO] [stdout] test web::tests::test_parse_stream_params_empty_system_is_none ... ok [INFO] [stdout] test web::tests::test_parse_stream_params_defaults ... ok [INFO] [stdout] test web::tests::test_parse_query_single_pair ... ok [INFO] [stdout] test web::tests::test_parse_query_single_param ... ok [INFO] [stdout] test web::tests::test_parse_stream_params_rate_nan_uses_default ... ok [INFO] [stdout] test web::tests::test_parse_stream_params_rate_negative_clamped ... ok [INFO] [stdout] test web::tests::test_parse_stream_params_rate_over_one_clamped ... ok [INFO] [stdout] test web::tests::test_parse_stream_params_rate_parsed ... ok [INFO] [stdout] test web::tests::test_parse_stream_params_top_logprobs_clamped_to_20 ... ok [INFO] [stdout] test web::tests::test_parse_stream_params_seed_parsed ... ok [INFO] [stdout] test web::tests::test_parse_stream_params_system_prompt ... ok [INFO] [stdout] test web::tests::test_parse_stream_params_visual_flag_true ... ok [INFO] [stdout] test web::tests::test_rate_limit_saturating_add_no_overflow ... ok [INFO] [stdout] test web::tests::test_rate_limit_window_resets_after_expiry ... ok [INFO] [stdout] test web::tests::test_replay_response_prefix ... ok [INFO] [stdout] test web::tests::test_room_replay_route_pattern ... ok [INFO] [stdout] test web::tests::test_serve_binds_to_port ... ok [INFO] [stdout] test web::tests::test_url_decode_ampersand ... ok [INFO] [stdout] test web::tests::test_url_decode_basic ... ok [INFO] [stdout] test web::tests::test_url_decode_capacity_hint ... ok [INFO] [stdout] test web::tests::test_url_decode_consecutive_percent ... ok [INFO] [stdout] test web::tests::test_url_decode_empty ... ok [INFO] [stdout] test web::tests::test_url_decode_empty_string_is_empty ... ok [INFO] [stdout] test web::tests::test_parse_stream_params_top_logprobs_valid_unchanged ... ok [INFO] [stdout] test web::tests::test_url_decode_encoded_percent ... ok [INFO] [stdout] test web::tests::test_rate_limit_allows_up_to_max ... ok [INFO] [stdout] test web::tests::test_url_decode_invalid_hex_emitted_literally ... ok [INFO] [stdout] test web::tests::test_url_decode_long_string ... ok [INFO] [stdout] test web::tests::test_url_decode_lowercase_hex ... ok [INFO] [stdout] test web::tests::test_url_decode_malformed_percent ... ok [INFO] [stdout] test web::tests::test_url_decode_mixed ... ok [INFO] [stdout] test web::tests::test_url_decode_mixed_equals_ampersand ... ok [INFO] [stdout] test web::tests::test_url_decode_multibyte_utf8 ... ok [INFO] [stdout] test web::tests::test_rate_limit_blocks_over_max ... ok [INFO] [stdout] test web::tests::test_url_decode_equals ... ok [INFO] [stdout] test web::tests::test_url_decode_incomplete_percent_no_panic ... ok [INFO] [stdout] test web::tests::test_parse_stream_params_visual_flag_one ... ok [INFO] [stdout] test web::tests::test_url_decode_multibyte_utf8_accent ... ok [INFO] [stdout] test web::tests::test_url_decode_no_encoding ... ok [INFO] [stdout] test web::tests::test_url_decode_one_hex_digit_no_panic ... ok [INFO] [stdout] test web::tests::test_url_decode_percent_space ... ok [INFO] [stdout] test web::tests::test_url_decode_percent_special_chars ... ok [INFO] [stdout] test web::tests::test_url_decode_plus_to_space ... ok [INFO] [stdout] test web::tests::test_url_decode_plain_ascii ... ok [INFO] [stdout] test web::tests::test_url_decode_plus_only ... ok [INFO] [stdout] test web::tests::test_url_decode_slash ... ok [INFO] [stdout] test web::tests::test_url_decode_only_plus ... ok [INFO] [stdout] test web::tests::test_url_decode_trailing_percent_no_panic ... ok [INFO] [stdout] test web::tests::test_url_decode_utf8_multibyte_é ... ok [INFO] [stdout] test web::tests::test_url_decode_single_char ... ok [INFO] [stdout] test tests::test_process_content_uppercase_transform ... ok [INFO] [stdout] test web::tests::test_index_html_multiplayer_no_external_deps ... ok [INFO] [stdout] test web::tests::test_index_html_has_research_view_in_views_map ... ok [INFO] [stdout] test web::tests::test_index_html_has_research_view ... ok [INFO] [stdout] test web::tests::test_parse_query_empty_value ... ok [INFO] [stdout] test tests::test_provider_label_openai_and_anthropic_distinct ... ok [INFO] [stdout] test web::tests::test_rate_limit_different_ips_independent ... ok [INFO] [stdout] test web::tests::test_index_html_stream_done_sent_via_ws ... ok [INFO] [stdout] test tests::test_process_content_two_tokens ... ok [INFO] [stdout] test tests::test_sidebyside_original_is_raw_token ... ok [INFO] [stdout] test tests::test_process_content_logprob_none_gives_none_confidence ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 695 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.56s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/every_other_token-79a9ae033bf26a2b) [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/collab_tests.rs (/opt/rustwide/target/debug/deps/collab_tests-f7c6f8fff1e04f32) [INFO] [stdout] [INFO] [stdout] running 62 tests [INFO] [stdout] test test_broadcast_nonexistent_room_does_not_panic ... ok [INFO] [stdout] test test_create_room_not_recording_initially ... ok [INFO] [stdout] test test_create_room_returns_6_char_code ... ok [INFO] [stdout] test test_create_room_initial_participant_count_zero ... ok [INFO] [stdout] test test_apply_surgery_preserves_old_text ... ok [INFO] [stdout] test test_generate_code_is_unique ... ok [INFO] [stdout] test test_broadcast_no_subscribers_does_not_panic ... ok [INFO] [stdout] test test_chat_with_token_index ... ok [INFO] [stdout] test test_add_multiple_chat_messages ... ok [INFO] [stdout] test test_chat_without_token_index ... ok [INFO] [stdout] test test_apply_surgery_multiple_edits ... ok [INFO] [stdout] test test_add_chat_message_stored ... ok [INFO] [stdout] test test_create_room_host_id_empty_initially ... ok [INFO] [stdout] test test_create_multiple_rooms ... ok [INFO] [stdout] test test_apply_surgery_adds_to_log ... ok [INFO] [stdout] test test_generate_code_length ... ok [INFO] [stdout] test test_join_room_host_flag_set ... ok [INFO] [stdout] test test_join_room_wrong_code_returns_error ... ok [INFO] [stdout] test test_generate_code_no_lowercase ... ok [INFO] [stdout] test test_generate_code_no_special_chars ... ok [INFO] [stdout] test test_join_room_assigns_color ... ok [INFO] [stdout] test test_generate_code_uppercase_alphanumeric ... ok [INFO] [stdout] test test_join_room_guest_flag_not_host ... ok [INFO] [stdout] test test_join_room_participant_stored ... ok [INFO] [stdout] test test_join_room_sets_host_id ... ok [INFO] [stdout] test test_join_room_assigns_participant_name ... ok [INFO] [stdout] test test_join_room_color_wraps_after_all_colors_used ... ok [INFO] [stdout] test test_leave_room_returns_broadcast_tx ... ok [INFO] [stdout] test test_maybe_record_ignores_when_not_recording ... ok [INFO] [stdout] test test_leave_room_removes_participant ... ok [INFO] [stdout] test test_now_ms_is_reasonable ... ok [INFO] [stdout] test test_participant_colors_are_hex ... ok [INFO] [stdout] test test_participant_colors_not_empty ... ok [INFO] [stdout] test test_room_state_snapshot_contains_code ... ok [INFO] [stdout] test test_room_state_snapshot_contains_participants_array ... ok [INFO] [stdout] test test_maybe_record_appends_when_recording ... ok [INFO] [stdout] test test_leave_room_nonexistent_participant_ok ... ok [INFO] [stdout] test test_leave_room_wrong_code_returns_none ... ok [INFO] [stdout] test test_room_state_snapshot_has_surgery_log ... ok [INFO] [stdout] test test_join_room_multiple_participants_get_different_colors ... ok [INFO] [stdout] test test_room_state_snapshot_has_votes ... ok [INFO] [stdout] test test_join_room_participant_has_uuid ... ok [INFO] [stdout] test test_now_ms_increases ... ok [INFO] [stdout] test test_join_room_success ... ok [INFO] [stdout] test test_recorded_event_has_offset_ms ... ok [INFO] [stdout] test test_room_state_snapshot_nonexistent_room_is_null ... ok [INFO] [stdout] test test_room_state_snapshot_participant_count ... ok [INFO] [stdout] test test_start_recording_clears_previous_events ... ok [INFO] [stdout] test test_start_recording_sets_flag ... ok [INFO] [stdout] test test_start_recording_sets_start_ms ... ok [INFO] [stdout] test test_stop_recording_clears_start_ms ... ok [INFO] [stdout] test test_stop_recording_clears_flag ... ok [INFO] [stdout] test test_vote_down_increments_down_count ... ok [INFO] [stdout] test test_vote_mixed_up_and_down ... ok [INFO] [stdout] test test_vote_unknown_dir_no_change ... ok [INFO] [stdout] test test_stop_recording_clears_events_from_room ... ok [INFO] [stdout] test test_vote_up_increments_up_count ... ok [INFO] [stdout] test test_vote_on_nonexistent_room_returns_none ... ok [INFO] [stdout] test test_vote_multiple_ups ... ok [INFO] [stdout] test test_stop_recording_returns_events ... ok [INFO] [stdout] test test_create_room_is_stored ... ok [INFO] [stdout] test test_vote_multiple_transforms ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 62 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s [INFO] [stdout] [INFO] [stderr] Running tests/integration_stream.rs (/opt/rustwide/target/debug/deps/integration_stream-71a66b0e1c6a9b12) [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stderr] /usr/bin/xdg-open: 882: www-browser: not found [INFO] [stderr] /usr/bin/xdg-open: 882: links2: not found [INFO] [stderr] /usr/bin/xdg-open: 882: elinks: not found [INFO] [stderr] /usr/bin/xdg-open: 882: links: not found [INFO] [stderr] /usr/bin/xdg-open: 882: lynx: not found [INFO] [stderr] /usr/bin/xdg-open: 882: w3m: not found [INFO] [stderr] xdg-open: no method available for opening 'http://localhost:33915' [INFO] [stdout] test test_web_server_returns_html ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.10s [INFO] [stdout] [INFO] [stderr] Running tests/providers_tests.rs (/opt/rustwide/target/debug/deps/providers_tests-55b9ac034f4e61a0) [INFO] [stdout] [INFO] [stdout] running 32 tests [INFO] [stdout] test test_anthropic_ping_event ... ok [INFO] [stdout] test test_anthropic_content_block_delta_deserializes ... ok [INFO] [stdout] test test_anthropic_message_start_has_no_delta_text ... ok [INFO] [stdout] test test_anthropic_plugin_api_url_is_https ... ok [INFO] [stdout] test test_anthropic_api_version_format ... ok [INFO] [stdout] test test_anthropic_plugin_name_matches_display ... ok [INFO] [stdout] test test_anthropic_request_with_system_serializes ... ok [INFO] [stdout] test test_anthropic_request_without_system_omits_field ... ok [INFO] [stdout] test test_mcp_request_serializes ... ok [INFO] [stdout] test test_mcp_response_deserializes_error ... ok [INFO] [stdout] test test_mcp_response_deserializes_success ... ok [INFO] [stdout] test test_openai_chunk_deserializes_with_content ... ok [INFO] [stdout] test test_openai_chunk_empty_delta ... ok [INFO] [stdout] test test_openai_keeps_default_model ... ok [INFO] [stdout] test test_openai_logprob_content_deserializes_with_alternatives ... ok [INFO] [stdout] test test_openai_plugin_api_url_is_https ... ok [INFO] [stdout] test test_openai_plugin_name_matches_display ... ok [INFO] [stdout] test test_provider_anthropic_is_lowercase ... ok [INFO] [stdout] test test_provider_display_openai ... ok [INFO] [stdout] test test_provider_from_str_anthropic ... ok [INFO] [stdout] test test_provider_from_str_case_insensitive_openai ... ok [INFO] [stdout] test test_provider_from_str_empty_returns_err ... ok [INFO] [stdout] test test_provider_equality ... ok [INFO] [stdout] test test_provider_from_str_mock ... ok [INFO] [stdout] test test_openai_top_logprob_deserializes ... ok [INFO] [stdout] test test_provider_from_str_openai ... ok [INFO] [stdout] test test_provider_clone ... ok [INFO] [stdout] test test_provider_display_anthropic ... ok [INFO] [stdout] test test_provider_from_str_unknown_returns_err ... ok [INFO] [stdout] test test_provider_roundtrip_display_fromstr ... ok [INFO] [stdout] test test_provider_openai_is_lowercase ... ok [INFO] [stdout] test test_provider_from_str_case_insensitive_anthropic ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 32 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s [INFO] [stdout] [INFO] [stderr] Running tests/self_tune_integration.rs (/opt/rustwide/target/debug/deps/self_tune_integration-f8ee781b5ea29d79) [INFO] [stdout] [INFO] [stdout] running 19 tests [INFO] [stdout] test anthropic_plugin_api_url_is_https ... ok [INFO] [stdout] test anthropic_plugin_default_model_nonempty ... ok [INFO] [stdout] test openai_plugin_api_url_is_https ... ok [INFO] [stdout] test openai_plugin_build_request_contains_model ... ok [INFO] [stdout] test openai_plugin_name_matches_provider_display ... ok [INFO] [stdout] test anthropic_plugin_build_request_with_system ... ok [INFO] [stdout] test openai_plugin_build_request_with_system ... ok [INFO] [stdout] test openai_plugin_default_model_nonempty ... ok [INFO] [stdout] test anthropic_plugin_name_matches_provider_display ... ok [INFO] [stdout] test openai_plugin_build_request_no_system ... ok [INFO] [stdout] test store_query_multiple_experiments ... ok [INFO] [stdout] test store_empty_query ... ok [INFO] [stdout] test anthropic_plugin_build_request_contains_model ... ok [INFO] [stdout] test store_load_runs_by_transform ... ok [INFO] [stdout] test store_opens_in_memory ... ok [INFO] [stdout] test store_insert_returns_positive_id ... ok [INFO] [stdout] test store_query_round_trips ... ok [INFO] [stdout] test store_load_runs_unknown_transform_empty ... ok [INFO] [stdout] test store_run_null_metrics_round_trip ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stderr] Running tests/store_heatmap_replay_tests.rs (/opt/rustwide/target/debug/deps/store_heatmap_replay_tests-4e7c557f34a1f8bc) [INFO] [stdout] [INFO] [stdout] running 16 tests [INFO] [stdout] test recorder_default_is_empty ... ok [INFO] [stdout] test replay_record_timestamp_is_set ... ok [INFO] [stdout] test recorder_save_and_replayer_load_roundtrip ... ok [INFO] [stdout] test replayer_replay_to_channel_delivers_all_events ... ok [INFO] [stdout] test heatmap_single_run_exports_csv ... ok [INFO] [stdout] test heatmap_sort_by_confidence ... ok [INFO] [stdout] test heatmap_min_confidence_filters_rows ... ok [INFO] [stdout] test heatmap_default_construction ... ok [INFO] [stdout] test store_storage_trait_roundtrip ... ok [INFO] [stdout] test store_dedup_miss_then_register_then_hit ... ok [INFO] [stdout] test store_dedup_evict_expired ... ok [INFO] [stdout] test store_insert_experiment_with_run_atomic ... ok [INFO] [stdout] test store_open_in_memory ... ok [INFO] [stdout] test store_insert_and_query_roundtrip ... ok [INFO] [stdout] test store_dedup_expired_returns_none ... ok [INFO] [stdout] test store_insert_run_and_load ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] [stderr] Running tests/transforms_tests.rs (/opt/rustwide/target/debug/deps/transforms_tests-74f96775d6cea393) [INFO] [stdout] [INFO] [stdout] running 24 tests [INFO] [stdout] test test_calculate_token_importance_range ... ok [INFO] [stdout] test test_chain_applies_in_order ... ok [INFO] [stdout] test test_from_str_chain ... ok [INFO] [stdout] test test_from_str_delay ... ok [INFO] [stdout] test test_delete_apply_returns_empty ... ok [INFO] [stdout] test test_from_str_chaos ... ok [INFO] [stdout] test test_from_str_mock ... ok [INFO] [stdout] test test_from_str_case_insensitive ... ok [INFO] [stdout] test test_from_str_delete ... ok [INFO] [stdout] test test_from_str_noise ... ok [INFO] [stdout] test test_from_str_reverse ... ok [INFO] [stdout] test test_from_str_scramble ... ok [INFO] [stdout] test test_from_str_synonym ... ok [INFO] [stdout] test test_reverse_apply ... ok [INFO] [stdout] test test_uppercase_apply ... ok [INFO] [stdout] test test_from_str_unknown_returns_err ... ok [INFO] [stdout] test test_from_str_uppercase ... ok [INFO] [stdout] test test_noise_append_symbol ... ok [INFO] [stdout] test test_synonym_known_word_substituted ... ok [INFO] [stdout] test test_synonym_unknown_token_passthrough ... ok [INFO] [stdout] test test_tokenize_empty_string ... ok [INFO] [stdout] test test_apply_with_label_returns_label ... ok [INFO] [stdout] test test_calculate_token_importance_deterministic ... ok [INFO] [stdout] test test_tokenize_splits_words ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stderr] Running tests/web_integration.rs (/opt/rustwide/target/debug/deps/web_integration-eb0c21d1347fae91) [INFO] [stdout] [INFO] [stdout] running 21 tests [INFO] [stdout] test test_parse_query_duplicate_keys_last_wins_or_first_kept ... ok [INFO] [stdout] test test_parse_query_empty_string ... ok [INFO] [stdout] test test_parse_query_missing_value_defaults_to_empty ... ok [INFO] [stdout] test test_parse_query_multiple_params ... ok [INFO] [stdout] test test_parse_query_no_value_key_present ... ok [INFO] [stdout] test test_parse_query_single_param ... ok [INFO] [stdout] test test_parse_query_encoded_key ... ok [INFO] [stdout] test test_url_decode_invalid_percent_sequence_passes_through ... ok [INFO] [stdout] test test_url_decode_empty_string ... ok [INFO] [stdout] test test_url_decode_mixed_encoding ... ok [INFO] [stdout] test test_parse_query_url_decoded_values ... ok [INFO] [stdout] test test_url_decode_multiple_percent_sequences ... ok [INFO] [stdout] test test_url_decode_multiple_plus_signs ... ok [INFO] [stdout] test test_url_decode_all_noise_chars_no_panic ... ok [INFO] [stdout] test test_url_decode_percent_one_hex_digit ... ok [INFO] [stdout] test test_url_decode_roundtrip_ascii ... ok [INFO] [stdout] test test_url_decode_percent_encoded_ascii ... ok [INFO] [stdout] test test_url_decode_plus_is_space ... ok [INFO] [stdout] test test_url_decode_trailing_percent ... ok [INFO] [stderr] Doc-tests every_other_token [INFO] [stdout] test test_url_decode_percent_encoded_utf8 ... ok [INFO] [stdout] test test_url_decode_plain_text ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test src/render.rs - render::importance_to_heat (line 91) ... ok [INFO] [stdout] test src/render.rs - render::ConfidenceBand::from_confidence (line 51) ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.26s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "ce22c4dcd7fd5da8970c5e17fb0aff8af67394d8ee736d5e4fb14dfc6a786bab", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ce22c4dcd7fd5da8970c5e17fb0aff8af67394d8ee736d5e4fb14dfc6a786bab", kill_on_drop: false }` [INFO] [stdout] ce22c4dcd7fd5da8970c5e17fb0aff8af67394d8ee736d5e4fb14dfc6a786bab