[INFO] cloning repository https://github.com/curtisault/tast
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/curtisault/tast" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcurtisault%2Ftast", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcurtisault%2Ftast'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] a77558dbf791df9c4c9b8b77721cce2a40cd7f75
[INFO] testing curtisault/tast against master#ec6f9a5b4413f74386267ef8efc93712c2ce6db6 for pr-155739
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcurtisault%2Ftast" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/curtisault/tast
[INFO] finished tweaking git repo https://github.com/curtisault/tast
[INFO] tweaked toml for git repo https://github.com/curtisault/tast written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/curtisault/tast on toolchain ec6f9a5b4413f74386267ef8efc93712c2ce6db6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/curtisault/tast 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" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded clap_builder v4.5.60
[INFO] [stderr]   Downloaded ariadne v0.4.1
[INFO] [stderr]   Downloaded clap v4.5.60
[INFO] [stderr]   Downloaded ureq-proto v0.5.3
[INFO] [stderr]   Downloaded ureq v3.2.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] b8e86249cee3e6f242abdf2fec109768bbb01c13324dfd689b280ff040794b74
[INFO] running `Command { std: "docker" "start" "-a" "b8e86249cee3e6f242abdf2fec109768bbb01c13324dfd689b280ff040794b74", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b8e86249cee3e6f242abdf2fec109768bbb01c13324dfd689b280ff040794b74", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b8e86249cee3e6f242abdf2fec109768bbb01c13324dfd689b280ff040794b74", kill_on_drop: false }`
[INFO] [stdout] b8e86249cee3e6f242abdf2fec109768bbb01c13324dfd689b280ff040794b74
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 7b93a908ae6f6b7442cf1b3d149a9ac571c30fab69ed53292a608e60918d4545
[INFO] running `Command { std: "docker" "start" "-a" "7b93a908ae6f6b7442cf1b3d149a9ac571c30fab69ed53292a608e60918d4545", kill_on_drop: false }`
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling libc v0.2.182
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling shlex v1.3.0
[INFO] [stderr]    Compiling itoa v1.0.17
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling utf8parse v0.2.2
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling untrusted v0.9.0
[INFO] [stderr]    Compiling rustls v0.23.37
[INFO] [stderr]    Compiling bytes v1.11.1
[INFO] [stderr]    Compiling rustls-pki-types v1.14.0
[INFO] [stderr]    Compiling anstyle-parse v0.2.7
[INFO] [stderr]    Compiling cc v1.2.56
[INFO] [stderr]    Compiling adler2 v2.0.1
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling getrandom v0.4.1
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling anstyle v1.0.13
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling simd-adler32 v0.3.8
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling colorchoice v1.0.4
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling anstream v0.6.21
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling clap_lex v1.0.0
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling indexmap v2.13.0
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling clap_builder v4.5.60
[INFO] [stderr]    Compiling webpki-roots v1.0.6
[INFO] [stderr]    Compiling fastrand v2.3.0
[INFO] [stderr]    Compiling ureq-proto v0.5.3
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling unicode-width v0.1.14
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling yansi v1.0.1
[INFO] [stderr]    Compiling unsafe-libyaml v0.2.11
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling utf-8 v0.7.6
[INFO] [stderr]    Compiling fixedbitset v0.5.7
[INFO] [stderr]    Compiling ariadne v0.4.1
[INFO] [stderr]    Compiling petgraph v0.7.1
[INFO] [stderr]    Compiling tempfile v3.26.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]    Compiling clap v4.5.60
[INFO] [stderr]    Compiling serde_yaml v0.9.34+deprecated
[INFO] [stderr]    Compiling rustls-webpki v0.103.9
[INFO] [stderr]    Compiling ureq v3.2.0
[INFO] [stderr]    Compiling tast v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 11s
[INFO] running `Command { std: "docker" "inspect" "7b93a908ae6f6b7442cf1b3d149a9ac571c30fab69ed53292a608e60918d4545", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7b93a908ae6f6b7442cf1b3d149a9ac571c30fab69ed53292a608e60918d4545", kill_on_drop: false }`
[INFO] [stdout] 7b93a908ae6f6b7442cf1b3d149a9ac571c30fab69ed53292a608e60918d4545
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 38191264d08f59f39616b67b065012e93dbb32cb4f126dc5eec30a57ff457265
[INFO] running `Command { std: "docker" "start" "-a" "38191264d08f59f39616b67b065012e93dbb32cb4f126dc5eec30a57ff457265", kill_on_drop: false }`
[INFO] [stderr]    Compiling tast v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 6.30s
[INFO] running `Command { std: "docker" "inspect" "38191264d08f59f39616b67b065012e93dbb32cb4f126dc5eec30a57ff457265", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "38191264d08f59f39616b67b065012e93dbb32cb4f126dc5eec30a57ff457265", kill_on_drop: false }`
[INFO] [stdout] 38191264d08f59f39616b67b065012e93dbb32cb4f126dc5eec30a57ff457265
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 0820ca45c45f2064f43ee9e3673dbf969177152466e338048c1cae64d6e0ab5b
[INFO] running `Command { std: "docker" "start" "-a" "0820ca45c45f2064f43ee9e3673dbf969177152466e338048c1cae64d6e0ab5b", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.14s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/tast-60d501ba5026ab5f)
[INFO] [stdout] 
[INFO] [stdout] running 629 tests
[INFO] [stdout] test cli::commands::tests::cli_error_display_fallback ... ok
[INFO] [stdout] test cli::commands::tests::cli_error_preserves_parse_error_span ... ok
[INFO] [stdout] test emit::dot::tests::dot_includes_labels ... ok
[INFO] [stdout] test cli::commands::tests::cli_error_general_from_string ... ok
[INFO] [stdout] test emit::dot::tests::dot_empty_graph ... ok
[INFO] [stdout] test emit::dot::tests::dot_with_edges ... ok
[INFO] [stdout] test emit::junit::tests::junit_empty_plan ... ok
[INFO] [stdout] test emit::junit::tests::junit_escapes_xml_special_chars ... ok
[INFO] [stdout] test emit::junit::tests::junit_includes_steps_in_system_out ... ok
[INFO] [stdout] test emit::junit::tests::junit_includes_test_count ... ok
[INFO] [stdout] test emit::junit::tests::junit_multiple_test_cases ... ok
[INFO] [stdout] test emit::junit::tests::junit_single_test_case ... ok
[INFO] [stdout] test emit::junit::tests::junit_testcase_classname_is_graph_name ... ok
[INFO] [stdout] test emit::markdown::tests::markdown_includes_plan_header ... ok
[INFO] [stdout] test emit::markdown::tests::markdown_includes_preconditions_actions_assertions ... ok
[INFO] [stdout] test emit::markdown::tests::markdown_includes_depends_on ... ok
[INFO] [stdout] test emit::markdown::tests::markdown_includes_step_description ... ok
[INFO] [stdout] test emit::junit::tests::junit_valid_xml_structure ... ok
[INFO] [stdout] test emit::junit::tests::junit_includes_testsuite_name ... ok
[INFO] [stdout] test emit::junit::tests::junit_includes_xml_declaration ... ok
[INFO] [stdout] test emit::markdown::tests::markdown_empty_plan ... ok
[INFO] [stdout] test emit::markdown::tests::markdown_includes_tags ... ok
[INFO] [stdout] test emit::markdown::tests::markdown_includes_data_flow ... ok
[INFO] [stdout] test emit::markdown::tests::markdown_single_step ... ok
[INFO] [stdout] test emit::markdown::tests::markdown_multi_step ... ok
[INFO] [stdout] test emit::markdown::tests::markdown_step_data_shown_as_list ... ok
[INFO] [stdout] test emit::mermaid::tests::mermaid_includes_labels ... ok
[INFO] [stdout] test emit::mermaid::tests::mermaid_empty_graph ... ok
[INFO] [stdout] test emit::mermaid::tests::mermaid_single_node ... ok
[INFO] [stdout] test emit::mermaid::tests::mermaid_with_edges ... ok
[INFO] [stdout] test emit::dot::tests::dot_single_node ... ok
[INFO] [stdout] test emit::run_result::tests::emit_run_json_roundtrip ... ok
[INFO] [stdout] test emit::run_result::tests::emit_run_json_structure ... ok
[INFO] [stdout] test emit::run_result::tests::emit_run_yaml_all_passed ... ok
[INFO] [stdout] test emit::run_result::tests::emit_run_yaml_includes_summary ... ok
[INFO] [stdout] test emit::run_result::tests::emit_run_yaml_includes_timing ... ok
[INFO] [stdout] test emit::run_result::tests::junit_run_assertions_in_system_out ... ok
[INFO] [stdout] test emit::run_result::tests::junit_run_failure_element_attributes ... ok
[INFO] [stdout] test emit::run_result::tests::junit_run_timing_in_seconds ... ok
[INFO] [stdout] test emit::run_result::tests::junit_run_with_failure ... ok
[INFO] [stdout] test emit::run_result::tests::junit_run_all_passed ... ok
[INFO] [stdout] test emit::run_result::tests::emit_run_yaml_with_failures ... ok
[INFO] [stdout] test emit::util::tests::capitalizes_empty ... ok
[INFO] [stdout] test emit::util::tests::capitalizes_already_upper ... ok
[INFO] [stdout] test emit::run_result::tests::junit_run_with_skipped ... ok
[INFO] [stdout] test emit::util::tests::capitalizes_single_char ... ok
[INFO] [stdout] test emit::util::tests::capitalizes_lowercase ... ok
[INFO] [stdout] test emit::yaml::tests::emits_empty_plan_yaml ... ok
[INFO] [stdout] test emit::yaml::tests::emits_plan_metadata_yaml ... ok
[INFO] [stdout] test emit::yaml::tests::emits_single_step_yaml ... ok
[INFO] [stdout] test emit::yaml::tests::emits_multi_step_yaml ... ok
[INFO] [stdout] test emit::yaml::tests::emits_step_with_assertions ... ok
[INFO] [stdout] test emit::yaml::tests::emits_step_with_actions ... ok
[INFO] [stdout] test emit::yaml::tests::emits_step_with_depends_on ... ok
[INFO] [stdout] test emit::yaml::tests::emits_step_with_inputs_and_outputs ... ok
[INFO] [stdout] test emit::yaml::tests::yaml_output_matches_spec_format ... ok
[INFO] [stdout] test graph::analysis::tests::find_cycle_none_for_dag ... ok
[INFO] [stdout] test emit::yaml::tests::yaml_round_trips_through_serde ... ok
[INFO] [stdout] test emit::yaml::tests::emits_step_with_preconditions ... ok
[INFO] [stdout] test emit::yaml::tests::yaml_emits_parameters ... ok
[INFO] [stdout] test graph::analysis::tests::find_cycle_self_loop ... ok
[INFO] [stdout] test graph::analysis::tests::find_cycle_returns_path ... ok
[INFO] [stdout] test graph::analysis::tests::graph_detects_cycle ... ok
[INFO] [stdout] test graph::analysis::tests::graph_no_cycle_in_dag ... ok
[INFO] [stdout] test graph::analysis::tests::graph_finds_root_nodes ... ok
[INFO] [stdout] test graph::builder::tests::builds_empty_graph ... ok
[INFO] [stdout] test graph::analysis::tests::find_cycle_three_nodes ... ok
[INFO] [stdout] test graph::builder::tests::builds_graph_preserves_edge_data ... ok
[INFO] [stdout] test graph::builder::tests::builds_graph_with_single_node ... ok
[INFO] [stdout] test graph::builder::tests::graph_edge_count_matches_ir ... ok
[INFO] [stdout] test graph::builder::tests::graph_node_count_matches_ir ... ok
[INFO] [stdout] test graph::builder::tests::graph_topological_sort_respects_dependencies ... ok
[INFO] [stdout] test graph::builder::tests::builds_graph_with_two_connected_nodes ... ok
[INFO] [stdout] test graph::traversal::tests::bfs_branching_explores_breadth ... ok
[INFO] [stdout] test graph::traversal::tests::bfs_empty_graph ... ok
[INFO] [stdout] test graph::traversal::tests::bfs_diamond_visits_once ... ok
[INFO] [stdout] test graph::traversal::tests::bfs_multiple_roots ... ok
[INFO] [stdout] test graph::traversal::tests::bfs_linear_chain ... ok
[INFO] [stdout] test graph::builder::tests::builds_graph_preserves_node_data ... ok
[INFO] [stdout] test graph::traversal::tests::compile_with_topological_matches_default ... ok
[INFO] [stdout] test graph::analysis::tests::graph_finds_leaf_nodes ... ok
[INFO] [stdout] test graph::builder::tests::builds_graph_with_multiple_edges ... ok
[INFO] [stdout] test graph::traversal::tests::dfs_linear_chain ... ok
[INFO] [stdout] test graph::traversal::tests::dfs_empty_graph ... ok
[INFO] [stdout] test graph::traversal::tests::dfs_diamond_visits_once ... ok
[INFO] [stdout] test graph::traversal::tests::dfs_multiple_roots ... ok
[INFO] [stdout] test graph::traversal::tests::dfs_branching_explores_depth ... ok
[INFO] [stdout] test graph::traversal::tests::bfs_single_node ... ok
[INFO] [stdout] test graph::traversal::tests::shortest_path_through_intermediate ... ok
[INFO] [stdout] test graph::traversal::tests::display_strategy_names ... ok
[INFO] [stdout] test graph::traversal::tests::shortest_path_same_node ... ok
[INFO] [stdout] test graph::traversal::tests::shortest_path_direct_edge ... ok
[INFO] [stdout] test graph::traversal::tests::shortest_path_no_path_errors ... ok
[INFO] [stdout] test graph::traversal::tests::dfs_single_node ... ok
[INFO] [stdout] test graph::traversal::tests::shortest_path_unknown_node_errors ... ok
[INFO] [stdout] test graph::traversal::tests::shortest_path_picks_shortest ... ok
[INFO] [stdout] test graph::traversal::tests::topological_detects_cycle ... ok
[INFO] [stdout] test graph::traversal::tests::subgraph_empty_selection ... ok
[INFO] [stdout] test graph::traversal::tests::subgraph_excludes_unselected ... ok
[INFO] [stdout] test graph::traversal::tests::topological_linear_chain ... ok
[INFO] [stdout] test graph::traversal::tests::topological_single_node ... ok
[INFO] [stdout] test graph::traversal::tests::subgraph_preserves_internal_edges ... ok
[INFO] [stdout] test graph::traversal::tests::subgraph_preserves_included_nodes ... ok
[INFO] [stdout] test ir::fixture::tests::apply_fixture_does_not_overwrite_existing ... ok
[INFO] [stdout] test graph::traversal::tests::topological_branching ... ok
[INFO] [stdout] test ir::fixture::tests::apply_fixture_merges_fields ... ok
[INFO] [stdout] test graph::traversal::tests::topological_empty_graph ... ok
[INFO] [stdout] test ir::fixture::tests::extract_fixture_ref_from_text ... ok
[INFO] [stdout] test ir::fixture::tests::extract_fixture_ref_returns_none_for_plain_text ... ok
[INFO] [stdout] test ir::fixture::tests::fixture_validation_rejects_duplicate_names ... ok
[INFO] [stdout] test ir::fixture::tests::lower_fixture_multiple_fields ... ok
[INFO] [stdout] test ir::fixture::tests::lower_fixture_preserves_values ... ok
[INFO] [stdout] test ir::fixture::tests::resolve_fixture_by_name ... ok
[INFO] [stdout] test ir::params::tests::no_parameters_returns_empty ... ok
[INFO] [stdout] test ir::fixture::tests::lower_fixture_single_field ... ok
[INFO] [stdout] test ir::fixture::tests::resolve_fixture_unknown_returns_none ... ok
[INFO] [stdout] test ir::params::tests::mixed_text_and_parameters_resolve_correctly ... ok
[INFO] [stdout] test ir::params::tests::unresolved_parameter_marked_as_unresolved ... ok
[INFO] [stdout] test ir::params::tests::parameter_bound_from_edge_data ... ok
[INFO] [stdout] test ir::params::tests::resolves_multiple_parameters ... ok
[INFO] [stdout] test ir::params::tests::parameter_bound_from_fixture ... ok
[INFO] [stdout] test ir::resolve::tests::cross_graph_unknown_graph_errors ... ok
[INFO] [stdout] test ir::params::tests::parameter_binding_source_tracked ... ok
[INFO] [stdout] test ir::params::tests::resolves_parameter_from_available_data ... ok
[INFO] [stdout] test ir::resolve::tests::resolve_invalid_file_errors ... ok
[INFO] [stdout] test ir::resolve::tests::resolve_returns_named_graphs ... ok
[INFO] [stdout] test ir::resolve::tests::resolves_cross_graph_edge ... ok
[INFO] [stdout] test ir::resolve::tests::resolve_missing_file_errors ... ok
[INFO] [stdout] test ir::resolve::tests::cross_graph_passes_data ... ok
[INFO] [stdout] test ir::resolve::tests::cross_graph_preserves_local_edges ... ok
[INFO] [stdout] test ir::resolve::tests::resolve_circular_import_errors ... ok
[INFO] [stdout] test ir::tests::fixture_ref_in_then_step ... ok
[INFO] [stdout] test ir::resolve::tests::cross_graph_unknown_node_errors ... ok
[INFO] [stdout] test ir::resolve::tests::resolves_import_caches_files ... ok
[INFO] [stdout] test ir::tests::fixture_ref_in_given_step ... ok
[INFO] [stdout] test ir::resolve::tests::resolves_import_relative_path ... ok
[INFO] [stdout] test ir::tests::fixture_ref_in_when_step ... ok
[INFO] [stdout] test ir::tests::ir_config_multiple_fields ... ok
[INFO] [stdout] test ir::tests::ir_detects_duplicate_node_names ... ok
[INFO] [stdout] test ir::tests::ir_from_empty_graph ... ok
[INFO] [stdout] test ir::tests::ir_preserves_edge_data ... ok
[INFO] [stdout] test ir::tests::ir_empty_config_when_absent ... ok
[INFO] [stdout] test ir::tests::ir_from_graph_with_nodes ... ok
[INFO] [stdout] test ir::tests::ir_preserves_graph_config ... ok
[INFO] [stdout] test ir::tests::ir_existing_tests_still_pass ... ok
[INFO] [stdout] test ir::tests::ir_resolves_edge_node_references ... ok
[INFO] [stdout] test ir::tests::ir_rejects_edge_to_unknown_node ... ok
[INFO] [stdout] test ir::tests::ir_step_extraction_with_binding_verb ... ok
[INFO] [stdout] test ir::tests::ir_step_extraction_preserves_step_text ... ok
[INFO] [stdout] test ir::tests::ir_step_merges_extracted_and_explicit ... ok
[INFO] [stdout] test ir::tests::ir_step_has_normalized_text ... ok
[INFO] [stdout] test ir::tests::ir_preserves_step_order ... ok
[INFO] [stdout] test ir::tests::ir_rejects_unsatisfied_requires ... ok
[INFO] [stdout] test ir::tests::ir_preserves_node_config ... ok
[INFO] [stdout] test ir::tests::ir_step_data_unaffected_by_normalization ... ok
[INFO] [stdout] test ir::tests::ir_step_extracts_inline_data_from_text ... ok
[INFO] [stdout] test ir::tests::ir_step_explicit_data_takes_precedence ... ok
[INFO] [stdout] test ir::tests::ir_step_no_extraction_when_no_patterns ... ok
[INFO] [stdout] test ir::tests::ir_step_normalized_equivalent_phrasings ... ok
[INFO] [stdout] test ir::tests::step_with_fixture_ref_merges_with_explicit_data ... ok
[INFO] [stdout] test parser::ast::tests::ast_step_fragment_parameter ... ok
[INFO] [stdout] test parser::ast::tests::ast_step_fragment_text ... ok
[INFO] [stdout] test parser::ast::tests::constructs_data_block_multiple_fields ... ok
[INFO] [stdout] test ir::tests::step_with_fixture_ref_gets_fixture_data ... ok
[INFO] [stdout] test parser::ast::tests::constructs_edge_with_passes ... ok
[INFO] [stdout] test parser::ast::tests::constructs_fixture ... ok
[INFO] [stdout] test ir::tests::ir_validates_requires_satisfied_by_incoming_edges ... ok
[INFO] [stdout] test ir::tests::ir_validates_passes_fields ... ok
[INFO] [stdout] test parser::ast::tests::constructs_data_block_single_field ... ok
[INFO] [stdout] test parser::ast::tests::constructs_edge_with_description ... ok
[INFO] [stdout] test ir::tests::ir_step_normalized_strips_articles ... ok
[INFO] [stdout] test parser::ast::tests::constructs_empty_graph ... ok
[INFO] [stdout] test parser::ast::tests::constructs_node_with_description ... ok
[INFO] [stdout] test parser::ast::tests::constructs_graph_with_name ... ok
[INFO] [stdout] test parser::ast::tests::constructs_import ... ok
[INFO] [stdout] test ir::tests::step_with_unknown_fixture_has_no_fixture_data ... ok
[INFO] [stdout] test ir::tests::ir_step_preserves_original_text ... ok
[INFO] [stdout] test parser::ast::tests::constructs_step_and_preserves_parent_type ... ok
[INFO] [stdout] test parser::ast::tests::constructs_step_but_preserves_parent_type ... ok
[INFO] [stdout] test parser::ast::tests::constructs_step_given ... ok
[INFO] [stdout] test parser::ast::tests::constructs_step_then ... ok
[INFO] [stdout] test ir::tests::ir_validates_edge_references_exist ... ok
[INFO] [stdout] test parser::ast::tests::constructs_step_when ... ok
[INFO] [stdout] test parser::ast::tests::constructs_value_variants ... ok
[INFO] [stdout] test parser::ast::tests::constructs_node_with_steps ... ok
[INFO] [stdout] test parser::extract::tests::extracts_after_binding_verb_has ... ok
[INFO] [stdout] test parser::extract::tests::extracts_compound_pattern ... ok
[INFO] [stdout] test parser::extract::tests::extracts_email_pattern ... ok
[INFO] [stdout] test parser::extract::tests::extracts_does_not_extract_from_data_block_text ... ok
[INFO] [stdout] test parser::extract::tests::extracts_handles_multiple_data_points ... ok
[INFO] [stdout] test parser::ast::tests::node_with_requires ... ok
[INFO] [stdout] test parser::ast::tests::node_with_tags ... ok
[INFO] [stdout] test parser::ast::tests::step_with_inline_data ... ok
[INFO] [stdout] test parser::extract::tests::extracts_after_binding_verb_is ... ok
[INFO] [stdout] test parser::extract::tests::extracts_url_pattern ... ok
[INFO] [stdout] test parser::ast::tests::graph_with_full_structure ... ok
[INFO] [stdout] test parser::extract::tests::extracts_ignores_quoted_strings_without_preceding_key ... ok
[INFO] [stdout] test parser::lexer::tests::rejects_unterminated_string ... ok
[INFO] [stdout] test parser::extract::tests::extracts_multiple_quoted_values ... ok
[INFO] [stdout] test parser::extract::tests::extracts_number_after_word ... ok
[INFO] [stdout] test parser::extract::tests::extracts_preserves_key_name ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_and_but_with_free_text ... ok
[INFO] [stdout] test parser::extract::tests::extracts_after_binding_verb_with ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_arrow_operator ... ok
[INFO] [stdout] test parser::extract::tests::extracts_nothing_from_plain_text ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_all_keywords ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_comma_in_data_block ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_comment_ignores_content ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_comment_line ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_complete_node_block ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_describe_with_string ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_empty_input ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_free_text_after_given ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_free_text_after_when ... ok
[INFO] [stdout] test parser::extract::tests::extracts_quoted_string_after_word ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_braces_and_brackets ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_colon_in_data_block ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_complete_edge_definition ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_free_text_after_then ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_free_text_stops_at_data_block ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_free_text_without_parameters_unchanged ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_identifier_simple ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_identifier_with_dots ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_identifier_with_underscores ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_inline_data_block ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_multiline_node ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_multiple_parameters_in_free_text ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_parameter_in_free_text ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_parameter_preserves_surrounding_text ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_single_keyword_graph ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_single_keyword_node ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_string_literal ... ok
[INFO] [stdout] test parser::lexer::tests::tokenizes_string_with_escaped_quotes ... ok
[INFO] [stdout] test parser::lexer::tests::tracks_line_and_column_spans ... ok
[INFO] [stdout] test parser::normalize::tests::normalize_collapses_whitespace ... ok
[INFO] [stdout] test parser::normalize::tests::normalize_identifies_action_verb_submits ... ok
[INFO] [stdout] test parser::normalize::tests::normalize_equivalent_phrasings_match ... ok
[INFO] [stdout] test parser::normalize::tests::normalize_identifies_binding_verb_has ... ok
[INFO] [stdout] test parser::normalize::tests::normalize_identifies_binding_verb_with ... ok
[INFO] [stdout] test parser::normalize::tests::normalize_identifies_binding_verb_is ... ok
[INFO] [stdout] test parser::normalize::tests::normalize_preserves_original_text ... ok
[INFO] [stdout] test parser::normalize::tests::normalize_strips_determiner_some ... ok
[INFO] [stdout] test parser::parse::tests::error_duplicate_node_names ... ok
[INFO] [stdout] test parser::parse::tests::error_edge_invalid_arrow ... ok
[INFO] [stdout] test parser::parse::tests::error_edge_missing_target ... ok
[INFO] [stdout] test parser::normalize::tests::normalize_lowercases_for_comparison ... ok
[INFO] [stdout] test parser::normalize::tests::normalize_strips_leading_article_an ... ok
[INFO] [stdout] test parser::normalize::tests::normalize_strips_leading_article_the ... ok
[INFO] [stdout] test parser::parse::tests::error_missing_node_name ... ok
[INFO] [stdout] test parser::parse::tests::error_reports_column_number ... ok
[INFO] [stdout] test parser::parse::tests::error_unterminated_string_in_step ... ok
[INFO] [stdout] test parser::parse::tests::error_missing_node_brace ... ok
[INFO] [stdout] test parser::parse::tests::error_reports_helpful_message ... ok
[INFO] [stdout] test parser::parse::tests::parses_edge_simple ... ok
[INFO] [stdout] test parser::parse::tests::error_missing_graph_brace ... ok
[INFO] [stdout] test parser::parse::tests::error_invalid_data_block_syntax ... ok
[INFO] [stdout] test parser::parse::tests::error_missing_graph_name ... ok
[INFO] [stdout] test parser::normalize::tests::normalize_strips_leading_article_a ... ok
[INFO] [stdout] test parser::parse::tests::error_edge_referencing_unknown_node ... ok
[INFO] [stdout] test parser::parse::tests::parses_empty_graph ... ok
[INFO] [stdout] test parser::parse::tests::parses_edge_with_passes_and_description ... ok
[INFO] [stdout] test parser::parse::tests::error_unclosed_graph ... ok
[INFO] [stdout] test parser::parse::tests::error_step_outside_node ... ok
[INFO] [stdout] test parser::parse::tests::error_unclosed_node ... ok
[INFO] [stdout] test parser::parse::tests::error_reports_line_number ... ok
[INFO] [stdout] test parser::parse::tests::parses_graph_with_multiple_edges ... ok
[INFO] [stdout] test parser::parse::tests::parses_edge_with_passes ... ok
[INFO] [stdout] test parser::parse::tests::parses_graph_with_multiple_nodes ... ok
[INFO] [stdout] test parser::parse::tests::parses_graph_with_name ... ok
[INFO] [stdout] test parser::parse::tests::parses_edge_with_description ... ok
[INFO] [stdout] test parser::parse::tests::parses_graph_with_node_and_description ... ok
[INFO] [stdout] test parser::parse::tests::parses_graph_with_single_empty_node ... ok
[INFO] [stdout] test parser::parse::tests::parses_node_with_and_continuation ... ok
[INFO] [stdout] test parser::parse::tests::parses_node_with_full_given_when_then ... ok
[INFO] [stdout] test parser::parse::tests::parses_node_with_but_continuation ... ok
[INFO] [stdout] test parser::parse::tests::parses_node_with_given_step ... ok
[INFO] [stdout] test parser::parse::tests::parses_fixture_definition ... ok
[INFO] [stdout] test parser::parse::tests::parses_graph_with_config ... ok
[INFO] [stdout] test parser::parse::tests::parses_import_statement ... ok
[INFO] [stdout] test parser::parse::tests::parses_node_with_requires ... ok
[INFO] [stdout] test parser::parse::tests::parses_node_with_string_data_in_step ... ok
[INFO] [stdout] test parser::parse::tests::parses_node_with_inline_data_block ... ok
[INFO] [stdout] test parser::parse::tests::parses_node_with_then_step ... ok
[INFO] [stdout] test parser::parse::tests::parses_step_without_parameters_has_empty_fragments ... ok
[INFO] [stdout] test parser::parse::tests::parses_step_parameters_in_fragments ... ok
[INFO] [stdout] test plan::compiler::tests::compiles_branching_graph_topologically ... ok
[INFO] [stdout] test plan::compiler::tests::compiles_empty_graph_to_empty_plan ... ok
[INFO] [stdout] test parser::parse::tests::parses_full_example_auth_graph ... ok
[INFO] [stdout] test parser::parse::tests::parses_node_with_tags ... ok
[INFO] [stdout] test parser::parse::tests::parses_step_with_parameter ... ok
[INFO] [stdout] test parser::parse::tests::parses_node_with_when_step ... ok
[INFO] [stdout] test plan::compiler::tests::compiles_single_node_plan ... ok
[INFO] [stdout] test plan::compiler::tests::plan_includes_graph_config ... ok
[INFO] [stdout] test plan::compiler::tests::plan_config_absent_when_no_config_block ... ok
[INFO] [stdout] test parser::parse::tests::parses_step_with_multiple_parameters ... ok
[INFO] [stdout] test plan::compiler::tests::compiles_linear_chain_in_order ... ok
[INFO] [stdout] test plan::compiler::tests::plan_includes_depends_on ... ok
[INFO] [stdout] test plan::compiler::tests::plan_includes_inputs_from_edges ... ok
[INFO] [stdout] test plan::compiler::tests::plan_includes_node_descriptions ... ok
[INFO] [stdout] test plan::compiler::tests::plan_includes_outputs_from_passes ... ok
[INFO] [stdout] test plan::compiler::tests::plan_includes_steps_per_node ... ok
[INFO] [stdout] test plan::compiler::tests::plan_metadata_includes_node_and_edge_counts ... ok
[INFO] [stdout] test plan::compiler::tests::plan_step_includes_node_config ... ok
[INFO] [stdout] test plan::compiler::tests::plan_step_includes_parameters ... ok
[INFO] [stdout] test plan::filter::tests::filter_nodes_no_predicate_returns_all ... ok
[INFO] [stdout] test plan::filter::tests::filter_nodes_includes_matching ... ok
[INFO] [stdout] test plan::filter::tests::filter_plan_preserves_order ... ok
[INFO] [stdout] test plan::compiler::tests::plan_step_order_is_deterministic ... ok
[INFO] [stdout] test plan::compiler::tests::plan_step_parameters_show_binding_source ... ok
[INFO] [stdout] test plan::compiler::tests::plan_step_without_parameters_omits_field ... ok
[INFO] [stdout] test plan::filter::tests::filter_plan_removes_unmatched ... ok
[INFO] [stdout] test plan::filter::tests::filter_plan_updates_metadata ... ok
[INFO] [stdout] test plan::filter::tests::filter_nodes_excludes_non_matching ... ok
[INFO] [stdout] test plan::filter::tests::parse_filter_and_not ... ok
[INFO] [stdout] test plan::filter::tests::parse_filter_not ... ok
[INFO] [stdout] test runner::backend::tests::backend_error_display ... ok
[INFO] [stdout] test runner::backend::tests::generated_harness_with_metadata ... ok
[INFO] [stdout] test plan::filter::tests::parse_filter_comma_separated ... ok
[INFO] [stdout] test runner::backend::tests::mock_backend_generate_and_cleanup ... ok
[INFO] [stdout] test runner::backend::tests::mock_backend_execute_step_passed ... ok
[INFO] [stdout] test runner::backend::tests::mock_backend_name ... ok
[INFO] [stdout] test runner::backends::http::request::tests::build_json_body_from_action_data ... ok
[INFO] [stdout] test runner::backend::tests::mock_backend_detect_project ... ok
[INFO] [stdout] test plan::filter::tests::parse_filter_single_tag ... ok
[INFO] [stdout] test runner::backends::http::request::tests::build_json_body_from_precondition_data ... ok
[INFO] [stdout] test runner::backend::tests::generated_harness_construction ... ok
[INFO] [stdout] test runner::backends::http::request::tests::build_request_data_substitutes_input_references ... ok
[INFO] [stdout] test runner::backends::http::request::tests::build_request_does_not_override_existing_content_type ... ok
[INFO] [stdout] test runner::backend::tests::mock_backend_execute_step_failed ... ok
[INFO] [stdout] test runner::backend::tests::backend_error_kinds ... ok
[INFO] [stdout] test runner::backends::http::request::tests::build_request_base_url_trailing_slash ... ok
[INFO] [stdout] test runner::backends::http::request::tests::build_json_body_empty_when_no_data ... ok
[INFO] [stdout] test runner::backends::http::request::tests::build_request_get_no_body ... ok
[INFO] [stdout] test runner::backends::http::request::tests::build_request_path_variable_substitution ... ok
[INFO] [stdout] test runner::backends::http::response::tests::body_empty_assertion_whitespace_only ... ok
[INFO] [stdout] test runner::backends::http::request::tests::build_request_multiple_path_variables ... ok
[INFO] [stdout] test runner::backends::http::request::tests::build_request_post_sets_content_type ... ok
[INFO] [stdout] test runner::backends::http::response::tests::extract_outputs_from_json ... ok
[INFO] [stdout] test runner::backends::http::request::tests::build_request_post_with_data ... ok
[INFO] [stdout] test runner::backends::http::response::tests::extract_outputs_missing_field_skipped ... ok
[INFO] [stdout] test runner::backends::http::response::tests::extract_quoted_string_simple ... ok
[INFO] [stdout] test runner::backends::http::request::tests::build_request_put_with_data ... ok
[INFO] [stdout] test runner::backends::http::request::tests::build_request_simple_get ... ok
[INFO] [stdout] test runner::backends::http::response::tests::extract_outputs_invalid_json_returns_empty ... ok
[INFO] [stdout] test runner::backends::http::request::tests::build_request_with_default_headers ... ok
[INFO] [stdout] test runner::backends::http::response::tests::multiple_assertions_evaluated ... ok
[INFO] [stdout] test runner::backends::http::request::tests::substitute_path_no_placeholders ... ok
[INFO] [stdout] test runner::backends::http::request::tests::substitute_path_single_variable ... ok
[INFO] [stdout] test runner::backends::http::request::tests::substitute_path_unresolved_placeholder_left_intact ... ok
[INFO] [stdout] test runner::backends::http::response::tests::extract_quoted_string_none_without_quotes ... ok
[INFO] [stdout] test runner::backends::http::response::tests::extract_outputs_numeric_value_as_string ... ok
[INFO] [stdout] test runner::backends::http::response::tests::status_assertion_with_response_status_pattern ... ok
[INFO] [stdout] test runner::backends::http::response::tests::status_code_assertion_passes ... ok
[INFO] [stdout] test runner::backends::http::response::tests::json_field_assertion_invalid_json ... ok
[INFO] [stdout] test runner::backends::http::response::tests::body_contains_assertion_fails ... ok
[INFO] [stdout] test runner::backends::http::response::tests::body_contains_assertion_passes ... ok
[INFO] [stdout] test runner::backends::http::response::tests::body_empty_assertion_fails ... ok
[INFO] [stdout] test runner::backends::http::response::tests::status_code_assertion_fails ... ok
[INFO] [stdout] test runner::backends::http::response::tests::json_field_assertion_field_not_found ... ok
[INFO] [stdout] test runner::backends::http::response::tests::unrecognized_assertion_fails ... ok
[INFO] [stdout] test runner::backends::http::tests::cleanup_succeeds ... ok
[INFO] [stdout] test runner::backends::http::response::tests::body_empty_assertion_passes ... ok
[INFO] [stdout] test runner::backends::http::tests::generate_harness_returns_empty ... ok
[INFO] [stdout] test runner::backends::http::tests::http_backend_default_config ... ok
[INFO] [stdout] test runner::backends::http::tests::http_backend_custom_config ... ok
[INFO] [stdout] test runner::backends::http::tests::http_backend_does_not_auto_detect ... ok
[INFO] [stdout] test runner::backends::http::tests::default_backend_is_equivalent_to_new_default_config ... ok
[INFO] [stdout] test runner::backends::http::tests::http_backend_name ... ok
[INFO] [stdout] test runner::backends::http::response::tests::json_field_assertion_passes ... ok
[INFO] [stdout] test runner::backends::http::tests::http_config_from_plan_config ... ok
[INFO] [stdout] test runner::backends::http::response::tests::json_field_assertion_fails_wrong_value ... ok
[INFO] [stdout] test runner::backends::http::tests::step_with_missing_inputs_fails ... ok
[INFO] [stdout] test runner::backends::http::tests::http_config_from_plan_config_with_timeout ... ok
[INFO] [stdout] test runner::backends::http::tests::step_with_no_actions_is_skipped ... ok
[INFO] [stdout] test runner::backends::http::tests::empty_base_url_returns_clear_error ... ok
[INFO] [stdout] test runner::backends::http_pattern::tests::detect_http_pattern_delete ... ok
[INFO] [stdout] test runner::backends::http::tests::step_without_http_pattern_is_skipped ... ok
[INFO] [stdout] test runner::backends::http::tests::connection_refused_returns_error ... ok
[INFO] [stdout] test runner::backends::http::tests::generate_harness_ignores_plan_content ... ok
[INFO] [stdout] test runner::backends::http_pattern::tests::detect_http_pattern_post_with_path ... ok
[INFO] [stdout] test runner::backends::http_pattern::tests::detect_http_pattern_patch ... ok
[INFO] [stdout] test runner::backends::http_pattern::tests::extract_status_code_valid ... ok
[INFO] [stdout] test runner::backends::http_pattern::tests::detect_http_pattern_put ... ok
[INFO] [stdout] test runner::backends::http_pattern::tests::no_http_pattern_for_plain_text ... ok
[INFO] [stdout] test runner::backends::http_pattern::tests::detect_status_in_api_returns ... ok
[INFO] [stdout] test runner::backends::http_pattern::tests::detect_ignores_non_status_numbers ... ok
[INFO] [stdout] test runner::backends::rust::discover::tests::function_name_and_defaults_to_given ... ok
[INFO] [stdout] test runner::backends::rust::discover::tests::function_name_collapses_underscores ... ok
[INFO] [stdout] test runner::backends::http_pattern::tests::detect_status_in_response ... ok
[INFO] [stdout] test runner::backends::rust::discover::tests::function_name_but_inherits_parent ... ok
[INFO] [stdout] test runner::backends::http_pattern::tests::detect_http_pattern_get ... ok
[INFO] [stdout] test runner::backends::http::tests::http_config_from_plan_config_missing_keys_uses_defaults ... ok
[INFO] [stdout] test runner::backends::rust::discover::tests::function_name_and_inherits_parent ... ok
[INFO] [stdout] test runner::backends::rust::discover::tests::function_name_given_step ... ok
[INFO] [stdout] test runner::backends::rust::discover::tests::search_paths_defaults ... ok
[INFO] [stdout] test runner::backends::rust::discover::tests::function_name_strips_quoted_strings ... ok
[INFO] [stdout] test runner::backends::rust::discover::tests::function_name_then_step ... ok
[INFO] [stdout] test runner::backends::rust::mapping::tests::mapping_detect_http_pattern_get ... ok
[INFO] [stdout] test runner::backends::rust::discover::tests::function_name_truncates_at_80 ... ok
[INFO] [stdout] test runner::backends::rust::discover::tests::function_name_when_step ... ok
[INFO] [stdout] test runner::backends::rust::discover::tests::scan_detects_hashmap_parameter ... ok
[INFO] [stdout] test runner::backends::rust::discover::tests::scan_detects_hashmap_return ... ok
[INFO] [stdout] test runner::backends::rust::discover::tests::scan_finds_given_function ... ok
[INFO] [stdout] test runner::backends::rust::discover::tests::scan_finds_when_and_then_functions ... ok
[INFO] [stdout] test runner::backends::rust::discover::tests::scan_ignores_non_step_functions ... ok
[INFO] [stdout] test runner::backends::rust::discover::tests::search_paths_config_override ... ok
[INFO] [stdout] test runner::backends::rust::discover::tests::search_paths_config_absolute ... ok
[INFO] [stdout] test runner::backends::http_pattern::tests::extract_status_code_out_of_range ... ok
[INFO] [stdout] test runner::backends::rust::mapping::tests::mapping_detect_ignores_non_status_numbers ... ok
[INFO] [stdout] test runner::backends::rust::mapping::tests::mapping_generates_valid_rust_code ... ok
[INFO] [stdout] test runner::backends::rust::mapping::tests::mapping_http_get_pattern ... ok
[INFO] [stdout] test runner::backends::rust::mapping::tests::mapping_http_post_pattern ... ok
[INFO] [stdout] test runner::backends::rust::mapping::tests::mapping_http_with_expected_status ... ok
[INFO] [stdout] test runner::backends::rust::mapping::tests::mapping_no_http_pattern_for_plain_text ... ok
[INFO] [stdout] test runner::backends::rust::mapping::tests::mapping_skeleton_for_plain_text ... ok
[INFO] [stdout] test runner::backends::rust::mapping::tests::mapping_skeleton_given_vs_when_vs_then ... ok
[INFO] [stdout] test runner::backends::rust::output::tests::extract_panic_message_no_quotes ... ok
[INFO] [stdout] test runner::backends::rust::output::tests::extract_panic_message_single_quotes ... ok
[INFO] [stdout] test runner::backends::rust::output::tests::parse_all_passed ... ok
[INFO] [stdout] test runner::backends::rust::output::tests::parse_compilation_error_detected ... ok
[INFO] [stdout] test runner::backends::rust::output::tests::parse_empty_output ... ok
[INFO] [stdout] test runner::backends::rust::output::tests::parse_ignored_tests ... ok
[INFO] [stdout] test runner::backends::rust::output::tests::parse_multiple_failures ... ok
[INFO] [stdout] test runner::backends::rust::output::tests::parse_no_tests_found ... ok
[INFO] [stdout] test runner::backends::rust::output::tests::parse_single_failure ... ok
[INFO] [stdout] test runner::backends::rust::output::tests::parse_test_name_extraction ... ok
[INFO] [stdout] test runner::backends::rust::resolve::tests::and_step_uses_parent_type ... ok
[INFO] [stdout] test runner::backends::rust::resolve::tests::fuzzy_match_requires_word_boundary ... ok
[INFO] [stdout] test runner::backends::rust::resolve::tests::exact_match ... ok
[INFO] [stdout] test runner::backends::rust::resolve::tests::fuzzy_match_prefers_longest ... ok
[INFO] [stdout] test runner::backends::rust::resolve::tests::plan_all_bound ... ok
[INFO] [stdout] test runner::backends::rust::resolve::tests::plan_empty_bindings ... ok
[INFO] [stdout] test runner::backends::rust::output::tests::parse_test_stdout_capture ... ok
[INFO] [stdout] test runner::backends::rust::resolve::tests::fuzzy_match_shorter_binding ... ok
[INFO] [stdout] test runner::backends::rust::tests::build_command_includes_cargo_test ... ok
[INFO] [stdout] test runner::backends::rust::resolve::tests::plan_mixed_bound_unbound ... ok
[INFO] [stdout] test runner::backends::rust::tests::build_command_with_test_name_filter ... ok
[INFO] [stdout] test runner::backends::rust::tests::build_command_includes_extra_args ... ok
[INFO] [stdout] test runner::backends::rust::tests::escape_rust_string_handles_specials ... ok
[INFO] [stdout] test runner::backends::rust::resolve::tests::resolve_with_data_binding ... ok
[INFO] [stdout] test runner::backends::rust::resolve::tests::unbound_report_empty_when_all_bound ... ok
[INFO] [stdout] test runner::backends::rust::resolve::tests::unbound_report_lists_missing ... ok
[INFO] [stdout] test runner::backends::rust::output::tests::parse_failure_message_extraction ... ok
[INFO] [stdout] test runner::backends::rust::mapping::tests::mapping_detect_http_pattern_post_with_path ... ok
[INFO] [stdout] test runner::backends::rust::mapping::tests::mapping_detect_status_in_response ... ok
[INFO] [stdout] test runner::backends::rust::resolve::tests::no_match ... ok
[INFO] [stdout] test runner::backends::rust::tests::generate_binding_imports_none_bound ... ok
[INFO] [stdout] test runner::backends::rust::tests::generate_binding_imports_with_bound ... ok
[INFO] [stdout] test runner::backends::rust::tests::generate_bound_call_data_available_but_binding_ignores ... ok
[INFO] [stdout] test runner::backends::rust::tests::generate_bound_call_no_data ... ok
[INFO] [stdout] test runner::backends::rust::tests::generate_bound_call_return_no_data ... ok
[INFO] [stdout] test runner::backends::rust::tests::generate_bound_call_with_data ... ok
[INFO] [stdout] test runner::backends::rust::tests::generate_test_file_escapes_special_chars ... ok
[INFO] [stdout] test runner::backends::rust::tests::generate_test_file_header ... ok
[INFO] [stdout] test runner::backends::rust::tests::generate_test_file_multiple_steps ... ok
[INFO] [stdout] test runner::backends::rust::tests::generate_test_file_with_bindings_falls_back_to_skeleton ... ok
[INFO] [stdout] test runner::backends::rust::tests::generate_test_file_with_bindings_mixed ... ok
[INFO] [stdout] test runner::backends::rust::tests::generate_test_file_with_bindings_uses_calls ... ok
[INFO] [stdout] test runner::backends::rust::tests::generate_bound_call_with_return ... ok
[INFO] [stdout] test runner::backends::rust::tests::generated_harness_data_block_values_escaped ... ok
[INFO] [stdout] test runner::backends::rust::tests::generate_test_fn_with_when_then ... ok
[INFO] [stdout] test runner::backends::rust::tests::generate_test_fn_single_given ... ok
[INFO] [stdout] test runner::backends::rust::tests::generate_test_fn_multiple_givens ... ok
[INFO] [stdout] test runner::backends::rust::tests::generated_harness_includes_all_plan_steps ... ok
[INFO] [stdout] test runner::backends::rust::tests::generate_test_file_single_step ... ok
[INFO] [stdout] test runner::backends::rust::tests::generate_test_fn_with_and_but ... ok
[INFO] [stdout] test runner::backends::rust::tests::generate_test_fn_with_data ... ok
[INFO] [stdout] test runner::backends::rust::tests::generated_harness_is_valid_rust_syntax ... ok
[INFO] [stdout] test runner::backends::rust::tests::to_snake_case_converts_pascal ... ok
[INFO] [stdout] test runner::backends::rust::tests::rust_backend_detect_project_with_cargo_toml ... ok
[INFO] [stdout] test runner::backends::shell::script::tests::generate_data_exports_escapes_special_chars ... ok
[INFO] [stdout] test runner::backends::shell::script::tests::generate_data_exports_single ... ok
[INFO] [stdout] test runner::backends::shell::script::tests::generate_step_script_full_given_when_then ... ok
[INFO] [stdout] test runner::backends::shell::script::tests::generate_step_script_given_with_data ... ok
[INFO] [stdout] test runner::backends::shell::script::tests::generate_step_script_then_assertion ... ok
[INFO] [stdout] test runner::backends::shell::script::tests::generate_step_script_when_action ... ok
[INFO] [stdout] test runner::backends::shell::script::tests::generate_step_script_header ... ok
[INFO] [stdout] test runner::backends::shell::script::tests::generate_step_script_with_description ... ok
[INFO] [stdout] test runner::backends::shell::script::tests::shell_escape_backticks ... ok
[INFO] [stdout] test runner::backends::shell::script::tests::shell_escape_backslashes ... ok
[INFO] [stdout] test runner::backends::shell::script::tests::shell_escape_quotes ... ok
[INFO] [stdout] test runner::backends::shell::script::tests::shell_escape_multiple_special_chars ... ok
[INFO] [stdout] test runner::backends::shell::script::tests::shell_escape_normal_text_unchanged ... ok
[INFO] [stdout] test runner::backends::shell::script::tests::generate_data_exports_multiple ... ok
[INFO] [stdout] test runner::backends::shell::tests::process_output_timed_out_flag ... ok
[INFO] [stdout] test runner::backends::rust::tests::rust_backend_name ... ok
[INFO] [stdout] test runner::backends::shell::script::tests::shell_escape_dollar_signs ... ok
[INFO] [stdout] test runner::backends::shell::tests::generate_harness_writes_scripts ... ok
[INFO] [stdout] test runner::backends::rust::tests::rust_backend_detect_project_without_cargo_toml ... ok
[INFO] [stdout] test runner::backends::rust::tests::run_cargo_test_spawn_failure ... ok
[INFO] [stdout] test runner::backends::rust::tests::generated_harness_writes_to_disk ... ok
[INFO] [stdout] test runner::backends::shell::tests::generate_harness_empty_plan ... ok
[INFO] [stdout] test runner::backends::shell::tests::cleanup_removes_harness_directory ... ok
[INFO] [stdout] test runner::backends::shell::tests::cleanup_handles_already_deleted ... ok
[INFO] [stdout] test runner::backends::shell::tests::process_output_duration_recorded ... ok
[INFO] [stdout] test runner::backends::shell::tests::shell_backend_custom_shell_args ... ok
[INFO] [stdout] test runner::backends::shell::tests::generate_harness_creates_entry_point ... ok
[INFO] [stdout] test runner::backends::shell::tests::generate_harness_scripts_are_executable ... ok
[INFO] [stdout] test runner::backends::shell::tests::shell_backend_custom_shell ... ok
[INFO] [stdout] test runner::context::tests::context_default_timeout ... ok
[INFO] [stdout] test runner::backends::shell::tests::shell_backend_name ... ok
[INFO] [stdout] test runner::context::tests::context_record_outputs_single_step ... ok
[INFO] [stdout] test runner::backends::shell::tests::shell_backend_default_matches_new ... ok
[INFO] [stdout] test runner::backends::shell::tests::shell_backend_does_not_auto_detect ... ok
[INFO] [stdout] test runner::context::tests::context_new_defaults ... ok
[INFO] [stdout] test runner::context::tests::context_record_outputs_multiple_steps ... ok
[INFO] [stdout] test runner::context::tests::extract_outputs_handles_json_with_special_chars ... ok
[INFO] [stdout] test runner::context::tests::context_resolve_inputs_multiple_sources ... ok
[INFO] [stdout] test runner::context::tests::extract_outputs_ignores_non_marker_lines ... ok
[INFO] [stdout] test runner::context::tests::extract_outputs_invalid_json_skipped ... ok
[INFO] [stdout] test runner::context::tests::extract_outputs_multiple_fields ... ok
[INFO] [stdout] test runner::context::tests::extract_outputs_multiple_markers_merges ... ok
[INFO] [stdout] test runner::context::tests::extract_outputs_no_marker_returns_empty ... ok
[INFO] [stdout] test runner::context::tests::extract_outputs_single_field ... ok
[INFO] [stdout] test runner::context::tests::extract_outputs_marker_at_end_of_stdout ... ok
[INFO] [stdout] test runner::context::tests::input_env_var_name_convention ... ok
[INFO] [stdout] test runner::display::tests::display_run_header_format ... ok
[INFO] [stdout] test runner::display::tests::display_step_failed_format ... ok
[INFO] [stdout] test runner::display::tests::display_step_passed_format ... ok
[INFO] [stdout] test runner::display::tests::display_step_start_format ... ok
[INFO] [stdout] test runner::display::tests::display_step_skipped_format ... ok
[INFO] [stdout] test runner::display::tests::display_summary_all_passed ... ok
[INFO] [stdout] test runner::display::tests::display_summary_timing ... ok
[INFO] [stdout] test runner::display::tests::display_summary_with_failures ... ok
[INFO] [stdout] test runner::backends::shell::tests::shell_backend_new_defaults ... ok
[INFO] [stdout] test runner::executor::tests::execute_by_levels_all_pass ... ok
[INFO] [stdout] test runner::context::tests::context_resolve_empty_inputs_succeeds ... ok
[INFO] [stdout] test runner::context::tests::context_resolve_inputs_from_upstream ... ok
[INFO] [stdout] test runner::context::tests::context_resolve_inputs_missing_field_errors ... ok
[INFO] [stdout] test runner::context::tests::context_resolve_inputs_missing_node_errors ... ok
[INFO] [stdout] test runner::executor::tests::capture_outputs_empty_stdout ... ok
[INFO] [stdout] test runner::executor::tests::capture_outputs_from_stdout ... ok
[INFO] [stdout] test runner::executor::tests::execution_levels_independent_nodes ... ok
[INFO] [stdout] test runner::executor::tests::execution_levels_linear_chain ... ok
[INFO] [stdout] test runner::executor::tests::inject_inputs_multiple_sources ... ok
[INFO] [stdout] test runner::executor::tests::execute_by_levels_failed_skips_dependents ... ok
[INFO] [stdout] test runner::executor::tests::execute_by_levels_fail_fast_stops ... ok
[INFO] [stdout] test runner::executor::tests::inject_inputs_resolves_from_context ... ok
[INFO] [stdout] test runner::executor::tests::run_error_display ... ok
[INFO] [stdout] test runner::executor::tests::run_error_kind_display ... ok
[INFO] [stdout] test runner::executor::tests::inject_inputs_no_inputs_succeeds ... ok
[INFO] [stdout] test runner::executor::tests::execute_by_levels_sequential_in_order ... ok
[INFO] [stdout] test runner::executor::tests::execution_levels_diamond_graph ... ok
[INFO] [stdout] test runner::executor::tests::execution_levels_empty_plan ... ok
[INFO] [stdout] test runner::executor::tests::inject_inputs_missing_source_errors ... ok
[INFO] [stdout] test runner::executor::tests::run_summary_from_mixed_results ... ok
[INFO] [stdout] test runner::executor::tests::inject_inputs_env_var_naming_convention ... ok
[INFO] [stdout] test runner::executor::tests::runner_auto_detects_backend ... ok
[INFO] [stdout] test runner::executor::tests::runner_dependency_failure_skips_dependents ... ok
[INFO] [stdout] test runner::executor::tests::runner_executes_steps_in_plan_order ... ok
[INFO] [stdout] test runner::executor::tests::runner_explicit_backend_not_found ... ok
[INFO] [stdout] test runner::executor::tests::runner_auto_detect_fails_no_match ... ok
[INFO] [stdout] test runner::executor::tests::runner_new_with_defaults ... ok
[INFO] [stdout] test runner::executor::tests::runner_fail_fast_skips_remaining ... ok
[INFO] [stdout] test runner::executor::tests::runner_summary_all_passed ... ok
[INFO] [stdout] test runner::executor::tests::runner_plan_name_in_result ... ok
[INFO] [stdout] test runner::executor::tests::runner_fail_fast_stops_on_failure ... ok
[INFO] [stdout] test runner::executor::tests::runner_harness_generation_failure ... ok
[INFO] [stdout] test runner::executor::tests::runner_records_step_results ... ok
[INFO] [stdout] test runner::registry::tests::auto_detect_rust_project ... ok
[INFO] [stdout] test runner::executor::tests::runner_selects_explicit_backend ... ok
[INFO] [stdout] test runner::executor::tests::runner_summary_with_failures ... ok
[INFO] [stdout] test runner::registry::tests::auto_detect_skips_http ... ok
[INFO] [stdout] test runner::registry::tests::auto_detect_skips_shell ... ok
[INFO] [stdout] test runner::registry::tests::registry_default_matches_new ... ok
[INFO] [stdout] test runner::registry::tests::registry_detect_rust_project ... ok
[INFO] [stdout] test runner::registry::tests::registry_get_rust_by_name ... ok
[INFO] [stdout] test runner::registry::tests::registry_detect_no_match_returns_none ... ok
[INFO] [stdout] test runner::registry::tests::registry_get_unknown_returns_none ... ok
[INFO] [stdout] test runner::registry::tests::registry_new_does_not_have_http_backend ... ok
[INFO] [stdout] test runner::registry::tests::registry_register_additional_backend ... ok
[INFO] [stdout] test runner::report::tests::report_from_all_passed_run ... ok
[INFO] [stdout] test runner::report::tests::report_from_mixed_results ... ok
[INFO] [stdout] test runner::report::tests::report_includes_assertions ... ok
[INFO] [stdout] test runner::report::tests::report_includes_error_detail ... ok
[INFO] [stdout] test runner::registry::tests::registry_new_has_rust_backend ... ok
[INFO] [stdout] test runner::registry::tests::registry_get_shell_by_name ... ok
[INFO] [stdout] test runner::registry::tests::registry_new_has_shell_backend ... ok
[INFO] [stdout] test runner::report::tests::report_step_ordering ... ok
[INFO] [stdout] test runner::report::tests::report_summary_failure_when_any_failed ... ok
[INFO] [stdout] test runner::registry::tests::registry_with_http_has_all_three ... ok
[INFO] [stdout] test runner::report::tests::report_includes_timing ... ok
[INFO] [stdout] test runner::report::tests::report_summary_success_when_all_passed ... ok
[INFO] [stdout] test runner::result::tests::step_error_compilation_error ... ok
[INFO] [stdout] test runner::result::tests::step_error_kind_display ... ok
[INFO] [stdout] test runner::result::tests::step_error_timeout ... ok
[INFO] [stdout] test runner::result::tests::step_error_assertion_failed ... ok
[INFO] [stdout] test runner::result::tests::assertion_result_failed_with_message ... ok
[INFO] [stdout] test runner::result::tests::step_result_captures_stdout_stderr ... ok
[INFO] [stdout] test runner::result::tests::step_result_failed_constructor ... ok
[INFO] [stdout] test runner::report::tests::report_preserves_plan_metadata ... ok
[INFO] [stdout] test runner::result::tests::step_result_passed_constructor ... ok
[INFO] [stdout] test runner::result::tests::assertion_result_passed ... ok
[INFO] [stdout] test runner::result::tests::step_result_with_assertions ... ok
[INFO] [stdout] test runner::result::tests::step_result_skipped_has_zero_duration ... ok
[INFO] [stdout] test runner::result::tests::step_result_with_outputs ... ok
[INFO] [stdout] test runner::result::tests::step_status_display ... ok
[INFO] [stdout] test util::diagnostics::tests::diagnostic_handles_eof_span ... ok
[INFO] [stdout] test runner::result::tests::step_status_equality ... ok
[INFO] [stdout] test util::diagnostics::tests::diagnostic_help_text_rendered ... ok
[INFO] [stdout] test util::diagnostics::tests::diagnostic_duplicate_node_shows_original ... ok
[INFO] [stdout] test util::diagnostics::tests::diagnostic_multichar_span ... ok
[INFO] [stdout] test util::diagnostics::tests::diagnostic_renders_parse_error ... ok
[INFO] [stdout] test util::diagnostics::tests::diagnostic_eof_error_points_to_end ... ok
[INFO] [stdout] test util::diagnostics::tests::diagnostic_includes_filename ... ok
[INFO] [stdout] test util::diagnostics::tests::diagnostic_secondary_span_rendered ... ok
[INFO] [stdout] test util::diagnostics::tests::diagnostic_includes_source_line ... ok
[INFO] [stdout] test util::diagnostics::tests::diagnostic_unclosed_brace_has_help ... ok
[INFO] [stdout] test util::diagnostics::tests::diagnostic_underlines_span_range ... ok
[INFO] [stdout] test util::diagnostics::tests::diagnostic_unclosed_block_shows_opener ... ok
[INFO] [stdout] test util::diagnostics::tests::diagnostic_zero_length_span ... ok
[INFO] [stdout] test util::diagnostics::tests::diagnostic_unknown_node_has_help ... ok
[INFO] [stdout] test util::span::tests::creates_span_with_new ... ok
[INFO] [stdout] test util::span::tests::span_default_is_zero_position_line_one_col_one ... ok
[INFO] [stdout] test util::span::tests::span_debug_format ... ok
[INFO] [stdout] test util::span::tests::span_copy_semantics ... ok
[INFO] [stdout] test util::span::tests::span_equality ... ok
[INFO] [stdout] test util::span::tests::span_is_empty_when_start_equals_end ... ok
[INFO] [stdout] test util::span::tests::span_is_not_empty_when_start_differs_from_end ... ok
[INFO] [stdout] test util::span::tests::span_len_returns_byte_length ... ok
[INFO] [stdout] test util::span::tests::span_merge_combines_two_spans ... ok
[INFO] [stdout] test runner::backends::shell::tests::run_script_exit_nonzero_is_failed ... ok
[INFO] [stdout] test runner::backends::shell::tests::run_script_respects_working_dir ... ok
[INFO] [stdout] test runner::backends::shell::tests::run_script_captures_stdout ... ok
[INFO] [stdout] test runner::backends::shell::tests::run_script_captures_stderr ... ok
[INFO] [stdout] test runner::backends::shell::tests::run_script_extracts_tast_output ... ok
[INFO] [stdout] test runner::backends::shell::tests::run_script_exit_zero_is_passed ... ok
[INFO] [stdout] test runner::backends::shell::tests::run_script_sets_env_vars ... ok
[INFO] [stdout] test runner::backends::shell::tests::run_script_sets_tast_input_vars ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 629 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/tast-4f6964a5679c41d5)
[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/http_backend_integration.rs (/opt/rustwide/target/debug/deps/http_backend_integration-45f0608d277771ae)
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test http_e2e_post_request_with_body ... ok
[INFO] [stdout] test http_e2e_status_assertion_fails ... ok
[INFO] [stdout] test http_e2e_get_request_passes ... ok
[INFO] [stdout] test http_e2e_response_data_extraction ... ok
[INFO] [stdout] test http_e2e_data_passing_between_steps ... ok
[INFO] [stdout] test http_e2e_timeout_handling ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.02s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration.rs (/opt/rustwide/target/debug/deps/integration-3e3cb6095a2a6080)
[INFO] [stdout] 
[INFO] [stdout] running 42 tests
[INFO] [stdout] test cli_plan_detects_cycle ... ok
[INFO] [stdout] test cli_plan_empty_graph ... ok
[INFO] [stdout] test cli_plan_cross_graph_edge ... ok
[INFO] [stdout] test cli_plan_format_junit ... ok
[INFO] [stdout] test cli_plan_format_junit_valid_xml ... ok
[INFO] [stdout] test cli_plan_format_unknown_errors ... ok
[INFO] [stdout] test cli_plan_format_yaml_default ... ok
[INFO] [stdout] test cli_plan_format_markdown ... ok
[INFO] [stdout] test cli_plan_reads_file_and_outputs_yaml ... ok
[INFO] [stdout] test cli_plan_simple_edge ... ok
[INFO] [stdout] test cli_plan_with_from_only ... ok
[INFO] [stdout] test cli_plan_with_filter_tag ... ok
[INFO] [stdout] test cli_plan_full_auth_graph ... ok
[INFO] [stdout] test cli_plan_with_from_to ... ok
[INFO] [stdout] test cli_plan_format_junit_writes_file ... ok
[INFO] [stdout] test cli_run_backend_http_requires_base_url ... ok
[INFO] [stdout] test cli_run_base_url_rejected_for_non_http_backend ... ok
[INFO] [stdout] test cli_plan_with_import ... ok
[INFO] [stdout] test cli_plan_with_strategy_dfs ... ok
[INFO] [stdout] test cli_plan_with_strategy_bfs ... ok
[INFO] [stdout] test cli_validate_with_import ... ok
[INFO] [stdout] test cli_run_backend_http_with_base_url_accepted ... ok
[INFO] [stdout] test cli_validate_empty_graph ... ok
[INFO] [stdout] test list_fixtures_empty_when_none ... ok
[INFO] [stdout] test cli_validate_reports_missing_node_ref ... ok
[INFO] [stdout] test cli_validate_reports_valid_file ... ok
[INFO] [stdout] test cli_visualize_mermaid_output ... ok
[INFO] [stdout] test cli_validate_reports_invalid_file_with_error ... ok
[INFO] [stdout] test list_edges_includes_passes ... ok
[INFO] [stdout] test cli_visualize_dot_output ... ok
[INFO] [stdout] test general_error_returns_cli_error_general_variant ... ok
[INFO] [stdout] test list_edges_shows_all ... ok
[INFO] [stdout] test list_fixtures_includes_fields ... ok
[INFO] [stdout] test list_fixtures_shows_all ... ok
[INFO] [stdout] test parse_error_returns_cli_error_parse_variant ... ok
[INFO] [stdout] test parse_error_preserves_source_for_diagnostics ... ok
[INFO] [stdout] test list_nodes_shows_all ... ok
[INFO] [stdout] test list_invalid_what_errors ... ok
[INFO] [stdout] test list_tags_unique ... ok
[INFO] [stdout] test list_nodes_includes_descriptions ... ok
[INFO] [stdout] test cli_run_backend_shell_explicit ... ok
[INFO] [stdout] test cli_plan_with_output_flag_writes_file ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- cli_plan_with_output_flag_writes_file stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'cli_plan_with_output_flag_writes_file' (711) panicked at tests/integration.rs:39:5:
[INFO] [stdout] assertion failed: result.is_ok()
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x59bff95041da - std[29689e6404d28ef9]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x59bff95041da - std[29689e6404d28ef9]::backtrace_rs::backtrace::trace_unsynchronized::<std[29689e6404d28ef9]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x59bff95041da - std[29689e6404d28ef9]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x59bff95041da - <<std[29689e6404d28ef9]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[e929cb53b82a81ca]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x59bff951bd1a - <core[e929cb53b82a81ca]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x59bff951bd1a - core[e929cb53b82a81ca]::fmt::write
[INFO] [stdout]    6:     0x59bff9509062 - std[29689e6404d28ef9]::io::default_write_fmt::<alloc[9d7caffeb3b5d2c6]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/io/mod.rs:621:11
[INFO] [stdout]    7:     0x59bff9509062 - <alloc[9d7caffeb3b5d2c6]::vec::Vec<u8> as std[29689e6404d28ef9]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/io/mod.rs:1976:13
[INFO] [stdout]    8:     0x59bff94e00cf - <std[29689e6404d28ef9]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x59bff94e00cf - std[29689e6404d28ef9]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x59bff94fb4c9 - std[29689e6404d28ef9]::panicking::default_hook
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x59bff9208aac - <alloc[9d7caffeb3b5d2c6]::boxed::Box<dyn for<'a, 'b> core[e929cb53b82a81ca]::ops::function::Fn<(&'a std[29689e6404d28ef9]::panic::PanicHookInfo<'b>,), Output = ()> + core[e929cb53b82a81ca]::marker::Send + core[e929cb53b82a81ca]::marker::Sync> as core[e929cb53b82a81ca]::ops::function::Fn<(&std[29689e6404d28ef9]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/alloc/src/boxed.rs:2285:9
[INFO] [stdout]   12:     0x59bff9208aac - test[a24b3028667022f7]::test_main_inner::<test[a24b3028667022f7]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x59bff94fb682 - <alloc[9d7caffeb3b5d2c6]::boxed::Box<dyn for<'a, 'b> core[e929cb53b82a81ca]::ops::function::Fn<(&'a std[29689e6404d28ef9]::panic::PanicHookInfo<'b>,), Output = ()> + core[e929cb53b82a81ca]::marker::Send + core[e929cb53b82a81ca]::marker::Sync> as core[e929cb53b82a81ca]::ops::function::Fn<(&std[29689e6404d28ef9]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/alloc/src/boxed.rs:2285:9
[INFO] [stdout]   14:     0x59bff94fb682 - std[29689e6404d28ef9]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x59bff94e01ba - std[29689e6404d28ef9]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:691:13
[INFO] [stdout]   16:     0x59bff94d5089 - std[29689e6404d28ef9]::sys::backtrace::__rust_end_short_backtrace::<std[29689e6404d28ef9]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x59bff94e10ed - __rustc[3aed6af316653e63]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x59bff951c4ac - core[e929cb53b82a81ca]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x59bff951c472 - core[e929cb53b82a81ca]::panicking::panic
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/panicking.rs:150:5
[INFO] [stdout]   20:     0x59bff91f8023 - integration[72726fa86843a234]::cli_plan_with_output_flag_writes_file
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/integration.rs:39:5
[INFO] [stdout]   21:     0x59bff91f0aa7 - integration[72726fa86843a234]::cli_plan_with_output_flag_writes_file::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/integration.rs:30:43
[INFO] [stdout]   22:     0x59bff91fbae6 - <integration[72726fa86843a234]::cli_plan_with_output_flag_writes_file::{closure#0} as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x59bff91fbd8b - <fn() -> core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String> as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x59bff91fbd8b - test[a24b3028667022f7]::__rust_begin_short_backtrace::<core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>, fn() -> core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:724:18
[INFO] [stdout]   25:     0x59bff920957b - test[a24b3028667022f7]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:747:74
[INFO] [stdout]   26:     0x59bff920957b - <core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<test[a24b3028667022f7]::run_test_in_process::{closure#0}> as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   27:     0x59bff920957b - std[29689e6404d28ef9]::panicking::catch_unwind::do_call::<core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<test[a24b3028667022f7]::run_test_in_process::{closure#0}>, core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:581:40
[INFO] [stdout]   28:     0x59bff920957b - std[29689e6404d28ef9]::panicking::catch_unwind::<core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>, core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<test[a24b3028667022f7]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:544:19
[INFO] [stdout]   29:     0x59bff920957b - std[29689e6404d28ef9]::panic::catch_unwind::<core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<test[a24b3028667022f7]::run_test_in_process::{closure#0}>, core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panic.rs:359:14
[INFO] [stdout]   30:     0x59bff920957b - test[a24b3028667022f7]::run_test_in_process
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:747:27
[INFO] [stdout]   31:     0x59bff920957b - test[a24b3028667022f7]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:668:43
[INFO] [stdout]   32:     0x59bff9202c94 - test[a24b3028667022f7]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:698:41
[INFO] [stdout]   33:     0x59bff9202c94 - std[29689e6404d28ef9]::sys::backtrace::__rust_begin_short_backtrace::<test[a24b3028667022f7]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   34:     0x59bff920c182 - std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked::<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   35:     0x59bff920c182 - <core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   36:     0x59bff920c182 - std[29689e6404d28ef9]::panicking::catch_unwind::do_call::<core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:581:40
[INFO] [stdout]   37:     0x59bff920c182 - std[29689e6404d28ef9]::panicking::catch_unwind::<(), core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:544:19
[INFO] [stdout]   38:     0x59bff920c182 - std[29689e6404d28ef9]::panic::catch_unwind::<core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panic.rs:359:14
[INFO] [stdout]   39:     0x59bff920c182 - std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked::<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   40:     0x59bff920c182 - <std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1} as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   41:     0x59bff95032bf - <alloc[9d7caffeb3b5d2c6]::boxed::Box<dyn core[e929cb53b82a81ca]::ops::function::FnOnce<(), Output = ()> + core[e929cb53b82a81ca]::marker::Send> as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/alloc/src/boxed.rs:2271:9
[INFO] [stdout]   42:     0x59bff95032bf - <std[29689e6404d28ef9]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   43:     0x7b60b74aaaa4 - <unknown>
[INFO] [stdout]   44:     0x7b60b7537a64 - clone
[INFO] [stdout]   45:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     cli_plan_with_output_flag_writes_file
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 41 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.09s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--test integration`
[INFO] running `Command { std: "docker" "inspect" "0820ca45c45f2064f43ee9e3673dbf969177152466e338048c1cae64d6e0ab5b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0820ca45c45f2064f43ee9e3673dbf969177152466e338048c1cae64d6e0ab5b", kill_on_drop: false }`
[INFO] [stdout] 0820ca45c45f2064f43ee9e3673dbf969177152466e338048c1cae64d6e0ab5b
