[INFO] fetching crate o7 0.1.1... [INFO] testing o7-0.1.1 against beta-2026-04-21 for beta-1.96-1 [INFO] extracting crate o7 0.1.1 into /workspace/builds/worker-2-tc2/source [INFO] started tweaking crates.io crate o7 0.1.1 [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate o7 0.1.1 [INFO] tweaked toml for crates.io crate o7 0.1.1 written to /workspace/builds/worker-2-tc2/source/Cargo.toml [INFO] validating manifest of crates.io crate o7 0.1.1 on toolchain beta-2026-04-21 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate o7 0.1.1 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] d19a8f9539b502f794141ff0c925bede3213806503d587696db418ba5466f22e [INFO] running `Command { std: "docker" "start" "-a" "d19a8f9539b502f794141ff0c925bede3213806503d587696db418ba5466f22e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "d19a8f9539b502f794141ff0c925bede3213806503d587696db418ba5466f22e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "d19a8f9539b502f794141ff0c925bede3213806503d587696db418ba5466f22e", kill_on_drop: false }` [INFO] [stdout] d19a8f9539b502f794141ff0c925bede3213806503d587696db418ba5466f22e [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] ba3bcb0002c09d77f0f45459badca795d583032fcf7cd2b03d03d1ead2484f21 [INFO] running `Command { std: "docker" "start" "-a" "ba3bcb0002c09d77f0f45459badca795d583032fcf7cd2b03d03d1ead2484f21", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.184 [INFO] [stderr] Compiling unicode-segmentation v1.13.2 [INFO] [stderr] Compiling bitflags v2.11.0 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling foldhash v0.2.0 [INFO] [stderr] Compiling futures-core v0.3.32 [INFO] [stderr] Compiling ryu v1.0.23 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling itertools v0.14.0 [INFO] [stderr] Compiling instability v0.3.12 [INFO] [stderr] Compiling signal-hook v0.3.18 [INFO] [stderr] Compiling unicode-width v0.2.2 [INFO] [stderr] Compiling static_assertions v1.1.0 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling castaway v0.2.4 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling indoc v2.0.7 [INFO] [stderr] Compiling linux-raw-sys v0.12.1 [INFO] [stderr] Compiling hashbrown v0.16.1 [INFO] [stderr] Compiling compact_str v0.9.0 [INFO] [stderr] Compiling deranged v0.5.8 [INFO] [stderr] Compiling convert_case v0.10.0 [INFO] [stderr] Compiling litrs v1.0.0 [INFO] [stderr] Compiling num_threads v0.1.7 [INFO] [stderr] Compiling time-core v0.1.8 [INFO] [stderr] Compiling num-conv v0.2.1 [INFO] [stderr] Compiling line-clipping v0.3.7 [INFO] [stderr] Compiling futures-sink v0.3.32 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling getrandom v0.4.2 [INFO] [stderr] Compiling futures-channel v0.3.32 [INFO] [stderr] Compiling anstyle-parse v1.0.0 [INFO] [stderr] Compiling anstyle v1.0.14 [INFO] [stderr] Compiling futures-task v0.3.32 [INFO] [stderr] Compiling futures-io v0.3.32 [INFO] [stderr] Compiling slab v0.4.12 [INFO] [stderr] Compiling colorchoice v1.0.5 [INFO] [stderr] Compiling winnow v1.0.1 [INFO] [stderr] Compiling anstream v1.0.0 [INFO] [stderr] Compiling clap_lex v1.1.0 [INFO] [stderr] Compiling lru v0.16.3 [INFO] [stderr] Compiling fastrand v2.4.1 [INFO] [stderr] Compiling once_cell v1.21.4 [INFO] [stderr] Compiling document-features v0.2.12 [INFO] [stderr] Compiling toml_parser v1.1.2+spec-1.1.0 [INFO] [stderr] Compiling clap_builder v4.6.0 [INFO] [stderr] Compiling toml_writer v1.1.1+spec-1.1.0 [INFO] [stderr] Compiling iana-time-zone v0.1.65 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling mio v1.2.0 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling socket2 v0.6.3 [INFO] [stderr] Compiling unicode-truncate v2.0.1 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling uuid v1.23.0 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling time v0.3.47 [INFO] [stderr] Compiling signal-hook-mio v0.2.5 [INFO] [stderr] Compiling serde_spanned v1.1.1 [INFO] [stderr] Compiling toml_datetime v1.1.1+spec-1.1.0 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling toml v1.1.2+spec-1.1.0 [INFO] [stderr] Compiling tempfile v3.27.0 [INFO] [stderr] Compiling darling_core v0.23.0 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling strum_macros v0.27.2 [INFO] [stderr] Compiling derive_more-impl v2.1.1 [INFO] [stderr] Compiling futures-macro v0.3.32 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling clap_derive v4.6.0 [INFO] [stderr] Compiling tokio-macros v2.7.0 [INFO] [stderr] Compiling tokio v1.51.1 [INFO] [stderr] Compiling derive_more v2.1.1 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling crossterm v0.29.0 [INFO] [stderr] Compiling kasuari v0.4.12 [INFO] [stderr] Compiling clap v4.6.0 [INFO] [stderr] Compiling strum v0.27.2 [INFO] [stderr] Compiling ratatui-core v0.1.0 [INFO] [stderr] Compiling darling_macro v0.23.0 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling darling v0.23.0 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling ratatui-widgets v0.3.0 [INFO] [stderr] Compiling ratatui-crossterm v0.1.0 [INFO] [stderr] Compiling futures-executor v0.3.32 [INFO] [stderr] Compiling futures v0.3.32 [INFO] [stderr] Compiling ratatui-macros v0.7.0 [INFO] [stderr] Compiling ratatui v0.30.0 [INFO] [stderr] Compiling throbber-widgets-tui v0.11.0 [INFO] [stderr] Compiling o7 v0.1.1 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 23.29s [INFO] running `Command { std: "docker" "inspect" "ba3bcb0002c09d77f0f45459badca795d583032fcf7cd2b03d03d1ead2484f21", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ba3bcb0002c09d77f0f45459badca795d583032fcf7cd2b03d03d1ead2484f21", kill_on_drop: false }` [INFO] [stdout] ba3bcb0002c09d77f0f45459badca795d583032fcf7cd2b03d03d1ead2484f21 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] a968c479c527f7041f433dc76ad9c82b00091c27b2b044e1d57147eac66e7207 [INFO] running `Command { std: "docker" "start" "-a" "a968c479c527f7041f433dc76ad9c82b00091c27b2b044e1d57147eac66e7207", kill_on_drop: false }` [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling predicates-core v1.0.10 [INFO] [stderr] Compiling float-cmp v0.10.0 [INFO] [stderr] Compiling normalize-line-endings v0.3.0 [INFO] [stderr] Compiling assert_cmd v2.2.0 [INFO] [stderr] Compiling difflib v0.4.0 [INFO] [stderr] Compiling termtree v0.5.1 [INFO] [stderr] Compiling wait-timeout v0.2.1 [INFO] [stderr] Compiling predicates-tree v1.0.13 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling bstr v1.12.1 [INFO] [stderr] Compiling predicates v3.1.4 [INFO] [stderr] Compiling o7 v0.1.1 (/opt/rustwide/workdir) [INFO] [stdout] warning: function `test_parse_match_serialization_elseBody_absent_when_no_else` should have a snake case name [INFO] [stdout] --> src/parser/parser.rs:1291:8 [INFO] [stdout] | [INFO] [stdout] 1291 | fn test_parse_match_serialization_elseBody_absent_when_no_else() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `test_parse_match_serialization_else_body_absent_when_no_else` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 20.01s [INFO] running `Command { std: "docker" "inspect" "a968c479c527f7041f433dc76ad9c82b00091c27b2b044e1d57147eac66e7207", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a968c479c527f7041f433dc76ad9c82b00091c27b2b044e1d57147eac66e7207", kill_on_drop: false }` [INFO] [stdout] a968c479c527f7041f433dc76ad9c82b00091c27b2b044e1d57147eac66e7207 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 96beed4b61c2a8ef5352a4572aa2c8ae5cf203a8edea02f38f2488851ec399fc [INFO] running `Command { std: "docker" "start" "-a" "96beed4b61c2a8ef5352a4572aa2c8ae5cf203a8edea02f38f2488851ec399fc", kill_on_drop: false }` [INFO] [stderr] warning: function `test_parse_match_serialization_elseBody_absent_when_no_else` should have a snake case name [INFO] [stderr] --> src/parser/parser.rs:1291:8 [INFO] [stderr] | [INFO] [stderr] 1291 | fn test_parse_match_serialization_elseBody_absent_when_no_else() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `test_parse_match_serialization_else_body_absent_when_no_else` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: `o7` (lib test) generated 1 warning [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.26s [INFO] [stdout] [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/o7-59ab2e26abb18814) [INFO] [stdout] running 404 tests [INFO] [stdout] test builtins::tests::test_list_builtins ... ok [INFO] [stdout] test builtins::tests::test_extract_unknown_builtin ... ok [INFO] [stdout] test engine::engine::tests::test_generate_run_id ... ok [INFO] [stdout] test engine::engine::tests::test_exec_failure ... ok [INFO] [stdout] test engine::engine::tests::test_circular_reference_detected ... ok [INFO] [stdout] test engine::engine::tests::test_if_not_true_skips_body ... ok [INFO] [stdout] test engine::engine::tests::test_if_not_false_executes_body ... ok [INFO] [stdout] test engine::engine::tests::test_if_false_skips_body ... ok [INFO] [stdout] test builtins::tests::test_extract_generate_builtin ... ok [INFO] [stdout] test builtins::tests::test_check_script_is_executable ... ok [INFO] [stdout] test builtins::tests::test_resolve_workflow_path_unknown_builtin ... ok [INFO] [stdout] test builtins::tests::test_llms_dsl_ref_is_extracted ... ok [INFO] [stdout] test builtins::tests::test_harnesses_toml_is_extracted ... ok [INFO] [stdout] test engine::engine::tests::test_if_true_executes_body ... ok [INFO] [stdout] test builtins::tests::test_resolve_workflow_path_builtin ... ok [INFO] [stdout] test engine::engine::tests::test_match_omits_reason_from_match_evaluated_when_not_present ... ok [INFO] [stdout] test engine::engine::tests::test_match_passes_variant_reason_through_match_evaluated_event ... ok [INFO] [stdout] test engine::engine::tests::test_match_emits_before_and_after_match_arm_boundaries ... ok [INFO] [stdout] test engine::engine::tests::test_on_event_callback ... ok [INFO] [stdout] test engine::engine::tests::test_match_routes_to_matching_variant_arm ... ok [INFO] [stdout] test engine::engine::tests::test_par_and_all_succeed ... ok [INFO] [stdout] test engine::engine::tests::test_reset_run_invalid_boundary ... ok [INFO] [stdout] test engine::engine::tests::test_simple_run ... ok [INFO] [stdout] test engine::engine::tests::test_reset_run ... ok [INFO] [stdout] test engine::engine::tests::test_safe_boundaries_emitted ... ok [INFO] [stdout] test engine::engine::tests::test_match_throws_runtime_error_when_no_match_and_no_else ... ok [INFO] [stdout] test engine::engine::tests::test_while_loop ... ok [INFO] [stdout] test engine::engine::tests::test_par_and_branch_failure ... ok [INFO] [stdout] test engine::engine::tests::test_run_state_tracking ... ok [INFO] [stdout] test engine::engine::tests::test_pause ... ok [INFO] [stdout] test engine::engine::tests::test_on_save_callback ... ok [INFO] [stdout] test engine::engine::tests::test_safe_boundary_types_in_events ... ok [INFO] [stdout] test engine::engine::tests::test_simple_exec ... ok [INFO] [stdout] test engine::engine::tests::test_step_path_construction ... ok [INFO] [stdout] test engine::engine::tests::test_match_routes_to_else_arm_when_no_variant_matches ... ok [INFO] [stdout] test engine::types::tests::test_execution_event_branch_completed_with_output ... ok [INFO] [stdout] test engine::engine::tests::test_unknown_workflow_reference ... ok [INFO] [stdout] test engine::types::tests::test_execution_event_check_evaluated_without_reason ... ok [INFO] [stdout] test engine::types::tests::test_execution_event_check_evaluated_with_reason ... ok [INFO] [stdout] test engine::engine::tests::test_unknown_workflow ... ok [INFO] [stdout] test engine::types::tests::test_join_started_serialization ... ok [INFO] [stdout] test engine::types::tests::test_match_evaluated_with_reason ... ok [INFO] [stdout] test engine::types::tests::test_match_evaluated_else_arm ... ok [INFO] [stdout] test engine::types::tests::test_branch_started_serialization ... ok [INFO] [stdout] test engine::types::tests::test_execution_event_step_started_json ... ok [INFO] [stdout] test engine::types::tests::test_run_paused_serialization ... ok [INFO] [stdout] test engine::types::tests::test_run_failed_serialization ... ok [INFO] [stdout] test engine::types::tests::test_execution_event_deserialization ... ok [INFO] [stdout] test engine::types::tests::test_execution_event_run_completed ... ok [INFO] [stdout] test engine::types::tests::test_execution_event_safe_boundary_json ... ok [INFO] [stdout] test engine::types::tests::test_run_status_serialization ... ok [INFO] [stdout] test engine::types::tests::test_run_state_serialization ... ok [INFO] [stdout] test engine::types::tests::test_run_state_roundtrip ... ok [INFO] [stdout] test engine::types::tests::test_safe_boundary_type_constants ... ok [INFO] [stdout] test engine::types::tests::test_step_state_serialization ... ok [INFO] [stdout] test harness::check::tests::test_parse_match_empty_variant_rejected ... ok [INFO] [stdout] test engine::types::tests::test_step_status_deserialization ... ok [INFO] [stdout] test harness::check::tests::test_parse_match_invalid_json ... ok [INFO] [stdout] test harness::check::tests::test_parse_match_missing_variant ... ok [INFO] [stdout] test harness::check::tests::test_parse_match_non_string_variant ... ok [INFO] [stdout] test engine::types::tests::test_step_status_serialization ... ok [INFO] [stdout] test harness::check::tests::test_parse_match_non_string_reason ... ok [INFO] [stdout] test harness::check::tests::test_parse_array_rejected ... ok [INFO] [stdout] test harness::check::tests::test_parse_match_null_rejected ... ok [INFO] [stdout] test harness::check::tests::test_parse_check_result_from_exec_stdout ... ok [INFO] [stdout] test harness::check::tests::test_parse_match_valid_with_reason ... ok [INFO] [stdout] test harness::check::tests::test_parse_match_valid_no_reason ... ok [INFO] [stdout] test harness::check::tests::test_parse_extra_property_rejected ... ok [INFO] [stdout] test harness::check::tests::test_parse_invalid_json ... ok [INFO] [stdout] test harness::check::tests::test_parse_missing_result ... ok [INFO] [stdout] test harness::check::tests::test_parse_non_boolean_result ... ok [INFO] [stdout] test harness::check::tests::test_parse_null_rejected ... ok [INFO] [stdout] test harness::check::tests::test_parse_non_string_reason ... ok [INFO] [stdout] test harness::check::tests::test_parse_number_rejected ... ok [INFO] [stdout] test harness::check::tests::test_parse_valid_false_no_reason ... ok [INFO] [stdout] test harness::check::tests::test_parse_valid_true ... ok [INFO] [stdout] test harness::check::tests::test_parse_valid_true_no_reason ... ok [INFO] [stdout] test harness::check::tests::test_parse_match_array_rejected ... ok [INFO] [stdout] test harness::config::tests::test_load_missing_config ... ok [INFO] [stdout] test harness::config::tests::test_load_valid_config ... ok [INFO] [stdout] test harness::execute::tests::test_execute_captures_stderr ... ok [INFO] [stdout] test harness::execute::tests::test_execute_stream_json_invalid_line_fails ... ok [INFO] [stdout] test engine::types::tests::test_branch_failed_serialization ... ok [INFO] [stdout] test engine::types::tests::test_execution_event_all_types ... ok [INFO] [stdout] test engine::types::tests::test_execution_event_branch_completed_without_output ... ok [INFO] [stdout] test engine::types::tests::test_execution_event_step_failed_json ... ok [INFO] [stdout] test harness::execute::tests::test_execute_nonexistent_command ... ok [INFO] [stdout] test harness::execute::tests::test_execute_empty_command ... ok [INFO] [stdout] test harness::execute::tests::test_execute_echo ... ok [INFO] [stdout] test harness::config::tests::test_invalid_output_mode ... ok [INFO] [stdout] test harness::config::tests::test_invalid_args_mapping ... ok [INFO] [stdout] test harness::check::tests::test_parse_match_extra_property_rejected ... ok [INFO] [stdout] test harness::invocation::tests::test_build_invocation_empty_prompt_slot ... ok [INFO] [stdout] test harness::invocation::tests::test_build_invocation_exec_args_add_new ... ok [INFO] [stdout] test harness::invocation::tests::test_build_basic_invocation ... ok [INFO] [stdout] test harness::invocation::tests::test_build_invocation_exec_args_override_defaults ... ok [INFO] [stdout] test harness::invocation::tests::test_build_invocation_with_defaults ... ok [INFO] [stdout] test harness::prompt::tests::test_resolve_prompt_not_found ... ok [INFO] [stdout] test harness::execute::tests::test_execute_exit_code ... ok [INFO] [stdout] test harness::tests::test_resolve_harness_not_found ... ok [INFO] [stdout] test harness::tests::test_resolve_harness_not_found_shows_available ... ok [INFO] [stdout] test harness::prompt::tests::test_resolve_prompt_bare_name_primary ... ok [INFO] [stdout] test harness::prompt::tests::test_resolve_prompt_bare_name_secondary ... ok [INFO] [stdout] test harness::prompt::tests::test_resolve_prompt_relative_path ... ok [INFO] [stdout] test harness::tests::test_dispatch_exec_missing_harness ... ok [INFO] [stdout] test harness::tests::test_dispatch_exec_no_prompt ... ok [INFO] [stdout] test harness::tests::test_resolve_harness_found ... ok [INFO] [stdout] test parser::ast::tests::test_if_statement_serialization ... ok [INFO] [stdout] test parser::ast::tests::test_fail_policy_serialization ... ok [INFO] [stdout] test harness::tests::test_check_script_dispatch_without_prompt_slot ... ok [INFO] [stdout] test harness::execute::tests::test_execute_stream_json_stdout ... ok [INFO] [stdout] test parser::ast::tests::test_match_statement_serialization_kind_and_camel_case ... ok [INFO] [stdout] test harness::tests::test_dispatch_exec_inline_prompt ... ok [INFO] [stdout] test parser::ast::tests::test_run_statement_creation ... ok [INFO] [stdout] test parser::ast::tests::test_parse_result_err ... ok [INFO] [stdout] test parser::ast::tests::test_par_and_serialization ... ok [INFO] [stdout] test parser::ast::tests::test_parse_result_ok ... ok [INFO] [stdout] test parser::ast::tests::test_match_statement_else_body_included_when_some ... ok [INFO] [stdout] test parser::ast::tests::test_exec_block_serialization ... ok [INFO] [stdout] test parser::ast::tests::test_exec_block_with_prompt_file ... ok [INFO] [stdout] test parser::ast::tests::test_match_statement_referenced_names ... ok [INFO] [stdout] test parser::ast::tests::test_if_not_deserialization ... ok [INFO] [stdout] test parser::ast::tests::test_run_statement_roundtrip ... ok [INFO] [stdout] test parser::ast::tests::test_statement_json_has_kind_and_camel_case ... ok [INFO] [stdout] test parser::errors::tests::test_error_display_format ... ok [INFO] [stdout] test parser::errors::tests::test_format_lint_output_empty ... ok [INFO] [stdout] test parser::errors::tests::test_lint_diagnostic_error ... ok [INFO] [stdout] test parser::errors::tests::test_lint_diagnostic_from_parse_error ... ok [INFO] [stdout] test parser::errors::tests::test_lint_diagnostic_warning ... ok [INFO] [stdout] test parser::lexer::tests::test_lex_bare_gt_error ... ok [INFO] [stdout] test harness::tests::test_dispatch_exec_with_prompt_file ... ok [INFO] [stdout] test parser::lexer::tests::test_lex_blank_lines_only ... ok [INFO] [stdout] test parser::lexer::tests::test_lex_colon_token ... ok [INFO] [stdout] test parser::lexer::tests::test_lex_comment_lines_skipped ... ok [INFO] [stdout] test parser::lexer::tests::test_lex_empty_source ... ok [INFO] [stdout] test parser::lexer::tests::test_lex_exec_block_with_bare_value ... ok [INFO] [stdout] test parser::lexer::tests::test_lex_inline_comment ... ok [INFO] [stdout] test parser::lexer::tests::test_lex_missing_version ... ok [INFO] [stdout] test parser::lexer::tests::test_lex_match_keyword ... ok [INFO] [stdout] test parser::lexer::tests::test_lex_minimal_valid ... ok [INFO] [stdout] test parser::lexer::tests::test_lex_dedent_multiple_levels ... ok [INFO] [stdout] test parser::lexer::tests::test_lex_mixed_tabs_and_spaces ... ok [INFO] [stdout] test parser::lexer::tests::test_lex_par_and_keyword ... ok [INFO] [stdout] test parser::lexer::tests::test_lex_prompt_file_before_prompt ... ok [INFO] [stdout] test parser::lexer::tests::test_lex_else_keyword ... ok [INFO] [stdout] test parser::lexer::tests::test_lex_namespace_name ... ok [INFO] [stdout] test parser::ast::tests::test_while_not_serialization ... ok [INFO] [stdout] test parser::errors::tests::test_error_is_std_error ... ok [INFO] [stdout] test parser::lexer::tests::test_lex_tabs_rejected ... ok [INFO] [stdout] test parser::lexer::tests::test_lex_unterminated_string ... ok [INFO] [stdout] test parser::errors::tests::test_error_new ... ok [INFO] [stdout] test parser::errors::tests::test_format_lint_output ... ok [INFO] [stdout] test parser::linker::tests::test_link_duplicate_name ... ok [INFO] [stdout] test parser::lexer::tests::test_lex_arrow_token ... ok [INFO] [stdout] test parser::lexer::tests::test_lex_string_with_escapes ... ok [INFO] [stdout] test parser::linker::tests::test_link_duplicate_name_e2e ... ok [INFO] [stdout] test harness::tests::test_run_context_injects_env_vars ... ok [INFO] [stdout] test parser::parser::tests::test_parse_empty_workflow ... ok [INFO] [stdout] test parser::lexer::tests::test_lex_fail_policy_keyword ... ok [INFO] [stdout] test parser::parser::tests::test_parse_exec_both_prompt_error ... ok [INFO] [stdout] test parser::parser::tests::test_parse_exec_missing_harness ... ok [INFO] [stdout] test parser::ast::tests::test_workflow_decl_serialization ... ok [INFO] [stdout] test parser::parser::tests::test_parse_exec_with_prompt_string ... ok [INFO] [stdout] test parser::parser::tests::test_parse_if_not ... ok [INFO] [stdout] test parser::parser::tests::test_parse_match_duplicate_variant_error ... ok [INFO] [stdout] test parser::parser::tests::test_parse_match_empty_arms_error ... ok [INFO] [stdout] test parser::parser::tests::test_parse_if_statement ... ok [INFO] [stdout] test parser::parser::tests::test_parse_match_basic ... ok [INFO] [stdout] test parser::parser::tests::test_parse_exec_neither_prompt_error ... ok [INFO] [stdout] test parser::parser::tests::test_parse_exec_with_args ... ok [INFO] [stdout] test parser::linker::tests::test_link_single_file_ok ... ok [INFO] [stdout] test parser::linker::tests::test_link_unresolved_reference ... ok [INFO] [stdout] test parser::linker::tests::test_link_unknown_reference_e2e ... ok [INFO] [stdout] test parser::linker::tests::test_link_multi_file_ok ... ok [INFO] [stdout] test parser::parser::tests::test_parse_match_else_not_last_error ... ok [INFO] [stdout] test parser::linker::tests::test_link_valid_e2e ... ok [INFO] [stdout] test parser::parser::tests::test_parse_match_keyword_variant_error ... ok [INFO] [stdout] test parser::parser::tests::test_parse_match_multi_statement_arm ... ok [INFO] [stdout] test parser::parser::tests::test_parse_match_serialization_elseBody_absent_when_no_else ... ok [INFO] [stdout] test parser::parser::tests::test_parse_unexpected_token_at_top_level ... ok [INFO] [stdout] test parser::parser::tests::test_parse_unexpected_token_in_block ... ok [INFO] [stdout] test parser::parser::tests::test_parse_multiple_workflows ... ok [INFO] [stdout] test parser::parser::tests::test_parse_namespaced_workflow ... ok [INFO] [stdout] test parser::parser::tests::test_parse_match_with_else ... ok [INFO] [stdout] test parser::parser::tests::test_parse_minimal_workflow ... ok [INFO] [stdout] test parser::parser::tests::test_parse_par_and_with_fail_policy ... ok [INFO] [stdout] test parser::parser::tests::test_parse_workflow_line_column ... ok [INFO] [stdout] test parser::parser::tests::test_parse_missing_version ... ok [INFO] [stdout] test parser::parser::tests::test_parse_wrong_version ... ok [INFO] [stdout] test parser::parser::tests::test_parse_par_and_non_run_child ... ok [INFO] [stdout] test parser::tokens::tests::test_token_creation ... ok [INFO] [stdout] test state::adapter::tests::test_build_branches_from_events ... ok [INFO] [stdout] test parser::parser::tests::test_parse_par_and ... ok [INFO] [stdout] test state::adapter::tests::test_empty_engine_state_round_trip ... ok [INFO] [stdout] test parser::parser::tests::test_parse_reserved_keyword_as_name ... ok [INFO] [stdout] test parser::parser::tests::test_parse_run_statement_line_column ... ok [INFO] [stdout] test state::adapter::tests::test_map_boundary_type_all_variants ... ok [INFO] [stdout] test state::adapter::tests::test_round_trip ... ok [INFO] [stdout] test state::adapter::tests::test_to_engine_state_no_event_log ... ok [INFO] [stdout] test state::adapter::tests::test_to_engine_state_pending_status_rejected ... ok [INFO] [stdout] test state::adapter::tests::test_to_persisted_state ... ok [INFO] [stdout] test state::adapter::tests::test_to_persisted_state_includes_harness_event_log ... ok [INFO] [stdout] test state::adapter::tests::test_truncate_to_last_boundary_handles_empty_event_log ... ok [INFO] [stdout] test state::adapter::tests::test_to_engine_state ... ok [INFO] [stdout] test state::adapter::tests::test_truncate_to_last_boundary_truncates_harness_event_log_by_exec_ordinal ... ok [INFO] [stdout] test state::persistence::tests::test_get_safe_boundaries ... ok [INFO] [stdout] test state::persistence::tests::test_list_runs_empty_dir ... ok [INFO] [stdout] test state::persistence::tests::test_validate_boundary_no_boundaries ... ok [INFO] [stdout] test state::persistence::tests::test_validate_boundary_out_of_range ... ok [INFO] [stdout] test state::persistence::tests::test_load_nonexistent ... ok [INFO] [stdout] test parser::parser::tests::test_parse_while_loop ... ok [INFO] [stdout] test parser::parser::tests::test_parse_while_not_loop ... ok [INFO] [stdout] test state::persistence::tests::test_validate_boundary_valid ... ok [INFO] [stdout] test state::persistence::tests::test_save_load_roundtrip_with_steps ... ok [INFO] [stdout] test parser::linker::tests::test_link_circular_reference ... ok [INFO] [stdout] test parser::linker::tests::test_link_circular_reference_e2e ... ok [INFO] [stdout] test parser::tokens::tests::test_token_type_display ... ok [INFO] [stdout] test state::persistence::tests::test_save_state_creates_runs_dir ... ok [INFO] [stdout] test state::persistence::tests::test_list_runs_ignores_non_directory_entries ... ok [INFO] [stdout] test state::persistence::tests::test_list_runs_sorted_by_timestamp ... ok [INFO] [stdout] test state::persistence::tests::test_list_runs ... ok [INFO] [stdout] test state::persistence::tests::test_validate_boundary_forward_not_allowed ... ok [INFO] [stdout] test state::persistence::tests::test_save_and_load ... ok [INFO] [stdout] test state::persistence::tests::test_validate_state_bad_boundary_index ... ok [INFO] [stdout] test state::persistence::tests::test_validate_state_bad_schema_version ... ok [INFO] [stdout] test state::persistence::tests::test_validate_state_empty_run_id ... ok [INFO] [stdout] test state::types::tests::test_branch_state_serialization ... ok [INFO] [stdout] test state::types::tests::test_persisted_run_state_json_field_names ... ok [INFO] [stdout] test state::types::tests::test_run_status_display ... ok [INFO] [stdout] test state::types::tests::test_run_status_deserialization ... ok [INFO] [stdout] test state::types::tests::test_run_status_serialization ... ok [INFO] [stdout] test state::types::tests::test_run_summary_serialization ... ok [INFO] [stdout] test state::types::tests::test_persisted_run_state_roundtrip ... ok [INFO] [stdout] test state::types::tests::test_step_kind_serialization ... ok [INFO] [stdout] test state::types::tests::test_safe_boundary_type_all_9_variants ... ok [INFO] [stdout] test tui::app::tests::test_all_answered_false_when_no_qout ... ok [INFO] [stdout] test tui::app::tests::test_advance_shows_review_when_all_answered ... ok [INFO] [stdout] test tui::app::tests::test_all_answered_false_when_some_missing ... ok [INFO] [stdout] test tui::app::tests::test_app_mode_transitions ... ok [INFO] [stdout] test state::types::tests::test_step_state_persisted_json_field_names ... ok [INFO] [stdout] test tui::app::tests::test_all_answered_true_when_all_present ... ok [INFO] [stdout] test tui::app::tests::test_app_step_status_update ... ok [INFO] [stdout] test tui::app::tests::test_app_navigation ... ok [INFO] [stdout] test tui::app::tests::test_backtab_from_review_returns_to_last_tab ... ok [INFO] [stdout] test tui::app::tests::test_backtab_key_goes_back_from_free_write_mode ... ok [INFO] [stdout] test tui::app::tests::test_advance_to_next_unanswered_after_choose_one ... ok [INFO] [stdout] test tui::app::tests::test_build_display_steps_simple ... ok [INFO] [stdout] test tui::app::tests::test_char_to_byte_index_ascii ... ok [INFO] [stdout] test tui::app::tests::test_build_display_steps_with_run ... ok [INFO] [stdout] test tui::app::tests::test_char_to_byte_index_beyond_end_clamps_to_len ... ok [INFO] [stdout] test tui::app::tests::test_char_to_byte_index_multibyte ... ok [INFO] [stdout] test tui::app::tests::test_ctrl_backspace_deletes_word ... ok [INFO] [stdout] test tui::app::tests::test_ctrl_right_moves_cursor_by_word ... ok [INFO] [stdout] test tui::app::tests::test_ctrl_delete_deletes_word_ahead ... ok [INFO] [stdout] test tui::app::tests::test_ctrl_left_moves_cursor_by_word ... ok [INFO] [stdout] test tui::app::tests::test_free_write_char_inserts_at_cursor_position ... ok [INFO] [stdout] test tui::app::tests::test_free_write_left_at_start_is_noop ... ok [INFO] [stdout] test tui::app::tests::test_free_write_does_not_navigate_tabs_with_left_right ... ok [INFO] [stdout] test tui::app::tests::test_free_write_right_moves_cursor_right ... ok [INFO] [stdout] test tui::app::tests::test_free_write_backspace_deletes_before_cursor ... ok [INFO] [stdout] test tui::app::tests::test_free_write_left_moves_cursor_left ... ok [INFO] [stdout] test tui::app::tests::test_handle_qa_key_choose_one_enter ... ok [INFO] [stdout] test tui::app::tests::test_handle_qa_key_choose_many_enter_confirms ... ok [INFO] [stdout] test tui::app::tests::test_handle_qa_key_free_write_does_not_navigate_tabs_with_left_right ... ok [INFO] [stdout] test tui::app::tests::test_handle_qa_key_free_write_enter_confirms ... ok [INFO] [stdout] test tui::app::tests::test_handle_qa_key_free_write_enter_with_empty_is_noop ... ok [INFO] [stdout] test tui::app::tests::test_free_write_backspace_at_start_is_noop ... ok [INFO] [stdout] test tui::app::tests::test_free_write_right_at_end_is_noop ... ok [INFO] [stdout] test tui::app::tests::test_handle_qa_key_choose_many_space_toggle ... ok [INFO] [stdout] test tui::app::tests::test_handle_qa_key_esc_returns_to_previous_mode ... ok [INFO] [stdout] test tui::app::tests::test_handle_qa_key_choose_one_navigation ... ok [INFO] [stdout] test tui::app::tests::test_char_to_byte_index_one_past_end_returns_len ... ok [INFO] [stdout] test tui::app::tests::test_handle_qa_key_free_write_shift_enter_inserts_newline ... ok [INFO] [stdout] test tui::app::tests::test_handle_qa_key_free_write_typing ... ok [INFO] [stdout] test tui::app::tests::test_handle_qa_key_number_key_out_of_range_ignored ... ok [INFO] [stdout] test tui::app::tests::test_handle_qa_key_number_keys_jump_tabs ... ok [INFO] [stdout] test tui::app::tests::test_handle_qa_key_left_navigates_tab ... ok [INFO] [stdout] test tui::app::tests::test_handle_qa_key_left_from_review_returns_to_last_tab ... ok [INFO] [stdout] test tui::app::tests::test_handle_qa_key_right_navigates_tab ... ok [INFO] [stdout] test tui::app::tests::test_handle_qa_key_review_e_goes_back_to_edit ... ok [INFO] [stdout] test tui::app::tests::test_handle_qa_key_right_past_last_does_not_show_review_if_not_all_answered ... ok [INFO] [stdout] test tui::app::tests::test_handle_qa_key_yes_no_n ... ok [INFO] [stdout] test tui::app::tests::test_handle_qa_key_yes_no_y ... ok [INFO] [stdout] test tui::app::tests::test_handle_qa_key_right_past_last_shows_review_only_if_all_answered ... ok [INFO] [stdout] test tui::app::tests::test_harness_event_message_appends_to_log ... ok [INFO] [stdout] test tui::app::tests::test_qa_answer_message_stores_answer ... ok [INFO] [stdout] test tui::app::tests::test_handle_qa_key_review_enter_does_not_submit_when_not_all_answered ... ok [INFO] [stdout] test tui::app::tests::test_handle_qa_key_review_backspace_goes_back_to_edit ... ok [INFO] [stdout] test tui::app::tests::test_qa_back_to_edit ... ok [INFO] [stdout] test tui::app::tests::test_handle_qa_key_review_enter_submits_when_all_answered ... ok [INFO] [stdout] test tui::app::tests::test_qa_panel_not_visible_by_default ... ok [INFO] [stdout] test tui::app::tests::test_qa_select_tab_valid_index ... ok [INFO] [stdout] test tui::app::tests::test_qa_panel_visible_when_waiting ... ok [INFO] [stdout] test tui::app::tests::test_qa_show_review ... ok [INFO] [stdout] test tui::app::tests::test_qa_submit_clears_state_and_sets_waiting ... ok [INFO] [stdout] test tui::app::tests::test_qa_submit_with_partial_answers_only_includes_answered ... ok [INFO] [stdout] test tui::app::tests::test_qa_submit_restores_previous_mode ... ok [INFO] [stdout] test tui::app::tests::test_qa_waiting_cleared_on_run_completed ... ok [INFO] [stdout] test tui::app::tests::test_questions_detected_switches_mode ... ok [INFO] [stdout] test tui::app::tests::test_qa_select_tab_out_of_range_ignored ... ok [INFO] [stdout] test tui::app::tests::test_qa_panel_visible_when_question_input ... ok [INFO] [stdout] test tui::app::tests::test_questions_detected_clears_previous_answers ... ok [INFO] [stdout] test tui::app::tests::test_reset_widget_for_tab_clears_state ... ok [INFO] [stdout] test tui::app::tests::test_reset_widget_for_tab_pre_populates_boolean_answer ... ok [INFO] [stdout] test tui::app::tests::test_reset_widget_for_tab_pre_populates_choose_one_cursor ... ok [INFO] [stdout] test tui::app::tests::test_reset_widget_for_tab_pre_populates_cursor_to_end_of_text ... ok [INFO] [stdout] test tui::app::tests::test_reset_widget_for_tab_pre_populates_existing_answer_text ... ok [INFO] [stdout] test tui::app::tests::test_qa_waiting_cleared_on_run_failed ... ok [INFO] [stdout] test tui::app::tests::test_reset_widget_for_tab_resets_text_cursor_to_zero ... ok [INFO] [stdout] test tui::app::tests::test_run_paused_completes_pending_quit ... ok [INFO] [stdout] test tui::app::tests::test_save_widget_state_empty_free_write_does_not_save ... ok [INFO] [stdout] test tui::app::tests::test_save_widget_state_saves_choose_many_toggles_without_enter ... ok [INFO] [stdout] test tui::app::tests::test_tab_key_at_last_not_all_answered_does_nothing ... ok [INFO] [stdout] test tui::app::tests::test_save_widget_state_saves_free_write_text_without_enter ... ok [INFO] [stdout] test tui::app::tests::test_tab_key_auto_saves_free_write_text_before_switch ... ok [INFO] [stdout] test tui::app::tests::test_tab_key_advances_tab_in_free_write_mode ... ok [INFO] [stdout] test tui::app::tests::test_qa_waiting_cleared_on_run_paused ... ok [INFO] [stdout] test tui::app::tests::test_quit_from_paused_exits_immediately ... ok [INFO] [stdout] test tui::app::tests::test_take_qa_submit_data_returns_none_when_empty ... ok [INFO] [stdout] test tui::app::tests::test_word_end_right_basic ... ok [INFO] [stdout] test tui::app::tests::test_reset_widget_for_tab_pre_populates_multiselect ... ok [INFO] [stdout] test tui::app::tests::test_quit_from_running_requests_pause_before_exit ... ok [INFO] [stdout] test tui::app::tests::test_word_start_left_basic ... ok [INFO] [stdout] test tui::app::tests::test_word_start_left_multiple_spaces ... ok [INFO] [stdout] test tui::command_palette::tests::test_palette_commands_when_paused ... ok [INFO] [stdout] test tui::command_palette::tests::test_palette_commands_when_running ... ok [INFO] [stdout] test tui::command_palette::tests::test_filter ... ok [INFO] [stdout] test tui::qa_protocol::tests::test_cross_impl_json_compat ... ok [INFO] [stdout] test tui::qa_protocol::tests::test_answers_file_with_questions_roundtrip ... ok [INFO] [stdout] test tui::app::tests::test_handle_qa_key_yes_no_enter_selects_cursor ... ok [INFO] [stdout] test tui::qa_protocol::tests::test_all_question_types_serialize_correctly ... ok [INFO] [stdout] test tui::qa_protocol::tests::test_empty_questions_array ... ok [INFO] [stdout] test tui::app::tests::test_word_end_right_multiple_spaces ... ok [INFO] [stdout] test tui::command_palette::tests::test_navigation ... ok [INFO] [stdout] test tui::qa_protocol::tests::test_format_seq ... ok [INFO] [stdout] test tui::qa_protocol::tests::test_parse_seq_edge_cases ... ok [INFO] [stdout] test tui::qa_protocol::tests::test_invalid_json_fails_gracefully ... ok [INFO] [stdout] test tui::qa_protocol::tests::test_question_to_answer_choose_one_preserves_options ... ok [INFO] [stdout] test tui::qa_protocol::tests::test_question_to_answer_text ... ok [INFO] [stdout] test tui::qa_protocol::tests::test_preview_type_serialization ... ok [INFO] [stdout] test tui::qa_protocol::tests::test_question_to_answer_boolean_false ... ok [INFO] [stdout] test tui::qa_protocol::tests::test_rust_produced_json_matches_ts_format ... ok [INFO] [stdout] test tui::qa_protocol::tests::test_roundtrip_answers ... ok [INFO] [stdout] test tui::app::tests::test_save_widget_state_choose_many_deselect_all_with_prior_answer_saves_empty ... ok [INFO] [stdout] test tui::qa_protocol::tests::test_missing_required_field_fails ... ok [INFO] [stdout] test tui::qa_protocol::tests::test_roundtrip_qout ... ok [INFO] [stdout] test tui::qa_protocol::tests::test_question_to_answer_multiselect ... ok [INFO] [stdout] test tui::qa_protocol::tests::test_parse_seq_from_filename ... ok [INFO] [stdout] test tui::qa_protocol::tests::test_special_characters_in_prompt ... ok [INFO] [stdout] test tui::qa_protocol::tests::test_ts_produced_qout_parses_in_rust ... ok [INFO] [stdout] test tui::qa_protocol::tests::test_ts_produced_answers_parse_in_rust ... ok [INFO] [stdout] test tui::qa_protocol::tests::test_question_to_answer_boolean_true ... ok [INFO] [stdout] test tui::qa_watcher::tests::test_mark_answered_prevents_re_notification ... ok [INFO] [stdout] test tui::qa_watcher::tests::test_poll_002_before_001_still_processes_in_order ... ok [INFO] [stdout] test tui::qa_watcher::tests::test_poll_skips_invalid_json_qout ... ok [INFO] [stdout] test tui::qa_watcher::tests::test_poll_detects_new_qout ... ok [INFO] [stdout] test tui::qa_watcher::tests::test_poll_notifies_only_once_before_answer_written ... ok [INFO] [stdout] test tui::app::tests::test_tab_key_to_review_when_all_answered ... ok [INFO] [stdout] test tui::qa_watcher::tests::test_poll_when_qa_dir_does_not_exist ... ok [INFO] [stdout] test tui::quit_summary::tests::test_build_quit_summary_for_paused_run ... ok [INFO] [stdout] test tui::qa_watcher::tests::test_poll_ignores_answered ... ok [INFO] [stdout] test tui::qa_watcher::tests::test_poll_ignores_non_qout_files ... ok [INFO] [stdout] test tui::qa_watcher::tests::test_poll_processes_in_order ... ok [INFO] [stdout] test tui::qa_watcher::tests::test_qa_dir_accessor ... ok [INFO] [stdout] test tui::quit_summary::tests::test_build_quit_summary_for_completed_run ... ok [INFO] [stdout] test tui::qa_watcher::tests::test_ensure_qa_dir_creates_directory ... ok [INFO] [stdout] test tui::ui::tests::test_format_elapsed ... ok [INFO] [stdout] test tui::ui::tests::test_status_icons ... ok [INFO] [stdout] test wiz::app::tests::test_alt_word_bindings_match_ctrl_behavior ... ok [INFO] [stdout] test wiz::app::tests::test_ctrl_backspace_and_delete_remove_words ... ok [INFO] [stdout] test wiz::app::tests::test_backspace_removes_char_before_cursor ... ok [INFO] [stdout] test wiz::app::tests::test_alt_right_and_delete_remove_next_word ... ok [INFO] [stdout] test wiz::app::tests::test_ctrl_left_and_right_move_by_word ... ok [INFO] [stdout] test wiz::app::tests::test_ctrl_w_deletes_previous_word ... ok [INFO] [stdout] test wiz::app::tests::test_delete_removes_character_at_cursor ... ok [INFO] [stdout] test wiz::app::tests::test_handle_key_returns_true_in_done_phase ... ok [INFO] [stdout] test wiz::app::tests::test_left_right_move_cursor ... ok [INFO] [stdout] test wiz::app::tests::test_insert_at_cursor_middle ... ok [INFO] [stdout] test wiz::app::tests::test_new_sets_initial_text_buffer_from_first_answer ... ok [INFO] [stdout] test wiz::app::tests::test_tab_from_last_goes_to_review ... ok [INFO] [stdout] test wiz::app::tests::test_new_preloads_prefill_answers ... ok [INFO] [stdout] test wiz::app::tests::test_tab_saves_buffer_before_switching ... ok [INFO] [stdout] test wiz::app::tests::test_tab_advances_tab ... ok [INFO] [stdout] test wiz::app::tests::test_esc_sets_aborted_phase ... ok [INFO] [stdout] test wiz::app::tests::test_typing_inserts_chars ... ok [INFO] [stdout] test wiz::app::tests::test_enter_advances_to_next_unanswered_question ... ok [INFO] [stdout] test wiz::app::tests::test_backtab_from_review_returns_to_last_tab ... ok [INFO] [stdout] test wiz::flow::tests::test_existing_harness_prefills_name_and_command ... ok [INFO] [stdout] test wiz::flow::tests::test_fresh_setup_all_prefills_empty ... ok [INFO] [stdout] test wiz::flow::tests::test_question_ids_in_order ... ok [INFO] [stdout] test wiz::flow::tests::test_existing_global_config_prefills_global_questions ... ok [INFO] [stdout] test wiz::writer::tests::test_resolve_written_config_extracts_all_fields ... ok [INFO] [stdout] test wiz::app::tests::test_enter_in_review_sets_writing_phase ... ok [INFO] [stdout] test wiz::writer::tests::test_no_tmp_files_remain_after_harness_write ... ok [INFO] [stdout] test wiz::writer::tests::test_write_harness_config_omits_prompt_slot_when_none ... ok [INFO] [stdout] test wiz::writer::tests::test_write_harness_config_creates_toml ... ok [INFO] [stdout] test wiz::writer::tests::test_write_global_config_creates_toml ... ok [INFO] [stdout] test wiz::global_config::tests::test_load_missing_global_config_returns_default ... ok [INFO] [stdout] test wiz::writer::tests::test_write_global_config_omits_none_fields ... ok [INFO] [stdout] test wiz::flow::tests::test_fresh_setup_produces_five_questions ... ok [INFO] [stdout] test wiz::writer::tests::test_resolve_written_config_uses_fallbacks_for_empty_answers ... ok [INFO] [stdout] test wiz::global_config::tests::test_load_existing_global_config ... ok [INFO] [stdout] test tui::qa_protocol::tests::test_very_long_text_survives_roundtrip ... ok [INFO] [stdout] test harness::execute::tests::test_execute_stream_json_invalid_line_keeps_draining_until_exit ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 404 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/o7-3f394bb476ca2378) [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/cli_tests.rs (/opt/rustwide/target/debug/deps/cli_tests-43cc5655e930941e) [INFO] [stdout] [INFO] [stdout] running 19 tests [INFO] [stdout] test test_parse_invalid_file ... ok [INFO] [stdout] test test_lint_nonexistent_file ... ok [INFO] [stdout] test test_lint_invalid_file ... ok [INFO] [stdout] test test_inspect_no_runs ... ok [INFO] [stdout] test test_help_run_subcommand ... ok [INFO] [stdout] test test_inspect_nonexistent_run ... ok [INFO] [stdout] test test_parse_valid_file ... ok [INFO] [stdout] test test_lint_valid_file ... ok [INFO] [stdout] test test_parse_valid_file_shows_workflow_names ... ok [INFO] [stdout] test test_run_no_args_finds_o7md_in_cwd ... ok [INFO] [stdout] test test_help_flag ... ok [INFO] [stdout] test test_run_no_args_no_o7md_fails_with_helpful_error ... ok [INFO] [stdout] test test_tui_no_args_no_o7md_fails_with_helpful_error ... ok [INFO] [stdout] test test_version_flag ... ok [INFO] [stdout] test test_wiz_appears_in_main_help ... ok [INFO] [stdout] test test_inspect_shows_harness_event_summary ... ok [INFO] [stdout] test test_tui_fails_without_terminal ... ok [INFO] [stdout] test test_no_args_shows_help ... ok [INFO] [stdout] test test_wiz_subcommand_help ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s [INFO] [stdout] [INFO] [stderr] Running tests/parser_tests.rs (/opt/rustwide/target/debug/deps/parser_tests-2388c57f99e0dc9f) [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test test_discover_and_parse ... ok [INFO] [stdout] test test_discover_does_not_recurse ... ok [INFO] [stdout] test test_discover_ignores_non_7_files ... ok [INFO] [stdout] test test_discover_empty_directory ... ok [INFO] [stdout] test test_parse_file_path ... ok [INFO] [stdout] test test_parse_file_returns_errors_on_bad_input ... ok [INFO] [stdout] test test_discover_duplicate_across_files ... ok [INFO] [stdout] test test_parse_file_path_nonexistent ... ok [INFO] [stderr] Doc-tests o7 [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "96beed4b61c2a8ef5352a4572aa2c8ae5cf203a8edea02f38f2488851ec399fc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "96beed4b61c2a8ef5352a4572aa2c8ae5cf203a8edea02f38f2488851ec399fc", kill_on_drop: false }` [INFO] [stdout] 96beed4b61c2a8ef5352a4572aa2c8ae5cf203a8edea02f38f2488851ec399fc