[INFO] cloning repository https://github.com/tokarix/forge-mcp
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/tokarix/forge-mcp" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftokarix%2Fforge-mcp", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftokarix%2Fforge-mcp'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 7271d52f388af5c60d9fb663600f4f7d788b249a
[INFO] testing tokarix/forge-mcp against 1.97.0-beta.6 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftokarix%2Fforge-mcp" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/tokarix/forge-mcp
[INFO] finished tweaking git repo https://github.com/tokarix/forge-mcp
[INFO] tweaked toml for git repo https://github.com/tokarix/forge-mcp written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/tokarix/forge-mcp on toolchain 1.97.0-beta.6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/tokarix/forge-mcp 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.97.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded wiremock v0.6.5
[INFO] [stderr]   Downloaded deadpool v0.12.3
[INFO] [stderr]   Downloaded deadpool-runtime v0.1.4
[INFO] [stderr]   Downloaded serde-aux v4.7.0
[INFO] [stderr]   Downloaded wasm-bindgen-macro v0.2.117
[INFO] [stderr]   Downloaded assert-json-diff v2.0.2
[INFO] [stderr]   Downloaded ordered-float v2.10.1
[INFO] [stderr]   Downloaded wasm-bindgen-shared v0.2.117
[INFO] [stderr]   Downloaded wasm-bindgen-futures v0.4.67
[INFO] [stderr]   Downloaded serde-value v0.7.0
[INFO] [stderr]   Downloaded rmcp-macros v1.3.0
[INFO] [stderr]   Downloaded wasm-bindgen-macro-support v0.2.117
[INFO] [stderr]   Downloaded wasm-bindgen v0.2.117
[INFO] [stderr]   Downloaded js-sys v0.3.94
[INFO] [stderr]   Downloaded iri-string v0.7.12
[INFO] [stderr]   Downloaded utoipa-scalar v0.3.0
[INFO] [stderr]   Downloaded clap_derive v4.6.0
[INFO] [stderr]   Downloaded clap v4.6.0
[INFO] [stderr]   Downloaded utoipa v5.4.0
[INFO] [stderr]   Downloaded rustls-platform-verifier-android v0.1.1
[INFO] [stderr]   Downloaded rustls-platform-verifier v0.6.2
[INFO] [stderr]   Downloaded utoipa-gen v5.4.0
[INFO] [stderr]   Downloaded rmcp v1.3.0
[INFO] [stderr]   Downloaded web-sys v0.3.94
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 86413a9eaf9d0c0e06f4e5f6289d08a438ebd05ba0e364396a8e6d9b370b4597
[INFO] running `Command { std: "docker" "start" "86413a9eaf9d0c0e06f4e5f6289d08a438ebd05ba0e364396a8e6d9b370b4597", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "86413a9eaf9d0c0e06f4e5f6289d08a438ebd05ba0e364396a8e6d9b370b4597", 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" "86413a9eaf9d0c0e06f4e5f6289d08a438ebd05ba0e364396a8e6d9b370b4597" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "86413a9eaf9d0c0e06f4e5f6289d08a438ebd05ba0e364396a8e6d9b370b4597", 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" "86413a9eaf9d0c0e06f4e5f6289d08a438ebd05ba0e364396a8e6d9b370b4597" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.184
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling shlex v1.3.0
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling writeable v0.6.2
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling zerofrom v0.1.7
[INFO] [stderr]    Compiling tokio-macros v2.6.1
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling yoke v0.8.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling cc v1.2.58
[INFO] [stderr]    Compiling rustls-pki-types v1.14.0
[INFO] [stderr]    Compiling try-lock v0.2.5
[INFO] [stderr]    Compiling untrusted v0.9.0
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling want v0.3.1
[INFO] [stderr]    Compiling rustls v0.23.37
[INFO] [stderr]    Compiling typenum v1.19.0
[INFO] [stderr]    Compiling ipnet v2.12.0
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling webpki-roots v1.0.6
[INFO] [stderr]    Compiling iri-string v0.7.12
[INFO] [stderr]    Compiling openssl-probe v0.2.1
[INFO] [stderr]    Compiling ident_case v1.0.1
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling rustls-native-certs v0.8.3
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling indexmap v2.13.0
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling ref-cast v1.0.25
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling tokio v1.50.0
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling anstyle-parse v1.0.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling ref-cast-impl v1.0.25
[INFO] [stderr]    Compiling serde_derive_internals v0.29.1
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling colorchoice v1.0.5
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling axum-core v0.5.6
[INFO] [stderr]    Compiling schemars_derive v1.2.1
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling ordered-float v2.10.1
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling rmcp v1.3.0
[INFO] [stderr]    Compiling toml_write v0.1.2
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling dyn-clone v1.0.20
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling urlencoding v2.1.3
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling clap_derive v4.6.0
[INFO] [stderr]    Compiling git-exec v0.1.0 (/opt/rustwide/workdir/git-exec)
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling serde-value v0.7.0
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling schemars v1.2.1
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling pastey v0.2.1
[INFO] [stderr]    Compiling server v0.1.0 (/opt/rustwide/workdir/server)
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling serde-aux v4.7.0
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling utoipa-gen v5.4.0
[INFO] [stderr]    Compiling rmcp-macros v1.3.0
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling rustls-webpki v0.103.10
[INFO] [stderr]    Compiling clap v4.6.0
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling axum v0.8.8
[INFO] [stderr]    Compiling utoipa v5.4.0
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling rustls-platform-verifier v0.6.2
[INFO] [stderr]    Compiling hyper-rustls v0.27.7
[INFO] [stderr]    Compiling reqwest v0.13.2
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling domain v0.1.0 (/opt/rustwide/workdir/domain)
[INFO] [stderr]    Compiling forge v0.1.0 (/opt/rustwide/workdir/forge)
[INFO] [stderr]    Compiling audit v0.1.0 (/opt/rustwide/workdir/audit)
[INFO] [stderr]    Compiling utoipa-scalar v0.3.0
[INFO] [stderr]    Compiling transport v0.1.0 (/opt/rustwide/workdir/transport)
[INFO] [stderr]    Compiling orchestrator v0.1.0 (/opt/rustwide/workdir/orchestrator)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 53s
[INFO] running `Command { std: "docker" "inspect" "86413a9eaf9d0c0e06f4e5f6289d08a438ebd05ba0e364396a8e6d9b370b4597", 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" "86413a9eaf9d0c0e06f4e5f6289d08a438ebd05ba0e364396a8e6d9b370b4597" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling num_cpus v1.17.0
[INFO] [stderr]    Compiling deadpool-runtime v0.1.4
[INFO] [stderr]    Compiling assert-json-diff v2.0.2
[INFO] [stderr]    Compiling rmcp v1.3.0
[INFO] [stderr]    Compiling git-exec v0.1.0 (/opt/rustwide/workdir/git-exec)
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling deadpool v0.12.3
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling utoipa-gen v5.4.0
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling hyper-rustls v0.27.7
[INFO] [stderr]    Compiling wiremock v0.6.5
[INFO] [stderr]    Compiling axum v0.8.8
[INFO] [stderr]    Compiling reqwest v0.13.2
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling utoipa v5.4.0
[INFO] [stderr]    Compiling domain v0.1.0 (/opt/rustwide/workdir/domain)
[INFO] [stderr]    Compiling utoipa-scalar v0.3.0
[INFO] [stderr]    Compiling transport v0.1.0 (/opt/rustwide/workdir/transport)
[INFO] [stderr]    Compiling audit v0.1.0 (/opt/rustwide/workdir/audit)
[INFO] [stderr]    Compiling forge v0.1.0 (/opt/rustwide/workdir/forge)
[INFO] [stderr]    Compiling orchestrator v0.1.0 (/opt/rustwide/workdir/orchestrator)
[INFO] [stderr]    Compiling server v0.1.0 (/opt/rustwide/workdir/server)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 53s
[INFO] running `Command { std: "docker" "inspect" "86413a9eaf9d0c0e06f4e5f6289d08a438ebd05ba0e364396a8e6d9b370b4597", 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" "86413a9eaf9d0c0e06f4e5f6289d08a438ebd05ba0e364396a8e6d9b370b4597" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.58s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/audit-ff9661fca835987b)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/domain-13da8812bb11eee2)
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 42 tests
[INFO] [stdout] test diff::tests::rejects_binary_file ... ok
[INFO] [stdout] test diff::tests::rejects_git_binary_patch ... ok
[INFO] [stdout] test diff::tests::rejects_invalid_diff_header ... ok
[INFO] [stdout] test diff::tests::rejects_path_traversal_in_diff ... ok
[INFO] [stdout] test diff::tests::rejects_smuggled_traditional_diff_after_git_section ... ok
[INFO] [stdout] test diff::tests::rejects_submodule ... ok
[INFO] [stdout] test diff::tests::rejects_oversized_patch ... ok
[INFO] [stdout] test diff::tests::rejects_traditional_unified_diff ... ok
[INFO] [stdout] test diff::tests::rejects_symlink ... ok
[INFO] [stdout] test diff::tests::rename_tracks_both_source_and_destination ... ok
[INFO] [stdout] test diff::tests::validates_deleted_file_patch ... ok
[INFO] [stdout] test diff::tests::validates_multi_file_patch ... ok
[INFO] [stdout] test diff::tests::validates_new_file_patch ... ok
[INFO] [stdout] test diff::tests::rejects_too_many_files ... ok
[INFO] [stdout] test diff::tests::validates_simple_patch ... ok
[INFO] [stdout] test policy::tests::allows_valid_branch_and_paths ... ok
[INFO] [stdout] test policy::tests::allows_when_no_branch_prefix_configured ... ok
[INFO] [stdout] test policy::tests::collects_multiple_deny_reasons ... ok
[INFO] [stdout] test policy::tests::default_config_has_expected_protected_paths ... ok
[INFO] [stdout] test policy::tests::denies_protected_forgejo_path ... ok
[INFO] [stdout] test policy::tests::denies_wrong_branch_prefix ... ok
[INFO] [stdout] test tests::accepts_nested_path ... ok
[INFO] [stdout] test policy::tests::denies_protected_github_path ... ok
[INFO] [stdout] test tests::allows_dotfiles_and_single_dot ... ok
[INFO] [stdout] test tests::change_request_mergeability_serializes_correctly ... ok
[INFO] [stdout] test tests::change_request_serializes_to_json ... ok
[INFO] [stdout] test tests::forge_credential_debug_redacts_token ... ok
[INFO] [stdout] test tests::issue_comment_event_to_channel_event_sets_meta_fields ... ok
[INFO] [stdout] test tests::pull_request_review_event_to_channel_event_sets_meta_fields ... ok
[INFO] [stdout] test tests::auto_merge_failed_event_channel_event ... ok
[INFO] [stdout] test tests::rejects_absolute_path ... ok
[INFO] [stdout] test tests::forge_credential_debug_none_token ... ok
[INFO] [stdout] test tests::accepts_simple_relative_path ... ok
[INFO] [stdout] test tests::issue_event_to_channel_event_sets_meta_fields ... ok
[INFO] [stdout] test tests::rejects_dotdot_traversal ... ok
[INFO] [stdout] test tests::change_request_event_action_round_trips_synchronize ... ok
[INFO] [stdout] test tests::rejects_null_bytes ... ok
[INFO] [stdout] test tests::rejects_empty_path ... ok
[INFO] [stdout] test tests::rejects_leading_or_trailing_whitespace ... ok
[INFO] [stdout] test tests::rejects_backslash_separators ... ok
[INFO] [stdout] test tests::ci_details_serializes ... ok
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/forge-444482d10b2db083)
[INFO] [stdout] test tests::combined_commit_status_serializes ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 42 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 166 tests
[INFO] [stdout] test gitlab::tests::aggregate_status_empty ... ok
[INFO] [stdout] test gitlab::tests::aggregate_status_all_success ... ok
[INFO] [stdout] test gitlab::tests::aggregate_status_with_failure ... ok
[INFO] [stdout] test gitlab::tests::gitlab_get_branch_encodes_forward_slash ... ok
[INFO] [stdout] test gitlab::tests::get_issue_sends_correct_request ... ok
[INFO] [stdout] test gitlab::tests::create_commit_status_sends_correct_body ... ok
[INFO] [stdout] test gitlab::tests::gitlab_get_branch_401_unauthorized_is_error ... ok
[INFO] [stdout] test gitlab::tests::gitlab_get_branch_500_internal_error_is_error ... ok
[INFO] [stdout] test gitlab::tests::gitlab_get_branch_error_for_empty_404_when_project_missing ... ok
[INFO] [stdout] test gitlab::tests::check_response_returns_generic_message_on_404_with_empty_body ... ok
[INFO] [stdout] test gitlab::tests::gitlab_get_branch_403_forbidden_is_error ... ok
[INFO] [stdout] test gitlab::tests::check_response_returns_descriptive_message_on_404 ... ok
[INFO] [stdout] test gitlab::tests::check_response_unwraps_nested_gitlab_error_object_on_404 ... ok
[INFO] [stdout] test gitlab::tests::gitlab_get_branch_404_repo_with_branch_in_name_is_error ... ok
[INFO] [stdout] test gitlab::tests::get_merge_request_returns_change_request ... ok
[INFO] [stdout] test gitlab::tests::gitlab_get_branch_encodes_special_branch_name ... ok
[INFO] [stdout] test gitlab::tests::check_response_unwraps_nested_gitlab_message_object_on_404 ... ok
[INFO] [stdout] test gitlab::tests::gitlab_mergeability_conflict ... ok
[INFO] [stdout] test gitlab::tests::gitlab_get_branch_error_for_ambiguous_404_when_project_missing ... ok
[INFO] [stdout] test gitlab::tests::gitlab_mergeability_conflict_preserves_has_conflicts_false ... ok
[INFO] [stdout] test gitlab::tests::gitlab_mergeability_commits_status_not_mergeable ... ok
[INFO] [stdout] test gitlab::tests::gitlab_mergeability_fallback_legacy_mergeable ... ok
[INFO] [stdout] test gitlab::tests::gitlab_mergeability_fallback_legacy_not_mergeable ... ok
[INFO] [stdout] test gitlab::tests::gitlab_mergeability_fallback_none ... ok
[INFO] [stdout] test gitlab::tests::gitlab_mergeability_has_conflicts_overrides_mergeable ... ok
[INFO] [stdout] test gitlab::tests::gitlab_mergeability_locked_is_not_mergeable ... ok
[INFO] [stdout] test gitlab::tests::gitlab_mergeability_mergeable ... ok
[INFO] [stdout] test gitlab::tests::gitlab_mergeability_new_blockers_not_mergeable ... ok
[INFO] [stdout] test gitlab::tests::gitlab_mergeability_required_approvals_not_met ... ok
[INFO] [stdout] test gitlab::tests::gitlab_mergeability_transient ... ok
[INFO] [stdout] test gitlab::tests::gitlab_mergeability_policy_blocker ... ok
[INFO] [stdout] test gitlab::tests::gitlab_mergeability_transient_ci_still_running ... ok
[INFO] [stdout] test gitlab::tests::gitlab_status_state_mapping ... ok
[INFO] [stdout] test gitlab::tests::issue_conversion ... ok
[INFO] [stdout] test gitlab::tests::merge_request_merged_state ... ok
[INFO] [stdout] test gitlab::tests::merge_request_state_mapping ... ok
[INFO] [stdout] test gitlab::tests::project_path_encodes_nested_namespace ... ok
[INFO] [stdout] test gitlab::tests::project_path_encodes_simple_namespace ... ok
[INFO] [stdout] test gitlab::tests::project_merge_styles_ff_no_squash ... ok
[INFO] [stdout] test gitlab::tests::project_merge_styles_merge_method ... ok
[INFO] [stdout] test gitlab::tests::webhook_issue_event ... ok
[INFO] [stdout] test gitlab::tests::webhook_merge_request_event ... ok
[INFO] [stdout] test gitlab::tests::webhook_note_on_issue_event ... ok
[INFO] [stdout] test gitlab::tests::gitlab_get_branch_details_for_existing ... ok
[INFO] [stdout] test gitlab::tests::webhook_token_missing ... ok
[INFO] [stdout] test gitlab::tests::webhook_token_verification_fails ... ok
[INFO] [stdout] test gitlab::tests::webhook_token_verification_succeeds ... ok
[INFO] [stdout] test gitlab::tests::webhook_note_on_merge_request_event ... ok
[INFO] [stdout] test gitlab::tests::gitlab_get_branch_exists_false_for_no_such_branch ... ok
[INFO] [stdout] test gitlab::tests::gitlab_get_branch_error_for_repo_not_found ... ok
[INFO] [stdout] test tests::add_issue_dependency_same_repo_single_request_to_base_repo ... ok
[INFO] [stdout] test gitlab::tests::gitlab_list_branches_prefix_filter ... ok
[INFO] [stdout] test gitlab::tests::gitlab_get_branch_exists_false_for_ambiguous_404_when_project_exists ... ok
[INFO] [stdout] test gitlab::tests::gitlab_list_branches_encodes_prefix_with_special_chars ... ok
[INFO] [stdout] test gitlab::tests::gitlab_get_branch_exists_false_for_does_not_exist ... ok
[INFO] [stdout] test gitlab::tests::gitlab_get_branch_exists_false_for_not_found ... ok
[INFO] [stdout] test gitlab::tests::gitlab_get_branch_exists_false_for_empty_404_when_project_exists ... ok
[INFO] [stdout] test gitlab::tests::schedule_auto_merge_404_returns_descriptive_message ... ok
[INFO] [stdout] test tests::add_issue_dependency_cross_repo_fetches_from_dep_repo_and_posts_to_base_repo ... ok
[INFO] [stdout] test gitlab::tests::webhook_full_flow ... ok
[INFO] [stdout] test gitlab::tests::gitlab_list_branches_multipage_with_high_limit ... ok
[INFO] [stdout] test tests::forgejo_mergeability_conflicting ... ok
[INFO] [stdout] test gitlab::tests::gitlab_list_branches_truncated_when_pages_exceeded ... ok
[INFO] [stdout] test tests::forgejo_mergeability_unknown ... ok
[INFO] [stdout] test tests::forgejo_mergeability_mergeable ... ok
[INFO] [stdout] test tests::add_issue_label_creates_label_when_missing ... ok
[INFO] [stdout] test gitlab::tests::gitlab_list_branches_respects_limit ... ok
[INFO] [stdout] test gitlab::tests::gitlab_list_branches_truncated_true_when_prefix_matches_none ... ok
[INFO] [stdout] test tests::add_issue_label_reuses_existing_label ... ok
[INFO] [stdout] test tests::check_response_returns_descriptive_message_on_404 ... ok
[INFO] [stdout] test tests::check_response_returns_generic_message_on_404_with_empty_body ... ok
[INFO] [stdout] test tests::check_response_returns_not_found_on_404 ... ok
[INFO] [stdout] test tests::check_response_returns_redirect_on_301 ... ok
[INFO] [stdout] test tests::create_commit_status_sends_correct_body ... ok
[INFO] [stdout] test tests::check_response_returns_unexpected_status_on_500 ... ok
[INFO] [stdout] test tests::create_commit_status_propagates_error_on_failure ... ok
[INFO] [stdout] test tests::forgejo_webhook_parses_pull_request_review_approved ... ok
[INFO] [stdout] test tests::forgejo_webhook_parses_pull_request_approved_event_type ... ok
[INFO] [stdout] test tests::check_response_returns_generic_message_on_404_with_non_json_body ... ok
[INFO] [stdout] test tests::create_commit_status_uses_correct_url ... ok
[INFO] [stdout] test tests::forgejo_webhook_parses_per_action_review_payload ... ok
[INFO] [stdout] test tests::create_issue_sends_correct_body ... ok
[INFO] [stdout] test tests::forgejo_webhook_parses_pull_request_review_request_changes ... ok
[INFO] [stdout] test tests::forgejo_webhook_ignores_unsupported_action ... ok
[INFO] [stdout] test tests::forgejo_webhook_ignores_pending_review ... ok
[INFO] [stdout] test tests::forgejo_webhook_parses_supported_change_request_event ... ok
[INFO] [stdout] test tests::forgejo_webhook_parses_synchronized_action_variant ... ok
[INFO] [stdout] test tests::get_allowed_merge_styles_includes_fast_forward_only ... ok
[INFO] [stdout] test tests::forgejo_webhook_rejects_invalid_signature ... ok
[INFO] [stdout] test tests::get_allowed_merge_styles_includes_rebase_merge ... ok
[INFO] [stdout] test tests::get_branch_401_unauthorized_is_error ... ok
[INFO] [stdout] test tests::get_branch_404_repo_with_branch_in_name_is_error ... ok
[INFO] [stdout] test tests::get_branch_403_forbidden_is_error ... ok
[INFO] [stdout] test tests::get_branch_404_with_empty_body_is_error ... ok
[INFO] [stdout] test tests::get_branch_500_internal_error_is_error ... ok
[INFO] [stdout] test tests::get_allowed_merge_styles_returns_enabled_styles ... ok
[INFO] [stdout] test tests::get_branch_401_repo_verification_is_error ... ok
[INFO] [stdout] test tests::get_branch_encodes_forward_slash_in_branch_name ... ok
[INFO] [stdout] test tests::get_branch_encodes_special_branch_name ... ok
[INFO] [stdout] test tests::get_branch_returns_details_for_existing_branch ... ok
[INFO] [stdout] test tests::get_branch_returns_exists_false_for_branch_does_not_exist ... ok
[INFO] [stdout] test tests::get_combined_commit_status_propagates_error ... ok
[INFO] [stdout] test tests::get_branch_with_slash_returns_error_for_repo_not_found ... ok
[INFO] [stdout] test tests::get_branch_returns_error_for_ambiguous_404_when_repo_missing ... ok
[INFO] [stdout] test tests::get_branch_returns_error_for_repo_not_found ... ok
[INFO] [stdout] test tests::get_branch_returns_error_for_empty_404_when_repo_missing ... ok
[INFO] [stdout] test tests::get_branch_returns_exists_false_for_no_such_branch ... ok
[INFO] [stdout] test tests::get_branch_returns_exists_false_for_ambiguous_404_when_repo_exists ... ok
[INFO] [stdout] test tests::get_branch_returns_exists_false_for_branch_not_found ... ok
[INFO] [stdout] test tests::get_combined_commit_status_handles_empty_statuses ... ok
[INFO] [stdout] test tests::get_branch_returns_exists_false_for_empty_404_when_repo_exists ... ok
[INFO] [stdout] test tests::parse_commit_status_state_known_values ... ok
[INFO] [stdout] test tests::get_combined_commit_status_returns_success ... ok
[INFO] [stdout] test tests::parse_forge_error_message_extracts_error_key ... ok
[INFO] [stdout] test tests::parse_commit_status_state_unknown_defaults_to_pending ... ok
[INFO] [stdout] test tests::parse_forge_error_message_falls_back_to_top_level_error_when_message_nested ... ok
[INFO] [stdout] test tests::parse_forge_error_message_handles_empty_json_object ... ok
[INFO] [stdout] test tests::list_branches_encodes_prefix_with_special_chars ... ok
[INFO] [stdout] test tests::parse_forge_error_message_handles_top_level_array_of_strings ... ok
[INFO] [stdout] test tests::parse_forge_error_message_handles_gitlab_structured_errors ... ok
[INFO] [stdout] test tests::parse_forge_error_message_prefers_message_over_error ... ok
[INFO] [stdout] test tests::parse_forge_error_message_prefers_nested_message_over_flat_error ... ok
[INFO] [stdout] test tests::parse_forge_error_message_prefers_message_over_nested_error ... ok
[INFO] [stdout] test tests::parse_forge_error_message_returns_none_for_empty_body ... ok
[INFO] [stdout] test tests::parse_forge_error_message_returns_none_for_plain_text ... ok
[INFO] [stdout] test tests::parse_forge_error_message_unwraps_nested_error_in_message_object ... ok
[INFO] [stdout] test tests::parse_forge_error_message_unwraps_nested_error_object ... ok
[INFO] [stdout] test tests::parse_forge_error_message_unwraps_structured_error_array ... ok
[INFO] [stdout] test tests::parse_forge_error_message_unwraps_nested_message_object ... ok
[INFO] [stdout] test tests::parse_forge_error_message_extracts_message_key ... ok
[INFO] [stdout] test tests::get_comments_merges_and_sorts_chronologically ... ok
[INFO] [stdout] test tests::get_default_merge_style_returns_none_when_missing ... ok
[INFO] [stdout] test tests::get_default_merge_style_returns_none_when_empty ... ok
[INFO] [stdout] test tests::get_default_merge_style_returns_style ... ok
[INFO] [stdout] test tests::list_branches_multipage_with_high_limit ... ok
[INFO] [stdout] test tests::list_branches_multipage_pagination ... ok
[INFO] [stdout] test tests::get_repository_merge_settings_returns_delete_branch_default ... ok
[INFO] [stdout] test tests::list_branches_truncated_when_pages_exceeded ... ok
[INFO] [stdout] test tests::list_branches_uses_limit_pagination_param ... ok
[INFO] [stdout] test tests::remove_issue_dependency_cross_repo_fetches_from_dep_repo_and_deletes_on_base_repo ... ok
[INFO] [stdout] test tests::list_branches_scan_budget_limit ... ok
[INFO] [stdout] test tests::resolve_ci_failure_rejects_untrusted_origin ... ok
[INFO] [stdout] test tests::resolve_ci_failure_aggregates_step_errors ... ok
[INFO] [stdout] test tests::remove_issue_dependency_same_repo_backward_compatible ... ok
[INFO] [stdout] test tests::list_branches_respects_limit ... ok
[INFO] [stdout] test tests::resolve_ci_failure_handles_lossy_utf8_logs ... ok
[INFO] [stdout] test tests::remove_issue_label_deletes_by_id ... ok
[INFO] [stdout] test tests::remove_issue_label_errors_when_label_not_found ... ok
[INFO] [stdout] test tests::resolve_ci_failure_returns_error_on_malformed_log_data ... ok
[INFO] [stdout] test tests::list_branches_prefix_filter ... ok
[INFO] [stdout] test tests::resolve_ci_failure_uses_woodpecker_token ... ok
[INFO] [stdout] test tests::list_branches_truncated_true_when_prefix_matches_none ... ok
[INFO] [stdout] test tests::resolve_ci_failure_resolves_woodpecker_failure ... ok
[INFO] [stdout] test tests::schedule_auto_merge_errors_on_unrelated_409 ... ok
[INFO] [stdout] test tests::schedule_auto_merge_errors_on_unrelated_405 ... ok
[INFO] [stdout] test tests::schedule_auto_merge_404_returns_descriptive_message ... ok
[INFO] [stdout] test tests::schedule_auto_merge_omits_delete_branch_flag_when_unspecified ... ok
[INFO] [stdout] test tests::schedule_auto_merge_succeeds_on_already_merged_405 ... ok
[INFO] [stdout] test tests::resolve_ci_failure_returns_error_on_same_origin_bad_path ... ok
[INFO] [stdout] test tests::resolve_ci_failure_returns_error_on_empty_log_excerpt ... ok
[INFO] [stdout] test tests::schedule_auto_merge_succeeds_on_already_scheduled_409 ... ok
[INFO] [stdout] test tests::schedule_auto_merge_sends_correct_body ... ok
[INFO] [stdout] test tests::schedule_auto_merge_succeeds_on_duplicate_key_500 ... ok
[INFO] [stdout] test tests::test_parse_woodpecker_url_rejects_path_traversal ... ok
[INFO] [stdout] test tests::test_parse_woodpecker_url_with_prefix ... ok
[INFO] [stdout] test tests::schedule_auto_merge_errors_on_unrelated_500 ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 166 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.17s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/git_exec-89f5d4e83775eaac)
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test tests::auth_header_encodes_correctly ... ok
[INFO] [stdout] test tests::full_workflow_with_local_repo ... ok
[INFO] [stdout] test tests::rebase_no_merge_commits ... ok
[INFO] [stdout] test tests::rebase_fixup_preserves_new_files_from_target ... ok
[INFO] [stdout] test tests::rebase_fixup_squashes_commit_into_target ... ok
[INFO] [stdout] test tests::rebase_onto_replays_commits_on_updated_base ... ok
[INFO] [stdout] test tests::rebase_drop_and_fixup_combined ... ok
[INFO] [stdout] test tests::rebase_drop_removes_commit ... ok
[INFO] [stdout] test tests::rebase_fixup_multiple_into_same_target ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.14s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/orchestrator-e7cb8c4d4e472bb5)
[INFO] [stdout] 
[INFO] [stdout] running 68 tests
[INFO] [stdout] test tests::close_issue_fails_on_first_audit_error ... ok
[INFO] [stdout] test tests::close_issue_fails_on_close_error ... ok
[INFO] [stdout] test tests::close_issue_fails_on_comment_error ... ok
[INFO] [stdout] test tests::commit_patch_rejects_invalid_diff ... ok
[INFO] [stdout] test tests::close_issue_succeeds_and_records_both_audits ... ok
[INFO] [stdout] test tests::add_issue_dependency_audit_same_repo_format ... ok
[INFO] [stdout] test tests::close_change_request_records_audit_and_closes ... ok
[INFO] [stdout] test tests::commit_patch_rejects_existing_branch_without_prefix ... ok
[INFO] [stdout] test tests::close_change_request_rejects_wrong_prefix ... ok
[INFO] [stdout] test tests::add_issue_dependency_same_repo_uses_base_repo_for_adapter ... ok
[INFO] [stdout] test tests::comment_on_change_request_records_audit_and_comments ... ok
[INFO] [stdout] test tests::credential_override_reaches_adapter ... ok
[INFO] [stdout] test tests::add_issue_dependency_passes_dep_repo_to_adapter ... ok
[INFO] [stdout] test tests::add_issue_dependency_audit_cross_repo_format ... ok
[INFO] [stdout] test tests::close_issue_fails_on_close_audit_error ... ok
[INFO] [stdout] test tests::commit_patch_rejects_protected_paths ... ok
[INFO] [stdout] test tests::commit_patch_rejects_wrong_branch_prefix ... ok
[INFO] [stdout] test tests::credential_none_reaches_adapter ... ok
[INFO] [stdout] test tests::create_issue_records_audit_and_creates ... ok
[INFO] [stdout] test tests::close_change_request_rejects_without_prefix ... ok
[INFO] [stdout] test tests::get_change_request_checks_errors_when_no_head_sha ... ok
[INFO] [stdout] test tests::get_change_request_checks_returns_status_and_audits ... ok
[INFO] [stdout] test tests::get_change_request_ci_details_error ... ok
[INFO] [stdout] test tests::get_change_request_ci_details_failure ... ok
[INFO] [stdout] test tests::add_issue_label_records_audit_and_adds ... ok
[INFO] [stdout] test tests::remove_issue_dependency_audit_cross_repo_format ... ok
[INFO] [stdout] test tests::get_change_request_ci_details_returns_details_and_audits ... ok
[INFO] [stdout] test tests::remove_issue_dependency_passes_dep_repo_to_adapter ... ok
[INFO] [stdout] test tests::open_change_request_records_audit_and_creates ... ok
[INFO] [stdout] test tests::remove_issue_dependency_audit_same_repo_format ... ok
[INFO] [stdout] test tests::open_change_request_rejects_wrong_branch_prefix ... ok
[INFO] [stdout] test tests::remove_issue_dependency_same_repo_uses_base_repo_for_adapter ... ok
[INFO] [stdout] test tests::reads_a_repository_file_and_records_audit ... ok
[INFO] [stdout] test tests::get_change_request_ci_details_pending ... ok
[INFO] [stdout] test tests::rejects_empty_path ... ok
[INFO] [stdout] test tests::resolve_committer_identity_falls_back_on_error ... ok
[INFO] [stdout] test tests::rejects_path_traversal ... ok
[INFO] [stdout] test tests::sanitize_commit_message_can_strip_trailers_only ... ok
[INFO] [stdout] test tests::returns_upstream_error_on_forge_failure ... ok
[INFO] [stdout] test tests::sanitize_commit_message_removes_co_committed_by_trailers ... ok
[INFO] [stdout] test tests::sanitize_commit_message_handles_uppercase_trailers_and_blank_lines ... ok
[INFO] [stdout] test tests::schedule_auto_merge_head_sha_mismatch ... ok
[INFO] [stdout] test tests::schedule_auto_merge_prefers_explicit_delete_branch_override ... ok
[INFO] [stdout] test tests::schedule_auto_merge_posts_kick_status ... ok
[INFO] [stdout] test tests::schedule_auto_merge_records_audit ... ok
[INFO] [stdout] test tests::rebase_branch_rebase_onto_rejects_combined_operations ... ok
[INFO] [stdout] test tests::schedule_auto_merge_uses_repo_default_delete_branch_setting ... ok
[INFO] [stdout] test tests::resolve_committer_identity_falls_back_on_empty_email ... ok
[INFO] [stdout] test tests::resolve_committer_identity_falls_back_on_empty_username ... ok
[INFO] [stdout] test tests::resolve_committer_identity_uses_forge_user ... ok
[INFO] [stdout] test tests::schedule_auto_merge_missing_head_sha ... ok
[INFO] [stdout] test tests::returns_audit_error_on_sink_failure ... ok
[INFO] [stdout] test tests::remove_issue_label_records_audit_and_removes ... ok
[INFO] [stdout] test tests::schedule_auto_merge_invalid_merge_style ... ok
[INFO] [stdout] test tests::schedule_auto_merge_rejects_disallowed_strategy ... ok
[INFO] [stdout] test tests::schedule_auto_merge_valid_merge_style ... ok
[INFO] [stdout] test tests::submit_review_rejects_invalid_event ... ok
[INFO] [stdout] test tests::submit_review_records_audit_and_submits ... ok
[INFO] [stdout] test tests::update_change_request_records_audit ... ok
[INFO] [stdout] test tests::update_change_request_rejects_when_both_none ... ok
[INFO] [stdout] test tests::update_issue_records_audit ... ok
[INFO] [stdout] test tests::update_change_request_rejects_wrong_prefix ... ok
[INFO] [stdout] test tests::update_change_request_rejects_without_prefix ... ok
[INFO] [stdout] test tests::update_issue_updates_body_only ... ok
[INFO] [stdout] test tests::validate_rebase_operations_rejects_rebase_onto ... ok
[INFO] [stdout] test tests::update_issue_rejects_when_both_none ... ok
[INFO] [stdout] test tests::rebase_branch_drop_succeeds_through_orchestrator ... ok
[INFO] [stdout] test tests::rebase_branch_rebase_onto_succeeds_through_orchestrator ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 68 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.67s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/server-e30a063d21e35040)
[INFO] [stdout] 
[INFO] [stdout] running 128 tests
[INFO] [stdout] test api::tests::commit_patch_body_deserializes ... ok
[INFO] [stdout] test api::tests::contents_query_deserializes_without_ref ... ok
[INFO] [stdout] test api::tests::contents_query_deserializes_with_ref ... ok
[INFO] [stdout] test auth::tests::debug_redacts_tokens ... ok
[INFO] [stdout] test auth::tests::extract_token_from_bearer ... ok
[INFO] [stdout] test auth::tests::extract_token_from_basic_auth ... ok
[INFO] [stdout] test auth::tests::extract_token_rejects_basic_with_empty_password ... ok
[INFO] [stdout] test auth::tests::extract_token_returns_none_without_header ... ok
[INFO] [stdout] test api::tests::rebase_body_deserializes_rebase_onto ... ok
[INFO] [stdout] test auth::tests::returns_none_for_empty_token ... ok
[INFO] [stdout] test api::tests::error_body_serializes ... ok
[INFO] [stdout] test auth::tests::returns_none_for_invalid_token ... ok
[INFO] [stdout] test auth::tests::resolves_valid_token ... ok
[INFO] [stdout] test auto_merge::tests::choose_merge_style_falls_back_to_rebase_merge_when_needed ... ok
[INFO] [stdout] test auto_merge::tests::choose_merge_style_falls_back_to_merge_last ... ok
[INFO] [stdout] test auto_merge::tests::choose_merge_style_errors_when_no_styles_allowed ... ok
[INFO] [stdout] test auto_merge::tests::choose_merge_style_falls_back_when_default_not_allowed ... ok
[INFO] [stdout] test auto_merge::tests::choose_merge_style_prefers_fast_forward_only_default ... ok
[INFO] [stdout] test config::tests::allowed_forge_aliases_global_wildcard ... ok
[INFO] [stdout] test auto_merge::tests::choose_merge_style_prefers_default_when_allowed ... ok
[INFO] [stdout] test config::tests::can_list_repos_nested_namespace_wildcard ... ok
[INFO] [stdout] test config::tests::can_list_repos_owner_wildcard_allows_without_filter ... ok
[INFO] [stdout] test config::tests::accepts_gitlab_forge_type ... ok
[INFO] [stdout] test config::tests::can_list_repos_empty_denied ... ok
[INFO] [stdout] test config::tests::allowed_forge_aliases_empty ... ok
[INFO] [stdout] test config::tests::can_list_repos_exact_match_allows_without_filter ... ok
[INFO] [stdout] test config::tests::allowed_forge_aliases_specific ... ok
[INFO] [stdout] test config::tests::can_list_repos_global_wildcard ... ok
[INFO] [stdout] test config::tests::listable_owners_exact_match_returns_owner ... ok
[INFO] [stdout] test config::tests::listable_owners_forge_wildcard_returns_empty ... ok
[INFO] [stdout] test config::tests::listable_owners_mixed_unscoped_for_other_forge ... ok
[INFO] [stdout] test config::tests::allowed_forge_aliases_nested_namespace ... ok
[INFO] [stdout] test config::tests::listable_owners_multiple_patterns_returns_all_owners ... ok
[INFO] [stdout] test config::tests::empty_allowlist_denies_all ... ok
[INFO] [stdout] test config::tests::listable_owners_global_wildcard_returns_empty ... ok
[INFO] [stdout] test config::tests::listable_owners_owner_wildcard_returns_owners ... ok
[INFO] [stdout] test config::tests::debug_redacts_tokens ... ok
[INFO] [stdout] test config::tests::can_list_repos_forge_wildcard ... ok
[INFO] [stdout] test config::tests::listable_owners_nested_namespace_returns_full_path ... ok
[INFO] [stdout] test auto_merge::tests::choose_merge_style_prefers_rebase_without_default ... ok
[INFO] [stdout] test config::tests::listable_owners_wrong_forge_returns_none ... ok
[INFO] [stdout] test config::tests::converts_policy_to_domain_type ... ok
[INFO] [stdout] test config::tests::partial_glob_treated_as_literal ... ok
[INFO] [stdout] test config::tests::rejects_duplicate_forge_aliases ... ok
[INFO] [stdout] test config::tests::parses_forge_without_token ... ok
[INFO] [stdout] test config::tests::rejects_forge_identity_unknown_alias ... ok
[INFO] [stdout] test config::tests::rejects_missing_forges_section ... ok
[INFO] [stdout] test config::tests::is_owner_accessible_forge_wildcard ... ok
[INFO] [stdout] test config::tests::rejects_invalid_forge_alias_in_allowed_repos ... ok
[INFO] [stdout] test config::tests::repo_deeply_nested_namespace ... ok
[INFO] [stdout] test config::tests::is_owner_accessible_no_matching_patterns ... ok
[INFO] [stdout] test config::tests::is_owner_accessible_scoped_owner ... ok
[INFO] [stdout] test config::tests::is_owner_accessible_global_wildcard ... ok
[INFO] [stdout] test config::tests::rejects_unsupported_forge_type ... ok
[INFO] [stdout] test config::tests::repo_forge_wildcard ... ok
[INFO] [stdout] test config::tests::repo_exact_match ... ok
[INFO] [stdout] test config::tests::rejects_empty_webhook_secret ... ok
[INFO] [stdout] test config::tests::parses_forge_webhook_config ... ok
[INFO] [stdout] test config::tests::repo_global_wildcard ... ok
[INFO] [stdout] test config::tests::parses_valid_config ... ok
[INFO] [stdout] test config::tests::rejects_malformed_allowed_repos_pattern ... ok
[INFO] [stdout] test config::tests::repo_nested_namespace_exact_match ... ok
[INFO] [stdout] test config::tests::repo_nested_namespace_wildcard ... ok
[INFO] [stdout] test config::tests::repo_owner_wildcard ... ok
[INFO] [stdout] test config::tests::validates_nested_namespace_pattern ... ok
[INFO] [stdout] test config::tests::validates_forge_alias_format ... ok
[INFO] [stdout] test events::tests::publishes_issue_event_to_authorized_subscribers ... ok
[INFO] [stdout] test events::tests::replays_events_after_last_seen_id ... ok
[INFO] [stdout] test git_proxy::tests::build_upstream_url_encodes_reserved_characters ... ok
[INFO] [stdout] test git_proxy::tests::build_upstream_url_encodes_path_traversal ... ok
[INFO] [stdout] test git_proxy::tests::repo_name_without_suffix ... ok
[INFO] [stdout] test git_proxy::tests::build_upstream_url_encodes_query_injection ... ok
[INFO] [stdout] test git_proxy::tests::repo_name_strips_git_suffix ... ok
[INFO] [stdout] test handlers::tests::add_issue_dependency_rejects_repo_only ... ok
[INFO] [stdout] test handlers::tests::add_issue_dependency_forbidden_cross_repo ... ok
[INFO] [stdout] test handlers::tests::add_issue_dependency_rejects_owner_only ... ok
[INFO] [stdout] test handlers::tests::add_issue_dependency_allowed_cross_repo ... ok
[INFO] [stdout] test git_proxy::tests::receive_pack_rejected_returns_403 ... ok
[INFO] [stdout] test git_proxy::tests::info_refs_rejects_disallowed_repo ... ok
[INFO] [stdout] test git_proxy::tests::info_refs_rejects_unauthorized ... ok
[INFO] [stdout] test handlers::tests::create_issue_returns_201 ... ok
[INFO] [stdout] test handlers::tests::agent_info_returns_accessible_forges ... ok
[INFO] [stdout] test handlers::tests::docs_route_absent_when_disabled ... ok
[INFO] [stdout] test handlers::tests::get_branch_unauthorized_repo_returns_403 ... ok
[INFO] [stdout] test handlers::tests::get_branch_allowed_repo_returns_200 ... ok
[INFO] [stdout] test handlers::tests::get_contents_returns_file ... ok
[INFO] [stdout] test handlers::tests::get_pull_comments_returns_comments ... ok
[INFO] [stdout] test handlers::tests::get_pull_ci_details_returns_lowercase_state ... ok
[INFO] [stdout] test handlers::tests::get_pull_serializes_mergeability_and_has_conflicts ... ok
[INFO] [stdout] test handlers::tests::list_branches_allowed_repo_returns_200 ... ok
[INFO] [stdout] test git_proxy::tests::upload_pack_forwards_content_encoding ... ok
[INFO] [stdout] test git_proxy::tests::info_refs_proxies_to_upstream ... ok
[INFO] [stdout] test handlers::tests::get_pull_returns_change_request ... ok
[INFO] [stdout] test handlers::tests::list_branches_unauthorized_repo_returns_403 ... ok
[INFO] [stdout] test git_proxy::tests::info_refs_rejects_receive_pack_service ... ok
[INFO] [stdout] test git_proxy::tests::upload_pack_prefers_agent_forge_identity_credential ... ok
[INFO] [stdout] test handlers::tests::agent_info_omits_branch_prefix_when_none ... ok
[INFO] [stdout] test handlers::tests::patch_issue_close_without_message_returns_400 ... ok
[INFO] [stdout] test handlers::tests::patch_issue_returns_updated_issue ... ok
[INFO] [stdout] test handlers::tests::list_pulls_returns_array ... ok
[INFO] [stdout] test handlers::tests::agent_info_returns_401_without_token ... ok
[INFO] [stdout] test handlers::tests::agent_info_records_audit ... ok
[INFO] [stdout] test handlers::tests::patch_issue_rejects_empty_body ... ok
[INFO] [stdout] test handlers::tests::post_pulls_returns_201 ... ok
[INFO] [stdout] test handlers::tests::post_patches_rejects_wrong_branch_per_agent_policy ... ok
[INFO] [stdout] test git_proxy::tests::info_refs_prefers_agent_forge_identity_credential ... ok
[INFO] [stdout] test handlers::tests::patch_issue_close_with_blank_message_returns_400 ... ok
[INFO] [stdout] test handlers::tests::remove_issue_dependency_forbidden_cross_repo ... ok
[INFO] [stdout] test handlers::tests::list_pulls_serializes_mergeability_and_has_conflicts ... ok
[INFO] [stdout] test handlers::tests::patch_pull_returns_updated_pr ... ok
[INFO] [stdout] test handlers::tests::agent_info_filters_inaccessible_forges ... ok
[INFO] [stdout] test handlers::tests::resolve_commit_author_rejects_blank_values ... ok
[INFO] [stdout] test handlers::tests::resolve_commit_author_defaults_to_agent_identity ... ok
[INFO] [stdout] test registry::tests::debug_redacts_tokens ... ok
[INFO] [stdout] test registry::tests::empty_registry ... ok
[INFO] [stdout] test handlers::tests::remove_issue_dependency_rejects_owner_only ... ok
[INFO] [stdout] test handlers::tests::returns_401_without_token ... ok
[INFO] [stdout] test handlers::tests::resolve_commit_author_rejects_partial_author ... ok
[INFO] [stdout] test handlers::tests::remove_issue_dependency_allowed_cross_repo ... ok
[INFO] [stdout] test handlers::tests::remove_issue_dependency_rejects_repo_only ... ok
[INFO] [stdout] test handlers::tests::returns_401_with_bad_token ... ok
[INFO] [stdout] test handlers::tests::returns_404_for_unknown_forge ... ok
[INFO] [stdout] test handlers::tests::post_patches_returns_201 ... ok
[INFO] [stdout] test handlers::tests::returns_403_for_unauthorized_repo ... ok
[INFO] [stdout] test handlers::tests::patch_issue_close_with_message_succeeds ... ok
[INFO] [stdout] test events::tests::dedupe_suppresses_duplicate_deliveries ... ok
[INFO] [stdout] test events::tests::publishes_only_to_authorized_subscribers ... ok
[INFO] [stdout] test events::tests::replay_filters_unauthorized_events ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 128 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/server-30d6c04bdc0ad5ab)
[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 unittests src/lib.rs (/opt/rustwide/target/debug/deps/transport-271adce8c3231b96)
[INFO] [stdout] 
[INFO] [stdout] running 78 tests
[INFO] [stdout] test tests::build_url_encodes_reserved_characters ... ok
[INFO] [stdout] test tests::build_url_query_params_encoded ... ok
[INFO] [stdout] test tests::build_url_nested_path_segments ... ok
[INFO] [stdout] test tests::close_issue_blocked_in_read_only_mode ... ok
[INFO] [stdout] test tests::add_issue_dependency_rejects_partial_cross_repo_owner_only ... ok
[INFO] [stdout] test tests::comment_on_change_request_blocked_in_read_only_mode ... ok
[INFO] [stdout] test tests::debug_redacts_token ... ok
[INFO] [stdout] test tests::assign_issue_blocked_in_read_only_mode ... ok
[INFO] [stdout] test tests::add_issue_dependency_accepts_full_cross_repo ... ok
[INFO] [stdout] test tests::add_issue_label_blocked_in_read_only_mode ... ok
[INFO] [stdout] test tests::deserialize_add_issue_label_tool ... ok
[INFO] [stdout] test tests::deserialize_index_from_number ... ok
[INFO] [stdout] test tests::deserialize_add_issue_label_tool_string_index ... ok
[INFO] [stdout] test tests::close_issue_sends_correct_payload ... ok
[INFO] [stdout] test tests::gateway_config_debug_redacts_token ... ok
[INFO] [stdout] test tests::deserialize_remove_issue_label_tool ... ok
[INFO] [stdout] test tests::add_issue_dependency_blocked_in_read_only_mode ... ok
[INFO] [stdout] test tests::comment_on_issue_allowed_in_read_only_mode ... ok
[INFO] [stdout] test tests::get_branch_url_construction ... ok
[INFO] [stdout] test tests::get_branch_url_encodes_special_branch_name_in_query ... ok
[INFO] [stdout] test tests::close_change_request_blocked_in_read_only_mode ... ok
[INFO] [stdout] test tests::deserialize_index_from_string ... ok
[INFO] [stdout] test tests::add_issue_dependency_accepts_no_cross_repo ... ok
[INFO] [stdout] test tests::add_issue_dependency_rejects_partial_cross_repo_repo_only ... ok
[INFO] [stdout] test tests::list_branches_url_construction ... ok
[INFO] [stdout] test tests::list_branches_url_with_prefix_and_limit ... ok
[INFO] [stdout] test tests::commit_patch_fails_in_read_only_mode ... ok
[INFO] [stdout] test tests::get_info_returns_updated_instructions ... ok
[INFO] [stdout] test tests::get_info_advertises_claude_channel_when_enabled ... ok
[INFO] [stdout] test tests::get_change_request_ci_details_tool ... ok
[INFO] [stdout] test tests::get_change_request_tool_passes_mergeability ... ok
[INFO] [stdout] test tests::list_change_requests_tool_passes_mergeability ... ok
[INFO] [stdout] test tests::comment_on_issue_calls_gateway ... ok
[INFO] [stdout] test tests::create_issue_blocked_in_read_only_mode ... ok
[INFO] [stdout] test tests::multi_gateway_forge_info_includes_unreachable_gateway ... ok
[INFO] [stdout] test tests::create_issue_calls_gateway ... ok
[INFO] [stdout] test tests::get_change_request_comments_calls_gateway ... ok
[INFO] [stdout] test tests::list_issues_calls_gateway ... ok
[INFO] [stdout] test tests::multi_gateway_picks_up_topology_change ... ok
[INFO] [stdout] test tests::get_issue_calls_gateway ... ok
[INFO] [stdout] test tests::parse_git_author_ident_extracts_name_and_email ... ok
[INFO] [stdout] test tests::get_change_request_diff_writes_file ... ok
[INFO] [stdout] test tests::multi_gateway_unknown_forge_returns_error ... ok
[INFO] [stdout] test tests::multi_gateway_ambiguous_alias_returns_error ... ok
[INFO] [stdout] test tests::commit_patch_calls_gateway ... ok
[INFO] [stdout] test tests::multi_gateway_forge_info_surfaces_ambiguous_aliases ... ok
[INFO] [stdout] test tests::rebase_branch_blocked_in_read_only_mode ... ok
[INFO] [stdout] test tests::get_change_request_diff_handles_large_patch ... ok
[INFO] [stdout] test tests::read_repository_file_calls_gateway ... ok
[INFO] [stdout] test tests::remove_issue_dependency_accepts_no_cross_repo ... ok
[INFO] [stdout] test tests::multi_gateway_forge_info_aggregates ... ok
[INFO] [stdout] test tests::multi_gateway_skips_malformed_url_during_discovery ... ok
[INFO] [stdout] test tests::resolve_commit_author_prefers_explicit_values ... ok
[INFO] [stdout] test tests::multi_gateway_forge_info_skips_malformed_url ... ok
[INFO] [stdout] test tests::remove_issue_dependency_rejects_partial_cross_repo_repo_only ... ok
[INFO] [stdout] test tests::multi_gateway_skips_unreachable_during_discovery ... ok
[INFO] [stdout] test tests::remove_issue_dependency_blocked_in_read_only_mode ... ok
[INFO] [stdout] test tests::open_change_request_blocked_in_read_only_mode ... ok
[INFO] [stdout] test tests::single_gateway_forge_info_preserves_flat_shape ... ok
[INFO] [stdout] test tests::remove_issue_label_blocked_in_read_only_mode ... ok
[INFO] [stdout] test tests::multi_gateway_routes_to_correct_gateway ... ok
[INFO] [stdout] test tests::update_issue_blocked_in_read_only_mode ... ok
[INFO] [stdout] test tests::remove_issue_dependency_rejects_partial_cross_repo_owner_only ... ok
[INFO] [stdout] test tests::multi_gateway_rediscovers_when_gateway_recovers ... ok
[INFO] [stdout] test tests::schedule_auto_merge_omits_delete_branch_when_unspecified ... ok
[INFO] [stdout] test tests::update_change_request_blocked_in_read_only_mode ... ok
[INFO] [stdout] test tests::startup_channel_spike_reaches_client ... ok
[INFO] [stdout] test tests::submit_change_request_review_allowed_in_read_only_mode ... ok
[INFO] [stdout] test tests::sse_event_is_forwarded_as_channel_notification ... ok
[INFO] [stdout] test tests::update_issue_calls_gateway ... ok
[INFO] [stdout] test tests::remove_issue_dependency_accepts_full_cross_repo ... ok
[INFO] [stdout] test tests::schedule_auto_merge_blocked_in_read_only_mode ... ok
[INFO] [stdout] test tests::schedule_auto_merge_calls_gateway ... ok
[INFO] [stdout] test tests::issue_event_is_buffered_for_polling ... ok
[INFO] [stdout] test tests::issue_comment_event_is_buffered_for_polling ... ok
[INFO] [stdout] test tests::poll_events_works_without_channels ... ok
[INFO] [stdout] test tests::pull_request_review_event_is_buffered_for_polling ... ok
[INFO] [stdout] test tests::sse_event_is_buffered_for_polling ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 78 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.74s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/transport-6f1f22d2652e304b)
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test tests::resolve_gateway_token_accepts_single_inline_token ... ok
[INFO] [stdout] test tests::resolve_gateway_token_rejects_multiple_sources ... ok
[INFO] [stdout] test tests::resolve_gateway_token_rejects_all_three_sources ... ok
[INFO] [stdout] test tests::resolve_gateway_token_rejects_no_sources ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests audit
[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 domain
[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 forge
[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 git_exec
[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 orchestrator
[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 server
[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 transport
[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" "86413a9eaf9d0c0e06f4e5f6289d08a438ebd05ba0e364396a8e6d9b370b4597", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "86413a9eaf9d0c0e06f4e5f6289d08a438ebd05ba0e364396a8e6d9b370b4597", kill_on_drop: false }`
[INFO] [stdout] 86413a9eaf9d0c0e06f4e5f6289d08a438ebd05ba0e364396a8e6d9b370b4597
