[INFO] cloning repository https://github.com/rysweet/amplihack-recipe-runner-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/rysweet/amplihack-recipe-runner-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frysweet%2Famplihack-recipe-runner-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frysweet%2Famplihack-recipe-runner-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 4d5187eaf95836a549e6e68725f8f853d0dc7034
[INFO] testing rysweet/amplihack-recipe-runner-rs 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%2Frysweet%2Famplihack-recipe-runner-rs" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/rysweet/amplihack-recipe-runner-rs
[INFO] finished tweaking git repo https://github.com/rysweet/amplihack-recipe-runner-rs
[INFO] tweaked toml for git repo https://github.com/rysweet/amplihack-recipe-runner-rs written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/rysweet/amplihack-recipe-runner-rs 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/rysweet/amplihack-recipe-runner-rs 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-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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] 82c7a0e2c6303d53143aaee1fc129afca24878888255b7118a0bde52b127bf97
[INFO] running `Command { std: "docker" "start" "82c7a0e2c6303d53143aaee1fc129afca24878888255b7118a0bde52b127bf97", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "82c7a0e2c6303d53143aaee1fc129afca24878888255b7118a0bde52b127bf97", 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" "82c7a0e2c6303d53143aaee1fc129afca24878888255b7118a0bde52b127bf97" "/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" "82c7a0e2c6303d53143aaee1fc129afca24878888255b7118a0bde52b127bf97", 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" "82c7a0e2c6303d53143aaee1fc129afca24878888255b7118a0bde52b127bf97" "/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.185
[INFO] [stderr]    Compiling cc v1.2.57
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling colorchoice v1.0.5
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling simd-adler32 v0.3.8
[INFO] [stderr]    Compiling rustls v0.23.46
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling option-ext v0.2.0
[INFO] [stderr]    Compiling anyhow v1.0.103
[INFO] [stderr]    Compiling webpki-roots v0.26.11
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling anstream v0.6.21
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling unsafe-libyaml-norway v0.2.15
[INFO] [stderr]    Compiling jiff v0.2.23
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling filetime v0.2.27
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling uuid v1.22.0
[INFO] [stderr]    Compiling serde_norway v0.9.42
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling semver v1.0.27
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling xattr v1.6.1
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling tar v0.4.45
[INFO] [stderr]    Compiling clap v4.6.0
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling env_filter v1.0.0
[INFO] [stderr]    Compiling env_logger v0.11.9
[INFO] [stderr]    Compiling rustls-webpki v0.103.15
[INFO] [stderr]    Compiling ureq v2.12.1
[INFO] [stderr]    Compiling recipe-runner-rs v0.5.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 1m 37s
[INFO] running `Command { std: "docker" "inspect" "82c7a0e2c6303d53143aaee1fc129afca24878888255b7118a0bde52b127bf97", 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" "82c7a0e2c6303d53143aaee1fc129afca24878888255b7118a0bde52b127bf97" "/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 getrandom v0.3.4
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling quick-error v1.2.3
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling unarray v0.1.4
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling proptest v1.10.0
[INFO] [stderr]    Compiling recipe-runner-rs v0.5.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 1m 13s
[INFO] running `Command { std: "docker" "inspect" "82c7a0e2c6303d53143aaee1fc129afca24878888255b7118a0bde52b127bf97", 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" "82c7a0e2c6303d53143aaee1fc129afca24878888255b7118a0bde52b127bf97" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.27s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/build/recipe-runner-rs/97c7944a8577724f/out/recipe_runner_rs-97c7944a8577724f)
[INFO] [stdout] 
[INFO] [stdout] running 711 tests
[INFO] [stdout] test adapters::cli_subprocess::heartbeat_tests::a_live_and_busy_child_is_silent ... ok
[INFO] [stdout] test adapters::cli_subprocess::heartbeat_tests::the_stderr_tail_is_bounded_and_keeps_the_end ... ok
[INFO] [stdout] test adapters::cli_subprocess::heartbeat_tests::an_observed_exit_is_never_reported_as_progress ... ok
[INFO] [stdout] test adapters::cli_subprocess::heartbeat_tests::a_failed_exit_names_the_status_and_quotes_the_child_stderr ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::inherited_drop_warning_gives_name_size_and_limit_only ... ok
[INFO] [stdout] test adapters::cli_subprocess::heartbeat_tests::a_clean_exit_is_reported_without_a_stderr_dump ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::filter_inherited_env_drops_only_oversized_pairs_and_claudecode ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::inherited_filter_warning_names_the_variable_but_not_its_value ... ok
[INFO] [stdout] test adapters::cli_subprocess::codex_exec_contract_tests::codex_command_selects_exec_stdin_and_owned_final_output ... ok
[INFO] [stdout] test adapters::cli_subprocess::heartbeat_tests::a_missing_stderr_log_yields_an_empty_tail_not_a_panic ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::inherited_filter_counts_the_whole_env_string_against_max_arg_strlen ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::into_trimmed_string_matches_the_lossy_form_it_replaced ... ok
[INFO] [stdout] test adapters::cli_subprocess::heartbeat_tests::a_live_and_quiet_child_still_gets_a_progress_line ... ok
[INFO] [stdout] test adapters::cli_subprocess::heartbeat_tests::the_heartbeat_reports_the_exit_and_stops_polling ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::bash_resolution_proptests::resolution_is_absolute_or_error ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::bash_resolution_proptests::amplihack_bash_is_absolute_or_error ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::external_commands_still_run_after_reading_a_200_kib_value ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_all_four_arms_receive_the_same_resolved_interpreter ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_backoff_delay_exponential_progression ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_backoff_delay_respects_cap ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_backoff_delay_saturates_without_overflow ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_backoff_delay_zero_base_is_instant ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_bash_command_argv_empty_inline_command ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_bash_command_argv_matches_legacy_four_arms ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_bash_command_argv_passes_inline_command_verbatim ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_bash_command_argv_preserves_non_utf8_script_path ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_bash_command_argv_renders_timeout_seconds ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_bash_spawn_context_preserves_all_four_messages ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::injection_payload_in_a_spilled_value_is_data_not_code ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::cap_phase_drop_warning_names_the_variable_but_not_its_value ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::over_budget_recipe_env_keeps_every_var_readable ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::over_cap_unreadable_name_is_dropped_and_the_step_still_runs ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_build_agent_command_always_includes_system_prompt ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_build_agent_command_copilot_empty_env_keeps_flag ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_build_agent_command_copilot_includes_allow_all_tools ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::spill_logs_name_variables_but_never_their_values ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_build_agent_command_defaults_to_amplihack_launcher ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_build_agent_command_includes_separator_before_passthrough_args ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_build_agent_command_inlines_small_prompts ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_build_agent_command_non_copilot_omits_allow_all_tools ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_build_agent_command_separator_with_model_flag ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_build_agent_command_uses_file_transport_for_large_claude_prompt ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_build_agent_command_copilot_opt_out_via_env ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_build_child_env_depth_is_always_valid ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_build_agent_command_uses_launcher_override ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_build_child_env_guarantees_home_and_path ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_build_child_env_has_required_keys ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_build_child_env_increments_depth ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_build_child_env_max_sessions_is_numeric ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_build_child_env_max_depth_valid ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_build_child_env_preserves_max_depth ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_build_child_env_tree_id_nonempty ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_build_child_env_preserves_existing_tree_id ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_build_effective_system_prompt_without_existing_prompt ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_claude_family_large_prompt_uses_append_system_prompt_file ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_copilot_large_prompt_note_names_prompt_file ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_build_effective_system_prompt_with_existing_prompt ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::single_env_string_over_max_arg_strlen_reaches_script ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::small_env_runs_the_script_unchanged_with_no_spill_dir ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::spill_dir_exists_during_the_step_and_is_removed_after_success ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::spill_dir_is_removed_after_a_failing_step ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_execute_bash_step_echo ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_execute_bash_step_empty_command ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_execute_bash_step_failure ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_execute_bash_step_large_script_uses_tempfile ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_execute_bash_step_large_script_with_timeout ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::spill_modes_are_private_inside_the_step_and_removed_after_exit_3 ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_execute_bash_step_with_timeout ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_execute_bash_step_working_dir ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_execute_bash_step_timeout_kills ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_file_backed_prompt_file_is_byte_exact ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_file_backed_prompt_file_is_byte_exact_multibyte_boundary ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_is_available_always_true ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_is_env_protected_allow_list ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_is_rate_limit_detects_all_signal_phrases ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_is_rate_limit_detects_hit_your_rate_limit ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_is_rate_limit_is_case_insensitive ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_is_rate_limit_rejects_non_rate_limit_failures ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_large_system_prompt_keeps_full_user_prompt_inline ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_name ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::spill_dir_is_removed_after_a_timeout ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::spill_dir_is_removed_when_bounded_env_refuses_after_spilling ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_no_reentry_system_prompt_constant ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_non_interactive_footer_constant ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::spill_modes_are_private_inside_the_step_and_removed_after_success ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_prompt_at_exact_inline_limit_stays_inline ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_execute_agent_step_does_not_retry_non_rate_limit_failure ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_default_impl ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::spilled_edge_values_round_trip_and_the_spill_is_observable ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_bounded_env_drops_non_protected_losslessly ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_bounded_env_keeps_everything_under_normal_budget ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_bounded_env_never_drops_protected_var ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_bounded_env_fails_loud_when_protected_exceeds_budget ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::spilled_values_are_byte_identical_including_trailing_newlines ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_read_capped_missing_file_propagates_error ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_read_capped_returns_full_content_under_limit ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_read_capped_caps_at_max_plus_one_byte ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_resolve_bash_amplihack_bash_directory_fails_loud ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_resolve_bash_amplihack_bash_missing_fails_loud_without_fallback ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_resolve_bash_amplihack_bash_not_executable_fails_loud ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_resolve_bash_amplihack_bash_outranks_path ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_resolve_bash_amplihack_bash_set_and_executable ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_resolve_bash_amplihack_bash_symlink_to_executable_is_accepted ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_resolve_bash_amplihack_bash_relative_is_rejected ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_resolve_bash_exhausted_path_falls_back_to_last_resort ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_resolve_bash_interpreter_wrapper_returns_absolute_path ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_resolve_bash_empty_amplihack_bash_falls_through_to_path ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_resolve_bash_last_resort_when_nothing_is_set ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_resolve_bash_path_skips_directory_named_bash ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_resolve_bash_path_first_executable_match_wins ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_resolve_bash_path_skips_empty_and_relative_entries ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_resolve_bash_path_skips_non_executable_and_honours_order ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_should_use_file_backed_prompt_transport_for_large_claude_prompt ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_unreadable_parent_is_reported_as_permission_denied ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_with_binary ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_uses_file_backed_prompt_transport_for_copilot ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_with_working_dir ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_with_binary_propagates_agent_binary_env ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::exec_worker ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_resolve_bash_whitespace_amplihack_bash_is_not_trimmed ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_read_capped_at_agent_output_limit_is_truncated ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::masks::fixture_exec_002 ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::concurrent_exec_at_each_open_cannot_retain_fifo_or_mask_eof ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::masks::fixture_exec_022 ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::masks::fixture_exec_000 ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::masks::fixture_partial_000 ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::masks::fixture_exec_077 ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::masks::fixture_partial_022 ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::masks::fixture_partial_077 ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::masks::observer::errno_worker ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::masks::fixture_partial_002 ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::masks::observer::fault_worker ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::masks::observer::compiler_failure_retains_diagnostics_before_worker_launch ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::masks::observer::delegated_results_and_errno_are_preserved ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::masks::observer::formatting_failure_rejected ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::masks::observer::incomplete_record_rejected ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::masks::observer::failure_reporting_exit_rejected ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::masks::observer::interrupted_and_short_writes_complete ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::masks::observer::log_close_failure_rejected ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::masks::observer::oversized_record_rejected ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::masks::observer::log_open_failure_rejected ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::masks::owner_execute_bit_removed_refuses_safely ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::masks::owner_write_bit_removed_refuses_safely ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::masks::production_000 ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::masks::observer::log_write_failure_rejected ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::masks::production_worker ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::masks::production_002 ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::masks::production_077 ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::masks::production_022 ... ok
[INFO] [stdout] test adapters::codex_exec::anchor_fifo::tests::partial_construction_closes_each_endpoint_and_removes_paths ... ok
[INFO] [stdout] test adapters::codex_exec::group_anchor::tests::changed_reaper_policy_refuses_group_access ... ok
[INFO] [stdout] test adapters::codex_exec::group_anchor::tests::configured_lifetime_exits_and_retains_failure ... ok
[INFO] [stdout] test adapters::codex_exec::group_anchor::tests::drop_reaps_helper_without_second_close ... ok
[INFO] [stdout] test adapters::codex_exec::group_anchor::tests::failed_ack_refuses_and_unwinds ... ok
[INFO] [stdout] test adapters::codex_exec::group_anchor::tests::invalid_ack_refuses_and_unwinds ... ok
[INFO] [stdout] test adapters::codex_exec::group_anchor::tests::no_timeout_ack_wait_observes_cancellation ... ok
[INFO] [stdout] test adapters::codex_exec::group_anchor::tests::parent_control_eof_exits_and_retains_failure ... ok
[INFO] [stdout] test adapters::codex_exec::group_anchor::tests::stolen_child_refuses_group_access ... ok
[INFO] [stdout] test adapters::codex_exec::group_anchor::tests::delayed_ack_uses_configured_attempt_deadline ... ok
[INFO] [stdout] test adapters::codex_exec::group_anchor::tests::unavailable_close_range_refuses_and_unwinds ... ok
[INFO] [stdout] test adapters::codex_exec::group_anchor::tests::sealed_authority_refuses_reused_numeric_group ... ok
[INFO] [stdout] test adapters::codex_exec::signal_observations::tests::both_real_signals_retain_both_identities ... ok
[INFO] [stdout] test adapters::codex_exec::group_anchor::tests::unexpected_exit_at_final_signal_boundary_remains_terminal ... ok
[INFO] [stdout] test adapters::codex_exec::signal_observations::tests::sigint_saturation_permanently_refuses_new_epoch ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_adapter::adapter_worker ... ok
[INFO] [stdout] test adapters::codex_exec::signal_observations::tests::sigterm_saturation_permanently_refuses_new_epoch ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_adapter::combined_int_002 ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_adapter::combined_int_000 ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_descriptors::concurrent_helpers_isolate_each_attempts_transport ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_adapter::combined_int_022 ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_adapter::combined_int_077 ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_adapter::combined_term_000 ... ok
[INFO] [stdout] test adapters::codex_exec::group_anchor::tests::withheld_ack_times_out_and_unwinds ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_adapter::combined_term_022 ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_adapter::combined_term_002 ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_adapter::combined_term_077 ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_adapter::int_000 ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_adapter::int_022 ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_adapter::int_077 ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_adapter::int_002 ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_adapter::term_000 ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_adapter::term_002 ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_adapter::term_022 ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_integration::owned_000 ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_adapter::term_077 ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_integration::owned_launcher_worker ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_integration::owned_002 ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_integration::owned_022 ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_integration::owner_write_refusal_unwinds_spawned_launcher ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_integration::owner_execute_refusal_unwinds_spawned_launcher ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_integration::parent_loss_000 ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_integration::owned_077 ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_integration::parent_loss_022 ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_integration::refused_startup_worker ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_integration::parent_loss_002 ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_lifecycle::anchor_fork_failure_is_bounded_and_terminal ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_lifecycle::anchor_setup_exit_unwinds_owned_launcher ... ok
[INFO] [stdout] test adapters::codex_exec::tests::cancellation::cleanup_aggregation_preserves_typed_interruption ... ok
[INFO] [stdout] test adapters::codex_exec::tests::cancellation::interruption_survives_shutdown_and_resource_failures_for_both_signals ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_fifo_integration::parent_loss_077 ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_lifecycle::anchor_join_failure_is_bounded_and_terminal ... ok
[INFO] [stdout] test adapters::codex_exec::tests::anchor_lifecycle::unexpected_anchor_exit_retains_typed_failure ... ok
[INFO] [stdout] test adapters::codex_exec::tests::capacity_contracts::lowered_limit_descriptor_isolation_with_hard_65536 ... ok
[INFO] [stdout] test adapters::codex_exec::tests::coordinator::combined_cancellation_blocks_continuation_json_repair_and_recovery ... ok
[INFO] [stdout] test adapters::codex_exec::tests::capacity_contracts::lowered_limit_descriptor_isolation_with_initial_soft_65536 ... ok
[INFO] [stdout] test adapters::codex_exec::tests::coordinator::deletion_failure_preserves_execution_failure ... ok
[INFO] [stdout] test adapters::codex_exec::tests::coordinator::delayed_stderr_reader_preserves_terminal_rate_limit ... ok
[INFO] [stdout] test adapters::codex_exec::tests::capacity_contracts::retained_authority_with_hard_65536 ... ok
[INFO] [stdout] test adapters::codex_exec::tests::coordinator::spawn_and_final_read_failures_are_contextual ... ok
[INFO] [stdout] test adapters::codex_exec::tests::diagnostics::continuously_readable_diagnostics_observe_stop ... ok
[INFO] [stdout] test adapters::codex_exec::tests::diagnostics::failure_categories_never_echo_provider_secrets ... ok
[INFO] [stdout] test adapters::codex_exec::tests::coordinator::nonzero_exit_and_reader_failure_preserve_status_and_safe_category ... ok
[INFO] [stdout] test adapters::codex_exec::tests::capacity_contracts::retained_authority_with_initial_soft_65536 ... ok
[INFO] [stdout] test adapters::codex_exec::tests::endpoint_parent_loss::owner_worker ... ok
[INFO] [stdout] test adapters::codex_exec::tests::extended_fixtures::lifecycle_worker ... ok
[INFO] [stdout] test adapters::codex_exec::tests::coordinator::reader_failure_triggers_cleanup_without_execution_timeout ... ok
[INFO] [stdout] test adapters::codex_exec::tests::final_output::final_bytes_preserve_empty_unicode_and_exact_boundary ... ok
[INFO] [stdout] test adapters::codex_exec::tests::final_output::growing_file_read_is_capped_at_limit_plus_one ... ok
[INFO] [stdout] test adapters::codex_exec::tests::final_output::final_read_error_is_reported ... ok
[INFO] [stdout] test adapters::codex_exec::tests::first_launcher_fault::launcher_fault_worker ... ok
[INFO] [stdout] test adapters::codex_exec::tests::fixture_evidence::directory_read_error_cannot_be_hidden_as_optional_absence ... ok
[INFO] [stdout] test adapters::codex_exec::tests::fixture_evidence::invalid_utf8_preserves_diagnostics_and_worker_failure ... ok
[INFO] [stdout] test adapters::codex_exec::tests::fixture_evidence::optional_absence_is_distinct_and_required_absence_fails ... ok
[INFO] [stdout] test adapters::codex_exec::tests::endpoint_parent_loss::actual_parent_death_exits_untimed_fifo_helper_without_harming_unrelated_launcher ... ok
[INFO] [stdout] test adapters::codex_exec::tests::first_launcher_fault::first_launcher_eagain_preserves_ordinary_spawn_failure ... ok
[INFO] [stdout] test adapters::codex_exec::tests::group_authority::automatic_no_cldwait_refused_before_launcher_spawn ... ok
[INFO] [stdout] test adapters::codex_exec::tests::group_authority::explicit_sigchld_ignore_refused_before_launcher_spawn ... ok
[INFO] [stdout] test adapters::codex_exec::tests::diagnostics::readers_cap_stored_bytes_and_report_failure ... ok
[INFO] [stdout] test adapters::codex_exec::tests::inspection::missing_retained_helper_or_descriptor_is_an_inspection_failure ... ok
[INFO] [stdout] test adapters::codex_exec::tests::inspection::process_absence_races_do_not_hide_malformed_or_unreadable_metadata ... ok
[INFO] [stdout] test adapters::codex_exec::tests::launcher_policy::direct_term_failure_survives_successful_retirement ... ok
[INFO] [stdout] test adapters::codex_exec::tests::launcher_policy::exhausted_direct_retirement_budget_does_not_renew_wait ... ok
[INFO] [stdout] test adapters::codex_exec::tests::launcher_policy::exhausted_observational_budget_does_not_signal_or_extend_wait ... ok
[INFO] [stdout] test adapters::codex_exec::tests::group_authority::original_group_authority_survives_launcher_reaping ... ok
[INFO] [stdout] test adapters::codex_exec::tests::launcher_policy::zero_and_overflowing_budgets_refuse_before_launcher_entry ... ok
[INFO] [stdout] test adapters::codex_exec::tests::launcher_policy::exhausted_observational_budget_still_consumes_waitable_launcher ... ok
[INFO] [stdout] test adapters::codex_exec::tests::launcher_retirement::direct_kill_error_survives_successful_reap ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_execute_agent_step_exhausts_retries_on_persistent_rate_limit ... ok
[INFO] [stdout] test adapters::codex_exec::tests::group_authority::anchor_closes_high_descriptors_above_lowered_soft_limit ... ok
[INFO] [stdout] test adapters::codex_exec::tests::launcher_retirement::genuine_term_permission_failure_survives_final_absence ... ok
[INFO] [stdout] test adapters::codex_exec::tests::lifecycle_model::genuine_kill_error_survives_absence ... ok
[INFO] [stdout] test adapters::codex_exec::tests::lifecycle_model::genuine_owned_group_error_retains_terminal_marker ... ok
[INFO] [stdout] test adapters::codex_exec::tests::lifecycle_model::genuine_probe_error_survives_absence ... ok
[INFO] [stdout] test adapters::codex_exec::tests::lifecycle_model::genuine_reap_error_survives_absence ... ok
[INFO] [stdout] test adapters::codex_exec::tests::lifecycle_model::genuine_term_error_survives_absence ... ok
[INFO] [stdout] test adapters::codex_exec::tests::launcher_retirement::ordinary_group_teardown_retains_primary_error ... ok
[INFO] [stdout] test adapters::codex_exec::tests::launcher_retirement::genuine_kill_permission_failure_survives_final_absence ... ok
[INFO] [stdout] test adapters::codex_exec::tests::group_authority::owned_shutdown_preserves_unrelated_live_group ... ok
[INFO] [stdout] test adapters::codex_exec::tests::owned_faults::anchor_probe_failure_survives_successful_cleanup ... ok
[INFO] [stdout] test adapters::codex_exec::tests::owned_faults::launcher_wait_failure_survives_successful_cleanup ... ok
[INFO] [stdout] test adapters::codex_exec::tests::owned_faults::ordinary_adapter_success_control ... ok
[INFO] [stdout] test adapters::codex_exec::tests::owned_faults::ordinary_runner_admission_control ... ok
[INFO] [stdout] test adapters::codex_exec::tests::owned_faults::owned_fault_worker ... ok
[INFO] [stdout] test adapters::codex_exec::tests::owned_faults::owned_probe_failure_blocks_real_nested_recovery ... ok
[INFO] [stdout] test adapters::codex_exec::tests::lifecycle_model::genuine_descendant_error_retains_terminal_marker ... ok
[INFO] [stdout] test adapters::codex_exec::tests::owned_faults::owned_probe_failure_blocks_real_pending_work ... ok
[INFO] [stdout] test adapters::codex_exec::tests::owned_faults::owned_wait_failure_blocks_real_nested_recovery ... ok
[INFO] [stdout] test adapters::codex_exec::tests::owned_faults::owned_wait_failure_blocks_real_pending_work ... ok
[INFO] [stdout] test adapters::codex_exec::tests::owned_faults::public_adapter_retains_owned_probe_failure ... ok
[INFO] [stdout] test adapters::codex_exec::tests::process::already_exited_launcher_does_not_require_kill ... ok
[INFO] [stdout] test adapters::codex_exec::tests::owned_faults::public_adapter_retains_owned_wait_failure ... ok
[INFO] [stdout] test adapters::codex_exec::tests::process::signal_and_observation_errors_do_not_skip_cleanup ... ok
[INFO] [stdout] test adapters::codex_exec::tests::process::launcher_kill_failure_has_bounded_reaping ... ok
[INFO] [stdout] test adapters::codex_exec::tests::retirement_concurrency::sigterm_independent_install_races_owned_retirement ... ok
[INFO] [stdout] test adapters::codex_exec::tests::retirement_concurrency::sigint_independent_install_races_owned_retirement ... ok
[INFO] [stdout] test adapters::codex_exec::tests::retirement_failures::drop_fault_retains_complete_dispositions_for_reconciliation ... ok
[INFO] [stdout] test adapters::codex_exec::tests::retirement_failures::primary_signal_and_joint_cleanup_survive_retirement_composition ... ok
[INFO] [stdout] test adapters::codex_exec::tests::retirement_fixtures::lifecycle_worker ... ok
[INFO] [stdout] test adapters::codex_exec::tests::retirement_failures::pending_restoration_publication_refuses_independent_admission ... ok
[INFO] [stdout] test adapters::codex_exec::tests::retirement_signals::adapter_sigint_at_owned_restoration ... ok
[INFO] [stdout] test adapters::codex_exec::tests::owned_faults::late_group_termination_blocks_real_nested_recovery ... ok
[INFO] [stdout] test adapters::codex_exec::tests::owned_faults::late_group_termination_blocks_real_pending_work ... ok
[INFO] [stdout] test adapters::codex_exec::tests::retirement_signals::adapter_sigterm_after_sigint_restoration ... ok
[INFO] [stdout] test adapters::codex_exec::tests::retirement_signals::adapter_sigterm_at_owned_restoration ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_execute_agent_step_falls_back_to_model_auto_on_final_attempt ... ok
[INFO] [stdout] test adapters::codex_exec::tests::owned_faults::late_group_termination_reaps_public_launcher ... ok
[INFO] [stdout] test adapters::codex_exec::tests::retirement_signals::prior_custom_dispositions_and_clean_independent_epoch ... ok
[INFO] [stdout] test adapters::codex_exec::tests::retirement_signals::registration_rollback_fault_preserves_reconciliation_metadata ... ok
[INFO] [stdout] test adapters::codex_exec::tests::retirement_signals::sigint_entered_handler_retained_on_close ... ok
[INFO] [stdout] test adapters::codex_exec::tests::retirement_signals::registration_rollback_restores_custom_dispositions ... ok
[INFO] [stdout] test adapters::codex_exec::tests::retirement_signals::sigint_retirement_result_survives_independent_reset ... ok
[INFO] [stdout] test adapters::codex_exec::tests::retirement_signals::sigint_concurrent_nonlast_and_last_retirement ... ok
[INFO] [stdout] test adapters::codex_exec::tests::retirement_signals::sigint_restoration_fault_retains_joint_causes ... ok
[INFO] [stdout] test adapters::codex_exec::tests::retirement_signals::sigterm_entered_handler_retained_on_close ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::cleanup_fixture_has_typed_marker_without_interruption ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::codex_integration_modules_stay_within_300_lines ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::combined_execution_and_cleanup_retains_typed_marker_and_both_causes ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::json::claude_nested_repair_cleanup_blocks_recovery ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::json::claude_optional_continue_repair_cleanup ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::json::claude_optional_nonfatal_repair_cleanup ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::json::claude_required_continue_repair_cleanup ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::json::claude_required_nonfatal_repair_cleanup ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::json::codex_nested_repair_cleanup_blocks_recovery ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::json::codex_optional_continue_repair_cleanup ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::json::codex_optional_nonfatal_repair_cleanup ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::json::codex_required_continue_repair_cleanup ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::json::codex_required_nonfatal_repair_cleanup ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::json::copilot_nested_repair_cleanup_blocks_recovery ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::json::copilot_optional_continue_repair_cleanup ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::json::copilot_optional_nonfatal_repair_cleanup ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::json::copilot_required_continue_repair_cleanup ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::json::copilot_required_nonfatal_repair_cleanup ... ok
[INFO] [stdout] test adapters::codex_exec::tests::retirement_signals::sigint_inflight_publication_survives_retirement_reset ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::json::primary_cleanup_does_not_dispatch_json_repair ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::nested_recovery::cleanup_during_recovery_blocks_enclosing_recovery ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::json::ordinary_optional_json_repair_errors_still_degrade ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::nested_recovery::nested_cleanup_cannot_be_recovered_as_success ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::nested_recovery::multilevel_cleanup_blocks_each_recovery_and_later_step ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::nested_recovery::ordinary_nested_failure_still_recovers ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::parallel::completed_parallel_sibling_keeps_status_and_cleanup_keeps_original_index ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::parallel::synchronous_parallel_agent_cleanup_stops_pending_members ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::parallel::started_workers_preserve_distinct_cleanup_causes ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::parallel::synchronous_parallel_nested_cleanup_stops_pending_members ... ok
[INFO] [stdout] test adapters::codex_exec::tests::retirement_signals::sigterm_concurrent_nonlast_and_last_retirement ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::parallel::workers::synchronous_cleanup_joins_started_worker_and_blocks_pending_dispatch ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::parallel::threaded_ordinary_failure_preserves_nonfatal_policy ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::parallel::threaded_cleanup_nonfatal_cannot_dispatch_next_group ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::sequencing_hooks::continue_agent_cleanup_stops_dispatch ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::sequencing_hooks::continue_bash_cleanup_stops_dispatch ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::sequencing_hooks::error_hook_cleanup_retains_primary_and_stops_dispatch ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::sequencing_hooks::fatal_agent_cleanup_stops_dispatch ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::parallel::workers::worker_cleanup_publishes_before_join_and_stops_pending_dispatch ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::sequencing_hooks::final_post_hook_cleanup_has_failed_audit_and_no_success_checkpoint ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::sequencing_hooks::fatal_bash_cleanup_stops_dispatch ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::parallel::workers::worker_cleanup_blocks_excess_bash_fallback_and_joins_all_50_workers ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::sequencing_hooks::group_error_hook_cleanup_blocks_later_hooks_and_groups ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::sequencing_hooks::group_post_hook_cleanup_blocks_later_hooks_and_groups ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::sequencing_hooks::independent_execute_resets_cleanup_terminality ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::sequencing_hooks::group_pre_hook_cleanup_blocks_group_dispatch ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::sequencing_hooks::nonfatal_agent_cleanup_stops_dispatch ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::sequencing_hooks::last_post_hook_cleanup_changes_recipe_outcome ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::sequencing_hooks::ordinary_errors_keep_both_nonfatal_policies_and_hook_warnings ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::sequencing_hooks::ordinary_bash_errors_keep_both_nonfatal_policies ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::sequencing_hooks::nonfatal_bash_cleanup_stops_dispatch ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::sequencing_hooks::post_hook_cleanup_blocks_later_dispatch ... ok
[INFO] [stdout] test adapters::env_spill::tests::drop_warning_escapes_control_characters_in_the_name ... ok
[INFO] [stdout] test adapters::env_spill::tests::dropping_the_spill_removes_its_directory ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::sequencing_hooks::pre_hook_cleanup_blocks_primary_and_later_hooks ... ok
[INFO] [stdout] test adapters::env_spill::tests::env_pair_bytes_counts_equals_sign_and_nul ... ok
[INFO] [stdout] test adapters::env_spill::tests::failed_spill_cleanup_is_reported_not_swallowed ... ok
[INFO] [stdout] test adapters::env_spill::tests::per_value_cap_leaves_a_margin_under_max_arg_strlen ... ok
[INFO] [stdout] test adapters::codex_exec::tests::runner_cleanup::sequencing_hooks::terminal_post_hook_on_skipped_primary_reports_effective_failure ... ok
[INFO] [stdout] test adapters::env_spill::tests::plan_budget_phase_breaks_ties_by_name_and_is_deterministic ... ok
[INFO] [stdout] test adapters::env_spill::tests::plan_budget_phase_spills_largest_first_until_total_fits ... ok
[INFO] [stdout] test adapters::env_spill::tests::missing_spill_file_fails_closed_before_the_user_command ... ok
[INFO] [stdout] test adapters::env_spill::tests::plan_handles_legacy_alias_independently ... ok
[INFO] [stdout] test adapters::env_spill::tests::plan_is_empty_when_everything_fits ... ok
[INFO] [stdout] test adapters::env_spill::tests::plan_cap_phase_precedes_budget_phase ... ok
[INFO] [stdout] test adapters::env_spill::tests::plan_leaves_small_unreadable_names_to_bounded_env ... ok
[INFO] [stdout] test adapters::env_spill::tests::plan_drops_over_cap_names_that_cannot_be_read ... ok
[INFO] [stdout] test adapters::env_spill::tests::plan_spills_every_value_over_the_per_value_cap_even_under_budget ... ok
[INFO] [stdout] test adapters::env_spill::tests::plan_never_spills_empty_values ... ok
[INFO] [stdout] test adapters::env_spill::tests::plan_never_touches_inherited_vars ... ok
[INFO] [stdout] test adapters::env_spill::tests::preamble_contains_names_and_paths_but_never_values ... ok
[INFO] [stdout] test adapters::env_spill::tests::spill_files_are_private_and_named_by_index ... ok
[INFO] [stdout] test adapters::env_spill::tests::preamble_quotes_awkward_spill_root_paths ... ok
[INFO] [stdout] test adapters::env_spill::tests::spill_for_bash_is_a_no_op_when_nothing_moves ... ok
[INFO] [stdout] test adapters::env_spill::tests::spill_for_bash_rejects_nul_without_leaking_the_value ... ok
[INFO] [stdout] test adapters::env_spill::tests::spill_root_defaults_to_temp_dir_and_honours_the_test_override ... ok
[INFO] [stdout] test adapters::env_spill::tests::spill_for_bash_removes_spilled_and_dropped_keys_from_the_env ... ok
[INFO] [stdout] test adapters::env_spill::tests::spillable_names_are_plain_identifiers ... ok
[INFO] [stdout] test adapters::env_spill::tests::unsafe_or_special_names_are_not_spillable ... ok
[INFO] [stdout] test agent_resolver::tests::test_reject_no_colon ... ok
[INFO] [stdout] test agent_resolver::tests::test_reject_path_traversal ... ok
[INFO] [stdout] test agent_resolver::tests::test_reject_too_many_parts ... ok
[INFO] [stdout] test agent_resolver::tests::test_resolve_from_temp_dir ... ok
[INFO] [stdout] test agent_resolver::tests::test_valid_three_part_ref_not_found ... ok
[INFO] [stdout] test agent_resolver::tests::test_valid_two_part_ref_not_found ... ok
[INFO] [stdout] test adapters::env_spill::tests::spilled_values_are_shell_local_not_exported ... ok
[INFO] [stdout] test adapters::env_spill::tests::preamble_round_trips_values_byte_for_byte ... ok
[INFO] [stdout] test condition::tests::proptests::evaluate_is_deterministic ... ok
[INFO] [stdout] test condition::tests::proptests::boolean_connectives_never_panic ... ok
[INFO] [stdout] test condition::tests::proptests::in_list_never_panics ... ok
[INFO] [stdout] test condition::tests::proptests::not_in_list_never_panics ... ok
[INFO] [stdout] test condition::tests::proptests::fuzz_evaluate_never_panics ... ok
[INFO] [stdout] test adapters::codex_exec::tests::retirement_signals::sigterm_inflight_publication_survives_retirement_reset ... ok
[INFO] [stdout] test condition::tests::test_bool_false_equals_string_false ... ok
[INFO] [stdout] test condition::tests::proptests::simple_equality_never_panics ... ok
[INFO] [stdout] test condition::tests::test_bool_false_not_equals_string_true ... ok
[INFO] [stdout] test condition::tests::test_bool_not_equals_arbitrary_string ... ok
[INFO] [stdout] test condition::tests::test_bool_true_equals_string_true ... ok
[INFO] [stdout] test condition::tests::test_bool_true_equals_string_true_capitalized ... ok
[INFO] [stdout] test condition::tests::test_bool_true_not_equals_string_false ... ok
[INFO] [stdout] test condition::tests::test_boolean_and_or ... ok
[INFO] [stdout] test condition::tests::test_bracket_access_object_key ... ok
[INFO] [stdout] test condition::tests::test_bracket_access_array_index ... ok
[INFO] [stdout] test condition::tests::test_compare_values_bool_bool_ordering ... ok
[INFO] [stdout] test condition::tests::test_compare_values_bool_number_ordering ... ok
[INFO] [stdout] test condition::tests::test_bracket_access_works_in_legacy_guard_expression ... ok
[INFO] [stdout] test condition::tests::test_compare_values_bool_string_ordering ... ok
[INFO] [stdout] test condition::tests::test_default_workflow_step07_resume_checkpoint_false ... ok
[INFO] [stdout] test condition::tests::test_double_ampersand_operator_equivalent_to_and ... ok
[INFO] [stdout] test condition::tests::test_double_pipe_operator_equivalent_to_or ... ok
[INFO] [stdout] test condition::tests::test_default_workflow_step07_resume_checkpoint_true ... ok
[INFO] [stdout] test condition::tests::test_force_single_workstream_blocks_parallel ... ok
[INFO] [stdout] test condition::tests::test_empty_list_literal ... ok
[INFO] [stdout] test condition::tests::test_force_single_workstream_false_allows_parallel ... ok
[INFO] [stdout] test condition::tests::test_force_single_workstream_condition ... ok
[INFO] [stdout] test condition::tests::test_function_and_method_call_trailing_comma ... ok
[INFO] [stdout] test condition::tests::test_in_list_literal ... ok
[INFO] [stdout] test condition::tests::test_in_operator ... ok
[INFO] [stdout] test condition::tests::test_list_literal_in_operator_match ... ok
[INFO] [stdout] test condition::tests::test_list_literal_in_operator_no_match ... ok
[INFO] [stdout] test condition::tests::test_list_literal_malformed_should_error ... ok
[INFO] [stdout] test condition::tests::test_list_literal_numbers_and_mixed ... ok
[INFO] [stdout] test condition::tests::test_list_literal_trailing_comma ... ok
[INFO] [stdout] test condition::tests::test_not_in_list_literal ... ok
[INFO] [stdout] test condition::tests::test_postfix_bracket_access_inside_method_call_arg ... ok
[INFO] [stdout] test condition::tests::test_postfix_dot_access_inside_function_call_arg ... ok
[INFO] [stdout] test condition::tests::proptests::fuzz_tokenize_never_panics ... ok
[INFO] [stdout] test condition::tests::test_quality_audit_validated_findings_missing_key ... ok
[INFO] [stdout] test condition::tests::test_quality_audit_validated_findings_present ... ok
[INFO] [stdout] test condition::tests::test_single_ampersand_still_errors ... ok
[INFO] [stdout] test condition::tests::test_step16_create_draft_pr_condition ... ok
[INFO] [stdout] test condition::tests::test_unexpected_lbracket_error_includes_position ... ok
[INFO] [stdout] test condition::tests::test_string_equality ... ok
[INFO] [stdout] test context::tests::context_file_does_not_follow_or_truncate_planted_legacy_target ... ok
[INFO] [stdout] test context::tests::context_tempfile_is_private_before_first_write ... ok
[INFO] [stdout] test context::tests::failed_context_write_removes_partial_private_file ... ok
[INFO] [stdout] test context::tests::concurrent_context_files_are_unique_private_and_keep_independent_payloads ... ok
[INFO] [stdout] test context::tests::proptests::no_alias_for_reserved_names ... ok
[INFO] [stdout] test condition::tests::test_number_string_cross_type ... ok
[INFO] [stdout] test context::tests::proptests::dot_notation_consistent_with_nested_json ... ok
[INFO] [stdout] test context::tests::proptests::render_shell_heredoc_body_uses_unquoted_refs ... ok
[INFO] [stdout] test context::tests::proptests::render_resolves_all_defined_vars ... ok
[INFO] [stdout] test context::tests::proptests::render_no_panic ... ok
[INFO] [stdout] test context::tests::proptests::render_shell_outside_heredoc_uses_quoted_env_refs ... ok
[INFO] [stdout] test adapters::codex_exec::tests::retirement_signals::sigterm_retirement_result_survives_independent_reset ... ok
[INFO] [stdout] test context::tests::proptests::render_shell_quoted_heredoc_inlines_values ... ok
[INFO] [stdout] test context::tests::shell_env_for_step_passes_every_var_regardless_of_budget ... ok
[INFO] [stdout] test context::tests::test_dot_notation_get ... ok
[INFO] [stdout] test context::tests::test_deeply_nested_parens ... ok
[INFO] [stdout] test context::tests::test_dot_notation_missing_property_is_null ... ok
[INFO] [stdout] test context::tests::test_dot_notation_nested_property_access ... ok
[INFO] [stdout] test context::tests::test_dot_notation_property_access_in_condition ... ok
[INFO] [stdout] test adapters::codex_exec::tests::retirement_signals::sigterm_restoration_fault_retains_joint_causes ... ok
[INFO] [stdout] test context::tests::test_empty_condition ... ok
[INFO] [stdout] test context::tests::test_empty_string_is_falsy ... ok
[INFO] [stdout] test context::tests::test_env_byte_budget_derives_from_sysconf_not_literal ... ok
[INFO] [stdout] test context::tests::test_env_byte_budget_test_seam_overrides_measured_value ... ok
[INFO] [stdout] test context::tests::test_env_byte_budget_is_cached_and_stable ... ok
[INFO] [stdout] test context::tests::test_empty_context_variable_access ... ok
[INFO] [stdout] test context::tests::test_evaluate_and_or ... ok
[INFO] [stdout] test context::tests::test_evaluate_eq ... ok
[INFO] [stdout] test context::tests::test_evaluate_function_int ... ok
[INFO] [stdout] test context::tests::test_evaluate_function_len ... ok
[INFO] [stdout] test context::tests::test_evaluate_comparison_lt_gt ... ok
[INFO] [stdout] test context::tests::test_evaluate_in ... ok
[INFO] [stdout] test context::tests::test_evaluate_method_lower ... ok
[INFO] [stdout] test context::tests::test_evaluate_method_strip ... ok
[INFO] [stdout] test context::tests::test_evaluate_method_upper ... ok
[INFO] [stdout] test context::tests::test_evaluate_neq ... ok
[INFO] [stdout] test context::tests::test_evaluate_method_replace ... ok
[INFO] [stdout] test context::tests::test_evaluate_method_startswith ... ok
[INFO] [stdout] test context::tests::test_evaluate_not_in ... ok
[INFO] [stdout] test context::tests::test_evaluate_rejects_dunder ... ok
[INFO] [stdout] test context::tests::test_hyphenated_variable_in_condition ... ok
[INFO] [stdout] test context::tests::test_hyphen_as_minus_operator ... ok
[INFO] [stdout] test context::tests::test_legacy_uppercase_alias_for_known_recipe_keys ... ok
[INFO] [stdout] test context::tests::test_legacy_uppercase_alias_skips_invalid_identifiers ... ok
[INFO] [stdout] test context::tests::test_len_empty_array ... ok
[INFO] [stdout] test context::tests::test_len_empty_string ... ok
[INFO] [stdout] test context::tests::test_legacy_uppercase_alias_skips_reserved_names ... ok
[INFO] [stdout] test context::tests::test_many_and_clauses ... ok
[INFO] [stdout] test context::tests::test_many_or_clauses ... ok
[INFO] [stdout] test context::tests::test_method_lower_on_number ... ok
[INFO] [stdout] test context::tests::test_method_on_empty_string ... ok
[INFO] [stdout] test context::tests::test_method_strip_on_null ... ok
[INFO] [stdout] test context::tests::test_max_nesting_exceeded ... ok
[INFO] [stdout] test context::tests::test_multi_hyphen_variable ... ok
[INFO] [stdout] test context::tests::test_method_strip_on_number ... ok
[INFO] [stdout] test context::tests::test_null_value_comparison ... ok
[INFO] [stdout] test context::tests::test_numeric_boundary_large ... ok
[INFO] [stdout] test context::tests::test_method_strip_on_bool ... ok
[INFO] [stdout] test context::tests::test_numeric_boundary_negative ... ok
[INFO] [stdout] test context::tests::test_reject_unsafe_method ... ok
[INFO] [stdout] test context::tests::test_numeric_boundary_zero ... ok
[INFO] [stdout] test context::tests::test_render_dict_value ... ok
[INFO] [stdout] test context::tests::test_render_empty_template ... ok
[INFO] [stdout] test context::tests::test_render_missing_var ... ok
[INFO] [stdout] test context::tests::test_render_no_placeholders ... ok
[INFO] [stdout] test context::tests::test_render_missing_variable ... ok
[INFO] [stdout] test context::tests::proptests::render_shell_no_panic ... ok
[INFO] [stdout] test context::tests::test_render_shell_double_quoted_heredoc_also_inlines_value ... ok
[INFO] [stdout] test context::tests::test_render_shell_double_quoted_heredoc_inlines_value ... ok
[INFO] [stdout] test context::tests::test_render_shell_heredoc_multiple_vars ... ok
[INFO] [stdout] test context::tests::test_render_shell_empty_heredoc_body ... ok
[INFO] [stdout] test context::tests::test_render_shell_heredoc_preserves_non_template_content ... ok
[INFO] [stdout] test context::tests::test_render_shell_empty ... ok
[INFO] [stdout] test context::tests::test_render_shell_heredoc_missing_var_in_body ... ok
[INFO] [stdout] test context::tests::test_render_shell_heredoc_start_line_stays_quoted ... ok
[INFO] [stdout] test context::tests::test_render_shell_heredoc_with_dot_notation_var ... ok
[INFO] [stdout] test context::tests::test_render_shell_heredoc_unquoted_no_quotes_in_body ... ok
[INFO] [stdout] test context::tests::test_render_shell_mixed_heredoc_and_regular ... ok
[INFO] [stdout] test context::tests::test_render_shell_heredoc_with_tab_strip ... ok
[INFO] [stdout] test context::tests::test_render_shell_realistic_recipe_pattern ... ok
[INFO] [stdout] test context::tests::test_render_shell_realistic_single_quoted_heredoc_recipe_pattern ... ok
[INFO] [stdout] test context::tests::test_render_shell_quoted_heredoc_missing_var ... ok
[INFO] [stdout] test context::tests::test_render_shell_no_heredoc_preserves_quoted_behavior ... ok
[INFO] [stdout] test context::tests::test_render_shell_quoted_heredoc_inlines_value ... ok
[INFO] [stdout] test context::tests::test_render_shell_single_quoted_heredoc_does_not_produce_env_var_ref ... ok
[INFO] [stdout] test context::tests::test_render_shell_single_quoted_heredoc_inlines_task_description ... ok
[INFO] [stdout] test context::tests::test_render_shell_uses_env_var_refs ... ok
[INFO] [stdout] test context::tests::test_render_shell_single_quoted_heredoc_multiline_value_behavior ... ok
[INFO] [stdout] test context::tests::test_render_shell_var_on_heredoc_start_line_is_quoted ... ok
[INFO] [stdout] test context::tests::test_render_simple ... ok
[INFO] [stdout] test context::tests::test_shell_env_vars ... ok
[INFO] [stdout] test context::tests::test_short_circuit_and ... ok
[INFO] [stdout] test context::tests::test_short_circuit_preserves_both_sides ... ok
[INFO] [stdout] test context::tests::test_shell_env_vars_nested ... ok
[INFO] [stdout] test context::tests::test_short_circuit_or ... ok
[INFO] [stdout] test context::tests::test_smart_orch_condition_with_numeric_workstream_count ... ok
[INFO] [stdout] test context::tests::test_very_long_string_literal ... ok
[INFO] [stdout] test context::tests::test_whitespace_only_condition ... ok
[INFO] [stdout] test discovery::tests::test_cache_hit ... ok
[INFO] [stdout] test context::tests::proptests::shell_env_var_names_are_valid ... ok
[INFO] [stdout] test discovery::tests::test_discover_empty_dir ... ok
[INFO] [stdout] test discovery::tests::test_cache_invalidate ... ok
[INFO] [stdout] test discovery::tests::test_discover_recipes_includes_yml_files ... ok
[INFO] [stdout] test discovery::tests::test_cache_miss_dirs_changed ... ok
[INFO] [stdout] test discovery::tests::test_discover_with_recipe ... ok
[INFO] [stdout] test discovery::tests::test_cache_miss_ttl_expired ... ok
[INFO] [stdout] test discovery::tests::test_find_recipe_finds_yml_extension ... ok
[INFO] [stdout] test discovery::tests::test_empty_package_recipe_dir_env_var_is_ignored ... ok
[INFO] [stdout] test discovery::tests::test_file_hash_deterministic ... ok
[INFO] [stdout] test discovery::tests::test_find_recipe ... ok
[INFO] [stdout] test discovery::tests::test_find_recipe_rejects_path_traversal ... ok
[INFO] [stdout] test discovery::tests::test_find_recipe_yaml_takes_precedence_over_yml ... ok
[INFO] [stdout] test discovery::tests::test_package_recipe_dir_precedes_extra_recipe_dirs ... ok
[INFO] [stdout] test discovery::tests::test_upstream_url_inner_accepts_http ... ok
[INFO] [stdout] test discovery::tests::test_upstream_url_inner_default_when_no_env ... ok
[INFO] [stdout] test discovery::tests::test_manifest_roundtrip ... ok
[INFO] [stdout] test discovery::tests::test_package_recipe_dir_env_var ... ok
[INFO] [stdout] test discovery::tests::test_last_wins_dedup ... ok
[INFO] [stdout] test discovery::tests::test_upstream_url_inner_rejects_empty ... ok
[INFO] [stdout] test discovery::tests::test_upstream_url_inner_rejects_embedded_userinfo ... ok
[INFO] [stdout] test discovery::tests::test_verify_global_installation_removed ... ok
[INFO] [stdout] test models::tests::test_effective_type_defaults_to_bash ... ok
[INFO] [stdout] test discovery::tests::test_upstream_url_inner_uses_env_override ... ok
[INFO] [stdout] test models::tests::test_effective_type_explicit_bash ... ok
[INFO] [stdout] test models::tests::test_effective_type_infers_recipe ... ok
[INFO] [stdout] test models::tests::test_effective_type_infers_agent_from_agent_field ... ok
[INFO] [stdout] test models::tests::test_effective_type_infers_agent_from_prompt_only ... ok
[INFO] [stdout] test models::tests::test_recipe_result_display ... ok
[INFO] [stdout] test models::tests::test_effective_type_infers_bash_with_command_and_prompt ... ok
[INFO] [stdout] test models::tests::test_recipe_result_display_failure ... ok
[INFO] [stdout] test models::tests::test_recursion_config_defaults ... ok
[INFO] [stdout] test models::tests::test_step_execution_error_display ... ok
[INFO] [stdout] test models::tests::test_step_result_display ... ok
[INFO] [stdout] test models::tests::test_step_result_display_with_error ... ok
[INFO] [stdout] test models::tests::test_step_status_display ... ok
[INFO] [stdout] test discovery::tests::test_upstream_url_inner_rejects_non_http_schemes ... ok
[INFO] [stdout] test parser::step_field_warning_tests::missing_ids_and_names_use_placeholders ... ok
[INFO] [stdout] test parser::step_field_warning_tests::known_step_fields_cover_every_step_field_and_alias ... ok
[INFO] [stdout] test parser::step_field_warning_tests::non_string_keys_do_not_panic ... ok
[INFO] [stdout] test parser::step_field_warning_tests::each_distinct_warning_is_reported_once_per_process ... ok
[INFO] [stdout] test parser::step_field_warning_tests::malformed_shapes_yield_no_warnings ... ok
[INFO] [stdout] test parser::step_field_warning_tests::unknown_field_gets_the_generic_warning ... ok
[INFO] [stdout] test parser::step_field_warning_tests::warning_text_from_yaml_is_escaped_and_capped ... ok
[INFO] [stdout] test parser::step_field_warning_tests::known_fields_including_fatal_and_nonfatal_do_not_warn ... ok
[INFO] [stdout] test parser::step_field_warning_tests::retired_max_env_value_bytes_parses_and_names_the_step ... ok
[INFO] [stdout] test parser::step_field_warning_tests::validate_with_yaml_reports_step_fields_through_the_shared_helper ... ok
[INFO] [stdout] test parser::step_field_warning_tests::warnings_are_capped_at_one_hundred ... ok
[INFO] [stdout] test parser::tests::proptests::duplicate_ids_detected ... ok
[INFO] [stdout] test parser::tests::proptests::empty_name_rejected ... ok
[INFO] [stdout] test parser::tests::test_parse_agent_step ... ok
[INFO] [stdout] test parser::tests::test_parse_empty_steps_list ... ok
[INFO] [stdout] test parser::tests::proptests::oversized_yaml_rejected ... ok
[INFO] [stdout] test parser::tests::test_parse_empty_yaml ... ok
[INFO] [stdout] test parser::tests::test_parse_minimal_recipe ... ok
[INFO] [stdout] test parser::tests::test_parse_no_steps ... ok
[INFO] [stdout] test parser::tests::test_parse_name_with_special_characters ... ok
[INFO] [stdout] test parser::tests::test_parse_recipe_step ... ok
[INFO] [stdout] test parser::tests::test_parse_step_with_empty_command ... ok
[INFO] [stdout] test parser::tests::test_parse_step_with_empty_id ... ok
[INFO] [stdout] test parser::tests::test_parse_whitespace_only_yaml ... ok
[INFO] [stdout] test parser::tests::test_parse_with_context ... ok
[INFO] [stdout] test parser::tests::test_parse_yaml_one_byte_over_limit ... ok
[INFO] [stdout] test parser::tests::test_reject_duplicate_step_ids ... ok
[INFO] [stdout] test parser::tests::test_reject_empty_name ... ok
[INFO] [stdout] test parser::tests::test_resolve_extends_detects_cycle ... ok
[INFO] [stdout] test parser::tests::test_resolve_extends_inherits_parent_steps ... ok
[INFO] [stdout] test parser::tests::test_resolve_extends_no_extends ... ok
[INFO] [stdout] test parser::tests::test_resolve_extends_parent_not_found ... ok
[INFO] [stdout] test parser::tests::test_resolve_extends_recursive_three_level_chain ... ok
[INFO] [stdout] test parser::tests::proptests::valid_recipes_always_parse ... ok
[INFO] [stdout] test parser::tests::test_validate_unrecognized_fields ... ok
[INFO] [stdout] test parser::tests::test_validate_missing_prompt ... ok
[INFO] [stdout] test progress_validator::tests::accept_recent_timestamp ... ok
[INFO] [stdout] test progress_validator::tests::bogus_pid_is_not_alive ... ok
[INFO] [stdout] test progress_validator::tests::current_pid_is_alive ... ok
[INFO] [stdout] test progress_validator::tests::full_valid_payload ... ok
[INFO] [stdout] test progress_validator::tests::merge_workstream_noop_when_state_empty ... ok
[INFO] [stdout] test progress_validator::tests::merge_workstream_creates_progress_file ... ok
[INFO] [stdout] test progress_validator::tests::proptests::future_timestamps_rejected ... ok
[INFO] [stdout] test progress_validator::tests::merge_workstream_updates_existing ... ok
[INFO] [stdout] test progress_validator::tests::proptests::non_terminal_states_have_transitions ... ok
[INFO] [stdout] test progress_validator::tests::proptests::oversized_step_name_rejected ... ok
[INFO] [stdout] test parser::tests::proptests::parse_then_validate_no_panic ... ok
[INFO] [stdout] test progress_validator::tests::proptests::progress_path_roundtrips_through_filename_validation ... ok
[INFO] [stdout] test progress_validator::tests::proptests::safe_name_chars_valid ... ok
[INFO] [stdout] test parser::tests::proptests::parser_no_panic_on_arbitrary_input ... ok
[INFO] [stdout] test progress_validator::tests::proptests::terminal_states_have_no_transitions ... ok
[INFO] [stdout] test progress_validator::tests::proptests::self_transition_always_ok ... ok
[INFO] [stdout] test progress_validator::tests::proptests::stale_timestamps_rejected ... ok
[INFO] [stdout] test progress_validator::tests::proptests::terminal_to_different_rejected ... ok
[INFO] [stdout] test progress_validator::tests::proptests::valid_transitions_are_accepted ... ok
[INFO] [stdout] test progress_validator::tests::read_workstream_state_missing_file ... ok
[INFO] [stdout] test progress_validator::tests::read_workstream_state_from_file ... ok
[INFO] [stdout] test progress_validator::tests::reject_bad_filename_special_chars ... ok
[INFO] [stdout] test progress_validator::tests::reject_completed_to_running ... ok
[INFO] [stdout] test progress_validator::tests::reject_empty_safe_name ... ok
[INFO] [stdout] test progress_validator::tests::reject_bad_filename_no_prefix ... ok
[INFO] [stdout] test progress_validator::tests::reject_future_timestamp ... ok
[INFO] [stdout] test progress_validator::tests::reject_invalid_status_in_json ... ok
[INFO] [stdout] test progress_validator::tests::reject_pid_mismatch ... ok
[INFO] [stdout] test progress_validator::tests::reject_recipe_name_mismatch ... ok
[INFO] [stdout] test progress_validator::tests::reject_safe_name_too_long ... ok
[INFO] [stdout] test progress_validator::tests::reject_step_name_too_long ... ok
[INFO] [stdout] test progress_validator::tests::reject_stale_timestamp ... ok
[INFO] [stdout] test progress_validator::tests::safe_name_strips_special_chars ... ok
[INFO] [stdout] test progress_validator::tests::same_status_transition_ok ... ok
[INFO] [stdout] test progress_validator::tests::valid_filename ... ok
[INFO] [stdout] test progress_validator::tests::proptests::safe_name_length_bounded ... ok
[INFO] [stdout] test progress_validator::tests::valid_running_to_completed ... ok
[INFO] [stdout] test progress_validator::tests::workstream_state_round_trip ... ok
[INFO] [stdout] test runner::audit::tests::a_short_name_is_left_recognisable ... ok
[INFO] [stdout] test runner::audit::tests::a_long_recipe_name_still_produces_an_audit_log ... ok
[INFO] [stdout] test progress_validator::tests::proptests::validate_filename_no_panic ... ok
[INFO] [stdout] test progress_validator::tests::workstream_env_paths_unset ... ok
[INFO] [stdout] test runner::json_parser::tests::test_parse_json_array ... ok
[INFO] [stdout] test runner::audit::tests::path_separators_cannot_escape_the_audit_directory ... ok
[INFO] [stdout] test runner::json_parser::tests::test_parse_json_direct ... ok
[INFO] [stdout] test runner::audit::tests::every_filename_component_stays_within_name_max ... ok
[INFO] [stdout] test runner::json_parser::tests::test_parse_json_from_balanced ... ok
[INFO] [stdout] test runner::json_parser::tests::test_parse_json_fence_without_label ... ok
[INFO] [stdout] test runner::json_parser::tests::test_parse_json_from_fence ... ok
[INFO] [stdout] test runner::json_parser::tests::test_parse_json_no_json ... ok
[INFO] [stdout] test runner::json_parser::tests::test_parse_json_escaped_quotes ... ok
[INFO] [stdout] test runner::json_parser::tests::test_parse_json_nested_braces ... ok
[INFO] [stdout] test runner::sub_recipe_paths::tests::anchored_dirs_includes_working_dir_bundle ... ok
[INFO] [stdout] test runner::sub_recipe_paths::tests::anchored_dirs_walks_up_to_repo_root ... ok
[INFO] [stdout] test runner::sub_recipe_paths::tests::anchored_dirs_includes_recipe_origin_first ... ok
[INFO] [stdout] test runner::sub_recipe_paths::tests::anchored_dirs_dedupes ... ok
[INFO] [stdout] test runner::sub_recipe_paths::tests::validate_accepts_normal_names ... ok
[INFO] [stdout] test runner::sub_recipe_paths::tests::is_within_any_rejects_nonexistent ... ok
[INFO] [stdout] test runner::sub_recipe_paths::tests::is_within_any_accepts_real_containment ... ok
[INFO] [stdout] test runner::sub_recipe_paths::tests::is_within_any_rejects_symlink_escape ... ok
[INFO] [stdout] test runner::sub_recipe_paths::tests::walk_up_bounded_at_max_ancestors ... ok
[INFO] [stdout] test runner::sub_recipe_paths::tests::walk_up_stops_at_git_marker ... ok
[INFO] [stdout] test runner::sub_recipe_paths::tests::validate_rejects_nul_byte ... ok
[INFO] [stdout] test runner::sub_recipe_paths::tests::validate_rejects_path_traversal ... ok
[INFO] [stdout] test runner::terminal::tests::diagnostic_text_does_not_establish_terminality ... ok
[INFO] [stdout] test runner::terminal::tests::interruption_precedes_cleanup_and_merge_retains_distinct_causes ... ok
[INFO] [stdout] test runner::tests::ordinary_nonfatal_errors_still_continue_without_matching_diagnostic_text ... ok
[INFO] [stdout] test runner::tests::ordinary_nested_failure_still_runs_recovery ... ok
[INFO] [stdout] test runner::tests::test_agent_step_timeout_propagated_and_reported ... ok
[INFO] [stdout] test runner::tests::test_bash_output_trailing_whitespace_stripped ... ok
[INFO] [stdout] test runner::tests::test_conditional_skip ... ok
[INFO] [stdout] test runner::tests::test_dry_run ... ok
[INFO] [stdout] test runner::tests::test_execute_simple_recipe ... ok
[INFO] [stdout] test runner::tests::test_timeout_zero_executes ... ok
[INFO] [stdout] test sub_recipe_recovery::tests::classify_recoverable_patterns ... ok
[INFO] [stdout] test sub_recipe_recovery::tests::classify_unknown ... ok
[INFO] [stdout] test sub_recipe_recovery::tests::classify_unrecoverable_patterns ... ok
[INFO] [stdout] test sub_recipe_recovery::tests::custom_max_attempts ... ok
[INFO] [stdout] test sub_recipe_recovery::tests::parse_empty_response_not_recovered ... ok
[INFO] [stdout] test sub_recipe_recovery::tests::parse_successful_recovery ... ok
[INFO] [stdout] test sub_recipe_recovery::tests::parse_unrecoverable_response ... ok
[INFO] [stdout] test sub_recipe_recovery::tests::proptests::classify_case_insensitive ... ok
[INFO] [stdout] test parser::tests::test_parse_yaml_exactly_at_size_limit ... ok
[INFO] [stdout] test sub_recipe_recovery::tests::proptests::classify_failure_returns_valid_class ... ok
[INFO] [stdout] test sub_recipe_recovery::tests::proptests::classify_failure_no_panic ... ok
[INFO] [stdout] test sub_recipe_recovery::tests::proptests::max_attempts_respected ... ok
[INFO] [stdout] test runner::tests::large_step_output_reaches_the_next_bash_step_byte_for_byte ... ok
[INFO] [stdout] test sub_recipe_recovery::tests::proptests::fatal_exit_codes_unrecoverable ... ok
[INFO] [stdout] test sub_recipe_recovery::tests::proptests::unrecoverable_keyword_detected ... ok
[INFO] [stdout] test sub_recipe_recovery::tests::proptests::recovery_prompt_contains_context ... ok
[INFO] [stdout] test sub_recipe_recovery::tests::proptests::unrecoverable_never_retried ... ok
[INFO] [stdout] test sub_recipe_recovery::tests::recovery_prompt_includes_context ... ok
[INFO] [stdout] test sub_recipe_recovery::tests::should_attempt_recovery ... ok
[INFO] [stdout] test sub_recipe_recovery::tests::should_not_recover_max_attempts ... ok
[INFO] [stdout] test tests::tail_ascii_longer_than_max ... ok
[INFO] [stdout] test tests::tail_ascii_shorter_than_max ... ok
[INFO] [stdout] test tests::tail_cjk_at_boundary ... ok
[INFO] [stdout] test sub_recipe_recovery::tests::should_not_recover_unrecoverable ... ok
[INFO] [stdout] test tests::tail_max_zero ... ok
[INFO] [stdout] test tests::tail_multibyte_at_boundary ... ok
[INFO] [stdout] test tests::tail_empty_string ... ok
[INFO] [stdout] test tests::truncate_ascii_longer_than_max ... ok
[INFO] [stdout] test tests::truncate_ascii_shorter_than_max ... ok
[INFO] [stdout] test tests::truncate_cjk_at_boundary ... ok
[INFO] [stdout] test tests::truncate_empty_string ... ok
[INFO] [stdout] test tests::truncate_max_zero ... ok
[INFO] [stdout] test tests::truncate_multibyte_at_boundary ... ok
[INFO] [stdout] test tests::truncate_single_multibyte_char ... ok
[INFO] [stdout] test runner::tests::required_json_failure_with_tiny_budget_passes_full_env ... ok
[INFO] [stdout] test runner::tests::oversized_context_value_keeps_trailing_newlines_end_to_end ... ok
[INFO] [stdout] test sub_recipe_recovery::tests::proptests::parse_response_no_panic ... ok
[INFO] [stdout] test tests::tail_single_multibyte_char ... ok
[INFO] [stdout] test condition::tests::proptests::overlong_conditions_rejected ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_execute_agent_step_retries_then_succeeds_on_rate_limit ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_new_defaults_without_env ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_new_reads_env_var ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_fake_claude_receives_overflow_via_file_flag ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_oversized_inherited_env_regression_echo_ok ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_rate_limit_config_clamps_max_retries_to_ceiling ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_rate_limit_config_enforces_max_delay_ge_base ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_rate_limit_config_defaults_when_unset ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_rate_limit_config_reads_overrides ... ok
[INFO] [stdout] test adapters::cli_subprocess::tests::test_rate_limit_config_unparseable_falls_back_to_default ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 711 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 22.62s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/release/build/recipe-runner-rs/1d588626905a7a20/out/recipe_runner_rs-1d588626905a7a20)
[INFO] [stdout] 
[INFO] [stdout] running 25 tests
[INFO] [stdout] test tests::test_parse_context_value_bool_false ... ok
[INFO] [stdout] test tests::test_parse_pair_empty_value ... ok
[INFO] [stdout] test tests::test_parse_pair_no_equals_returns_none ... ok
[INFO] [stdout] test tests::test_parse_context_value_string ... ok
[INFO] [stdout] test tests::test_parse_pair_value_with_equals ... ok
[INFO] [stdout] test tests::test_parse_context_value_empty_string ... ok
[INFO] [stdout] test tests::test_parse_context_value_bool_true ... ok
[INFO] [stdout] test tests::test_parse_context_value_integer ... ok
[INFO] [stdout] test tests::test_parse_context_value_string_not_parsed_as_json_string ... ok
[INFO] [stdout] test tests::test_parse_context_value_json_object ... ok
[INFO] [stdout] test tests::test_parse_pair_empty_string_returns_none ... ok
[INFO] [stdout] test tests::test_parse_context_value_bool_both_paths_after_dead_arm_removal ... ok
[INFO] [stdout] test tests::test_parse_pair_simple ... ok
[INFO] [stdout] test tests::test_parse_pair_typed_value ... ok
[INFO] [stdout] test update::tests::current_platform_has_release_target ... ok
[INFO] [stdout] test update::tests::should_skip_for_update_related_args ... ok
[INFO] [stdout] test tests::test_parse_context_value_float ... ok
[INFO] [stdout] test update::tests::cache_round_trip ... ok
[INFO] [stdout] test update::tests::is_newer_detects_version_bumps ... ok
[INFO] [stdout] test update::tests::normalize_tag_rejects_non_semver ... ok
[INFO] [stdout] test update::tests::parse_latest_release_selects_matching_asset ... ok
[INFO] [stdout] test tests::test_parse_context_value_json_array ... ok
[INFO] [stdout] test update::tests::cache_path_uses_home ... ok
[INFO] [stdout] test update::tests::normalize_tag_strips_v_prefix ... ok
[INFO] [stdout] test update::tests::extract_archive_finds_binary ... ok
[INFO] [stdout] 
[INFO] [stderr]      Running tests/bash_interpreter_tests.rs (/opt/rustwide/target/release/build/recipe-runner-rs/4d3d49cfcaee1568/out/bash_interpreter_tests-4d3d49cfcaee1568)
[INFO] [stdout] test result: ok. 25 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 16 tests
[INFO] [stdout] test test_unreadable_parent_amplihack_bash_reports_permission_denied ... ok
[INFO] [stdout] test test_non_executable_amplihack_bash_fails_loud ... ok
[INFO] [stdout] test test_missing_amplihack_bash_fails_loud ... ok
[INFO] [stdout] test test_directory_amplihack_bash_fails_loud ... ok
[INFO] [stdout] test test_unset_amplihack_bash_still_runs_bash_steps ... ok
[INFO] [stdout] test test_non_utf8_amplihack_bash_fails_loud ... ok
[INFO] [stdout] test test_resolved_interpreter_is_logged ... ok
[INFO] [stdout] test test_missing_amplihack_bash_fails_loud_on_timed_step ... ok
[INFO] [stdout] test test_relative_amplihack_bash_fails_loud ... ok
[INFO] [stdout] test test_bad_amplihack_bash_is_rejected_before_env_budget_work ... ok
[INFO] [stdout] test test_amplihack_bash_override_used_for_inline_step ... ok
[INFO] [stdout] test test_amplihack_bash_is_propagated_to_the_step_environment ... ok
[INFO] [stdout] test test_amplihack_bash_override_used_for_timed_inline_step ... ok
[INFO] [stdout] test test_amplihack_bash_override_used_for_large_script_with_timeout ... ok
[INFO] [stdout] test test_amplihack_bash_can_pin_legacy_bin_bash ... ok
[INFO] [stderr]      Running tests/codex_capabilities_tests.rs (/opt/rustwide/target/release/build/recipe-runner-rs/aa11b1a52670717f/out/codex_capabilities_tests-aa11b1a52670717f)
[INFO] [stdout] test test_amplihack_bash_override_used_for_large_script_step ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.18s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 2 tests
[INFO] [stdout] test mixed_probe_rejects_before_recipe_execution ... ok
[INFO] [stderr]      Running tests/codex_exec_tests.rs (/opt/rustwide/target/release/build/recipe-runner-rs/04daa56b79a9d8fe/out/codex_exec_tests-04daa56b79a9d8fe)
[INFO] [stdout] test standalone_probe_is_exact_and_has_no_update_side_effects ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 29 tests
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 0.22s
[INFO] [stdout] 
[INFO] [stdout] test final_output::missing_final_fails ... ok
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 0.27s
[INFO] [stdout] 
[INFO] [stdout] test final_output::fifo_final_fails_without_blocking ... ok
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 0.33s
[INFO] [stdout] 
[INFO] [stdout] test final_output::invalid_utf8_fails ... ok
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 0.36s
[INFO] [stdout] 
[INFO] [stdout] test final_output::failure_diagnostics_are_actionable_and_redacted ... ok
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 0.36s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test final_output::symlink_final_fails ... ok
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 0.20s
[INFO] [stdout] 
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 0.24s
[INFO] [stdout] 
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 0.52s
[INFO] [stdout] 
[INFO] [stdout] test final_output::deliberately_empty_final_succeeds ... ok
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 0.29s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 0.29s
[INFO] [stdout] 
[INFO] [stdout] test lifecycle::concurrent_attempts_have_distinct_private_paths ... ok
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] test lifecycle::zero_timeout_fails_even_before_launcher_executes ... ok
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 0.59s
[INFO] [stdout] 
[INFO] [stdout] test final_output::unsafe_permissions_fail ... ok
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 0.37s
[INFO] [stdout] 
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 0.64s
[INFO] [stdout] 
[INFO] [stdout] test lifecycle::both_diagnostic_streams_are_drained_without_timeout ... ok
[INFO] [stdout] test lifecycle::nominal_exit_terminates_lingering_descendants ... ok
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 0.38s
[INFO] [stdout] 
[INFO] [stdout] test lifecycle::rate_limit_retry_has_fresh_output_and_keeps_explicit_model ... ok
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 0.41s
[INFO] [stdout] 
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 0.78s
[INFO] [stdout] 
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 0.78s
[INFO] [stdout] 
[INFO] [stdout] test lifecycle::resource_deletion_failure_prevents_rate_limit_retry ... ok
[INFO] [stdout] test final_output::nonzero_with_final_fails ... ok
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 0.21s
[INFO] [stdout] 
[INFO] [stdout] test transport::explicit_model_is_forwarded_without_an_implicit_default ... ok
[INFO] [stdout] test final_output::directory_final_fails ... ok
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 0.20s
[INFO] [stdout] 
[INFO] [stdout] test transport::large_stdin_envelope ... ok
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 0.25s
[INFO] [stdout] 
[INFO] [stdout] test transport::leading_dash_unicode_multiline_nul_stdin_envelope ... ok
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 0.95s
[INFO] [stdout] 
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 0.46s
[INFO] [stdout] 
[INFO] [stdout] test lifecycle::writing_descendant_stops_before_final_extraction ... ok
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 1.02s
[INFO] [stdout] 
[INFO] [stdout] test final_output::partial_stdin_with_zero_exit_fails ... ok
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 1.07s
[INFO] [stdout] 
[INFO] [stdout] test final_output::oversized_final_fails ... ok
[INFO] [stdout] test final_output::exact_existing_output_limit_is_verbatim ... ok
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 0.40s
[INFO] [stdout] 
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 1.15s
[INFO] [stdout] 
[INFO] [stdout] test transport::small_stdin_envelope ... ok
[INFO] [stdout] test final_output::blocked_stdin_respects_timeout ... ok
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 1.14s
[INFO] [stdout] 
[INFO] [stdout] test lifecycle::timeout_terminates_owned_descendants ... ok
[INFO] [stderr]   [05:40:11] [amplihack:claude:4738] PROGRESS_ONLY
[INFO] [stderr]   [05:40:11] [amplihack:claude:4738] child process ended: exit 0 after 2s
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 2.03s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test cancellation::runner_sigint_cleans_owned_group_and_resources ... ok
[INFO] [stdout] test cancellation::runner_sigterm_cleans_owned_group_and_resources ... ok
[INFO] [stdout] test adapter_worker ... ok
[INFO] [stderr]   [05:40:13] [amplihack:copilot:4851] PROGRESS_ONLY
[INFO] [stdout] 
[INFO] [stderr]   [05:40:13] [amplihack:copilot:4851] child process ended: exit 0 after 2s
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 28 filtered out; finished in 2.01s
[INFO] [stdout] 
[INFO] [stdout] test transport::existing_claude_and_copilot_stdout_and_prompt_contracts_survive ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.63s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/codex_retry_context_tests.rs (/opt/rustwide/target/release/build/recipe-runner-rs/4dde03e91540fcc3/out/codex_retry_context_tests-4dde03e91540fcc3)
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test other_providers_keep_historical_json_repair_context ... ok
[INFO] [stdout] test json_repair_retains_effective_persona_model_mode_cwd_and_timeout ... ok
[INFO] [stdout] test runner_rejects_oversized_codex_success_instead_of_truncating ... ok
[INFO] [stdout] test oversized_bash_under_codex_keeps_truncation ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/discovery_tests.rs (/opt/rustwide/target/release/build/recipe-runner-rs/b29df5b30e03c781/out/discovery_tests-b29df5b30e03c781)
[INFO] [stdout] 
[INFO] [stdout] running 2 tests
[INFO] [stdout] test cached_discover_empty_dirs ... ok
[INFO] [stdout] test cached_discover_returns_consistent_results ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/example_tests.rs (/opt/rustwide/target/release/build/recipe-runner-rs/c6263ff8f84b813e/out/example_tests-c6263ff8f84b813e)
[INFO] [stdout] 
[INFO] [stdout] running 35 tests
[INFO] [stdout] test test_pattern_investigation ... ok
[INFO] [stdout] test test_pattern_quality_audit ... ok
[INFO] [stdout] test test_pattern_code_review ... ok
[INFO] [stdout] test test_pattern_deploy_pipeline ... ok
[INFO] [stdout] test test_pattern_migration ... ok
[INFO] [stdout] test test_testing_step_type_inference ... ok
[INFO] [stdout] test test_pattern_multi_agent_consensus ... ok
[INFO] [stdout] test test_pattern_self_improvement ... ok
[INFO] [stdout] test test_all_recipes_parse ... ok
[INFO] [stdout] test test_tutorial_04_multi_step_pipeline ... ok
[INFO] [stdout] test test_tutorial_05_working_directories ... ok
[INFO] [stdout] test test_tutorial_01_hello_world ... ok
[INFO] [stdout] test test_all_recipes_validate ... ok
[INFO] [stdout] test test_testing_nested_context ... ok
[INFO] [stdout] test test_tutorial_02_variables ... ok
[INFO] [stdout] test test_testing_json_extraction ... ok
[INFO] [stdout] test test_tutorial_07_error_handling ... ok
[INFO] [stdout] test test_all_recipes_dry_run ... ok
[INFO] [stdout] test test_testing_output_chaining ... ok
[INFO] [stdout] test test_tutorial_11_extends ... ok
[INFO] [stdout] test test_testing_continue_on_error_chain ... ok
[INFO] [stdout] test test_tutorial_14_dry_run ... ok
[INFO] [stdout] test test_tutorial_10_parallel_groups ... ok
[INFO] [stdout] test test_testing_all_condition_operators ... ok
[INFO] [stdout] test test_testing_empty_and_edge_cases ... ok
[INFO] [stdout] test test_tutorial_06_parse_json ... ok
[INFO] [stdout] test test_tutorial_03_conditions ... ok
[INFO] [stdout] test test_testing_all_methods ... ok
[INFO] [stdout] test test_testing_all_functions ... ok
[INFO] [stdout] test test_tutorial_13_timeouts ... ok
[INFO] [stdout] test test_tutorial_09_tags ... ok
[INFO] [stdout] test test_tutorial_12_recursion_limits ... ok
[INFO] [stdout] test test_tutorial_08_hooks ... ok
[INFO] [stdout] test test_testing_large_context ... ok
[INFO] [stderr]      Running tests/feature_tests.rs (/opt/rustwide/target/release/build/recipe-runner-rs/eb5a89d517a44e80/out/feature_tests-eb5a89d517a44e80)
[INFO] [stdout] test test_pattern_ci_pipeline ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 35 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 28 tests
[INFO] [stdout] test test_hooks_parsed_from_yaml ... ok
[INFO] [stdout] test test_hooks_default_to_none ... ok
[INFO] [stdout] test test_extends_field_parsed ... ok
[INFO] [stdout] test prop_truthiness_consistent ... ok
[INFO] [stdout] test test_continue_on_error_with_parse_json ... ok
[INFO] [stdout] test test_include_tags_runs_only_matching ... ok
[INFO] [stdout] test test_continue_on_error_allows_subsequent_steps ... ok
[INFO] [stdout] test test_audit_log_creates_jsonl_file ... ok
[INFO] [stdout] test test_execution_listener_callbacks_fire ... ok
[INFO] [stdout] test test_continue_on_error_default_false_still_fails ... ok
[INFO] [stdout] test test_exclude_tags_skips_matching ... ok
[INFO] [stdout] test test_parallel_group_basic ... ok
[INFO] [stdout] test prop_condition_evaluator_never_panics ... ok
[INFO] [stdout] test test_step_results_have_duration ... ok
[INFO] [stdout] test test_total_step_limit_enforced ... ok
[INFO] [stdout] test test_parallel_group_failure ... ok
[INFO] [stdout] test test_recipe_level_recursion_depth_limit ... ok
[INFO] [stdout] test test_recipe_result_serializes_to_json ... ok
[INFO] [stdout] test test_parallel_group_mixed ... ok
[INFO] [stdout] test test_parse_json_failure_degrades_by_default ... ok
[INFO] [stdout] test test_recursion_config_defaults ... ok
[INFO] [stdout] test test_continue_on_error_in_parallel_group ... ok
[INFO] [stdout] test test_parallel_group_parsed ... ok
[INFO] [stdout] test test_parse_json_success_returns_parsed_output ... ok
[INFO] [stdout] test test_parse_json_required_stops_recipe_on_failure ... ok
[INFO] [stdout] test prop_render_idempotent ... ok
[INFO] [stdout] test prop_template_render_never_panics ... ok
[INFO] [stdout] test prop_yaml_parser_never_panics ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 28 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.09s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration.rs (/opt/rustwide/target/release/build/recipe-runner-rs/ce1c4a234bc8242b/out/integration-ce1c4a234bc8242b)
[INFO] [stdout] 
[INFO] [stdout] running 24 tests
[INFO] [stdout] test test_condition_evaluator_comprehensive ... ok
[INFO] [stdout] test test_discovery_and_manifest ... ok
[INFO] [stdout] test test_run_recipe_dry_run ... ok
[INFO] [stdout] test test_run_recipe_invalid_yaml_errors ... ok
[INFO] [stdout] test test_agent_resolver_integration ... ok
[INFO] [stdout] test test_dry_run_with_parse_json ... ok
[INFO] [stdout] test test_run_recipe_empty_name_errors ... ok
[INFO] [stdout] test test_condition_with_function_calls ... ok
[INFO] [stdout] test test_context_flows_between_steps ... ok
[INFO] [stdout] test test_run_recipe_valid_bash_only ... ok
[INFO] [stdout] test test_run_recipe_by_name_nonexistent_errors ... ok
[INFO] [stdout] test test_step_type_inference ... ok
[INFO] [stdout] test test_validate_with_yaml_catches_typos ... ok
[INFO] [stdout] test test_json_extraction_from_markdown_fence ... ok
[INFO] [stdout] test test_parse_json_with_retry_via_mock ... ok
[INFO] [stdout] test test_fail_fast_on_step_failure ... ok
[INFO] [stdout] test test_user_context_overrides_recipe_defaults ... ok
[INFO] [stdout] test test_full_recipe_lifecycle ... ok
[INFO] [stdout] test test_model_parameter_passed_to_adapter ... ok
[INFO] [stdout] test test_run_recipe_by_name_valid ... ok
[INFO] [stdout] test test_sub_recipe_execution ... ok
[INFO] [stdout] test test_hook_pre_step_actually_executes ... ok
[INFO] [stdout] test test_hook_post_step_actually_executes ... ok
[INFO] [stdout] test test_hook_on_error_actually_executes ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/outside_in_tests.rs (/opt/rustwide/target/release/build/recipe-runner-rs/76c3d49923073999/out/outside_in_tests-76c3d49923073999)
[INFO] [stdout] 
[INFO] [stdout] running 63 tests
[INFO] [stdout] test test_circular_extends_detected_and_rejected ... ok
[INFO] [stdout] test test_audit_log_step_id_matches ... ok
[INFO] [stdout] test test_dry_run_returns_consistent_skipped_status ... ok
[INFO] [stdout] test test_audit_log_error_populated_on_failure ... ok
[INFO] [stdout] test test_exit_code_bad_args_no_recipe ... ok
[INFO] [stdout] test test_binary_runs_without_which_crate ... ok
[INFO] [stdout] test test_exit_code_not_found_file ... ok
[INFO] [stdout] test test_error_chain_context_in_step_failure ... ok
[INFO] [stdout] test test_audit_log_entry_has_all_fields ... ok
[INFO] [stdout] test test_cache_ttl_env_var_accepted ... ok
[INFO] [stdout] test test_audit_log_filename_format ... ok
[INFO] [stdout] test test_exit_code_recipe_failed ... ok
[INFO] [stdout] test test_exit_code_not_found_name ... ok
[INFO] [stdout] test test_audit_log_error_null_on_success ... ok
[INFO] [stdout] test test_audit_log_multiple_steps_multiple_lines ... ok
[INFO] [stdout] test test_audit_log_duration_ms_is_populated ... ok
[INFO] [stdout] test test_context_serialization_in_json_output ... ok
[INFO] [stdout] test test_condition_with_builtin_functions ... ok
[INFO] [stdout] test test_explain_mode_shows_recipe_structure ... ok
[INFO] [stdout] test test_audit_log_permissions ... ok
[INFO] [stdout] test test_audit_dir_creates_log_file ... ok
[INFO] [stdout] test test_heredoc_with_multiple_vars_no_quotes ... ok
[INFO] [stdout] test test_exit_code_success ... ok
[INFO] [stdout] test test_heredoc_var_expansion_no_spurious_quotes ... ok
[INFO] [stdout] test test_include_tags_filters_steps ... ok
[INFO] [stdout] test test_exclude_tags_skips_steps ... ok
[INFO] [stdout] test test_model_field_validate_only ... ok
[INFO] [stdout] test test_context_override_with_condition ... ok
[INFO] [stdout] test test_model_field_in_dry_run_output ... ok
[INFO] [stdout] test test_model_and_mode_combined ... ok
[INFO] [stdout] test test_parse_json_failure_degrades_by_default ... ok
[INFO] [stdout] test test_model_field_accepted_in_dry_run ... ok
[INFO] [stdout] test test_parse_json_from_balanced_bracket_via_cli ... ok
[INFO] [stdout] test test_parse_json_failure_with_continue_on_error ... ok
[INFO] [stdout] test test_exit_code_parse_error ... ok
[INFO] [stdout] test test_falsy_condition_skips_step ... ok
[INFO] [stdout] test test_parallel_group_execution_via_binary ... ok
[INFO] [stdout] test test_parse_json_required_succeeds_on_valid_json ... ok
[INFO] [stdout] test test_list_subcommand ... ok
[INFO] [stdout] test test_mode_field_accepted_in_recipe ... ok
[INFO] [stdout] test test_parallel_group_all_succeed ... ok
[INFO] [stdout] test test_recovery_on_failure_field_accepted_in_yaml ... ok
[INFO] [stdout] test test_parse_json_required_kills_recipe ... ok
[INFO] [stdout] test test_parallel_group_with_failing_step ... ok
[INFO] [stdout] test test_progress_flag_shows_skipped_icon ... ok
[INFO] [stdout] test test_recovery_on_failure_field_parsed_in_recipe ... ok
[INFO] [stdout] test test_parse_json_required_fails_on_non_json ... ok
[INFO] [stdout] test test_validate_only_detects_no_regressions ... ok
[INFO] [stdout] test test_regular_command_var_still_protected ... ok
[INFO] [stdout] test test_progress_output_goes_to_stderr_not_stdout ... ok
[INFO] [stdout] test test_progress_flag_shows_completion_icon ... ok
[INFO] [stdout] test test_progress_flag_shows_step_start_on_stderr ... ok
[INFO] [stdout] test test_sub_recipe_failure_surfaces_child_step_details ... ok
[INFO] [stdout] test test_recipe_name_resolution ... ok
[INFO] [stdout] test test_version_flag ... ok
[INFO] [stdout] test test_sub_recipe_failure_without_recovery_fails ... ok
[INFO] [stdout] test test_parse_json_unlabeled_fence_via_cli ... ok
[INFO] [stdout] test test_parse_json_success_produces_parsed_output ... ok
[INFO] [stdout] test test_on_error_hook_executes_on_step_failure ... ok
[INFO] [stdout] test test_hooks_pre_and_post_step ... ok
[INFO] [stdout] test test_progress_flag_shows_failure_icon ... ok
[INFO] [stdout] test test_output_chaining_between_steps ... ok
[INFO] [stdout] test test_parse_json_from_fenced_block_via_cli ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 63 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 56.43s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/pr6_unwrap_to_expect_tests.rs (/opt/rustwide/target/release/build/recipe-runner-rs/e5ef5ab262248752/out/pr6_unwrap_to_expect_tests-e5ef5ab262248752)
[INFO] [stdout] 
[INFO] [stdout] running 16 tests
[INFO] [stdout] test pr6_json_fence_re_extracts_from_unlabeled_fence ... ok
[INFO] [stdout] test pr6_safe_name_re_accepts_valid_names ... ok
[INFO] [stdout] test pr6_filename_re_validates_correct_filename ... ok
[INFO] [stdout] test pr6_progress_file_path_produces_valid_filename ... ok
[INFO] [stdout] test pr6_json_fence_re_extracts_from_fence ... ok
[INFO] [stdout] test pr6_template_re_matches_dotted_placeholder ... ok
[INFO] [stdout] test pr6_template_re_matches_hyphenated_placeholder ... ok
[INFO] [stdout] test pr6_safe_name_re_rejects_path_traversal ... ok
[INFO] [stdout] test pr6_safe_char_re_sanitizes_special_chars ... ok
[INFO] [stdout] test pr6_template_re_no_match_on_non_placeholder ... ok
[INFO] [stdout] test pr6_template_re_matches_simple_placeholder ... ok
[INFO] [stdout] test pr6_filename_re_rejects_bad_filename ... ok
[INFO] [stdout] test pr6_heredoc_re_detects_single_quoted_heredoc ... ok
[INFO] [stdout] test pr6_heredoc_re_detects_unquoted_heredoc ... ok
[INFO] [stdout] test pr6_heredoc_re_detects_double_quoted_heredoc ... ok
[INFO] [stdout] test pr6_heredoc_re_detects_tab_strip_heredoc ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/recipe_tests.rs (/opt/rustwide/target/release/build/recipe-runner-rs/d6c136597acd06d9/out/recipe_tests-d6c136597acd06d9)
[INFO] [stdout] 
[INFO] [stdout] running 95 tests
[INFO] [stdout] test test_agent_resolver_rejects_no_colon ... ok
[INFO] [stdout] test test_condition_array_containment ... ok
[INFO] [stdout] test test_condition_chained_method_calls ... ok
[INFO] [stdout] test test_condition_bool_literals ... ok
[INFO] [stdout] test test_condition_double_negation ... ok
[INFO] [stdout] test test_condition_evaluation_error_fails_step ... ok
[INFO] [stdout] test test_agent_resolver_rejects_path_traversal ... ok
[INFO] [stdout] test test_condition_in_and_not_in ... ok
[INFO] [stdout] test test_condition_boolean_ops_and_or_not ... ok
[INFO] [stdout] test test_condition_eq_skip_and_run ... ok
[INFO] [stdout] test test_condition_method_calls_in_conditions ... ok
[INFO] [stdout] test test_chained_sub_recipes ... ok
[INFO] [stdout] test test_bash_step_routes_to_bash_adapter ... ok
[INFO] [stdout] test test_condition_neq ... ok
[INFO] [stdout] test test_agent_resolver_three_part_ref ... ok
[INFO] [stdout] test test_adapter_failure_in_agent_step ... ok
[INFO] [stdout] test test_agent_resolver_rejects_four_parts ... ok
[INFO] [stdout] test test_agent_resolver_two_part_ref ... ok
[INFO] [stdout] test test_condition_numeric_comparisons ... ok
[INFO] [stdout] test test_condition_function_calls_in_conditions ... ok
[INFO] [stdout] test test_context_accumulation_across_steps ... ok
[INFO] [stdout] test test_discovery_manifest_detects_deleted_files ... ok
[INFO] [stdout] test test_discovery_last_dir_wins_on_name_collision ... ok
[INFO] [stdout] test test_discovery_finds_recipes_across_dirs ... ok
[INFO] [stdout] test test_condition_truthiness_rules ... ok
[INFO] [stdout] test test_condition_string_with_special_chars ... ok
[INFO] [stdout] test test_discovery_manifest_detects_modifications ... ok
[INFO] [stdout] test test_condition_numeric_string_coercion ... ok
[INFO] [stdout] test test_agent_step_routes_to_agent_adapter ... ok
[INFO] [stdout] test test_discovery_manifest_detects_new_files ... ok
[INFO] [stdout] test test_condition_nested_parentheses ... ok
[INFO] [stdout] test test_dry_run_completes_all_steps ... ok
[INFO] [stdout] test test_discovery_skips_nonexistent_dirs ... ok
[INFO] [stdout] test test_dry_run_does_not_call_adapter ... ok
[INFO] [stdout] test test_dry_run_parse_json_produces_valid_json ... ok
[INFO] [stdout] test test_dunder_access_blocked ... ok
[INFO] [stdout] test test_explicit_type_overrides_inference ... ok
[INFO] [stdout] test test_fail_fast_stops_on_first_error ... ok
[INFO] [stdout] test test_empty_command_string ... ok
[INFO] [stdout] test test_list_recipes_returns_sorted ... ok
[INFO] [stdout] test test_missing_var_renders_empty ... ok
[INFO] [stdout] test test_json_value_stored_in_context_is_accessible ... ok
[INFO] [stdout] test test_json_parse_fails_when_required ... ok
[INFO] [stdout] test test_json_strategy_3_balanced_braces ... ok
[INFO] [stdout] test test_json_retry_on_failure ... ok
[INFO] [stdout] test test_json_with_escaped_quotes_in_strings ... ok
[INFO] [stdout] test test_multiline_command ... ok
[INFO] [stdout] test test_json_strategy_1_direct_parse ... ok
[INFO] [stdout] test test_json_strategy_2_fence_without_json_label ... ok
[INFO] [stdout] test test_json_strategy_2_markdown_fence ... ok
[INFO] [stdout] test test_json_strategy_3_balanced_array ... ok
[INFO] [stdout] test test_render_boolean_as_string ... ok
[INFO] [stdout] test test_recipe_with_all_metadata_fields ... ok
[INFO] [stdout] test test_render_dot_notation_in_template ... ok
[INFO] [stdout] test test_render_multiple_vars_in_one_template ... ok
[INFO] [stdout] test test_json_parse_degrades_after_retry_exhausted ... ok
[INFO] [stdout] test test_parser_file_size_limit ... ok
[INFO] [stdout] test test_parser_rejects_empty_name ... ok
[INFO] [stdout] test test_parser_rejects_empty_step_id ... ok
[INFO] [stdout] test test_parser_rejects_no_steps ... ok
[INFO] [stdout] test test_mixed_bash_agent_recipe_steps ... ok
[INFO] [stdout] test test_json_strategy_3_nested_braces ... ok
[INFO] [stdout] test test_render_array_as_json ... ok
[INFO] [stdout] test test_multiline_prompt ... ok
[INFO] [stdout] test test_render_nested_object_as_json ... ok
[INFO] [stdout] test test_render_null_as_empty ... ok
[INFO] [stdout] test test_recipe_step_type_by_field ... ok
[INFO] [stdout] test test_parser_rejects_duplicate_ids ... ok
[INFO] [stdout] test test_prompt_only_infers_agent ... ok
[INFO] [stdout] test test_sub_recipe_failure_no_recovery ... ok
[INFO] [stdout] test test_sub_recipe_failure_recovery_fails ... ok
[INFO] [stdout] test test_sub_recipe_context_merge ... ok
[INFO] [stdout] test test_unsafe_function_blocked ... ok
[INFO] [stdout] test test_shell_render_prevents_injection ... ok
[INFO] [stdout] test test_unavailable_adapter_fails_gracefully ... ok
[INFO] [stdout] test test_step_with_all_fields ... ok
[INFO] [stdout] test test_unicode_in_templates_and_conditions ... ok
[INFO] [stdout] test test_sub_recipe_failure_recovery_succeeds ... ok
[INFO] [stdout] test test_shell_injection_via_template_uses_env_vars ... ok
[INFO] [stdout] test test_sub_recipe_not_found ... ok
[INFO] [stdout] test test_sub_recipe_basic_execution ... ok
[INFO] [stdout] test test_template_rendering_in_command ... ok
[INFO] [stdout] test test_oxidizer_pattern_with_sub_recipes ... ok
[INFO] [stdout] test test_user_context_overrides_recipe_defaults ... ok
[INFO] [stdout] test test_sub_recipe_depth_guard ... ok
[INFO] [stdout] test test_unsafe_method_blocked ... ok
[INFO] [stdout] test test_render_number_as_string ... ok
[INFO] [stdout] test test_very_long_output_stored_in_context ... ok
[INFO] [stdout] test test_validate_detects_missing_prompt_on_agent ... ok
[INFO] [stdout] test test_template_rendering_in_prompt ... ok
[INFO] [stdout] test test_validate_detects_unrecognized_step_fields ... ok
[INFO] [stdout] test test_validate_detects_unrecognized_top_level_fields ... ok
[INFO] [stdout] test test_validate_detects_missing_command_on_bash ... ok
[INFO] [stdout] test test_workflow_pattern_multiphase ... ok
[INFO] [stderr]      Running tests/step_field_warning_tests.rs (/opt/rustwide/target/release/build/recipe-runner-rs/ab494dd042f39e4d/out/step_field_warning_tests-ab494dd042f39e4d)
[INFO] [stdout] test test_quality_audit_loop_pattern ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 95 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test run_warns_on_stderr_about_generic_unknown_fields ... ok
[INFO] [stdout] test validate_only_reports_the_retired_field_once_on_stdout ... ok
[INFO] [stdout] test known_fields_including_fatal_and_nonfatal_are_silent ... ok
[INFO] [stdout] test run_warns_on_stderr_about_retired_max_env_value_bytes ... ok
[INFO] [stdout] test a_sub_recipe_run_twice_warns_once ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/sub_recipe_resolution_test.rs (/opt/rustwide/target/release/build/recipe-runner-rs/8e88e9bd5c699fc6/out/sub_recipe_resolution_test-8e88e9bd5c699fc6)
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test sub_recipe_name_with_traversal_is_rejected ... ok
[INFO] [stdout] test missing_sub_recipe_diagnostic_lists_all_search_dirs ... ok
[INFO] [stdout] test sub_recipe_symlink_escape_is_rejected ... ok
[INFO] [stdout] test sub_recipe_resolves_from_recipe_origin_dir ... ok
[INFO] [stdout] test sub_recipe_resolves_from_working_dir_bundle ... ok
[INFO] [stdout] test sub_recipe_resolves_via_walk_up_to_git ... 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]    Doc-tests recipe_runner_rs
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test src/lib.rs - (line 9) - compile ... 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] [stdout] all doctests ran in 1.02s; merged doctests compilation took 1.01s
[INFO] running `Command { std: "docker" "inspect" "82c7a0e2c6303d53143aaee1fc129afca24878888255b7118a0bde52b127bf97", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "82c7a0e2c6303d53143aaee1fc129afca24878888255b7118a0bde52b127bf97", kill_on_drop: false }`
[INFO] [stdout] 82c7a0e2c6303d53143aaee1fc129afca24878888255b7118a0bde52b127bf97
