[INFO] cloning repository https://github.com/chen97/mcp-gatehound
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/chen97/mcp-gatehound" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fchen97%2Fmcp-gatehound", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fchen97%2Fmcp-gatehound'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 08c829f78eb923480c5aa7ef1304df948a9803b2
[INFO] testing chen97/mcp-gatehound against 1.99.0-beta.8 for beta-1.100-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fchen97%2Fmcp-gatehound" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/chen97/mcp-gatehound
[INFO] finished tweaking git repo https://github.com/chen97/mcp-gatehound
[INFO] tweaked toml for git repo https://github.com/chen97/mcp-gatehound written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/chen97/mcp-gatehound on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/chen97/mcp-gatehound already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded toml v0.8.2
[INFO] [stderr]   Downloaded toml_edit v0.20.2
[INFO] [stderr]   Downloaded tauri-plugin-single-instance v2.4.3
[INFO] [stderr]   Downloaded windows-version v0.1.7
[INFO] [stderr]   Downloaded tauri v2.11.5
[INFO] [stderr]   Downloaded objc2-exception-helper v0.1.1
[INFO] [stderr]   Downloaded webview2-com v0.38.2
[INFO] [stderr]   Downloaded webview2-com-macros v0.8.1
[INFO] [stderr]   Downloaded webkit2gtk v2.0.2
[INFO] [stderr]   Downloaded webkit2gtk-sys v2.0.2
[INFO] [stderr]   Downloaded soup3-sys v0.5.0
[INFO] [stderr]   Downloaded gobject-sys v0.18.0
[INFO] [stderr]   Downloaded glib-sys v0.18.1
[INFO] [stderr]   Downloaded window-vibrancy v0.6.0
[INFO] [stderr]   Downloaded javascriptcore-rs-sys v1.1.1
[INFO] [stderr]   Downloaded gdk-pixbuf-sys v0.18.0
[INFO] [stderr]   Downloaded cairo-sys-rs v0.18.2
[INFO] [stderr]   Downloaded proc-macro-crate v2.0.2
[INFO] [stderr]   Downloaded javascriptcore-rs v1.1.2
[INFO] [stderr]   Downloaded gtk3-macros v0.18.2
[INFO] [stderr]   Downloaded pango-sys v0.18.0
[INFO] [stderr]   Downloaded atk-sys v0.18.2
[INFO] [stderr]   Downloaded soup3 v0.5.0
[INFO] [stderr]   Downloaded glib-macros v0.18.5
[INFO] [stderr]   Downloaded pango v0.18.3
[INFO] [stderr]   Downloaded atk v0.18.2
[INFO] [stderr]   Downloaded gio-sys v0.18.1
[INFO] [stderr]   Downloaded gdk-pixbuf v0.18.5
[INFO] [stderr]   Downloaded cairo-rs v0.18.5
[INFO] [stderr]   Downloaded gdk v0.18.2
[INFO] [stderr]   Downloaded gtk-sys v0.18.2
[INFO] [stderr]   Downloaded gdk-sys v0.18.2
[INFO] [stderr]   Downloaded glib v0.18.5
[INFO] [stderr]   Downloaded gio v0.18.4
[INFO] [stderr]   Downloaded gtk v0.18.2
[INFO] [stderr]   Downloaded tray-icon v0.24.2
[INFO] [stderr]   Downloaded unic-ucd-ident v0.9.0
[INFO] [stderr]   Downloaded tauri-utils v2.9.3
[INFO] [stderr]   Downloaded unic-ucd-version v0.9.0
[INFO] [stderr]   Downloaded unic-char-range v0.9.0
[INFO] [stderr]   Downloaded libappindicator-sys v0.9.0
[INFO] [stderr]   Downloaded unic-common v0.9.0
[INFO] [stderr]   Downloaded unic-char-property v0.9.0
[INFO] [stderr]   Downloaded libappindicator v0.9.0
[INFO] [stderr]   Downloaded urlpattern v0.3.0
[INFO] [stderr]   Downloaded webview2-com-sys v0.38.2
[INFO] [stderr]   Downloaded swift-rs v1.0.8
[INFO] [stderr]   Downloaded serde-untagged v0.1.9
[INFO] [stderr]   Downloaded tendril v0.5.1
[INFO] [stderr]   Downloaded cfb v0.7.3
[INFO] [stderr]   Downloaded json-patch v3.0.1
[INFO] [stderr]   Downloaded infer v0.19.0
[INFO] [stderr]   Downloaded servo_arc v0.4.3
[INFO] [stderr]   Downloaded cssparser v0.36.0
[INFO] [stderr]   Downloaded dom_query v0.27.0
[INFO] [stderr]   Downloaded jsonptr v0.6.3
[INFO] [stderr]   Downloaded html5ever v0.38.0
[INFO] [stderr]   Downloaded ctor-proc-macro v0.0.7
[INFO] [stderr]   Downloaded markup5ever v0.38.0
[INFO] [stderr]   Downloaded web_atoms v0.2.6
[INFO] [stderr]   Downloaded cargo_metadata v0.19.2
[INFO] [stderr]   Downloaded wry v0.55.1
[INFO] [stderr]   Downloaded selectors v0.36.1
[INFO] [stderr]   Downloaded phf_codegen v0.13.1
[INFO] [stderr]   Downloaded string_cache v0.9.0
[INFO] [stderr]   Downloaded string_cache_codegen v0.6.1
[INFO] [stderr]   Downloaded ctor v0.8.0
[INFO] [stderr]   Downloaded dtor v0.3.0
[INFO] [stderr]   Downloaded dtor-proc-macro v0.0.6
[INFO] [stderr]   Downloaded tauri-runtime-wry v2.11.4
[INFO] [stderr]   Downloaded objc2-web-kit v0.3.2
[INFO] [stderr]   Downloaded objc2-core-location v0.3.2
[INFO] [stderr]   Downloaded tao-macros v0.1.4
[INFO] [stderr]   Downloaded objc2-user-notifications v0.3.2
[INFO] [stderr]   Downloaded gdkx11 v0.18.2
[INFO] [stderr]   Downloaded tauri-runtime v2.11.3
[INFO] [stderr]   Downloaded dlopen2 v0.8.2
[INFO] [stderr]   Downloaded dlopen2_derive v0.4.3
[INFO] [stderr]   Downloaded gdkwayland-sys v0.18.2
[INFO] [stderr]   Downloaded cookie v0.18.2
[INFO] [stderr]   Downloaded gdkx11-sys v0.18.2
[INFO] [stderr]   Downloaded tao v0.35.3
[INFO] [stderr]   Downloaded embed-resource v3.0.11
[INFO] [stderr]   Downloaded winreg v0.55.0
[INFO] [stderr]   Downloaded cargo_toml v0.22.3
[INFO] [stderr]   Downloaded core-graphics v0.25.0
[INFO] [stderr]   Downloaded tauri-macros v2.6.3
[INFO] [stderr]   Downloaded tauri-codegen v2.6.3
[INFO] [stderr]   Downloaded ico v0.5.0
[INFO] [stderr]   Downloaded tauri-winres v0.3.6
[INFO] [stderr]   Downloaded vswhom v0.1.0
[INFO] [stderr]   Downloaded vswhom-sys v0.1.3
[INFO] [stderr]   Downloaded serialize-to-javascript v0.1.2
[INFO] [stderr]   Downloaded serialize-to-javascript-impl v0.1.2
[INFO] [stderr]   Downloaded tauri-build v2.6.3
[INFO] [stderr]   Downloaded sigchld v0.2.4
[INFO] [stderr]   Downloaded embed_plist v1.2.2
[INFO] [stderr]   Downloaded shared_child v1.1.1
[INFO] [stderr]   Downloaded tauri-plugin-shell v2.3.5
[INFO] [stderr]   Downloaded open v5.4.1
[INFO] [stderr]   Downloaded tauri-plugin-opener v2.5.4
[INFO] [stderr]   Downloaded tauri-plugin v2.6.3
[INFO] [stderr]   Downloaded tauri-plugin-autostart v2.5.1
[INFO] [stderr]   Downloaded auto-launch v0.5.0
[INFO] [stderr]   Downloaded tauri-plugin-notification v2.3.3
[INFO] [stderr]   Downloaded mac-notification-sys v0.6.15
[INFO] [stderr]   Downloaded tauri-winrt-notification v0.7.3
[INFO] [stderr]   Downloaded notify-rust v4.18.0
[INFO] [stderr]   Downloaded rfd v0.16.0
[INFO] [stderr]   Downloaded tauri-plugin-dialog v2.7.2
[INFO] [stderr]   Downloaded tauri-plugin-fs v2.5.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 7d78d7eff4724038ee026e58c7e3004c4a035ea081df01cc50ebd5dc8e7d2cc4
[INFO] running `Command { std: "docker" "start" "7d78d7eff4724038ee026e58c7e3004c4a035ea081df01cc50ebd5dc8e7d2cc4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7d78d7eff4724038ee026e58c7e3004c4a035ea081df01cc50ebd5dc8e7d2cc4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "7d78d7eff4724038ee026e58c7e3004c4a035ea081df01cc50ebd5dc8e7d2cc4" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7d78d7eff4724038ee026e58c7e3004c4a035ea081df01cc50ebd5dc8e7d2cc4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "7d78d7eff4724038ee026e58c7e3004c4a035ea081df01cc50ebd5dc8e7d2cc4" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.107
[INFO] [stderr]    Compiling libc v0.2.189
[INFO] [stderr]    Compiling shlex v2.0.1
[INFO] [stderr]    Compiling find-msvc-tools v0.1.11
[INFO] [stderr]    Compiling bytes v1.12.1
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling futures-core v0.3.34
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling log v0.4.33
[INFO] [stderr]    Compiling cc v1.4.4
[INFO] [stderr]    Compiling writeable v0.6.4
[INFO] [stderr]    Compiling litemap v0.8.3
[INFO] [stderr]    Compiling quote v1.0.47
[INFO] [stderr]    Compiling futures-task v0.3.34
[INFO] [stderr]    Compiling syn v3.0.3
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling icu_properties_data v2.3.0
[INFO] [stderr]    Compiling http v1.5.0
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling icu_normalizer_data v2.3.0
[INFO] [stderr]    Compiling futures-util v0.3.34
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling zeroize v1.9.0
[INFO] [stderr]    Compiling rustls-pki-types v1.15.1
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling mio v1.2.2
[INFO] [stderr]    Compiling socket2 v0.6.5
[INFO] [stderr]    Compiling http-body v1.1.0
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling zerocopy v0.8.56
[INFO] [stderr]    Compiling futures-channel v0.3.34
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling rustls v0.23.43
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling vcpkg v0.2.15
[INFO] [stderr]    Compiling ipnet v2.12.1
[INFO] [stderr]    Compiling memchr v2.8.3
[INFO] [stderr]    Compiling time-core v0.1.9
[INFO] [stderr]    Compiling num-conv v0.2.2
[INFO] [stderr]    Compiling pkg-config v0.3.34
[INFO] [stderr]    Compiling thiserror v2.0.20
[INFO] [stderr]    Compiling time-macros v0.2.32
[INFO] [stderr]    Compiling num-integer v0.1.47
[INFO] [stderr]    Compiling libsqlite3-sys v0.30.1
[INFO] [stderr]    Compiling http-body-util v0.1.5
[INFO] [stderr]    Compiling deranged v0.5.8
[INFO] [stderr]    Compiling bitflags v2.13.1
[INFO] [stderr]    Compiling num-bigint v0.4.8
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling time v0.3.55
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling webpki-roots v1.0.9
[INFO] [stderr]    Compiling anyhow v1.0.104
[INFO] [stderr]    Compiling rustls-webpki v0.103.15
[INFO] [stderr]    Compiling winnow v0.5.40
[INFO] [stderr]    Compiling zerovec-derive v0.11.6
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling displaydoc v0.2.7
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling tokio-macros v2.7.2
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling tokio v1.53.1
[INFO] [stderr]    Compiling thiserror-impl v2.0.20
[INFO] [stderr]    Compiling zerofrom v0.1.8
[INFO] [stderr]    Compiling yoke v0.8.3
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling zerovec v0.11.8
[INFO] [stderr]    Compiling tinystr v0.8.4
[INFO] [stderr]    Compiling potential_utf v0.1.6
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling zerotrie v0.2.5
[INFO] [stderr]    Compiling icu_locale_core v2.3.0
[INFO] [stderr]    Compiling icu_collections v2.3.0
[INFO] [stderr]    Compiling async-trait v0.1.92
[INFO] [stderr]    Compiling simple_asn1 v0.6.4
[INFO] [stderr]    Compiling hashlink v0.9.1
[INFO] [stderr]    Compiling axum-macros v0.4.2
[INFO] [stderr]    Compiling icu_provider v2.3.1
[INFO] [stderr]    Compiling icu_normalizer v2.3.0
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling icu_properties v2.3.0
[INFO] [stderr]    Compiling axum-core v0.4.5
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling toml_datetime v0.6.3
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling toml_edit v0.20.2
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling pem v3.0.6
[INFO] [stderr]    Compiling fallible-streaming-iterator v0.1.9
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling futures-sink v0.3.34
[INFO] [stderr]    Compiling matchit v0.7.3
[INFO] [stderr]    Compiling hyper v1.11.0
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling toml v0.8.2
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling tower-http v0.6.11
[INFO] [stderr]    Compiling tokio-util v0.7.19
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling jsonwebtoken v9.3.1
[INFO] [stderr]    Compiling uuid v1.24.1
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling thread_local v1.1.10
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling rusqlite v0.32.1
[INFO] [stderr]    Compiling hyper-rustls v0.27.9
[INFO] [stderr]    Compiling axum v0.7.9
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling gatehound-core v0.1.0 (/opt/rustwide/workdir/crates/gatehound-core)
[INFO] [stderr]    Compiling gatehound-headless v0.1.0 (/opt/rustwide/workdir/crates/gatehound-headless)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 33s
[INFO] running `Command { std: "docker" "inspect" "7d78d7eff4724038ee026e58c7e3004c4a035ea081df01cc50ebd5dc8e7d2cc4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "7d78d7eff4724038ee026e58c7e3004c4a035ea081df01cc50ebd5dc8e7d2cc4" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling gatehound-core v0.1.0 (/opt/rustwide/workdir/crates/gatehound-core)
[INFO] [stderr]    Compiling gatehound-headless v0.1.0 (/opt/rustwide/workdir/crates/gatehound-headless)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 26.16s
[INFO] running `Command { std: "docker" "inspect" "7d78d7eff4724038ee026e58c7e3004c4a035ea081df01cc50ebd5dc8e7d2cc4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "7d78d7eff4724038ee026e58c7e3004c4a035ea081df01cc50ebd5dc8e7d2cc4" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.39s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/gatehound_core-c3d4a7d0c6ab5890)
[INFO] [stdout] 
[INFO] [stdout] running 243 tests
[INFO] [stdout] test actions::exec::tests::a_missing_binary_is_an_error_not_a_panic ... ok
[INFO] [stdout] test actions::exec::tests::a_flood_on_stderr_does_not_stall_the_child_either ... ok
[INFO] [stdout] test actions::exec::tests::a_command_that_finishes_in_time_never_runs_its_fallback ... ok
[INFO] [stdout] test actions::exec::tests::a_failing_command_reports_its_stderr ... ok
[INFO] [stdout] test actions::exec::tests::a_value_cannot_turn_an_operand_into_an_option ... ok
[INFO] [stdout] test actions::exec::tests::an_absent_optional_argument_drops_its_flag_too ... ok
[INFO] [stdout] test actions::exec::tests::an_absent_required_argument_is_refused_by_name ... ok
[INFO] [stdout] test actions::exec::tests::an_argument_placed_on_stdin_is_not_appended_to_argv ... ok
[INFO] [stdout] test actions::exec::tests::a_shebang_names_its_interpreter ... ok
[INFO] [stdout] test actions::exec::tests::an_argument_the_template_already_places_is_not_appended_again ... ok
[INFO] [stdout] test actions::exec::tests::caller_input_stays_a_single_argv_element ... ok
[INFO] [stdout] test actions::exec::tests::a_script_finds_the_interpreter_installed_beside_it ... ok
[INFO] [stdout] test actions::exec::tests::content_reaches_the_child_on_stdin ... ok
[INFO] [stdout] test actions::exec::tests::doubled_braces_render_literally ... ok
[INFO] [stdout] test actions::exec::tests::a_missing_interpreter_is_named_with_the_path_searched ... ok
[INFO] [stdout] test actions::exec::tests::declared_arguments_become_flags_without_anyone_writing_a_template ... ok
[INFO] [stdout] test actions::exec::tests::oversized_and_nul_bearing_arguments_are_refused ... ok
[INFO] [stdout] test actions::exec::tests::placeholders_ignores_a_doubled_brace ... ok
[INFO] [stdout] test actions::exec::tests::renders_declared_placeholders_only ... ok
[INFO] [stdout] test actions::exec::tests::runs_a_command_and_returns_stdout ... ok
[INFO] [stdout] test actions::exec::tests::output_far_over_the_cap_is_truncated_without_waiting_out_the_timeout ... ok
[INFO] [stdout] test actions::exec::tests::output_over_the_cap_is_truncated ... ok
[INFO] [stdout] test actions::exec::tests::the_commands_own_folder_goes_first_on_the_childs_path ... ok
[INFO] [stdout] test actions::exec::tests::the_gateways_own_credentials_are_not_inherited ... ok
[INFO] [stdout] test actions::exec::tests::the_preview_matches_what_is_actually_spawned ... ok
[INFO] [stdout] test actions::proxy::tests::a_completed_action_with_no_message_id_is_still_a_duplicate ... ok
[INFO] [stdout] test actions::proxy::tests::a_dropped_claim_frees_the_key_for_a_retry ... ok
[INFO] [stdout] test actions::proxy::tests::a_repeated_key_returns_the_first_result_instead_of_sending_again ... ok
[INFO] [stdout] test actions::proxy::tests::an_in_flight_key_is_refused ... ok
[INFO] [stdout] test actions::proxy::tests::an_uncommitted_attempt_does_not_consume_budget ... ok
[INFO] [stdout] test actions::proxy::tests::reusing_a_key_for_different_text_is_refused ... ok
[INFO] [stdout] test actions::exec::tests::a_call_queued_behind_a_slow_one_gives_up_at_the_deadline ... ok
[INFO] [stdout] test actions::proxy::tests::text_hash_is_stable_and_distinguishes_messages ... ok
[INFO] [stdout] test actions::proxy::tests::the_hourly_cap_is_refused_not_queued ... ok
[INFO] [stdout] test actions::exec::tests::a_hanging_command_is_killed_at_the_timeout ... ok
[INFO] [stdout] test actions::tests::a_proxy_action_to_an_unreachable_upstream_is_an_error_not_a_panic ... ok
[INFO] [stdout] test actions::exec::tests::a_slow_command_is_answered_by_its_fallback_and_labelled ... ok
[INFO] [stdout] test actions::exec::tests::a_queued_call_gets_the_fallback_without_waiting_for_the_slot ... ok
[INFO] [stdout] test actions::tests::a_replay_returns_the_recorded_body_not_a_message_shaped_stub ... ok
[INFO] [stdout] test actions::tests::a_failed_action_does_not_burn_the_idempotency_key ... ok
[INFO] [stdout] test actions::tests::a_script_that_answers_in_json_is_not_re_encoded_as_a_string ... ok
[INFO] [stdout] test actions::tests::a_repeated_idempotency_key_does_not_act_twice ... ok
[INFO] [stdout] test actions::tests::an_idempotent_tool_needs_a_key ... ok
[INFO] [stdout] test actions::exec::tests::the_call_deadline_stops_a_command_before_its_own_timeout ... ok
[INFO] [stdout] test actions::tests::exec_actions_fill_only_declared_placeholders ... ok
[INFO] [stdout] test actions::tests::one_key_reused_for_different_arguments_is_refused_for_any_tool ... ok
[INFO] [stdout] test actions::tests::one_key_used_by_two_different_tools_is_refused ... ok
[INFO] [stdout] test actions::tests::rate_limited_tools_refuse_once_the_cap_is_spent ... ok
[INFO] [stdout] test actions::tests::structured_arguments_are_refused_for_exec_actions ... ok
[INFO] [stdout] test approval::tests::allow_once_proceeds_without_persisting ... ok
[INFO] [stdout] test approval::tests::allow_always_persists_the_rule ... ok
[INFO] [stdout] test approval::tests::an_always_answer_on_a_hand_fired_call_writes_no_rule ... ok
[INFO] [stdout] test approval::tests::resolving_an_unknown_id_is_an_error ... ok
[INFO] [stdout] test approval::tests::reject_always_persists_deny_but_plain_reject_does_not ... ok
[INFO] [stdout] test approval::tests::timeout_is_clamped_below_the_cloudflare_edge_limit ... ok
[INFO] [stdout] test approval::tests::shutdown_releases_held_calls ... ok
[INFO] [stdout] test auth::tests::a_new_token_can_do_nothing_until_something_is_allowed ... ok
[INFO] [stdout] test auth::tests::a_revoked_token_stops_working_immediately ... ok
[INFO] [stdout] test auth::tests::accepts_a_human_login_and_lowercases_the_email ... ok
[INFO] [stdout] test auth::tests::a_valid_access_jwt_without_the_bearer_is_rejected ... ok
[INFO] [stdout] test auth::tests::accepts_a_service_token_via_common_name ... ok
[INFO] [stdout] test auth::tests::an_identity_outside_the_allow_list_is_rejected ... ok
[INFO] [stdout] test auth::tests::an_issued_token_authenticates_as_its_own_identity ... ok
[INFO] [stdout] test actions::proxy::tests::spacing_is_enforced_between_calls ... ok
[INFO] [stdout] test auth::tests::an_upstream_error_cannot_break_out_of_the_header ... ok
[INFO] [stdout] test auth::tests::an_unknown_or_tampered_token_is_refused_rather_than_falling_through ... ok
[INFO] [stdout] test auth::tests::bearer_alone_is_not_enough_when_access_is_configured ... ok
[INFO] [stdout] test auth::tests::falls_back_to_sub_when_nothing_else_is_present ... ok
[INFO] [stdout] test auth::tests::parses_cookies_and_compares_secrets ... ok
[INFO] [stdout] test auth::tests::issuing_never_inherits_a_wildcard_allow_that_was_already_there ... ok
[INFO] [stdout] test auth::tests::the_challenge_tells_a_client_what_this_server_wants ... ok
[INFO] [stdout] test auth::tests::using_a_token_records_that_it_was_used ... ok
[INFO] [stdout] test auth::tests::without_access_configured_the_bearer_identity_is_used ... ok
[INFO] [stdout] test bundle::tests::an_identity_that_is_not_a_name_still_makes_a_legal_bundle_name ... ok
[INFO] [stdout] test bundle::tests::the_bundle_is_a_readable_archive_holding_a_manifest_and_the_bridge ... ok
[INFO] [stdout] test auth::tests::rejects_wrong_audience_issuer_expiry_and_garbage ... ok
[INFO] [stdout] test auth::tests::an_issued_token_names_the_caller_even_behind_access ... ok
[INFO] [stdout] test bundle::tests::the_checksum_is_crc32 ... ok
[INFO] [stdout] test config::tests::a_command_resolves_however_this_platform_spells_it ... ok
[INFO] [stdout] test config::tests::a_config_written_by_an_older_build_has_its_blank_owner_repaired ... ok
[INFO] [stdout] test config::tests::a_configuration_the_app_writes_can_be_read_back ... ok
[INFO] [stdout] test config::tests::a_declared_argument_of_the_wrong_kind_is_refused ... ok
[INFO] [stdout] test config::tests::a_freshly_generated_configuration_writes_and_reads_back ... ok
[INFO] [stdout] test config::tests::a_gateway_ships_no_opinion_about_what_it_fronts ... ok
[INFO] [stdout] test config::tests::a_hand_written_schema_is_left_alone ... ok
[INFO] [stdout] test config::tests::a_placeholder_naming_no_declared_argument_is_refused ... ok
[INFO] [stdout] test config::tests::a_registered_script_whose_body_is_gone_stops_the_gateway_starting ... ok
[INFO] [stdout] test config::tests::a_required_argument_is_checked_even_without_an_argv ... ok
[INFO] [stdout] test config::tests::a_fallback_must_start_before_the_call_deadline ... ok
[INFO] [stdout] test config::tests::a_tool_naming_an_op_the_upstream_does_not_declare_is_refused ... ok
[INFO] [stdout] test config::tests::a_tool_naming_an_unregistered_script_fails_at_check ... ok
[INFO] [stdout] test config::tests::a_tool_declares_its_arguments_in_the_file_and_needs_nothing_else ... ok
[INFO] [stdout] test config::tests::a_command_is_found_where_a_login_shell_would_have_put_it ... ok
[INFO] [stdout] test actions::tests::a_script_action_runs_the_registered_file_through_its_interpreter ... ok
[INFO] [stdout] test config::tests::a_tool_without_declared_arguments_keeps_its_description_exactly ... ok
[INFO] [stdout] test actions::tests::a_script_action_inherits_every_exec_guard ... ok
[INFO] [stdout] test config::tests::an_argument_name_that_would_be_ambiguous_on_a_command_line_is_refused ... ok
[INFO] [stdout] test config::tests::an_argument_the_tool_never_declared_is_refused ... ok
[INFO] [stdout] test config::tests::declared_arguments_become_the_schema ... ok
[INFO] [stdout] test config::tests::an_idempotent_tool_advertises_the_key_it_will_insist_on ... ok
[INFO] [stdout] test config::tests::an_exec_tool_naming_a_binary_that_is_not_here_fails_at_check ... ok
[INFO] [stdout] test config::tests::declaring_arguments_and_a_schema_at_once_is_refused ... ok
[INFO] [stdout] test config::tests::credentials_come_from_the_environment_named_by_the_upstream ... ok
[INFO] [stdout] test config::tests::rejects_a_short_bearer_token_and_dangling_references ... ok
[INFO] [stdout] test config::tests::the_description_a_client_sees_spells_out_every_argument ... ok
[INFO] [stdout] test config::tests::credentials_from_the_environment_are_not_written_back_to_the_file ... ok
[INFO] [stdout] test connect::tests::a_form_mistake_reads_like_one ... ok
[INFO] [stdout] test connect::tests::a_local_command_needs_no_service_and_a_service_needs_no_command ... ok
[INFO] [stdout] test connect::tests::a_pack_built_here_still_carries_no_credential ... ok
[INFO] [stdout] test connect::tests::connecting_an_mcp_server_declares_its_tools_against_it ... ok
[INFO] [stdout] test config::tests::the_configuration_file_is_written_for_its_owner_only ... ok
[INFO] [stdout] test connect::tests::local_commands_are_named_after_the_command ... ok
[INFO] [stdout] test connect::tests::the_name_comes_from_the_target_so_nobody_has_to_invent_one ... ok
[INFO] [stdout] test config::tests::the_owner_identity_is_never_blank ... ok
[INFO] [stdout] test connect::tests::a_named_variable_is_reported_so_the_operator_can_set_it ... ok
[INFO] [stdout] test events::tests::a_service_being_down_does_not_paint_the_gateway_red ... ok
[INFO] [stdout] test config::tests::parses_upstream_ops_tools_and_identities ... ok
[INFO] [stdout] test connect::tests::the_stored_name_matches_the_one_the_form_previews ... ok
[INFO] [stdout] test pack::tests::a_command_missing_from_path_is_reported_as_a_missing_file_not_as_nothing ... ok
[INFO] [stdout] test pack::tests::a_command_that_exists_here_is_not_reported_missing ... ok
[INFO] [stdout] test pack::tests::a_pack_naming_local_files_that_are_not_here_says_which ... ok
[INFO] [stdout] test pack::tests::a_packed_script_keeps_its_braces_through_a_toml_round_trip ... ok
[INFO] [stdout] test pack::tests::a_pack_carrying_a_credential_is_refused ... ok
[INFO] [stdout] test pack::tests::a_hand_written_pack_need_not_repeat_the_digest_of_a_script_it_contains ... ok
[INFO] [stdout] test pack::tests::a_refusal_is_only_called_a_clash_when_something_actually_clashes ... ok
[INFO] [stdout] test pack::tests::a_pack_whose_script_was_edited_after_packing_does_not_load ... ok
[INFO] [stdout] test pack::tests::a_script_bearing_pack_is_refused_until_the_operator_opts_in ... ok
[INFO] [stdout] test pack::tests::a_plan_reports_scripts_without_writing_any ... ok
[INFO] [stdout] test pack::tests::a_tool_naming_an_upstream_the_pack_omits_is_refused ... ok
[INFO] [stdout] test pack::tests::a_pack_never_silently_replaces_what_is_already_there ... ok
[INFO] [stdout] test pack::tests::a_tool_naming_a_script_the_pack_omits_is_refused ... ok
[INFO] [stdout] test pack::tests::exporting_a_script_that_is_no_longer_on_disk_fails_rather_than_shipping_a_hole ... ok
[INFO] [stdout] test pack::tests::an_accepted_script_lands_on_disk_with_its_digest_recorded ... ok
[INFO] [stdout] test pack::tests::an_exported_pack_can_be_imported_again ... ok
[INFO] [stdout] test pack::tests::a_script_that_spawns_processes_needs_a_second_separate_consent ... ok
[INFO] [stdout] test pack::tests::export_strips_credentials_and_reports_what_to_set ... ok
[INFO] [stdout] test pack::tests::exporting_one_tool_carries_its_upstream_and_leaves_the_rest ... ok
[INFO] [stdout] test pack::tests::exporting_an_inline_credential_names_a_variable_to_replace_it ... ok
[INFO] [stdout] test pack::tests::exporting_carries_the_script_source_so_the_pack_travels_intact ... ok
[INFO] [stdout] test pack::tests::resolving_a_missing_file_rewrites_exactly_that_slot ... ok
[INFO] [stdout] test pack::tests::importing_adds_the_upstream_its_tools_and_its_seeds ... ok
[INFO] [stdout] test policy::tests::an_unknown_identity_defaults_to_ask ... ok
[INFO] [stdout] test policy::tests::denied_tools_are_hidden_but_ask_tools_are_listed ... ok
[INFO] [stdout] test pack::tests::missing_environment_is_reported_rather_than_enforced ... ok
[INFO] [stdout] test pack::tests::resolving_a_missing_command_turns_a_refusal_into_a_plan ... ok
[INFO] [stdout] test protocol::tests::a_legacy_version_in_meta_is_still_legacy ... ok
[INFO] [stdout] test protocol::tests::a_modern_request_missing_its_required_meta_is_invalid_params ... ok
[INFO] [stdout] test pack::tests::planning_reports_the_same_answer_as_importing_but_changes_nothing ... ok
[INFO] [stdout] test protocol::tests::a_modern_request_with_all_its_metadata_is_accepted ... ok
[INFO] [stdout] test protocol::tests::headers_that_disagree_with_the_body_are_refused ... ok
[INFO] [stdout] test protocol::tests::an_unknown_version_lists_what_this_server_does_support ... ok
[INFO] [stdout] test protocol::tests::modern_results_are_stamped_and_legacy_ones_are_untouched ... ok
[INFO] [stdout] test protocol::tests::tools_call_must_mirror_its_tool_name_into_a_header ... ok
[INFO] [stdout] test protocol::tests::initialize_always_selects_the_legacy_era ... ok
[INFO] [stdout] test policy::tests::exact_rule_beats_wildcard ... ok
[INFO] [stdout] test publish::tests::a_bundled_binary_is_used_in_place_of_whatever_is_on_path ... ok
[INFO] [stdout] test protocol::tests::a_client_that_declares_nothing_is_served_as_legacy ... ok
[INFO] [stdout] test publish::tests::a_listen_address_with_no_port_is_a_configuration_error ... ok
[INFO] [stdout] test publish::tests::a_tailnet_without_magicdns_says_so_rather_than_inventing_a_url ... ok
[INFO] [stdout] test publish::tests::a_tunnel_token_removes_the_need_for_anything_on_this_machine ... ok
[INFO] [stdout] test publish::tests::cloudflared_is_a_daemon_so_stopping_it_is_killing_it ... ok
[INFO] [stdout] test publish::tests::funnel_is_held_to_the_same_rule_as_a_tunnel ... ok
[INFO] [stdout] test protocol::tests::a_base64_encoded_tool_name_is_decoded_before_comparison ... ok
[INFO] [stdout] test publish::tests::funnel_uses_the_same_shape_with_a_different_verb ... ok
[INFO] [stdout] test publish::tests::nothing_in_front_is_reported_as_nothing_not_as_a_reach ... ok
[INFO] [stdout] test publish::tests::a_missing_binary_is_a_reported_failure_rather_than_a_panic ... ok
[INFO] [stdout] test publish::tests::publishing_to_the_internet_without_a_second_factor_is_refused ... ok
[INFO] [stdout] test publish::tests::tailscale_serves_the_loopback_port_over_tls_it_provisions ... ok
[INFO] [stdout] test publish::tests::the_default_publishes_nothing_new_and_stops_nothing_working ... ok
[INFO] [stdout] test publish::tests::a_backend_that_published_nothing_is_loopback_not_exposed ... ok
[INFO] [stdout] test publish::tests::the_second_factor_is_named_the_same_way_everywhere ... ok
[INFO] [stdout] test publish::tests::none_is_always_fine_and_auto_warns_instead_of_refusing ... ok
[INFO] [stdout] test publish::tests::none_launches_nothing ... ok
[INFO] [stdout] test publish::tests::the_tailnet_is_itself_a_factor_so_serve_needs_no_access ... ok
[INFO] [stdout] test publish::tests::publishing_nothing_is_a_state_not_an_error ... ok
[INFO] [stdout] test publish::tests::the_tailscale_url_comes_from_tailscale_rather_than_a_guess ... ok
[INFO] [stdout] test publish::tests::with_a_stand_in_daemon::a_backend_that_will_not_start_is_reported_and_does_not_stop_the_gateway ... ok
[INFO] [stdout] test publish::tests::with_a_stand_in_daemon::a_daemon_that_exits_at_once_is_not_reported_as_published ... ok
[INFO] [stdout] test publish::tests::with_a_stand_in_daemon::a_tunnel_that_says_it_connected_is_reported_as_connected ... ok
[INFO] [stdout] test publish::tests::with_a_stand_in_daemon::publishing_on_the_tailnet_reports_the_url_the_daemon_gave ... ok
[INFO] [stdout] test publish::tests::with_a_stand_in_daemon::a_chatty_daemon_is_not_left_blocked_on_a_pipe_nobody_reads ... ok
[INFO] [stdout] test publish::tests::without_a_token_cloudflared_falls_back_to_its_own_configuration ... ok
[INFO] [stdout] test publish::tests::with_a_stand_in_daemon::stopping_a_configured_backend_actually_unpublishes_it ... ok
[INFO] [stdout] test redact::tests::for_log_caps_long_bodies ... ok
[INFO] [stdout] test redact::tests::redacts_secret_keys_at_any_depth ... ok
[INFO] [stdout] test redact::tests::truncates_on_a_character_boundary ... ok
[INFO] [stdout] test scripts::tests::a_name_that_could_escape_the_script_directory_is_refused ... ok
[INFO] [stdout] test scripts::tests::a_registered_script_that_is_not_on_disk_fails_at_load ... ok
[INFO] [stdout] test scripts::tests::a_minified_line_is_flagged_because_it_cannot_be_reviewed ... ok
[INFO] [stdout] test scripts::tests::a_review_renders_something_a_person_can_act_on ... ok
[INFO] [stdout] test scripts::tests::a_saved_script_is_not_executable ... ok
[INFO] [stdout] test scripts::tests::a_script_body_is_never_templated_so_an_f_string_survives_intact ... ok
[INFO] [stdout] test scripts::tests::an_interpreter_is_looked_for_under_the_names_this_platform_uses ... ok
[INFO] [stdout] test scripts::tests::a_shell_is_refused_by_name_and_says_why ... ok
[INFO] [stdout] test scripts::tests::an_ordinary_script_scans_clean ... ok
[INFO] [stdout] test scripts::tests::an_oversized_script_is_refused_rather_than_stored ... ok
[INFO] [stdout] test scripts::tests::containment_refuses_a_symlink_out_of_the_directory ... ok
[INFO] [stdout] test scripts::tests::deno_runs_denied_by_default ... ok
[INFO] [stdout] test scripts::tests::lowering_puts_the_interpreter_and_path_ahead_of_caller_arguments ... ok
[INFO] [stdout] test scripts::tests::the_launcher_is_told_which_python_to_run ... ok
[INFO] [stdout] test scripts::tests::the_scan_finds_the_shapes_that_matter_and_ranks_them ... ok
[INFO] [stdout] test scripts::tests::the_stated_exceptions_do_not_fire ... ok
[INFO] [stdout] test scripts::tests::saving_records_a_digest_and_verifying_catches_a_swapped_body ... ok
[INFO] [stdout] test publish::tests::with_a_stand_in_daemon::a_daemon_that_stays_up_is_published_with_its_hostname ... ok
[INFO] [stdout] test store::rename_tests::a_rule_the_new_name_already_had_is_not_overwritten ... ok
[INFO] [stdout] test store::rename_tests::renaming_a_tool_carries_its_permissions_with_it ... ok
[INFO] [stdout] test store::tests::a_database_written_before_the_new_columns_gains_them ... ok
[INFO] [stdout] test store::tests::a_failed_send_releases_its_key_for_retry ... ok
[INFO] [stdout] test store::tests::an_action_that_returns_no_message_id_still_counts_as_complete ... ok
[INFO] [stdout] test store::tests::a_removed_token_stops_reserving_its_name ... ok
[INFO] [stdout] test store::tests::decision_prefers_exact_tool_over_wildcard ... ok
[INFO] [stdout] test store::tests::deleting_a_tool_takes_its_standing_decisions_with_it ... ok
[INFO] [stdout] test store::tests::idempotency_key_is_claimed_once ... ok
[INFO] [stdout] test store::tests::pending_rows_round_trip_and_clear ... ok
[INFO] [stdout] test store::tests::rules_reserve_a_name_even_with_no_token_behind_them ... ok
[INFO] [stdout] test store::tests::seed_does_not_clobber_a_user_choice ... ok
[INFO] [stdout] test store::tests::the_home_screen_asks_for_the_clients_calls_only ... ok
[INFO] [stdout] test tokens::tests::a_minted_token_splits_back_into_its_halves ... ok
[INFO] [stdout] test tokens::tests::a_wrong_secret_is_rejected ... ok
[INFO] [stdout] test tokens::tests::anything_that_is_not_ours_does_not_parse ... ok
[INFO] [stdout] test tokens::tests::the_secret_is_not_recoverable_from_what_is_stored ... ok
[INFO] [stdout] test store::tests::prune_blanks_old_bodies_and_drops_ancient_rows ... ok
[INFO] [stdout] test tokens::tests::two_tokens_never_collide ... ok
[INFO] [stdout] test upstreams::http::tests::a_missing_placeholder_is_an_error_not_an_empty_string ... ok
[INFO] [stdout] test upstreams::http::tests::a_path_argument_cannot_be_a_dot_segment ... ok
[INFO] [stdout] test upstreams::http::tests::a_path_argument_cannot_escape_its_segment ... ok
[INFO] [stdout] test upstreams::http::tests::a_placeholder_alone_keeps_the_argument_type ... ok
[INFO] [stdout] test store::tests::what_the_operator_did_survives_retention ... ok
[INFO] [stdout] test upstreams::http::tests::a_redirect_within_the_same_origin_is_still_followed ... ok
[INFO] [stdout] test upstreams::http::tests::an_optional_body_field_is_dropped_when_absent ... ok
[INFO] [stdout] test upstreams::http::tests::an_undeclared_op_is_a_configuration_error ... ok
[INFO] [stdout] test upstreams::http::tests::a_structured_argument_cannot_reach_a_path_or_query ... ok
[INFO] [stdout] test upstreams::mcp::tests::a_failure_that_merely_mentions_a_session_is_not_stale ... ok
[INFO] [stdout] test upstreams::http::tests::interpolation_inside_a_longer_string_is_text ... ok
[INFO] [stdout] test upstreams::mcp::tests::only_a_refused_session_counts_as_stale ... ok
[INFO] [stdout] test upstreams::tests::builds_declared_upstreams_and_rejects_duplicates ... ok
[INFO] [stdout] test upstreams::http::tests::a_redirect_to_another_origin_is_refused_and_carries_nothing_there ... ok
[INFO] [stdout] test publish::tests::with_a_stand_in_daemon::a_daemon_that_gives_up_later_stops_being_reported_as_published ... ok
[INFO] [stdout] test publish::tests::with_a_stand_in_daemon::a_tunnel_that_connects_late_stops_being_reported_as_starting ... ok
[INFO] [stdout] test actions::exec::tests::concurrency_is_capped_by_the_semaphore ... ok
[INFO] [stdout] test actions::exec::tests::stopping_a_command_stops_what_it_started ... ok
[INFO] [stdout] test upstreams::tests::a_silent_upstream_does_not_hold_up_the_sweep ... ok
[INFO] [stdout] test approval::tests::an_unanswered_hold_times_out_and_clears_its_row ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 243 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.08s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/mcp_surface.rs (/opt/rustwide/target/debug/deps/mcp_surface-ec3889344a655fd8)
[INFO] [stdout] 
[INFO] [stdout] running 36 tests
[INFO] [stdout] test a_header_that_disagrees_with_the_body_is_refused ... ok
[INFO] [stdout] test a_modern_request_without_its_required_meta_is_invalid_params ... ok
[INFO] [stdout] test a_fire_meets_the_same_deny_and_unknown_tool_as_a_client ... ok
[INFO] [stdout] test a_read_only_tool_fired_by_hand_runs_at_once_and_is_marked ... ok
[INFO] [stdout] test a_failing_action_is_a_tool_error_not_a_json_rpc_error ... ok
[INFO] [stdout] test a_modern_tool_call_works_end_to_end ... ok
[INFO] [stdout] test a_strict_streamable_http_server_is_talked_to_correctly ... ok
[INFO] [stdout] test a_call_without_the_bearer_token_is_rejected ... ok
[INFO] [stdout] test a_rejected_hold_returns_approval_denied ... ok
[INFO] [stdout] test a_server_can_be_discovered_and_connected_without_typing_its_tools ... ok
[INFO] [stdout] test an_identity_denied_everything_sees_an_empty_tool_list ... ok
[INFO] [stdout] test a_replay_links_to_the_call_it_repeats ... ok
[INFO] [stdout] test a_write_fired_by_hand_waits_even_when_the_policy_allows_it ... ok
[INFO] [stdout] test a_successful_call_returns_text_and_structured_content ... ok
[INFO] [stdout] test an_unknown_modern_method_is_404_with_a_json_rpc_body ... ok
[INFO] [stdout] test an_unsupported_revision_lists_what_to_retry_with ... ok
[INFO] [stdout] test an_unknown_identity_is_held_until_a_human_decides ... ok
[INFO] [stdout] test delete_is_refused_like_get ... ok
[INFO] [stdout] test a_replay_is_logged_as_a_replay ... ok
[INFO] [stdout] test denied_tools_are_filtered_from_tools_list_and_refused_on_call ... ok
[INFO] [stdout] test get_mcp_is_405_because_there_is_no_sse_stream ... ok
[INFO] [stdout] test every_call_is_logged_with_secrets_redacted ... ok
[INFO] [stdout] test healthz_and_version_answer_without_a_token ... ok
[INFO] [stdout] test modern_results_carry_result_type_and_server_identity ... ok
[INFO] [stdout] test initialize_negotiates_a_supported_protocol_version ... ok
[INFO] [stdout] test notifications_get_202_with_no_body ... ok
[INFO] [stdout] test protocol_errors_use_json_rpc_error_codes ... ok
[INFO] [stdout] test server_discover_reports_every_revision_this_server_serves ... ok
[INFO] [stdout] test shutdown_releases_a_held_call ... ok
[INFO] [stdout] test the_legacy_era_is_untouched_by_any_of_this ... ok
[INFO] [stdout] test the_unauthenticated_endpoints_give_nothing_away ... ok
[INFO] [stdout] test tools_list_carries_the_declared_input_schema ... ok
[INFO] [stdout] test a_fire_obeys_the_gateway_call_deadline ... ok
[INFO] [stdout] test read_only_changes_nothing_for_an_agents_call ... ok
[INFO] [stdout] test an_unanswered_hold_times_out_with_a_retryable_code ... ok
[INFO] [stdout] test the_log_names_which_token_got_in ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 36 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.66s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/shipped_config.rs (/opt/rustwide/target/debug/deps/shipped_config-afa71b061c57ca6c)
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test the_mock_rig_config_parses_and_validates ... ok
[INFO] [stdout] test the_example_keeps_upstream_credentials_in_the_environment ... ok
[INFO] [stdout] test the_example_demonstrates_a_write_tool_that_cannot_double_act ... ok
[INFO] [stdout] test the_example_config_parses_and_validates ... ok
[INFO] [stdout] test every_shipped_tool_binds_to_a_declared_action_and_says_what_it_does ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/gatehound_headless-ac02046ded4c9516)
[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]    Doc-tests gatehound_core
[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" "7d78d7eff4724038ee026e58c7e3004c4a035ea081df01cc50ebd5dc8e7d2cc4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7d78d7eff4724038ee026e58c7e3004c4a035ea081df01cc50ebd5dc8e7d2cc4", kill_on_drop: false }`
[INFO] [stdout] 7d78d7eff4724038ee026e58c7e3004c4a035ea081df01cc50ebd5dc8e7d2cc4
