[INFO] fetching crate switchyard-translation 0.3.0...
[INFO] testing switchyard-translation-0.3.0 against 1.99.0-beta.8 for beta-1.100-2
[INFO] extracting crate switchyard-translation 0.3.0 into /workspace/builds/worker-1-tc1/source
[INFO] started tweaking crates.io crate switchyard-translation 0.3.0
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate switchyard-translation 0.3.0
[INFO] tweaked toml for crates.io crate switchyard-translation 0.3.0 written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate switchyard-translation 0.3.0 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 switchyard-translation 0.3.0 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 switchyard-protocol v0.3.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] d0003be55f56beed0f759797a378a43ce681dbb448a949dec213d534fcdcb293
[INFO] running `Command { std: "docker" "start" "d0003be55f56beed0f759797a378a43ce681dbb448a949dec213d534fcdcb293", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d0003be55f56beed0f759797a378a43ce681dbb448a949dec213d534fcdcb293", 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" "d0003be55f56beed0f759797a378a43ce681dbb448a949dec213d534fcdcb293" "/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" "d0003be55f56beed0f759797a378a43ce681dbb448a949dec213d534fcdcb293", 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" "d0003be55f56beed0f759797a378a43ce681dbb448a949dec213d534fcdcb293" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling quote v1.0.46
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling async-stream v0.3.6
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling switchyard-protocol v0.3.0
[INFO] [stderr]    Compiling switchyard-translation v0.3.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 24.62s
[INFO] running `Command { std: "docker" "inspect" "d0003be55f56beed0f759797a378a43ce681dbb448a949dec213d534fcdcb293", 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" "d0003be55f56beed0f759797a378a43ce681dbb448a949dec213d534fcdcb293" "/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 switchyard-translation v0.3.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 14.92s
[INFO] running `Command { std: "docker" "inspect" "d0003be55f56beed0f759797a378a43ce681dbb448a949dec213d534fcdcb293", 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" "d0003be55f56beed0f759797a378a43ce681dbb448a949dec213d534fcdcb293" "/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.07s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/switchyard_translation-92f9e31d278d688b)
[INFO] [stdout] 
[INFO] [stdout] running 44 tests
[INFO] [stdout] test codex_custom_tools::tests::rewritten_custom_tool_calls_take_the_ctc_id_prefix ... ok
[INFO] [stdout] test codex_namespaces::tests::resolves_namespaces_that_are_not_mcp_servers ... ok
[INFO] [stdout] test codex_custom_tools::tests::function_call_items_for_custom_tools_become_custom_tool_calls ... ok
[INFO] [stdout] test codex_custom_tools::tests::input_is_read_from_the_input_argument_or_left_verbatim ... ok
[INFO] [stdout] test codex_custom_tools::tests::streamed_argument_deltas_for_custom_tools_are_dropped ... ok
[INFO] [stdout] test helpers::tests::anthropic_replay_stamps_the_served_model_inside_message ... ok
[INFO] [stdout] test codecs::common::tests::encrypted_reasoning_helpers_accept_both_detail_shapes ... ok
[INFO] [stdout] test codex_namespaces::tests::leaves_an_ambiguous_bare_name_alone ... ok
[INFO] [stdout] test codex_namespaces::tests::splits_a_qualified_name_back_apart ... ok
[INFO] [stdout] test helpers::tests::aggregated_response_round_trips_and_stamps_the_served_model ... ok
[INFO] [stdout] test helpers::tests::decode_stream_decodes_trailing_frame_without_blank_line ... ok
[INFO] [stdout] test helpers::tests::decode_stream_parses_sse_bytes_into_ir_chunks ... ok
[INFO] [stdout] test helpers::tests::decode_stream_reassembles_frames_split_across_chunks ... ok
[INFO] [stdout] test helpers::tests::decode_stream_propagates_source_errors ... ok
[INFO] [stdout] test helpers::tests::decode_stream_classifies_invalid_sse_json ... ok
[INFO] [stdout] test helpers::tests::decode_stream_rejects_eof_before_a_terminal_event ... ok
[INFO] [stdout] test helpers::tests::encode_stream_falls_back_to_the_source_model ... ok
[INFO] [stdout] test helpers::tests::encode_stream_keeps_trailing_usage_after_a_normal_stop ... ok
[INFO] [stdout] test helpers::tests::encode_stream_propagates_chunk_errors ... ok
[INFO] [stdout] test helpers::tests::encode_stream_reassembles_deltas_and_finishes ... ok
[INFO] [stdout] test helpers::tests::encode_stream_stamps_the_served_model_on_message_start ... ok
[INFO] [stdout] test helpers::tests::encode_stream_stops_polling_after_a_replayed_error ... ok
[INFO] [stdout] test helpers::tests::responses_replay_stamps_the_served_model_inside_response ... ok
[INFO] [stdout] test helpers::tests::openai_chat_replay_stamps_the_served_model_without_losing_extensions ... ok
[INFO] [stdout] test helpers::tests::stream_helpers_replay_same_format_provider_fields ... ok
[INFO] [stdout] test helpers::tests::request_round_trips_through_openai_chat ... ok
[INFO] [stdout] test helpers::tests::responses_failed_before_done_remains_a_stream_error ... ok
[INFO] [stdout] test sse::tests::anthropic_accepts_optional_done_marker ... ok
[INFO] [stdout] test helpers::tests::encode_stream_stops_after_an_in_band_error ... ok
[INFO] [stdout] test sse::tests::ignores_comment_and_non_data_fields ... ok
[INFO] [stdout] test helpers::tests::decode_stream_decodes_crlf_delimited_frames ... ok
[INFO] [stdout] test helpers::tests::encode_stream_keeps_a_normal_stop_off_the_error_channel ... ok
[INFO] [stdout] test sse::tests::done_marker_is_recognised_without_a_space ... ok
[INFO] [stdout] test sse::tests::done_marker_yields_no_payload ... ok
[INFO] [stdout] test sse::tests::field_names_are_matched_exactly ... ok
[INFO] [stdout] test sse::tests::invalid_json_is_an_error ... ok
[INFO] [stdout] test sse::tests::openai_formats_terminate_on_done ... ok
[INFO] [stdout] test sse::tests::frame_without_data_yields_no_payload ... ok
[INFO] [stdout] test sse::tests::marker_is_only_terminal_when_configured ... ok
[INFO] [stdout] test sse::tests::parses_a_data_line_as_json ... ok
[INFO] [stdout] test util::tests::anthropic_tool_id_encoding_round_trips ... ok
[INFO] [stdout] test sse::tests::parses_a_data_line_without_a_space_after_the_colon ... ok
[INFO] [stdout] test sse::tests::recognizes_provider_terminal_events ... ok
[INFO] [stdout] test util::tests::anthropic_tool_id_encoding_disambiguates_its_prefix ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 44 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/anthropic_parallel_tools.rs (/opt/rustwide/target/debug/deps/anthropic_parallel_tools-7594418bceaf7962)
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test parallel_chat_tools_stream_as_ordered_nonoverlapping_anthropic_blocks ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/extension_points.rs (/opt/rustwide/target/debug/deps/extension_points-8d2d217ba87e6369)
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test custom_stream_codec_replays_preserved_same_format_event ... ok
[INFO] [stdout] test capability_profile_can_fail_fast_when_target_cannot_accept_request_features ... ok
[INFO] [stdout] test custom_format_id_can_be_registered_without_touching_builtin_wire_formats ... ok
[INFO] [stdout] test custom_stream_codec_can_participate_in_registered_stream_translation ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/lossless_roundtrip.rs (/opt/rustwide/target/debug/deps/lossless_roundtrip-5adc1937d44e8f77)
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test in_memory_preservation_replays_exact_original_when_encoding_from_the_same_ir ... ok
[INFO] [stdout] test embedded_preservation_roundtrips_responses_for_every_source_target_pair_exactly ... ok
[INFO] [stdout] test embedded_preservation_makes_responses_to_anthropic_to_chat_to_responses_exact ... ok
[INFO] [stdout] test embedded_preservation_roundtrips_requests_for_every_source_target_pair_exactly ... ok
[INFO] [stdout] test embedded_preservation_survives_every_distinct_three_format_response_cycle ... ok
[INFO] [stdout] test embedded_preservation_survives_every_distinct_three_format_request_cycle ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.09s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/request_translation.rs (/opt/rustwide/target/debug/deps/request_translation-f4d47e703ba081a5)
[INFO] [stdout] 
[INFO] [stdout] running 82 tests
[INFO] [stdout] test anthropic_request_rejects_unknown_role ... ok
[INFO] [stdout] test anthropic_request_translates_to_openai_chat_without_anthropic_only_fields ... ok
[INFO] [stdout] test anthropic_parallel_multimodal_tool_results_preserve_order_and_policy ... ok
[INFO] [stdout] test anthropic_thinking_blocks_do_not_leak_into_openai_chat_messages ... ok
[INFO] [stdout] test anthropic_structured_system_blocks_preserve_boundaries_for_openai_chat ... ok
[INFO] [stdout] test anthropic_openai_compatible_extensions_are_preserved_for_openai_chat ... ok
[INFO] [stdout] test anthropic_target_prompt_preserves_native_request_fields ... ok
[INFO] [stdout] test anthropic_base64_media_translates_to_openai_formats ... ok
[INFO] [stdout] test anthropic_tool_strictness_is_preserved_for_openai_formats ... ok
[INFO] [stdout] test anthropic_thinking_is_dropped_from_responses_input ... ok
[INFO] [stdout] test anthropic_tool_result_error_survives_target_prompt ... ok
[INFO] [stdout] test anthropic_tool_result_file_id_does_not_become_openai_file_id ... ok
[INFO] [stdout] test anthropic_tool_result_followup_text_splits_to_openai_messages ... ok
[INFO] [stdout] test anthropic_tool_result_multimodal_blocks_round_trip_complete ... ok
[INFO] [stdout] test anthropic_unknown_content_does_not_leak_into_responses_request_blocks ... ok
[INFO] [stdout] test anthropic_unmappable_output_format_is_rejected_under_strict_policy ... ok
[INFO] [stdout] test chat_empty_json_schema_wrapper_is_preserved ... ok
[INFO] [stdout] test chat_json_schema_response_format_ignores_nested_type_override ... ok
[INFO] [stdout] test chat_json_schema_response_format_maps_to_responses_text_format ... ok
[INFO] [stdout] test anthropic_structured_output_maps_to_openai_response_format ... ok
[INFO] [stdout] test chat_compatible_extensions_survive_to_responses ... ok
[INFO] [stdout] test malformed_request_fields_are_rejected ... ok
[INFO] [stdout] test openai_chat_encrypted_reasoning_details_retain_fallback ... ok
[INFO] [stdout] test anthropic_visible_text_survives_tool_history_to_responses ... ok
[INFO] [stdout] test native_abuse_identity_is_preserved_but_not_mapped ... ok
[INFO] [stdout] test openai_chat_image_and_file_parts_translate_to_valid_responses_input ... ok
[INFO] [stdout] test openai_chat_reasoning_details_round_trip_in_assistant_history ... ok
[INFO] [stdout] test openai_chat_request_rejects_unknown_role ... ok
[INFO] [stdout] test openai_data_uri_images_translate_to_anthropic_sources ... ok
[INFO] [stdout] test openai_reasoning_content_does_not_forge_anthropic_thinking_block ... ok
[INFO] [stdout] test openai_request_to_anthropic_adds_required_default_max_tokens ... ok
[INFO] [stdout] test openai_request_translates_system_developer_and_reasoning_to_anthropic ... ok
[INFO] [stdout] test openai_responses_request_rejects_unknown_role ... ok
[INFO] [stdout] test openai_schema_constraints_are_removed_from_anthropic_output_format ... ok
[INFO] [stdout] test openai_stop_string_maps_to_anthropic_stop_sequences ... ok
[INFO] [stdout] test openai_target_prompt_preserves_native_request_fields ... ok
[INFO] [stdout] test openai_tool_strictness_is_preserved_for_anthropic ... ok
[INFO] [stdout] test openai_unknown_content_does_not_leak_into_anthropic_request_blocks ... ok
[INFO] [stdout] test openai_tool_results_are_merged_when_translating_to_anthropic ... ok
[INFO] [stdout] test anthropic_tool_use_encodes_responses_arguments_as_json_string ... ok
[INFO] [stdout] test preparing_without_a_prompt_preserves_exact_replay ... ok
[INFO] [stdout] test anthropic_tool_without_name_is_dropped_before_openai_chat ... ok
[INFO] [stdout] test anthropic_visible_text_around_tool_call_survives_when_thinking_is_filtered ... ok
[INFO] [stdout] test openai_chat_request_accepts_legacy_function_role ... ok
[INFO] [stdout] test responses_builtin_tool_history_must_be_top_level ... ok
[INFO] [stdout] test responses_codex_compaction_markers_are_stripped ... ok
[INFO] [stdout] test responses_empty_reasoning_without_encrypted_content_is_omitted ... ok
[INFO] [stdout] test responses_deferred_message_stays_after_matching_tool_result_for_openai_chat ... ok
[INFO] [stdout] test responses_encrypted_reasoning_replays_without_input_content ... ok
[INFO] [stdout] test responses_allowed_tools_is_translated_or_rejected ... ok
[INFO] [stdout] test responses_builtin_tool_history_survives_target_prompt ... ok
[INFO] [stdout] test responses_consecutive_function_calls_merge_for_openai_chat ... ok
[INFO] [stdout] test responses_flat_file_data_survives_into_chat ... ok
[INFO] [stdout] test responses_chat_compatible_extensions_survive_to_openai_chat ... ok
[INFO] [stdout] test responses_function_call_arguments_parse_for_anthropic_tool_use ... ok
[INFO] [stdout] test request_media_survives_reencoding_or_is_rejected ... ok
[INFO] [stdout] test parallel_tool_policy_survives_anthropic_translations ... ok
[INFO] [stdout] test responses_inline_instruction_does_not_detach_reasoning ... ok
[INFO] [stdout] test responses_input_messages_translate_with_instruction_roles_intact ... ok
[INFO] [stdout] test responses_orphan_function_call_output_degrades_to_user_text_for_openai_chat ... ok
[INFO] [stdout] test responses_json_schema_text_format_maps_to_chat_response_format ... ok
[INFO] [stdout] test responses_previous_response_id_survives_target_prompt ... ok
[INFO] [stdout] test responses_parallel_tool_calls_pair_with_their_outputs ... ok
[INFO] [stdout] test responses_lite_additional_tools_item_is_the_tool_list ... ok
[INFO] [stdout] test responses_prompt_injection_preserves_namespace_description ... ok
[INFO] [stdout] test responses_reasoning_item_merges_into_next_assistant_message_for_openai_chat ... ok
[INFO] [stdout] test responses_lite_additional_tools_survive_a_single_text_input ... ok
[INFO] [stdout] test responses_reasoning_items_round_trip_through_decode_and_encode ... ok
[INFO] [stdout] test responses_reasoning_items_attach_to_tool_call_turn_for_openai_chat ... ok
[INFO] [stdout] test responses_pairing_does_not_move_tool_output_across_user_text ... ok
[INFO] [stdout] test responses_reasoning_survives_rebuild ... ok
[INFO] [stdout] test responses_input_without_type_or_message_shape_is_rejected ... ok
[INFO] [stdout] test responses_parallel_custom_tool_calls_pair_with_their_outputs ... ok
[INFO] [stdout] test responses_request_translates_python_compatible_tool_shape_to_openai_chat ... ok
[INFO] [stdout] test responses_stored_tool_outputs_stay_tool_results ... ok
[INFO] [stdout] test responses_request_round_trips_custom_tools_and_custom_tool_calls ... ok
[INFO] [stdout] test responses_to_chat_drops_tool_choice_when_all_tools_unsupported ... ok
[INFO] [stdout] test responses_request_translates_codex_tool_shape_to_openai_chat ... ok
[INFO] [stdout] test responses_to_chat_preserves_tool_choice_when_tools_survive ... ok
[INFO] [stdout] test responses_unknown_input_item_is_preserved_for_openai_chat ... ok
[INFO] [stdout] test tool_result_media_survives_anthropic_and_responses_translation ... ok
[INFO] [stdout] test responses_function_call_arguments_wrap_non_object_values_for_anthropic ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 82 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/response_translation.rs (/opt/rustwide/target/debug/deps/response_translation-6745f0a4f9f5fa0c)
[INFO] [stdout] 
[INFO] [stdout] running 23 tests
[INFO] [stdout] test anthropic_message_response_translates_to_openai_chat_completion ... ok
[INFO] [stdout] test openai_chat_cache_write_aliases_translate_to_anthropic_usage_fields ... ok
[INFO] [stdout] test incomplete_responses_source_survives_translation ... ok
[INFO] [stdout] test openai_chat_length_finish_translates_to_incomplete_responses_status ... ok
[INFO] [stdout] test openai_chat_response_round_trips_reasoning_details ... ok
[INFO] [stdout] test openai_chat_cache_only_usage_still_emits_reasoning_details ... ok
[INFO] [stdout] test openai_chat_cache_usage_translates_to_responses_usage_details ... ok
[INFO] [stdout] test content_filter_and_refusal_translate_across_formats ... ok
[INFO] [stdout] test openai_chat_response_with_text_and_tool_call_translates_both_to_responses ... ok
[INFO] [stdout] test failed_responses_return_upstream_failure_with_provider_message ... ok
[INFO] [stdout] test openai_chat_response_translates_to_anthropic_message ... ok
[INFO] [stdout] test openai_reasoning_only_response_translates_to_responses_reasoning_only ... ok
[INFO] [stdout] test openai_reasoning_response_translates_to_responses_reasoning_item ... ok
[INFO] [stdout] test openai_chat_response_with_tool_call_translates_to_responses_output_item ... ok
[INFO] [stdout] test responses_reasoning_usage_translates_to_openai_chat_usage_details ... ok
[INFO] [stdout] test responses_custom_tool_call_output_round_trips_with_request_extensions ... ok
[INFO] [stdout] test anthropic_thinking_response_translates_to_openai_reasoning_content ... ok
[INFO] [stdout] test url_citations_survive_chat_responses_translation ... ok
[INFO] [stdout] test openai_chat_usage_without_breakdowns_still_emits_responses_usage_details ... ok
[INFO] [stdout] test responses_encrypted_reasoning_item_survives_buffered_round_trip ... ok
[INFO] [stdout] test openai_reasoning_response_preserves_visible_content_presence ... ok
[INFO] [stdout] test responses_reasoning_and_message_preserve_the_final_answer ... ok
[INFO] [stdout] test responses_native_output_is_preserved_or_rejected ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 23 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/stream_translation.rs (/opt/rustwide/target/debug/deps/stream_translation-5512cde580e52c89)
[INFO] [stdout] 
[INFO] [stdout] running 57 tests
[INFO] [stdout] test anthropic_thinking_stream_deltas_do_not_become_openai_chat_content ... ok
[INFO] [stdout] test anthropic_to_openai_chat_uses_served_model_without_losing_source_model ... ok
[INFO] [stdout] test anthropic_max_tokens_stop_translates_to_responses_incomplete_event ... ok
[INFO] [stdout] test anthropic_message_stop_does_not_overwrite_max_tokens_stop_reason ... ok
[INFO] [stdout] test anthropic_stream_tool_id_is_restored_for_openai_chat ... ok
[INFO] [stdout] test chat_tool_call_index_counts_tool_calls_not_content_blocks ... ok
[INFO] [stdout] test anthropic_stream_usage_and_stop_translate_to_openai_chunks ... ok
[INFO] [stdout] test content_filter_and_refusal_streams_translate_across_formats ... ok
[INFO] [stdout] test fragmented_chat_tool_names_are_complete_in_cross_format_streams ... ok
[INFO] [stdout] test openai_chat_emits_usage_arriving_after_stop ... ok
[INFO] [stdout] test openai_chat_finish_synthesizes_terminal_chunk_after_incomplete_source ... ok
[INFO] [stdout] test openai_chat_error_frame_decodes_to_stream_error ... ok
[INFO] [stdout] test openai_chat_mixed_reasoning_and_content_stream_in_reasoning_first_order ... ok
[INFO] [stdout] test openai_chat_length_finish_translates_to_responses_incomplete_event ... ok
[INFO] [stdout] test openai_chat_reasoning_stream_fields_do_not_become_anthropic_text ... ok
[INFO] [stdout] test openai_chat_stream_reasoning_usage_translates_to_responses_usage_details ... ok
[INFO] [stdout] test openai_chat_stream_event_translates_to_anthropic_message_events ... ok
[INFO] [stdout] test anthropic_thinking_survives_responses_tool_continuation ... ok
[INFO] [stdout] test openai_chat_stream_cache_usage_translates_to_responses_usage_details ... ok
[INFO] [stdout] test openai_chat_stream_cache_write_usage_is_normalized ... ok
[INFO] [stdout] test openai_chat_stream_retains_encrypted_details_and_fallback ... ok
[INFO] [stdout] test openai_chat_stream_round_trips_reasoning_details ... ok
[INFO] [stdout] test openai_chat_to_responses_uses_served_model_without_losing_source_model ... ok
[INFO] [stdout] test replayed_nonterminal_event_advances_encoder_state_before_finish ... ok
[INFO] [stdout] test preserved_same_format_replay_stops_after_an_error ... ok
[INFO] [stdout] test openai_chat_stream_usage_without_breakdowns_still_emits_responses_usage_details ... ok
[INFO] [stdout] test replayed_terminal_event_suppresses_synthesized_finish ... ok
[INFO] [stdout] test responses_buffered_and_streamed_outputs_match ... ok
[INFO] [stdout] test openai_chat_stream_uses_summary_when_detail_text_is_empty ... ok
[INFO] [stdout] test responses_incomplete_event_translates_to_chat_length_finish ... ok
[INFO] [stdout] test preserved_cross_format_event_uses_normalized_content ... ok
[INFO] [stdout] test responses_completed_event_is_schema_complete_and_retains_message_id ... ok
[INFO] [stdout] test replayed_anthropic_terminal_delta_finishes_with_message_stop_only ... ok
[INFO] [stdout] test responses_replay_without_sequence_advances_by_one_emitted_event ... ok
[INFO] [stdout] test responses_stream_decodes_reasoning_text_from_added_done_and_completed_once ... ok
[INFO] [stdout] test responses_stream_decodes_encrypted_reasoning_item_into_details ... ok
[INFO] [stdout] test responses_function_call_stream_ends_with_tool_use_on_every_wire ... ok
[INFO] [stdout] test responses_decode_emits_tool_arguments_once ... ok
[INFO] [stdout] test responses_stream_decodes_text_only_reasoning_item_from_done ... ok
[INFO] [stdout] test responses_stream_delta_translates_to_openai_chat_chunk ... ok
[INFO] [stdout] test responses_stream_does_not_duplicate_streamed_reasoning_on_done ... ok
[INFO] [stdout] test responses_stream_encodes_encrypted_reasoning_details_as_reasoning_item ... ok
[INFO] [stdout] test responses_stream_empty_reasoning_delta_opens_no_summary_part ... ok
[INFO] [stdout] test responses_stream_reuses_provider_id_for_encrypted_reasoning ... ok
[INFO] [stdout] test preserved_same_format_events_replay_unknown_fields_exactly ... ok
[INFO] [stdout] test responses_stream_encodes_reasoning_as_summary_text ... ok
[INFO] [stdout] test responses_stream_keeps_every_reasoning_item_of_a_response ... ok
[INFO] [stdout] test responses_stream_opens_reasoning_under_provider_id_before_payload_arrives ... ok
[INFO] [stdout] test responses_stream_synthesized_item_ids_are_unique_across_responses ... ok
[INFO] [stdout] test responses_stream_encrypted_only_reasoning_opens_no_summary_part ... ok
[INFO] [stdout] test responses_stream_usage_without_total_keeps_cached_tokens_in_total ... ok
[INFO] [stdout] test responses_synthesized_item_ids_stay_within_the_openai_length_limit ... ok
[INFO] [stdout] test anthropic_empty_tool_input_survives_stream_translation ... ok
[INFO] [stdout] test same_format_decode_failure_emits_terminal_error ... ok
[INFO] [stdout] test translated_responses_text_and_tool_events_keep_item_identity_until_done ... ok
[INFO] [stdout] test responses_to_anthropic_uses_served_model_without_losing_source_model ... ok
[INFO] [stdout] test responses_terminal_snapshots_recover_missing_output_once ... ok
[INFO] [stderr]    Doc-tests switchyard_translation
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 57 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
[INFO] [stdout] 
[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" "d0003be55f56beed0f759797a378a43ce681dbb448a949dec213d534fcdcb293", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d0003be55f56beed0f759797a378a43ce681dbb448a949dec213d534fcdcb293", kill_on_drop: false }`
[INFO] [stdout] d0003be55f56beed0f759797a378a43ce681dbb448a949dec213d534fcdcb293
