[INFO] cloning repository https://github.com/hang-in/tunaSalon
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/hang-in/tunaSalon" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhang-in%2FtunaSalon", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhang-in%2FtunaSalon'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 41b3710d66d5164672b5ae6eea6b4682e8c8d711
[INFO] testing hang-in/tunaSalon against 1.100.0-beta.1+cargoflags=--release for beta-release-1.100-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhang-in%2FtunaSalon" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/hang-in/tunaSalon
[INFO] finished tweaking git repo https://github.com/hang-in/tunaSalon
[INFO] tweaked toml for git repo https://github.com/hang-in/tunaSalon written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/hang-in/tunaSalon on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/hang-in/tunaSalon already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 03cc99905ff075f0a0c8074054409e5cad95958278723554610a704e04bbd0be
[INFO] running `Command { std: "docker" "start" "03cc99905ff075f0a0c8074054409e5cad95958278723554610a704e04bbd0be", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "03cc99905ff075f0a0c8074054409e5cad95958278723554610a704e04bbd0be", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "03cc99905ff075f0a0c8074054409e5cad95958278723554610a704e04bbd0be" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "03cc99905ff075f0a0c8074054409e5cad95958278723554610a704e04bbd0be", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "03cc99905ff075f0a0c8074054409e5cad95958278723554610a704e04bbd0be" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling log v0.4.30
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling shlex v2.0.1
[INFO] [stderr]    Compiling litemap v0.8.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling displaydoc v0.2.6
[INFO] [stderr]    Compiling cc v1.2.63
[INFO] [stderr]    Compiling writeable v0.6.3
[INFO] [stderr]    Compiling icu_normalizer_data v2.2.0
[INFO] [stderr]    Compiling icu_properties_data v2.2.0
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling http v1.4.1
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling memchr v2.8.1
[INFO] [stderr]    Compiling either v1.16.0
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling mio v1.2.1
[INFO] [stderr]    Compiling zerofrom v0.1.8
[INFO] [stderr]    Compiling yoke v0.8.2
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling socket2 v0.6.4
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling tokio v1.52.3
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling rustls-pki-types v1.14.1
[INFO] [stderr]    Compiling strum_macros v0.27.2
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling unicode-width v0.2.2
[INFO] [stderr]    Compiling instability v0.3.12
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling static_assertions v1.1.0
[INFO] [stderr]    Compiling unicode-segmentation v1.13.3
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling unicode-truncate v2.0.1
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling compact_str v0.9.1
[INFO] [stderr]    Compiling strum v0.27.2
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling kasuari v0.4.12
[INFO] [stderr]    Compiling lru v0.16.4
[INFO] [stderr]    Compiling rustls v0.23.40
[INFO] [stderr]    Compiling zerocopy v0.8.50
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling ratatui-core v0.1.0
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling num-conv v0.2.2
[INFO] [stderr]    Compiling num_threads v0.1.7
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]    Compiling time v0.3.47
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling hyper v1.10.1
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling line-clipping v0.3.7
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling ratatui-widgets v0.3.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling webpki-roots v1.0.7
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling ratatui-macros v0.7.0
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.0
[INFO] [stderr]    Compiling tower-http v0.6.11
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling ratatui v0.30.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling rand v0.8.6
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling hyper-rustls v0.27.9
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling salon v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `assemble_roleless`
[INFO] [stdout]  --> src/main.rs:6:36
[INFO] [stdout]   |
[INFO] [stdout] 6 | use salon::persona_kit::{assemble, assemble_roleless, Blood, Mbti, Role, Zodiac};
[INFO] [stdout]   |                                    ^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_default_persona_profile` is never used
[INFO] [stdout]    --> src/main.rs:576:4
[INFO] [stdout]     |
[INFO] [stdout] 576 | fn apply_default_persona_profile(persona: &mut Persona, meta: &mut PersonaMeta) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 3m 05s
[INFO] running `Command { std: "docker" "inspect" "03cc99905ff075f0a0c8074054409e5cad95958278723554610a704e04bbd0be", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "03cc99905ff075f0a0c8074054409e5cad95958278723554610a704e04bbd0be" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.0
[INFO] [stderr]    Compiling ratatui v0.30.0
[INFO] [stderr]    Compiling salon v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `assemble_roleless`
[INFO] [stdout]  --> src/main.rs:6:36
[INFO] [stdout]   |
[INFO] [stdout] 6 | use salon::persona_kit::{assemble, assemble_roleless, Blood, Mbti, Role, Zodiac};
[INFO] [stdout]   |                                    ^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_default_persona_profile` is never used
[INFO] [stdout]    --> src/main.rs:576:4
[INFO] [stdout]     |
[INFO] [stdout] 576 | fn apply_default_persona_profile(persona: &mut Persona, meta: &mut PersonaMeta) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `assemble_roleless`
[INFO] [stdout]  --> src/main.rs:6:36
[INFO] [stdout]   |
[INFO] [stdout] 6 | use salon::persona_kit::{assemble, assemble_roleless, Blood, Mbti, Role, Zodiac};
[INFO] [stdout]   |                                    ^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_default_persona_profile` is never used
[INFO] [stdout]    --> src/main.rs:576:4
[INFO] [stdout]     |
[INFO] [stdout] 576 | fn apply_default_persona_profile(persona: &mut Persona, meta: &mut PersonaMeta) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 1m 21s
[INFO] running `Command { std: "docker" "inspect" "03cc99905ff075f0a0c8074054409e5cad95958278723554610a704e04bbd0be", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "03cc99905ff075f0a0c8074054409e5cad95958278723554610a704e04bbd0be" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `assemble_roleless`
[INFO] [stderr]  --> src/main.rs:6:36
[INFO] [stderr]   |
[INFO] [stderr] 6 | use salon::persona_kit::{assemble, assemble_roleless, Blood, Mbti, Role, Zodiac};
[INFO] [stderr]   |                                    ^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `apply_default_persona_profile` is never used
[INFO] [stderr]    --> src/main.rs:576:4
[INFO] [stderr]     |
[INFO] [stderr] 576 | fn apply_default_persona_profile(persona: &mut Persona, meta: &mut PersonaMeta) {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `salon` (bin "salon") generated 2 warnings (run `cargo fix --bin "salon" -p salon` to apply 1 suggestion)
[INFO] [stderr] warning: `salon` (bin "salon" test) generated 2 warnings (2 duplicates)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.43s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/build/salon/7bf7df8aa954dc36/out/salon-7bf7df8aa954dc36)
[INFO] [stdout] 
[INFO] [stdout] running 241 tests
[INFO] [stdout] test chat::tests::parse_topic_args_caps_at_5 ... ok
[INFO] [stdout] test chat::tests::parse_topic_args_trims_and_drops_empty ... ok
[INFO] [stdout] test chat::tests::render_chat_placeholder_event_shows_marker_without_panic ... ok
[INFO] [stdout] test chat::tests::parse_topic_args_empty_returns_empty ... ok
[INFO] [stdout] test chat::tests::render_chat_shows_utterances ... ok
[INFO] [stdout] test chat::tests::render_chat_input_box_shows_buffer ... ok
[INFO] [stdout] test chat::tests::parse_topic_args_basic_split ... ok
[INFO] [stdout] test debate::evidence::tests::twist_card_is_mode_specific_and_deterministic ... ok
[INFO] [stdout] test chat::tests::render_chat_sidebar_shows_name_and_gauge ... ok
[INFO] [stdout] test debate::directive::tests::directive_includes_direct_call_and_repetition_guard ... ok
[INFO] [stdout] test debate::format::tests::none_plan_falls_back_to_length_hint ... ok
[INFO] [stdout] test debate::phase::tests::clash_early_advances_on_high_convergence ... ok
[INFO] [stdout] test debate::phase::tests::clash_holds_until_quota_when_low_convergence ... ok
[INFO] [stdout] test debate::phase::tests::mode_specific_clash_bounds ... ok
[INFO] [stdout] test debate::directive::tests::build_directive_prioritizes_human ... ok
[INFO] [stdout] test debate::phase::tests::closing_concludes_and_signals_once ... ok
[INFO] [stdout] test chat::tests::render_chat_title_shows_topics_when_set ... ok
[INFO] [stdout] test debate::phase::tests::concluded_is_terminal ... ok
[INFO] [stdout] test debate::phase::tests::reopen_resumes_at_clash ... ok
[INFO] [stdout] test debate::plan::tests::ai_judge_topic_maps_to_courtroom ... ok
[INFO] [stdout] test debate::plan::tests::deterministic_and_multi_topic_join ... ok
[INFO] [stdout] test debate::plan::tests::directive_line_carries_mode_anchor_and_fault ... ok
[INFO] [stdout] test debate::phase::tests::persona_count_change_affects_bounds ... ok
[INFO] [stdout] test debate::phase::tests::positions_advances_after_n ... ok
[INFO] [stdout] test debate::plan::tests::empty_topics_is_safe ... ok
[INFO] [stdout] test debate::plan::tests::moral_dilemma_default_and_keyword ... ok
[INFO] [stdout] test debate::plan::tests::fun_taste_topic_maps_to_casual_banter_with_banmal ... ok
[INFO] [stdout] test debate::plan::tests::open_source_regulation_maps_to_policy_duel ... ok
[INFO] [stdout] test debate::plan::tests::romance_app_maps_to_personal_stakes ... ok
[INFO] [stdout] test debate::text::tests::strip_speaker_prefix_removes_echoed_label ... ok
[INFO] [stdout] test driver::tests::fake_backend_produces_no_flow_in_records ... ok
[INFO] [stdout] test driver::tests::fixed_seed_produces_identical_records ... ok
[INFO] [stdout] test driver::tests::fake_backend_flow_none_gives_same_records_as_deterministic_run ... ok
[INFO] [stdout] test driver::tests::forbid_self_repeat_false_is_identical_to_default ... ok
[INFO] [stdout] test debate::phase::tests::opening_advances_after_one ... ok
[INFO] [stdout] test driver::tests::flow_measure_returns_some_for_content_bearing_history ... ok
[INFO] [stdout] test flow::tests::case_normalization_works ... ok
[INFO] [stdout] test chat::tests::render_chat_title_is_chat_when_no_topics ... ok
[INFO] [stdout] test debate::format::tests::deterministic_no_rng ... ok
[INFO] [stdout] test debate::format::tests::plan_uses_mode_format_pool ... ok
[INFO] [stdout] test flow::tests::all_distinct_tokens_yield_low_convergence ... ok
[INFO] [stdout] test driver::tests::forbid_self_repeat_prevents_consecutive_same_speaker ... ok
[INFO] [stdout] test flow::tests::insufficient_utterances_return_none ... ok
[INFO] [stdout] test flow::tests::jaccard_hand_computed_verification ... ok
[INFO] [stdout] test flow::tests::measure_is_deterministic ... ok
[INFO] [stdout] test flow::tests::near_identical_utterances_yield_high_convergence ... ok
[INFO] [stdout] test flow::tests::punctuation_is_stripped_from_tokens ... ok
[INFO] [stdout] test gate::tests::all_intensities_below_theta_are_silent ... ok
[INFO] [stdout] test flow::tests::measure_recent_excludes_none_content ... ok
[INFO] [stdout] test debate::text::tests::mention_detection_and_sanitize_work ... ok
[INFO] [stdout] test gate::tests::intensity_equal_to_theta_is_a_candidate ... ok
[INFO] [stdout] test hawkes::tests::cross_excitation_raises_combined_intensity_after_speaker_event ... ok
[INFO] [stdout] test hawkes::tests::excitation_decays_monotonically_toward_zero_without_events ... ok
[INFO] [stdout] test hawkes::tests::mu_scale_one_matches_pre_change_behavior ... ok
[INFO] [stdout] test hawkes::tests::spectral_radius_matches_known_two_by_two_and_stability_boundary ... ok
[INFO] [stdout] test hawkes::tests::stable_excitation_stays_bounded_while_unstable_excitation_grows ... ok
[INFO] [stdout] test hawkes::tests::empty_alpha_keeps_combined_intensities_equal_to_base_sequence ... ok
[INFO] [stdout] test hawkes::tests::speaker_intensity_drops_then_recovers_monotonically_toward_base_rate ... ok
[INFO] [stdout] test hawkes::tests::higher_base_rate_has_higher_steady_state_after_recovery ... ok
[INFO] [stdout] test hawkes::tests::update_is_deterministic_for_same_inputs ... ok
[INFO] [stdout] test gate::tests::candidates_at_or_above_theta_are_returned_in_sorted_order ... ok
[INFO] [stdout] test human::tests::constants_match_design_spec ... ok
[INFO] [stdout] test human::tests::speak_appends_human_event_to_history ... ok
[INFO] [stdout] test human::tests::speak_does_not_depend_on_coupling_matrix ... ok
[INFO] [stdout] test human::tests::speak_is_deterministic_for_same_inputs ... ok
[INFO] [stdout] test human::tests::speak_applies_reset_then_attention_to_existing_excitation ... ok
[INFO] [stdout] test human::tests::speak_raises_all_persona_excitations_and_combined_intensities ... ok
[INFO] [stdout] test hawkes::tests::mu_scale_below_one_recovers_toward_lower_target ... ok
[INFO] [stdout] test live::tests::add_persona_without_target_rho_keeps_empty_alpha ... ok
[INFO] [stdout] test live::tests::add_persona_registers_in_all_structures ... ok
[INFO] [stdout] test live::tests::add_persona_with_target_rho_generates_stable_alpha ... ok
[INFO] [stdout] test live::tests::drop_terminates_worker_cleanly ... ok
[INFO] [stdout] test live::tests::add_remove_add_sequence_is_consistent ... ok
[INFO] [stdout] test live::tests::mu_scale_below_one_for_high_convergence_history ... ok
[INFO] [stdout] test live::tests::live_session_flow_returns_some_for_content_bearing_history ... ok
[INFO] [stdout] test live::tests::recall_for_generation_filters_weak_cross_room_topic_overlap ... ok
[INFO] [stdout] test live::tests::mu_scale_returns_one_for_empty_content_history ... ok
[INFO] [stdout] test live::tests::live_session_flow_returns_none_for_empty_content_history ... ok
[INFO] [stdout] test live::tests::remove_persona_cleans_all_structures ... ok
[INFO] [stdout] test live::tests::restore_concluded_room_stays_concluded ... ok
[INFO] [stdout] test live::tests::empty_persona_meta_session_behaves_identically_to_before ... ok
[INFO] [stdout] test live::tests::remove_persona_with_target_rho_keeps_alpha_stable ... ok
[INFO] [stdout] test live::tests::restore_history_sets_history_tick_and_last_speaker ... ok
[INFO] [stdout] test live::tests::restore_unconcluded_room_reopens_to_clash ... ok
[INFO] [stdout] test live::tests::set_topics_cap_at_5 ... ok
[INFO] [stdout] test live::tests::set_topics_after_restore_keeps_concluded ... ok
[INFO] [stdout] test live::tests::set_topics_creates_concluded_phase_when_report_present ... ok
[INFO] [stdout] test live::tests::set_topics_trim_and_drop_empty ... ok
[INFO] [stdout] test live::tests::set_topics_clear ... ok
[INFO] [stdout] test live::tests::restore_history_empty_messages_sets_no_last_speaker ... ok
[INFO] [stdout] test live::tests::submit_human_records_to_store ... ok
[INFO] [stdout] test live::tests::submit_human_appends_event_and_raises_excitations ... ok
[INFO] [stdout] test live::tests::store_participation_isolation_preserved ... ok
[INFO] [stdout] test live::tests::poll_generation_fills_placeholder_and_clears_pending ... ok
[INFO] [stdout] test memory::tests::edge_cases_empty ... ok
[INFO] [stdout] test memory::tests::format_recall_produces_correct_string ... ok
[INFO] [stdout] test memory::tests::leave_nonexistent_is_noop ... ok
[INFO] [stdout] test memory::tests::leave_removes_participation_isolation ... ok
[INFO] [stdout] test memory::tests::participation_isolation ... ok
[INFO] [stdout] test memory::tests::recall_is_deterministic ... ok
[INFO] [stdout] test memory::tests::tiebreak_by_ts_descending ... ok
[INFO] [stdout] test memory::tests::whitespace_recall_may_miss_josa_case ... ok
[INFO] [stdout] test meta::tests::below_threshold_returns_one ... ok
[INFO] [stdout] test memory::tests::token_recall ... ok
[INFO] [stdout] test meta::tests::floor_is_respected ... ok
[INFO] [stdout] test locale::tests::defaults_to_korean_on_unknown_or_empty ... ok
[INFO] [stdout] test locale::tests::maps_common_locales ... ok
[INFO] [stdout] test meta::tests::hand_computed_value ... ok
[INFO] [stdout] test meta::tests::monotone_decreasing ... ok
[INFO] [stdout] test meta::tests::threshold_one_guard ... ok
[INFO] [stdout] test live::tests::tick_dispatches_once_and_blocks_second_dispatch_while_pending ... ok
[INFO] [stdout] test meta::tests::none_flow_returns_one ... ok
[INFO] [stdout] test ollama::tests::assemble_user_prompt_sections_ordering ... ok
[INFO] [stdout] test live::tests::poll_generation_records_landed_utterance_to_store ... ok
[INFO] [stdout] test ollama::tests::build_request_body_has_required_fields ... ok
[INFO] [stdout] test ollama::tests::build_request_body_includes_system_when_some ... ok
[INFO] [stdout] test ollama::tests::build_request_body_omits_system_when_none ... ok
[INFO] [stdout] test ollama::tests::build_request_body_sets_num_ctx ... ok
[INFO] [stdout] test ollama::tests::build_request_body_omits_num_ctx_when_none ... ok
[INFO] [stdout] test ollama::tests::build_request_body_omits_think_when_false ... ok
[INFO] [stdout] test ollama::tests::build_request_body_sets_think_when_true ... ok
[INFO] [stdout] test ollama::tests::live_generate_returns_some_string ... ignored
[INFO] [stdout] test ollama::tests::parse_response_returns_none_on_invalid_json ... ok
[INFO] [stdout] test meta::tests::zero_gain_always_one ... ok
[INFO] [stdout] test ollama::tests::parse_response_extracts_text ... ok
[INFO] [stdout] test model::tests::constructs_core_model_types ... ok
[INFO] [stdout] test ollama::tests::system_prompts_map_returns_correct_prompt_per_speaker ... ok
[INFO] [stdout] test openai::tests::assemble_user_prompt_with_recall_includes_memory_section ... ok
[INFO] [stdout] test openai::tests::assemble_user_prompt_without_recall_has_no_memory_section ... ok
[INFO] [stdout] test openai::tests::build_request_body_disables_thinking ... ok
[INFO] [stdout] test ollama::tests::parse_response_returns_none_on_missing_response_field ... ok
[INFO] [stdout] test ollama::tests::parse_response_trims_whitespace ... ok
[INFO] [stdout] test openai::tests::build_request_body_enables_thinking_when_true ... ok
[INFO] [stdout] test openai::tests::build_request_body_includes_max_tokens_when_some ... ok
[INFO] [stdout] test openai::tests::build_request_body_with_system_has_correct_messages ... ok
[INFO] [stdout] test openai::tests::build_request_body_stream_is_false ... ok
[INFO] [stdout] test openai::tests::build_request_body_without_system_has_only_user_message ... ok
[INFO] [stdout] test openai::tests::friend_server_live_generate ... ignored
[INFO] [stdout] test openai::tests::build_request_body_omits_max_tokens_when_none ... ok
[INFO] [stdout] test openai::tests::parse_response_extracts_content ... ok
[INFO] [stdout] test openai::tests::build_request_body_sets_model ... ok
[INFO] [stdout] test openai::tests::generate_with_none_recall_produces_no_memory_section_in_prompt ... ok
[INFO] [stdout] test openai::tests::parse_response_ignores_reasoning_field ... ok
[INFO] [stdout] test ollama::tests::debug_output_does_not_leak_api_key ... ok
[INFO] [stdout] test openai::tests::parse_response_returns_none_when_choices_missing ... ok
[INFO] [stdout] test openai::tests::parse_response_trims_whitespace ... ok
[INFO] [stdout] test openai::tests::debug_output_does_not_leak_api_key ... ok
[INFO] [stdout] test persona_kit::tests::assemble_empty_name_autogenerates ... ok
[INFO] [stdout] test persona_kit::tests::assemble_is_deterministic ... ok
[INFO] [stdout] test openai::tests::parse_response_returns_none_on_empty_choices ... ok
[INFO] [stdout] test openai::tests::parse_response_returns_none_on_empty_content ... ok
[INFO] [stdout] test openai::tests::parse_response_returns_none_on_invalid_json ... ok
[INFO] [stdout] test persona_kit::tests::blood_from_str_all_valid ... ok
[INFO] [stdout] test persona_kit::tests::extrovert_has_higher_base_rate_than_introvert ... ok
[INFO] [stdout] test persona_kit::tests::extrovert_higher_base_rate_same_else ... ok
[INFO] [stdout] test persona_kit::tests::friend_has_higher_base_rate_than_summarizer_same_mbti ... ok
[INFO] [stdout] test persona_kit::tests::friend_has_higher_reactivity_than_summarizer ... ok
[INFO] [stdout] test persona_kit::tests::indian_name_deterministic ... ok
[INFO] [stdout] test persona_kit::tests::mbti_from_str_all_valid ... ok
[INFO] [stdout] test persona_kit::tests::parse_invite_case_insensitive ... ok
[INFO] [stdout] test persona_kit::tests::parse_invite_invalid_blood_returns_err ... ok
[INFO] [stdout] test persona_kit::tests::indian_name_josa_by_batchim ... ok
[INFO] [stdout] test persona_kit::tests::indian_name_matches_user_example ... ok
[INFO] [stdout] test persona_kit::tests::parse_invite_invalid_mbti_returns_err ... ok
[INFO] [stdout] test persona_kit::tests::parse_invite_invalid_role_returns_err ... ok
[INFO] [stdout] test persona_kit::tests::parse_invite_invalid_zodiac_returns_err ... ok
[INFO] [stdout] test persona_kit::tests::parse_invite_too_few_args_returns_err ... ok
[INFO] [stdout] test persona_kit::tests::print_injection_sample ... ignored
[INFO] [stdout] test persona_kit::tests::parse_invite_valid_basic ... ok
[INFO] [stdout] test persona_kit::tests::role_from_str_all_valid ... ok
[INFO] [stdout] test persona_kit::tests::sample_combinations_check ... ok
[INFO] [stdout] test persona_kit::tests::system_prompt_contains_friend_role_and_constraint ... ok
[INFO] [stdout] test persona_kit::tests::system_prompt_contains_role_keyword_and_constraint ... ok
[INFO] [stdout] test persona_kit::tests::visual_hint_fields_are_nonempty ... ok
[INFO] [stdout] test persona_kit::tests::zodiac_from_str_abbreviations ... ok
[INFO] [stdout] test pool::tests::backend_config_debug_does_not_leak_api_key ... ok
[INFO] [stdout] test pool::tests::add_openai_config_registers_openai_backend ... ok
[INFO] [stdout] test pool::tests::backend_config_local_holds_num_ctx ... ok
[INFO] [stdout] test pool::tests::backend_config_holds_fields ... ok
[INFO] [stdout] test persona_kit::tests::parse_invite_mbti_blood_zodiac_role_fields ... ok
[INFO] [stdout] test persona_kit::tests::parse_invite_multi_word_name ... ok
[INFO] [stdout] test pool::tests::backend_pool_add_and_len ... ok
[INFO] [stdout] test persona_kit::tests::base_rate_is_clamped_within_bounds ... ok
[INFO] [stdout] test persona_kit::tests::all_combinations_assemble_without_panic ... ok
[INFO] [stdout] test pool::tests::backend_pool_is_usable_as_dyn_persona_runtime ... ok
[INFO] [stdout] test pool::tests::backend_pool_starts_empty ... ok
[INFO] [stdout] test pool::tests::fallback_chain_returns_empty_when_unresolvable ... ok
[INFO] [stdout] test pool::tests::backend_pool_set_default ... ok
[INFO] [stdout] test pool::tests::fallback_chain_cycle_safe ... ok
[INFO] [stdout] test pool::tests::generate_batch_returns_none_for_unresolvable_jobs ... ok
[INFO] [stdout] test pool::tests::fallback_chain_returns_only_primary_when_no_fallback ... ok
[INFO] [stdout] test pool::tests::fallback_chain_returns_primary_and_fallback ... ok
[INFO] [stdout] test pool::tests::generate_on_returns_none_for_unknown_backend ... ok
[INFO] [stdout] test pool::tests::generate_returns_none_when_no_backend_resolved ... ok
[INFO] [stdout] test pool::tests::backend_pool_multiple_backends ... ok
[INFO] [stdout] test pool::tests::generate_on_offline_backend_returns_none ... ok
[INFO] [stdout] test pool::tests::new_config_has_ollama_protocol_by_default ... ok
[INFO] [stdout] test pool::tests::new_openai_config_has_openai_protocol ... ok
[INFO] [stdout] test pool::tests::mixed_pool_resolve_works_for_both_protocols ... ok
[INFO] [stdout] test pool::tests::generate_batch_offline_primary_and_fallback_returns_none_preserves_order ... ok
[INFO] [stdout] test pool::tests::generate_on_does_not_follow_fallback_chain ... ok
[INFO] [stdout] test pool::tests::resolve_returns_routed_backend_for_mapped_persona ... ok
[INFO] [stdout] test pool::tests::resolve_returns_none_when_no_default_and_no_route ... ok
[INFO] [stdout] test pool::tests::mixed_pool_generate_offline_returns_none_for_openai_backend ... ok
[INFO] [stdout] test pool::tests::resolve_falls_back_to_default_for_unmapped_persona ... ok
[INFO] [stdout] test pool::tests::generate_batch_offline_returns_none_preserves_order ... ok
[INFO] [stdout] test preset::tests::argument_has_lower_theta_and_higher_rho_than_calm ... ok
[INFO] [stdout] test preset::tests::alpha_matrix_is_uniform_off_diagonal_with_zero_diagonal ... ok
[INFO] [stdout] test preset::tests::all_presets_are_stable_with_three_personas ... ok
[INFO] [stdout] test preset::tests::asymmetric_config_is_stable_and_matches_target_rho ... ok
[INFO] [stdout] test pool::tests::semaphore_created_on_add ... ok
[INFO] [stdout] test preset::tests::contrasting_modifiers_produce_asymmetric_alpha ... ok
[INFO] [stdout] test preset::tests::empty_modifiers_equals_build_config ... ok
[INFO] [stdout] test pool::tests::run_with_caps_two_semaphores_enforce_caps_independently ... ok
[INFO] [stdout] test preset::tests::parse_valid_and_invalid_presets ... ok
[INFO] [stdout] test preset::tests::spectral_radius_matches_target_rho_within_tolerance ... ok
[INFO] [stdout] test pool::tests::run_with_caps_preserves_input_order ... ok
[INFO] [stdout] test rrf::tests::interest_signal_ranks_addressed_candidate_higher ... ok
[INFO] [stdout] test rrf::tests::echo_signal_ranks_echoing_candidate_higher ... ok
[INFO] [stdout] test rrf::tests::no_content_history_is_identical_to_three_signal_baseline ... ok
[INFO] [stdout] test rrf::tests::interest_signal_increases_wins_for_addressed_candidate ... ok
[INFO] [stdout] test rrf::tests::large_k_lets_random_signal_flip_non_leader_more_often ... ok
[INFO] [stdout] test rrf::tests::rrf_score_formula_matches_known_ranks ... ok
[INFO] [stdout] test runtime::tests::fake_backend_generate_always_returns_none ... ok
[INFO] [stdout] test semaphore::tests::acquire_and_release_count ... ok
[INFO] [stdout] test rrf::tests::echo_signal_promotes_candidate_with_word_overlap ... ok
[INFO] [stdout] test sink::tests::record_with_flow_none_omits_flow_key_in_json ... ok
[INFO] [stdout] test sink::tests::record_with_flow_some_includes_flow_key_in_json ... ok
[INFO] [stdout] test sink::tests::serializes_observation_record_as_single_line_json ... ok
[INFO] [stdout] test sink::tests::vec_sink_emit_collects_records ... ok
[INFO] [stdout] test rrf::tests::same_seed_and_inputs_select_identically ... ok
[INFO] [stdout] test semaphore::tests::concurrent_holders_never_exceed_cap ... ok
[INFO] [stdout] test rrf::tests::balance_ranks_more_frequent_speaker_worse ... ok
[INFO] [stdout] test runtime::tests::fake_backend_is_object_safe_and_does_not_panic ... ok
[INFO] [stdout] test tui::tests::renders_silence_record_without_crashing ... ok
[INFO] [stdout] test utterance::tests::topic_tag_flag_controls_optional_deterministic_tag ... ok
[INFO] [stdout] test tui::tests::renders_excitation_annotation_when_present ... ok
[INFO] [stdout] test utterance::tests::builds_event_for_speaker_at_logical_time ... ok
[INFO] [stdout] test tui::tests::renders_speaker_record_with_gauges_counts_and_reason ... ok
[INFO] [stdout] test live::tests::engine_selection_is_deterministic_with_same_seed ... ok
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/release/build/salon/f023361d9487663d/out/salon-f023361d9487663d)
[INFO] [stdout] test live::tests::cancel_pending_generation_removes_placeholder_and_ignores_late_result ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 238 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 2.08s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 12 tests
[INFO] [stdout] test tests::parses_room_id_flag ... ok
[INFO] [stdout] test tests::parses_sweep_flag ... ok
[INFO] [stdout] test tests::parses_topic_flag ... ok
[INFO] [stdout] test tests::parses_tuning_knob_overrides ... ok
[INFO] [stdout] test tests::caps_topics_at_five ... ok
[INFO] [stdout] test tests::parses_room_flag ... ok
[INFO] [stdout] test tests::parses_headless_defaults ... ok
[INFO] [stdout] test tests::rejects_empty_topic_value ... ok
[INFO] [stdout] test tests::rejects_empty_room_id_value ... ok
[INFO] [stdout] test tests::rejects_invalid_float_value ... ok
[INFO] [stdout] test tests::rejects_missing_room_value ... ok
[INFO] [stdout] test tests::parses_seed_and_ticks ... ok
[INFO] [stderr]      Running tests/recall_eval.rs (/opt/rustwide/target/release/build/salon/4605770abbd0014f/out/recall_eval-4605770abbd0014f)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test recall_evening_ssot_in_top3_for_cara ... ok
[INFO] [stdout] test recall_morning_ssot_in_top3 ... ok
[INFO] [stdout] test participation_isolation_ada_cannot_recall_evening ... ok
[INFO] [stdout] test participation_isolation_cara_cannot_recall_morning ... ok
[INFO] [stdout] test precision_ssot_ranks_above_distractor_evening ... ok
[INFO] [stdout] test recall_evening_ssot_in_top3_for_bora ... ok
[INFO] [stdout] test format_recall_morning_ssot_non_empty ... ok
[INFO] [stdout] test recall_is_deterministic_across_two_runs ... ok
[INFO] [stdout] test precision_ssot_ranks_above_distractor_morning ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/smoke.rs (/opt/rustwide/target/release/build/salon/e2ae029239ea06e2/out/smoke-e2ae029239ea06e2)
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test higher_mu_personas_speak_more_often ... ok
[INFO] [stdout] test rrf_reason_is_populated_for_every_gate_passed_record ... ok
[INFO] [stdout] test higher_theta_produces_more_silence ... ok
[INFO] [stderr]      Running tests/smoke_chat.rs (/opt/rustwide/target/release/build/salon/0a5c4883230138ed/out/smoke_chat-0a5c4883230138ed)
[INFO] [stdout] test large_k_allows_more_non_leader_wins_when_balance_is_isolated ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 2 tests
[INFO] [stdout] test chat_config_gives_three_way_participation ... ok
[INFO] [stdout] test chat_config_never_picks_same_speaker_twice_in_a_row ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/smoke_v10.rs (/opt/rustwide/target/release/build/salon/ff1b988feabe0ef6/out/smoke_v10-ff1b988feabe0ef6)
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test v10_default_build_is_deterministic ... ok
[INFO] [stderr]      Running tests/smoke_v2.rs (/opt/rustwide/target/release/build/salon/fd33b12a9d495a6a/out/smoke_v2-fd33b12a9d495a6a)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test alpha_zero_toggle_matches_v1_behavior ... ok
[INFO] [stdout] test chemistry_modifiers_change_speaker_pattern ... ok
[INFO] [stdout] test stable_preset_keeps_intensities_bounded ... ok
[INFO] [stdout] test alpha_creates_seed_variance_in_length ... ok
[INFO] [stdout] test fsm_forbids_consecutive_same_speaker ... ok
[INFO] [stderr]      Running tests/smoke_v3.rs (/opt/rustwide/target/release/build/salon/b0b183b2104ffdbd/out/smoke_v3-b0b183b2104ffdbd)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.24s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test stub_backend_fills_utterance_for_speaking_records ... ok
[INFO] [stdout] test fake_backend_is_deterministic_and_keeps_mu_frequency ... ok
[INFO] [stdout] test content_naming_a_persona_steers_selection ... ok
[INFO] [stdout] test stub_backend_is_deterministic ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.22s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/smoke_v4.rs (/opt/rustwide/target/release/build/salon/26833fedb122ce10/out/smoke_v4-26833fedb122ce10)
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test live_pool_cloud_generate ... ignored
[INFO] [stdout] test num_ctx_none_omitted_some_included ... ok
[INFO] [stdout] test routing_resolve_returns_correct_backend ... ok
[INFO] [stdout] test openai_parse_response_extracts_content_ignores_reasoning ... ok
[INFO] [stdout] test batch_no_backend_returns_none_no_panic ... ok
[INFO] [stdout] test inv1_determinism_multiple_seeds ... ok
[INFO] [stdout] test fallback_chain_order_and_cycle_safety ... ok
[INFO] [stdout] test batch_preserves_order_all_none_no_panic ... ok
[INFO] [stdout] test inv1_fake_backend_determinism_preserved_with_v04_code ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 8 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.06s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/smoke_v5.rs (/opt/rustwide/target/release/build/salon/c0f4df358d40dd5a/out/smoke_v5-c0f4df358d40dd5a)
[INFO] [stdout] 
[INFO] [stdout] running 8 tests
[INFO] [stdout] test render_chat_no_panic_and_shows_input_and_names ... ok
[INFO] [stdout] test inv1_fake_backend_determinism_preserved_with_v05_code ... ok
[INFO] [stdout] test live_session_submit_human_appends_event_and_raises_excitations ... ok
[INFO] [stdout] test inv1_determinism_multiple_seeds ... ok
[INFO] [stdout] test human_channel_speak_appends_event_and_raises_excitations ... ok
[INFO] [stdout] test live_session_poll_generation_clears_pending ... ok
[INFO] [stdout] test live_session_tick_dispatches_placeholder_and_blocks_second ... ok
[INFO] [stdout] test live_session_drop_does_not_hang_or_panic ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/smoke_v6.rs (/opt/rustwide/target/release/build/salon/3b296a01f1c4dd21/out/smoke_v6-3b296a01f1c4dd21)
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test flow_measure_is_deterministic_and_content_gated ... ok
[INFO] [stdout] test inv1_fake_backend_determinism_and_flow_none ... ok
[INFO] [stdout] test render_chat_with_flow_none_no_panic ... ok
[INFO] [stdout] test flow_content_gating_vec_sink_fake_backend_all_none ... ok
[INFO] [stdout] test render_chat_with_flow_some_no_panic ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/smoke_v7.rs (/opt/rustwide/target/release/build/salon/cfbe59ba6e6ebb7c/out/smoke_v7-cfbe59ba6e6ebb7c)
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test update_intensities_golden_math ... ok
[INFO] [stdout] test inv1_fake_backend_determinism_and_flow_none ... ok
[INFO] [stdout] test meta_controller_no_op_without_content ... ok
[INFO] [stdout] test render_chat_with_mu_scale_no_panic_and_shows_value ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/smoke_v8.rs (/opt/rustwide/target/release/build/salon/b2730db32d968ccc/out/smoke_v8-b2730db32d968ccc)
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test inv1_fake_backend_determinism_no_recall_leakage ... ok
[INFO] [stdout] test recall_slot_ollama_build_request_body ... ok
[INFO] [stdout] test recall_determinism_and_participation_isolation ... ok
[INFO] [stdout] test recall_slot_openai_build_request_body ... ok
[INFO] [stdout] test content_gate_offline_session_store_empty_recall_none ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.99s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/smoke_v9.rs (/opt/rustwide/target/release/build/salon/4c1d19308abb59ba/out/smoke_v9-4c1d19308abb59ba)
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test v9_default_build_is_deterministic ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests salon
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "03cc99905ff075f0a0c8074054409e5cad95958278723554610a704e04bbd0be", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "03cc99905ff075f0a0c8074054409e5cad95958278723554610a704e04bbd0be", kill_on_drop: false }`
[INFO] [stdout] 03cc99905ff075f0a0c8074054409e5cad95958278723554610a704e04bbd0be
