[INFO] fetching crate saya-agent 0.4.1...
[INFO] testing saya-agent-0.4.1 against 1.99.0-beta.8 for beta-1.100-2
[INFO] extracting crate saya-agent 0.4.1 into /workspace/builds/worker-6-tc1/source
[INFO] started tweaking crates.io crate saya-agent 0.4.1
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate saya-agent 0.4.1
[INFO] tweaked toml for crates.io crate saya-agent 0.4.1 written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate saya-agent 0.4.1 on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate saya-agent 0.4.1 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded saya-types v0.4.1
[INFO] [stderr]   Downloaded async-compression v0.4.43
[INFO] [stderr]   Downloaded find-msvc-tools v0.1.10
[INFO] [stderr]   Downloaded cc v1.4.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 77f350989daa21a0a20c9639248e9b4fcb3b59bf0fdf39acc96375d50a4d844d
[INFO] running `Command { std: "docker" "start" "77f350989daa21a0a20c9639248e9b4fcb3b59bf0fdf39acc96375d50a4d844d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "77f350989daa21a0a20c9639248e9b4fcb3b59bf0fdf39acc96375d50a4d844d", 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" "77f350989daa21a0a20c9639248e9b4fcb3b59bf0fdf39acc96375d50a4d844d" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "77f350989daa21a0a20c9639248e9b4fcb3b59bf0fdf39acc96375d50a4d844d", 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" "77f350989daa21a0a20c9639248e9b4fcb3b59bf0fdf39acc96375d50a4d844d" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling find-msvc-tools v0.1.10
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling syn v3.0.3
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling socket2 v0.6.5
[INFO] [stderr]    Compiling mio v1.2.2
[INFO] [stderr]    Compiling simd-adler32 v0.3.10
[INFO] [stderr]    Compiling compression-core v0.4.32
[INFO] [stderr]    Compiling ipnet v2.12.1
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling http-body-util v0.1.4
[INFO] [stderr]    Compiling bitflags v2.13.1
[INFO] [stderr]    Compiling cc v1.4.2
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling compression-codecs v0.4.38
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.7
[INFO] [stderr]    Compiling tokio-macros v2.7.2
[INFO] [stderr]    Compiling futures-macro v0.3.34
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling thiserror-impl v2.0.20
[INFO] [stderr]    Compiling async-trait v0.1.92
[INFO] [stderr]    Compiling tokio v1.53.1
[INFO] [stderr]    Compiling zerofrom v0.1.8
[INFO] [stderr]    Compiling yoke v0.8.3
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling futures-util v0.3.34
[INFO] [stderr]    Compiling rustls v0.23.45
[INFO] [stderr]    Compiling thiserror v2.0.20
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling rustls-webpki v0.103.14
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling saya-types v0.4.1
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling hyper v1.11.0
[INFO] [stderr]    Compiling async-compression v0.4.43
[INFO] [stderr]    Compiling tokio-util v0.7.19
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling tower-http v0.6.11
[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 saya-agent v0.4.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 34.77s
[INFO] running `Command { std: "docker" "inspect" "77f350989daa21a0a20c9639248e9b4fcb3b59bf0fdf39acc96375d50a4d844d", 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" "77f350989daa21a0a20c9639248e9b4fcb3b59bf0fdf39acc96375d50a4d844d" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling saya-agent v0.4.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 12.38s
[INFO] running `Command { std: "docker" "inspect" "77f350989daa21a0a20c9639248e9b4fcb3b59bf0fdf39acc96375d50a4d844d", 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" "77f350989daa21a0a20c9639248e9b4fcb3b59bf0fdf39acc96375d50a4d844d" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.21s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/saya_agent-6f6590bfec7865fa)
[INFO] [stdout] 
[INFO] [stdout] running 221 tests
[INFO] [stdout] test consensus::tests::fp_empty_with_different_columns_differ ... ok
[INFO] [stdout] test consensus::tests::fp_integral_float_equals_integer ... ok
[INFO] [stdout] test consensus::tests::fp_negative_integral_float_equals_integer ... ok
[INFO] [stdout] test consensus::tests::fp_different_column_count_differ_even_when_empty ... ok
[INFO] [stdout] test consensus::tests::fp_column_order_matters ... ok
[INFO] [stdout] test consensus::tests::fp_different_column_names_differ ... ok
[INFO] [stdout] test consensus::tests::fp_empty_results_are_consistent ... ok
[INFO] [stdout] test consensus::tests::fp_two_truncated_results_with_the_same_rows_match ... ok
[INFO] [stdout] test consensus::tests::fp_truncated_differs_from_complete_with_the_same_rows ... ok
[INFO] [stdout] test consensus::tests::fp_null_distinct_from_empty_and_text_null ... ok
[INFO] [stdout] test consensus::tests::fp_row_order_ignored_when_unordered ... ok
[INFO] [stdout] test consensus::tests::fp_empty_differs_from_nonempty ... ok
[INFO] [stdout] test consensus::tests::fp_nonintegral_float_keeps_precision ... ok
[INFO] [stdout] test consensus::tests::fp_booleans_normalise_and_differ ... ok
[INFO] [stdout] test consensus::tests::fp_whitespace_is_preserved ... ok
[INFO] [stdout] test consensus::tests::fp_row_order_matters_when_ordered ... ok
[INFO] [stdout] test consensus::tests::tally_failed_do_not_vote_but_are_counted ... ok
[INFO] [stdout] test consensus::tests::tally_ordered_passes_through_to_fingerprint ... ok
[INFO] [stdout] test consensus::tests::tally_tie_for_lead_is_not_a_win ... ok
[INFO] [stdout] test history::tests::agent_request_without_context_blocks_field_deserializes ... ok
[INFO] [stdout] test history::tests::an_oversized_prompt_builds_without_failing_closed ... ok
[INFO] [stdout] test consensus::tests::tally_all_failed ... ok
[INFO] [stdout] test consensus::tests::tally_empty_input_does_not_panic ... ok
[INFO] [stdout] test history::tests::a_large_context_block_with_an_ordinary_prompt_builds ... ok
[INFO] [stdout] test consensus::tests::tally_single_successful_wins ... ok
[INFO] [stdout] test history::tests::context_blocks_count_toward_the_byte_budget_without_failing_closed ... ok
[INFO] [stdout] test history::tests::body_containing_a_forged_block_pair_is_contained ... ok
[INFO] [stdout] test consensus::tests::tally_largest_group_wins ... ok
[INFO] [stdout] test history::tests::body_containing_closing_delimiter_does_not_escape_its_wrapper ... ok
[INFO] [stdout] test history::tests::empty_context_blocks_is_byte_identical_to_today ... ok
[INFO] [stdout] test history::tests::cumulative_byte_boundary_keeps_only_newest_contiguous_suffix ... ok
[INFO] [stdout] test history::tests::byte_budget_truncates_oldest_first_at_byte_boundary ... ok
[INFO] [stdout] test history::tests::keeps_newest_complete_turns_with_stable_bounds ... ok
[INFO] [stdout] test history::tests::history_pair_is_never_split_at_the_byte_boundary ... ok
[INFO] [stdout] test history::tests::multiple_blocks_each_wrapped_and_preamble_appears_once ... ok
[INFO] [stdout] test consensus::tests::tally_winner_is_first_member_in_input_order ... ok
[INFO] [stdout] test history::tests::context_block_body_never_reaches_system_message ... ok
[INFO] [stdout] test history::tests::turn_bytes_matches_what_build_messages_assembles ... ok
[INFO] [stdout] test history_context::tests::a_hostile_block_renders_exactly_one_real_delimiter_pair ... ok
[INFO] [stdout] test loop_runner::compaction::tests::digest_handles_a_call_with_no_sql_argument ... ok
[INFO] [stdout] test history_context::tests::a_truncated_block_carries_its_marker_inside_the_delimiters ... ok
[INFO] [stdout] test history::tests::prompt_injection_body_is_quoted_data_not_policy ... ok
[INFO] [stdout] test history::tests::rejects_tool_history_and_oversized_current_prompt ... ok
[INFO] [stdout] test history::tests::system_prompt_prefix_states_no_capabilities ... ok
[INFO] [stdout] test history::tests::truncated_flag_is_visible_in_rendered_block ... ok
[INFO] [stdout] test loop_runner::compaction::tests::digest_names_statements_and_shapes_without_row_values ... ok
[INFO] [stdout] test loop_runner::failed_statements::tests::a_statement_differing_by_one_character_is_not_a_repeat ... ok
[INFO] [stdout] test history::tests::appends_extra_system_context_when_provided ... ok
[INFO] [stdout] test loop_runner::failed_statements::tests::a_tool_call_failure_is_remembered_under_its_own_key ... ok
[INFO] [stdout] test loop_runner::compaction::tests::digest_records_unavailable_shape_for_an_unparseable_result ... ok
[INFO] [stdout] test loop_runner::failed_statements::tests::prior_error_is_none_for_an_unseen_statement ... ok
[INFO] [stdout] test loop_runner::failed_statements::tests::record_then_prior_error_names_the_failure ... ok
[INFO] [stdout] test loop_runner::failed_statements::tests::recording_the_same_statement_twice_keeps_the_latest_error ... ok
[INFO] [stdout] test loop_runner::failed_statements::tests::sql_of_extracts_a_string_sql_argument ... ok
[INFO] [stdout] test loop_runner::failed_statements::tests::sql_of_is_none_for_a_non_string_sql_argument ... ok
[INFO] [stdout] test loop_runner::failed_statements::tests::the_remembered_failure_set_is_bounded_at_its_documented_cap ... ok
[INFO] [stdout] test loop_runner::failed_statements::tests::sql_of_is_none_when_there_is_no_sql_argument ... ok
[INFO] [stdout] test loop_runner::failure_key::tests::a_changed_argument_value_is_a_different_key ... ok
[INFO] [stdout] test loop_runner::failure_key::tests::a_sql_statement_and_a_tool_call_spelled_alike_do_not_collide ... ok
[INFO] [stdout] test loop_runner::failure_key::tests::a_huge_arguments_key_is_bounded_and_still_identifies_its_call ... ok
[INFO] [stdout] test loop_runner::failure_key::tests::the_tool_name_participates_in_the_key ... ok
[INFO] [stdout] test loop_runner::failure_key::tests::a_sql_carrying_call_keys_on_the_statement_alone ... ok
[INFO] [stdout] test loop_runner::failure_key::tests::the_truncation_prefix_never_splits_a_code_point ... ok
[INFO] [stdout] test loop_runner::failure_key::tests::arguments_built_in_different_key_orders_produce_one_key ... ok
[INFO] [stdout] test loop_runner::output::tests::budgets_from_env_is_unbounded_when_unset_or_unparseable ... ok
[INFO] [stdout] test loop_runner::output::tests::budgets_from_env_sets_each_ceiling_independently_with_no_upper_limit ... ok
[INFO] [stdout] test loop_runner::output::tests::compaction_digest_names_statements_and_carries_no_row_value ... ok
[INFO] [stdout] test loop_runner::output::tests::compaction_keeps_the_system_message_and_newest_group_byte_identical ... ok
[INFO] [stdout] test loop_runner::output::tests::default_continuation_ceiling_is_three ... ok
[INFO] [stdout] test loop_runner::tool_record::tests::result_shape_of_is_none_for_a_non_row_shaped_result ... ok
[INFO] [stdout] test loop_runner::tool_record::tests::result_shape_of_keeps_column_names_for_an_empty_result ... ok
[INFO] [stdout] test loop_runner::receive::tests::main_loop_request_does_not_set_json_mode ... ok
[INFO] [stdout] test loop_runner::output::tests::continuation_budget_positive_value_is_honored ... ok
[INFO] [stdout] test loop_runner::output::tests::trim_under_budget_leaves_the_conversation_untouched ... ok
[INFO] [stdout] test loop_runner::output::tests::continuation_budget_unparseable_means_default_bound_never_unbounded ... ok
[INFO] [stdout] test loop_runner::output::tests::turn_and_tool_call_budgets_stay_unbounded_when_unset_through_new_struct ... ok
[INFO] [stdout] test loop_runner::output::tests::continuation_budget_unset_means_default_bound ... ok
[INFO] [stdout] test loop_runner::output::tests::continuation_budget_zero_disables_continuation ... ok
[INFO] [stdout] test loop_runner::output::tests::default_limits_are_unbounded ... ok
[INFO] [stdout] test loop_runner::output::tests::env_budgets_flow_onto_agent_limits_unchanged ... ok
[INFO] [stdout] test loop_runner::output::tests::trim_never_mutates_an_already_sent_tool_message ... ok
[INFO] [stdout] test loop_runner::tools::tests::a_long_error_is_bounded ... ok
[INFO] [stdout] test loop_runner::tool_record::tests::result_shape_of_takes_count_and_names_and_no_cell_values ... ok
[INFO] [stdout] test loop_runner::tools::tests::a_redacted_tool_result_tells_the_model ... ok
[INFO] [stdout] test loop_runner::tools::tests::a_refusal_offers_no_override ... ok
[INFO] [stdout] test loop_runner::tools::tests::a_refused_write_says_it_was_refused ... ok
[INFO] [stdout] test loop_runner::tools::tests::a_runtime_failure_reads_differently_from_a_refusal ... ok
[INFO] [stdout] test loop_runner::tools::tests::a_successful_tool_summary_is_unchanged ... ok
[INFO] [stdout] test loop_runner::tools::tests::an_unredacted_tool_result_is_unchanged ... ok
[INFO] [stdout] test loop_runner::tools::tests::the_guard_stands_everywhere_the_permit_is_false ... ok
[INFO] [stdout] test loop_runner::tools::tests::the_permit_does_not_carry_the_write_shaped_members ... ok
[INFO] [stdout] test loop_runner::tools::tests::the_permit_opens_the_gated_tool_in_both_paths ... ok
[INFO] [stdout] test protocol::contracts::context::tests::known_input_over_a_known_window_rounds_like_the_footer ... ok
[INFO] [stdout] test protocol::approval::tests::bypass_joins_the_mode_vocabulary ... ok
[INFO] [stdout] test loop_runner::tools::tests::the_model_still_receives_the_full_error ... ok
[INFO] [stdout] test protocol::contracts::context::tests::no_input_report_is_no_percentage_never_zero_percent ... ok
[INFO] [stdout] test protocol::contracts::context::tests::no_window_or_a_zero_window_is_no_percentage_never_zero ... ok
[INFO] [stdout] test protocol::contracts::context::tests::the_owner_set_thresholds_are_warn_70_compact_95 ... ok
[INFO] [stdout] test protocol::contracts::event::tests::knowledge_learning_disabled_serializes_with_type_tag_model_and_misses ... ok
[INFO] [stdout] test protocol::contracts::session_policy_tests::a_frozen_ask_denies_naming_the_run_s_approval ... ok
[INFO] [stdout] test protocol::contracts::session_policy_tests::a_frozen_plan_denies_a_seeded_write ... ok
[INFO] [stdout] test protocol::contracts::session_policy_tests::a_frozen_policy_cannot_accumulate_a_grant ... ok
[INFO] [stdout] test protocol::contracts::session_policy_tests::a_frozen_read_only_or_never_run_is_unchanged_by_its_seeds ... ok
[INFO] [stdout] test protocol::contracts::session_policy_tests::a_grant_does_not_rescue_a_write_under_plan ... ok
[INFO] [stdout] test protocol::contracts::session_policy_tests::a_run_s_seeds_pre_answer_what_allow_stated ... ok
[INFO] [stdout] test protocol::contracts::session_policy_tests::allow_once_and_deny_leave_no_state ... ok
[INFO] [stdout] test protocol::contracts::session_policy_tests::a_session_grant_pre_answers_the_ask ... ok
[INFO] [stdout] test protocol::contracts::session_policy_tests::ask_hands_every_call_to_the_frontend ... ok
[INFO] [stdout] test protocol::contracts::session_policy_tests::bypass_allows_every_effect_without_asking_or_grants ... ok
[INFO] [stdout] test protocol::contracts::session_policy_tests::each_call_a_grant_answers_counts_under_its_token ... ok
[INFO] [stdout] test protocol::contracts::session_policy_tests::grants_cannot_move_read_only_or_never ... ok
[INFO] [stdout] test protocol::contracts::session_policy_tests::agent_mode_parses_and_names_itself ... ok
[INFO] [stdout] test consensus::tests::fp_identical_results_match ... ok
[INFO] [stdout] test protocol::contracts::session_policy_tests::plan_narrows_every_approval_policy_without_moving_reads ... ok
[INFO] [stdout] test consensus::tests::tally_three_way_tie ... ok
[INFO] [stdout] test consensus::tests::tally_two_tied_groups_of_two ... ok
[INFO] [stdout] test protocol::contracts::session_policy_tests::never_denies_everything ... ok
[INFO] [stdout] test protocol::contracts::session_policy_tests::plan_denies_writes_under_bypass ... ok
[INFO] [stdout] test protocol::contracts::session_policy_tests::the_default_mode_is_build_and_resolves_as_before ... ok
[INFO] [stdout] test protocol::contracts::tests::chat_message_has_no_reasoning_field_and_wire_is_unchanged ... ok
[INFO] [stdout] test protocol::contracts::session_policy_tests::read_only_allows_read_shaped_and_denies_the_rest ... ok
[INFO] [stdout] test protocol::contracts::session_policy_tests::session_write_is_allowed_wherever_reads_are ... ok
[INFO] [stdout] test protocol::contracts::tests::chat_request_without_reasoning_effort_key_defaults_to_default ... ok
[INFO] [stdout] test protocol::contracts::tests::chat_request_without_response_format_key_defaults_to_text ... ok
[INFO] [stdout] test protocol::contracts::tests::chat_response_carries_reasoning_and_round_trips ... ok
[INFO] [stdout] test protocol::contracts::tests::knowledge_learning_skipped_serializes_with_type_tag_and_reason ... ok
[INFO] [stdout] test protocol::contracts::tests::knowledge_overridden_serializes_with_type_tag_and_findings ... ok
[INFO] [stdout] test protocol::contracts::tests::local_state_effect_round_trips_through_snake_case ... ok
[INFO] [stdout] test protocol::contracts::tests::reasoning_effort_round_trips_through_snake_case ... ok
[INFO] [stdout] test protocol::contracts::tests::reasoning_effort_defaults_to_default_send_nothing ... ok
[INFO] [stdout] test protocol::streaming::tests::chat_response_without_usage_key_defaults_to_none ... ok
[INFO] [stdout] test protocol::contracts::tests::tool_effect_without_local_state_key_defaults_to_none ... ok
[INFO] [stdout] test protocol::streaming::tests::an_unhandled_consumer_renders_reasoning_to_nothing_not_an_error ... ok
[INFO] [stdout] test protocol::streaming::tests::collect_leaves_reasoning_none_when_the_stream_emits_none ... ok
[INFO] [stdout] test protocol::streaming::tests::collect_leaves_usage_none_when_the_stream_emits_none ... ok
[INFO] [stdout] test protocol::streaming::tests::collect_threads_reasoning_into_the_response ... ok
[INFO] [stdout] test protocol::streaming::tests::some_zero_usage_is_distinct_from_absent ... ok
[INFO] [stdout] test providers::anthropic_request::tests::a_request_with_no_tools_still_caches_the_system ... ok
[INFO] [stdout] test providers::anthropic_request::tests::a_thinking_budget_stays_below_the_output_ceiling ... ok
[INFO] [stdout] test protocol::streaming::tests::the_default_stream_mirrors_the_response_usage_onto_the_stream ... ok
[INFO] [stdout] test protocol::streaming::tests::cancellation_waiter_does_not_miss_a_notification ... ok
[INFO] [stdout] test providers::anthropic_request::tests::minimal_effort_request_carries_thinking_budget_on_wire ... ok
[INFO] [stdout] test providers::anthropic_request::tests::no_thinking_field_when_the_ceiling_cannot_fit_the_minimum_budget ... ok
[INFO] [stdout] test protocol::streaming::tests::collect_threads_the_last_usage_event_into_the_response ... ok
[INFO] [stdout] test providers::anthropic_request::tests::breakpoint_count_never_exceeds_four ... ok
[INFO] [stdout] test protocol::streaming::tests::token_usage_is_copy_and_new_fields_default_to_none ... ok
[INFO] [stdout] test providers::anthropic_request::tests::default_effort_request_omits_thinking_on_wire ... ok
[INFO] [stdout] test providers::anthropic_request::tests::system_block_carries_an_ephemeral_cache_breakpoint ... ok
[INFO] [stdout] test providers::anthropic_request::tests::json_hint_is_deliberately_omitted_from_anthropic_body ... ok
[INFO] [stdout] test protocol::streaming::tests::reasoning_is_not_replayed_to_the_provider_as_history ... ok
[INFO] [stdout] test providers::anthropic_request::tests::only_the_last_tool_carries_a_cache_breakpoint ... ok
[INFO] [stdout] test protocol::streaming::tests::chat_response_with_null_usage_deserializes_to_none ... ok
[INFO] [stdout] test providers::anthropic_request::tests::test_message_mapping_and_system_extraction ... ok
[INFO] [stdout] test providers::anthropic_stream::tests::empty_usage_object_reports_nothing ... ok
[INFO] [stdout] test providers::anthropic_request::tests::system_serializes_as_one_text_block_with_the_same_text_as_the_old_string ... ok
[INFO] [stdout] test protocol::streaming::tests::collect_rejects_a_stream_exceeding_max_stream_bytes ... ok
[INFO] [stdout] test providers::anthropic_stream::tests::reported_zero_cache_read_is_some_zero ... ok
[INFO] [stdout] test providers::anthropic_stream::tests::message_start_with_cache_fields_populates_both ... ok
[INFO] [stdout] test providers::gemini_request::tests::json_hint_is_deliberately_omitted_from_gemini_body ... ok
[INFO] [stdout] test protocol::contracts::tests::reasoning_event_does_not_place_reasoning_on_the_replayed_message ... ok
[INFO] [stdout] test protocol::streaming::tests::collect_rejects_a_reasoning_stream_exceeding_max_stream_bytes ... ok
[INFO] [stdout] test protocol::contracts::tests::reasoning_text_serializes_with_type_tag_and_round_trips ... ok
[INFO] [stdout] test protocol::contracts::tests::response_format_defaults_to_text ... ok
[INFO] [stdout] test protocol::contracts::tests::response_format_round_trips_through_snake_case ... ok
[INFO] [stdout] test providers::context_block_tests::anthropic_request_keeps_context_block_out_of_system_field ... ok
[INFO] [stdout] test providers::context_block_tests::gemini_request_keeps_context_block_out_of_system_instruction ... ok
[INFO] [stdout] test providers::context_block_tests::ollama_wire_keeps_context_block_out_of_system_messages ... ok
[INFO] [stdout] test providers::context_block_tests::openai_wire_keeps_context_block_out_of_system_messages ... ok
[INFO] [stdout] test providers::anthropic_stream::tests::usage_without_cache_fields_leaves_them_none ... ok
[INFO] [stdout] test providers::gemini_request::tests::minimal_effort_request_carries_thinking_budget_zero_on_wire ... ok
[INFO] [stdout] test providers::gemini_request::tests::test_gemini_request_mapping_and_tool_resolution ... ok
[INFO] [stdout] test providers::gemini_response::tests::parse_threads_usage_into_chat_response ... ok
[INFO] [stdout] test providers::gemini_response::tests::test_parse_text_response ... ok
[INFO] [stdout] test providers::gemini_response::tests::test_parse_function_call_response ... ok
[INFO] [stdout] test providers::gemini_request::tests::default_effort_request_omits_thinking_config_on_wire ... ok
[INFO] [stdout] test providers::gemini_response::tests::missing_usage_metadata_is_none ... ok
[INFO] [stdout] test providers::http::tests::test_jitter_bounds ... ok
[INFO] [stdout] test providers::gemini_response::tests::usage_metadata_populates_cache_and_reasoning ... ok
[INFO] [stdout] test providers::http::tests::test_parse_retry_after_valid_seconds ... ok
[INFO] [stdout] test providers::http::tests::test_retry_after_and_backoff_capped_at_max ... ok
[INFO] [stdout] test providers::gemini_response::tests::parse_leaves_usage_none_when_no_usage_metadata ... ok
[INFO] [stdout] test providers::http::tests::send_stream_cancellation_wins_before_establishment ... ok
[INFO] [stdout] test providers::gemini_response::tests::test_parse_invalid_response ... ok
[INFO] [stdout] test providers::http::tests::status_descriptions_name_the_fix_without_the_body ... ok
[INFO] [stdout] test providers::http::tests::test_parse_retry_after_invalid_or_missing ... ok
[INFO] [stdout] test providers::gemini_response::tests::reported_zero_cache_is_some_zero ... ok
[INFO] [stdout] test providers::ollama_wire::tests::default_effort_request_omits_think_on_wire ... ok
[INFO] [stdout] test providers::ollama_chunks::tests::done_record_carries_no_cache_or_reasoning ... ok
[INFO] [stdout] test providers::ollama_wire::tests::json_object_request_carries_format_json_on_wire ... ok
[INFO] [stdout] test providers::ollama_chunks::tests::message_carries_thinking ... ok
[INFO] [stdout] test providers::ollama_wire::tests::text_request_omits_format_on_wire ... ok
[INFO] [stdout] test providers::ollama_wire::tests::options_omitted_when_no_temperature_is_configured ... ok
[INFO] [stdout] test providers::gemini_response::tests::response_without_thought_parts_leaves_reasoning_none ... ok
[INFO] [stdout] test providers::openai::tests::configured_output_ceiling_rides_the_body_as_max_completion_tokens ... ok
[INFO] [stdout] test providers::ollama_chunks::tests::message_without_thinking_leaves_it_empty ... ok
[INFO] [stdout] test providers::ollama_wire::tests::minimal_effort_request_carries_think_false_on_wire ... ok
[INFO] [stdout] test providers::openai::tests::default_effort_request_omits_reasoning_effort_on_wire ... ok
[INFO] [stdout] test providers::openai::tests::minimal_effort_request_omits_reasoning_effort_on_wire ... ok
[INFO] [stdout] test providers::openai::tests::prompt_cache_key_is_none_without_a_system_message ... ok
[INFO] [stdout] test providers::openai_chunks::tests::delta_without_reasoning_leaves_it_none ... ok
[INFO] [stdout] test providers::openai_chunks::tests::reported_zero_cached_tokens_is_some_zero_not_none ... ok
[INFO] [stdout] test providers::openai_chunks::tests::usage_without_details_leaves_them_none ... ok
[INFO] [stdout] test providers::openai_stream::tests::apply_usage_reports_zero_cache_as_some_zero ... ok
[INFO] [stdout] test providers::settings::tests::new_defaults_to_the_three_entry_backoff ... ok
[INFO] [stdout] test providers::settings::tests::with_retry_delays_carries_the_configured_schedule ... ok
[INFO] [stdout] test providers::ollama_wire::tests::temperature_is_carried_under_options_when_configured ... ok
[INFO] [stdout] test providers::openai_chunks::tests::delta_accepts_reasoning_alias ... ok
[INFO] [stdout] test providers::openai_stream::tests::apply_usage_without_details_leaves_new_fields_none ... ok
[INFO] [stdout] test providers::gemini_response::tests::thought_parts_carry_reasoning_separate_from_content ... ok
[INFO] [stdout] test providers::openai_chunks::tests::usage_with_details_populates_cache_and_reasoning ... ok
[INFO] [stdout] test providers::openai_stream::tests::apply_usage_populates_cache_and_reasoning ... ok
[INFO] [stdout] test providers::http::tests::test_send_stream_honors_retry_after ... ok
[INFO] [stdout] test providers::openai::tests::json_object_request_carries_response_format_on_wire ... ok
[INFO] [stdout] test providers::openai::tests::prompt_cache_key_changes_when_the_system_message_changes ... ok
[INFO] [stdout] test providers::openai::tests::prompt_cache_key_is_stable_across_requests_differing_only_in_last_user_message ... ok
[INFO] [stdout] test providers::openai_chunks::tests::delta_carries_reasoning_content ... ok
[INFO] [stdout] test providers::ollama_wire::tests::medium_effort_request_carries_think_true_on_wire ... ok
[INFO] [stdout] test providers::openai::tests::text_request_omits_response_format_on_wire ... ok
[INFO] [stdout] test providers::tool_assembly::tests::fragmented_tool_arguments_share_the_response_budget ... ok
[INFO] [stdout] test loop_runner::tools::tests::the_exported_cap_is_the_loop_s_truncation_point ... ok
[INFO] [stdout] test providers::http::tests::send_stream_times_out_while_establishing ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 221 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.29s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/agent_loop.rs (/opt/rustwide/target/debug/deps/agent_loop-3046419ba4fc6f1b)
[INFO] [stdout] 
[INFO] [stdout] running 45 tests
[INFO] [stdout] test a_silent_provider_emits_no_usage_event ... ok
[INFO] [stdout] test a_completed_but_empty_response_errors_after_one_attempt ... ok
[INFO] [stdout] test continuation_recovers_after_truncation_and_discards_the_partial ... ok
[INFO] [stdout] test continuation_emits_no_turn_reset ... ok
[INFO] [stdout] test approval_free_tool_calls_run_concurrently_and_results_stay_ordered ... ok
[INFO] [stdout] test a_stream_without_reasoning_emits_no_reasoning_event ... ok
[INFO] [stdout] test continuation_budget_exhausted_returns_the_original_truncation_error ... ok
[INFO] [stdout] test continuation_disabled_surfaces_truncation_immediately ... ok
[INFO] [stdout] test empty_provider_response_is_invalid ... ok
[INFO] [stdout] test missing_tool_call_id_remains_fail_closed ... ok
[INFO] [stdout] test cancellation_blocks_tool_execution_and_terminal_events ... ok
[INFO] [stdout] test non_object_tool_arguments_are_recovered_not_fatal ... ok
[INFO] [stdout] test designate_answer_terminal_turn_carries_the_sql_and_emits_an_event ... ok
[INFO] [stdout] test external_side_effect_tool_is_gated_when_it_arrives_alone ... ok
[INFO] [stdout] test external_side_effect_tool_is_gated_when_it_arrives_in_a_batch ... ok
[INFO] [stdout] test max_turns_ceiling_wins_over_continuations ... ok
[INFO] [stdout] test each_answering_call_reports_its_own_usage_on_the_stream ... ok
[INFO] [stdout] test bounded_sql_query_all_sets_flag_and_schema_discovery_does_not ... ok
[INFO] [stdout] test salvage_failure_degrades_to_a_truncated_result_keeping_the_work_done ... ok
[INFO] [stdout] test salvage_final_call_reports_its_usage_on_the_stream ... ok
[INFO] [stdout] test injected_denial_does_not_execute_query_or_persist_rows ... ok
[INFO] [stdout] test salvage_on_turn_budget_returns_best_answer_marked_truncated ... ok
[INFO] [stdout] test salvage_on_tool_call_budget_returns_best_answer_marked_truncated ... ok
[INFO] [stdout] test sink_events_keep_raw_arguments_while_only_the_result_message_is_scrubbed ... ok
[INFO] [stdout] test optional_usage_counts_survive_the_run_and_absent_stays_absent ... ok
[INFO] [stdout] test prior_user_and_assistant_turn_reaches_provider_in_order ... ok
[INFO] [stdout] test reported_zero_and_unreported_cached_tokens_stay_distinct_on_the_stream ... ok
[INFO] [stdout] test tool_call_limit_salvages_before_any_unbounded_execution ... ok
[INFO] [stdout] test tool_call_round_trip_is_deterministic_and_emits_safe_events ... ok
[INFO] [stdout] test tool_failure_details_reach_the_model ... ok
[INFO] [stdout] test tool_result_reaching_the_provider_is_redacted ... ok
[INFO] [stdout] test unknown_tool_call_feeds_an_error_result_and_the_turn_recovers ... ok
[INFO] [stdout] test truncated_tool_call_executes_nothing ... ok
[INFO] [stdout] test token_usage_sums_across_turns_into_the_output ... ok
[INFO] [stdout] test truncation_is_never_retried_and_emits_no_reset ... ok
[INFO] [stdout] test runaway_context_is_trimmed_not_aborted_and_the_bound_still_binds ... ok
[INFO] [stdout] test execute_batch_caps_simultaneous_concurrency ... ok
[INFO] [stdout] test single_oversized_tool_result_does_not_abort_the_run ... ok
[INFO] [stdout] test unbounded_loop_stops_on_cancellation ... ok
[INFO] [stdout] test batch_turn_enforces_the_byte_budget ... ok
[INFO] [stdout] test a_stream_with_reasoning_forwards_one_reasoning_event ... ok
[INFO] [stdout] test unbounded_loop_trims_context_to_budget ... ok
[INFO] [stdout] test dropped_stream_retries_the_turn_and_the_sink_saw_reset_then_full_text ... ok
[INFO] [stdout] test exhausted_retries_fall_through_to_the_existing_error_path ... ok
[INFO] [stderr]      Running tests/anthropic.rs (/opt/rustwide/target/debug/deps/anthropic-d9b7c38e6dd7cfb1)
[INFO] [stdout] test genuine_transport_failure_still_retries_on_the_existing_schedule ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 45 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.76s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test anthropic_max_tokens_stop_reason_is_a_typed_truncation_error ... ok
[INFO] [stdout] test anthropic_end_turn_still_completes_with_content ... ok
[INFO] [stdout] test test_anthropic_tool_call ... ok
[INFO] [stdout] test test_anthropic_text_completion ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/approval_matrix.rs (/opt/rustwide/target/debug/deps/approval_matrix-3dba30a279e2c642)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test read_only_permits_exactly_the_read_shaped_effects ... ok
[INFO] [stdout] test requiring_approval_is_not_side_effecting ... ok
[INFO] [stdout] test allow_read_only_approval_denies_every_side_effecting_shape ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/approval_policy.rs (/opt/rustwide/target/debug/deps/approval_policy-2c3902a33dee26da)
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test approval_policies_parse_from_cli_values ... 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]      Running tests/c0_name_the_call.rs (/opt/rustwide/target/debug/deps/c0_name_the_call-01d10f350efd00d7)
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test an_uncovered_tool_keeps_todays_text_byte_exact ... ok
[INFO] [stdout] test a_failure_line_carries_no_success_verb ... ok
[INFO] [stdout] test run_command_completion_names_the_program_and_its_outcome ... ok
[INFO] [stdout] test completion_detail_never_carries_tool_output ... ok
[INFO] [stdout] test workspace_write_completion_names_the_file_it_wrote ... ok
[INFO] [stdout] test a_failed_call_is_still_classified_as_failed ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/completion_summary.rs (/opt/rustwide/target/debug/deps/completion_summary-b3078856e3aabe81)
[INFO] [stdout] 
[INFO] [stdout] running 7 tests
[INFO] [stdout] test custom_completion_failure_keeps_the_failed_substring ... ok
[INFO] [stdout] test read_only_tool_failure_reports_read_only_failure ... ok
[INFO] [stdout] test custom_completion_is_reported_verbatim ... ok
[INFO] [stdout] test read_only_does_not_gate_execution ... ok
[INFO] [stdout] test write_tool_does_not_report_read_only_completion ... ok
[INFO] [stdout] test write_tool_failure_summary_keeps_the_failed_substring ... ok
[INFO] [stdout] test read_only_tool_reports_read_only_completion ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/designation_recovery.rs (/opt/rustwide/target/debug/deps/designation_recovery-4ea52dd883ea91b1)
[INFO] [stdout] 
[INFO] [stdout] running 7 tests
[INFO] [stderr]      Running tests/gemini.rs (/opt/rustwide/target/debug/deps/gemini-485277a89a944b54)
[INFO] [stdout] test an_empty_follow_up_reply_keeps_the_designation ... ok
[INFO] [stdout] test recovery_at_the_turn_ceiling_still_carries_the_designation ... ok
[INFO] [stdout] test sibling_calls_of_an_empty_designation_are_all_answered ... ok
[INFO] [stdout] test empty_designation_takes_one_follow_up_turn_for_the_prose ... ok
[INFO] [stdout] test a_second_empty_designation_does_not_recover_again ... ok
[INFO] [stdout] test a_re_designation_keeps_the_first_sql ... ok
[INFO] [stdout] test designation_with_prose_makes_no_extra_call ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test gemini_max_tokens_finish_reason_is_a_typed_truncation_error ... ok
[INFO] [stdout] test test_gemini_text_completion ... ok
[INFO] [stdout] test test_gemini_tool_call ... ok
[INFO] [stdout] test gemini_stop_finish_reason_still_completes_with_content ... ok
[INFO] [stdout] test gemini_stream_cancellation_interrupts_establishment ... ok
[INFO] [stdout] test gemini_establishment_timeout_is_not_a_client_total_timeout ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.17s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/local_state_effect.rs (/opt/rustwide/target/debug/deps/local_state_effect-a5800993b854d4ca)
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test session_write_tool_runs_without_either_write_permit ... ok
[INFO] [stdout] test external_side_effect_with_approval_is_denied_when_approval_refused ... ok
[INFO] [stdout] test write_candidate_tool_is_denied_by_default_and_does_not_end_the_turn ... ok
[INFO] [stdout] test workspace_write_tool_is_denied_by_default_and_does_not_end_the_turn ... ok
[INFO] [stdout] test read_local_state_tool_is_unaffected_by_the_candidate_permission ... ok
[INFO] [stdout] test external_side_effect_without_approval_is_refused_not_auto_run ... ok
[INFO] [stdout] test write_candidate_tool_runs_when_candidate_writes_are_permitted ... ok
[INFO] [stdout] test external_side_effect_with_approval_runs_when_approved ... ok
[INFO] [stdout] test workspace_write_tool_runs_when_workspace_writes_are_permitted ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/providers.rs (/opt/rustwide/target/debug/deps/providers-56280f6b6b345871)
[INFO] [stdout] 
[INFO] [stdout] running 33 tests
[INFO] [stdout] test ollama_accepts_terminal_record_without_trailing_newline ... ok
[INFO] [stdout] test anthropic_stream_without_thinking_leaves_reasoning_none ... ok
[INFO] [stdout] test ollama_ndjson_handles_fragmentation_and_requires_done ... ok
[INFO] [stdout] test ollama_length_done_reason_is_a_typed_truncation_error ... ok
[INFO] [stdout] test length_truncation_is_diagnosable_not_generic ... ok
[INFO] [stdout] test cancellation_and_errors_are_sanitized ... ok
[INFO] [stdout] test anthropic_stream_surfaces_cumulative_token_usage ... ok
[INFO] [stdout] test ollama_stream_surfaces_eval_counts ... ok
[INFO] [stdout] test openai_body_carries_max_completion_tokens ... ok
[INFO] [stdout] test default_client_replays_body_and_bespoke_key_headers_but_strips_authorization ... ok
[INFO] [stdout] test ollama_stream_captures_thinking ... ok
[INFO] [stdout] test openai_length_truncation_is_a_typed_error_carrying_partial_text ... ok
[INFO] [stdout] test openai_sse_preserves_utf8_and_queued_delta_before_done ... ok
[INFO] [stdout] test ollama_stream_without_thinking_leaves_reasoning_none ... ok
[INFO] [stdout] test openai_sse_assembles_fragmented_tool_calls ... ok
[INFO] [stdout] test openai_sse_handles_fragmented_text_and_done ... ok
[INFO] [stdout] test openai_stream_without_reasoning_leaves_it_none ... ok
[INFO] [stdout] test anthropic_stream_captures_thinking_delta ... ok
[INFO] [stdout] test retries_before_first_event_but_not_after_partial_stream ... ok
[INFO] [stdout] test terminal_sentinels_allow_only_trailing_ascii_whitespace ... ok
[INFO] [stdout] test openai_stream_surfaces_usage_and_requests_it ... ok
[INFO] [stdout] test openai_stream_captures_reasoning_content ... ok
[INFO] [stdout] test unbounded_frames_fail_at_the_stream_byte_cap ... ok
[INFO] [stdout] test anthropic_stream_reports_stall_on_idle_timeout ... ok
[INFO] [stdout] test ollama_stream_reports_stall_on_idle_timeout ... ok
[INFO] [stdout] test openai_stream_reports_stall_on_idle_timeout ... ok
[INFO] [stdout] test terminal_markers_finish_without_waiting_for_socket_close ... ok
[INFO] [stdout] test every_streaming_provider_applies_the_establishment_deadline ... ok
[INFO] [stdout] test unreachable_provider_error_names_the_endpoint ... ok
[INFO] [stdout] test anthropic_does_not_replay_the_post_to_a_cross_host_redirect ... ok
[INFO] [stdout] test ollama_does_not_replay_the_post_to_a_cross_host_redirect ... ok
[INFO] [stderr]      Running tests/repeat_failure.rs (/opt/rustwide/target/debug/deps/repeat_failure-ce4779a44bc2ce29)
[INFO] [stdout] test gemini_does_not_replay_the_post_to_a_cross_host_redirect ... ok
[INFO] [stdout] test openai_does_not_replay_the_post_to_a_cross_host_redirect ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 33 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.04s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test an_identical_failing_non_sql_call_is_refused_on_the_second_attempt ... ok
[INFO] [stdout] test the_batch_path_records_failures_so_a_later_repeat_is_refused ... ok
[INFO] [stdout] test budget_exhaustion_with_only_failed_statements_nominates_nothing ... ok
[INFO] [stdout] test a_statement_differing_by_one_character_is_executed ... ok
[INFO] [stdout] test a_normal_run_never_repeating_a_failure_executes_every_call_once ... ok
[INFO] [stdout] test a_successful_statement_may_be_re_run ... ok
[INFO] [stdout] test a_failed_statement_is_not_re_executed_and_the_refusal_names_the_error ... ok
[INFO] [stdout] test a_different_argument_for_the_same_non_sql_tool_is_executed ... ok
[INFO] [stdout] test budget_exhaustion_with_a_successful_query_nominates_it ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests saya_agent
[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" "77f350989daa21a0a20c9639248e9b4fcb3b59bf0fdf39acc96375d50a4d844d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "77f350989daa21a0a20c9639248e9b4fcb3b59bf0fdf39acc96375d50a4d844d", kill_on_drop: false }`
[INFO] [stdout] 77f350989daa21a0a20c9639248e9b4fcb3b59bf0fdf39acc96375d50a4d844d
