[INFO] fetching crate packweave 0.4.4...
[INFO] testing packweave-0.4.4 against beta-2026-04-21 for beta-1.96-2
[INFO] extracting crate packweave 0.4.4 into /workspace/builds/worker-4-tc2/source
[INFO] started tweaking crates.io crate packweave 0.4.4
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate packweave 0.4.4
[INFO] tweaked toml for crates.io crate packweave 0.4.4 written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate packweave 0.4.4 on toolchain beta-2026-04-21
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate packweave 0.4.4 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 3a637c52cb3d907c6aa7e41e8d426256019361dc05fdd89154742f1cef5f80f2
[INFO] running `Command { std: "docker" "start" "-a" "3a637c52cb3d907c6aa7e41e8d426256019361dc05fdd89154742f1cef5f80f2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "3a637c52cb3d907c6aa7e41e8d426256019361dc05fdd89154742f1cef5f80f2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3a637c52cb3d907c6aa7e41e8d426256019361dc05fdd89154742f1cef5f80f2", kill_on_drop: false }`
[INFO] [stdout] 3a637c52cb3d907c6aa7e41e8d426256019361dc05fdd89154742f1cef5f80f2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 85579f2599e02985f82831b3cf0ece1af1140817f313777a7cbd2431afb0e204
[INFO] running `Command { std: "docker" "start" "-a" "85579f2599e02985f82831b3cf0ece1af1140817f313777a7cbd2431afb0e204", kill_on_drop: false }`
[INFO] [stderr]    Compiling cc v1.2.57
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling utf8parse v0.2.2
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling rustls v0.23.37
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling colorchoice v1.0.5
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling anstyle-parse v1.0.0
[INFO] [stderr]    Compiling anstyle-parse v0.2.7
[INFO] [stderr]    Compiling iri-string v0.7.10
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling anstream v0.6.21
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling jiff v0.2.23
[INFO] [stderr]    Compiling semver v1.0.27
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling tokio v1.50.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling clap_derive v4.6.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling clap v4.6.0
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling env_filter v1.0.0
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling env_logger v0.11.9
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling rustls-webpki v0.103.10
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling hyper-rustls v0.27.7
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling packweave v0.4.4 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 56.13s
[INFO] running `Command { std: "docker" "inspect" "85579f2599e02985f82831b3cf0ece1af1140817f313777a7cbd2431afb0e204", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "85579f2599e02985f82831b3cf0ece1af1140817f313777a7cbd2431afb0e204", kill_on_drop: false }`
[INFO] [stdout] 85579f2599e02985f82831b3cf0ece1af1140817f313777a7cbd2431afb0e204
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c7e6860d889716ee1d18f877830a2af73422c9840892af481df7164d2e34d7f0
[INFO] running `Command { std: "docker" "start" "-a" "c7e6860d889716ee1d18f877830a2af73422c9840892af481df7164d2e34d7f0", kill_on_drop: false }`
[INFO] [stderr]    Compiling tokio-macros v2.6.1
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling env_filter v1.0.0
[INFO] [stderr]    Compiling predicates-core v1.0.10
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling num_cpus v1.17.0
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling difflib v0.4.0
[INFO] [stderr]    Compiling assert_cmd v2.2.0
[INFO] [stderr]    Compiling normalize-line-endings v0.3.0
[INFO] [stderr]    Compiling sdd v3.0.10
[INFO] [stderr]    Compiling assert-json-diff v2.0.2
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling serial_test_derive v3.4.0
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling predicates-tree v1.0.13
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling env_logger v0.11.9
[INFO] [stderr]    Compiling predicates v3.1.4
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling scc v2.4.0
[INFO] [stderr]    Compiling tokio v1.50.0
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling serial_test v3.4.0
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling deadpool v0.12.3
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-rustls v0.27.7
[INFO] [stderr]    Compiling wiremock v0.6.5
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling packweave v0.4.4 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `assert_cmd::prelude`
[INFO] [stdout]  --> tests/e2e/cli_auth.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use assert_cmd::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `assert_cmd::prelude`
[INFO] [stdout]  --> tests/e2e/cli_publish.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use assert_cmd::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `assert_cmd::prelude`
[INFO] [stdout]  --> tests/e2e/cli_diagnose.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use assert_cmd::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `assert_cmd::prelude`
[INFO] [stdout]  --> tests/e2e/lifecycle.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use assert_cmd::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `assert_cmd::prelude`
[INFO] [stdout]  --> tests/e2e/cli_dry_run.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use assert_cmd::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `assert_cmd::prelude`
[INFO] [stdout]  --> tests/e2e/cli_sync.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use assert_cmd::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `assert_cmd::prelude`
[INFO] [stdout]  --> tests/e2e/cli_hooks.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use assert_cmd::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `assert_cmd::prelude`
[INFO] [stdout]  --> tests/e2e/cli_use.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use assert_cmd::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `assert_cmd::prelude`
[INFO] [stdout]  --> tests/e2e/cli_init.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use assert_cmd::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `assert_cmd::prelude`
[INFO] [stdout]  --> tests/e2e/cli_update.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use assert_cmd::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `assert_cmd::prelude`
[INFO] [stdout]  --> tests/e2e/cli_install.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use assert_cmd::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `assert_cmd::prelude`
[INFO] [stdout]  --> tests/e2e/cli_remove.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use assert_cmd::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `assert_cmd::prelude`
[INFO] [stdout]  --> tests/e2e/cli_list.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use assert_cmd::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `assert_cmd::prelude`
[INFO] [stdout]  --> tests/e2e/cli_tap.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use assert_cmd::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `assert_cmd::prelude`
[INFO] [stdout]  --> tests/e2e/cli_profile.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use assert_cmd::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `assert_cmd::prelude`
[INFO] [stdout]  --> tests/e2e/cli_search.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use assert_cmd::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_prompt`, `with_command`, `with_hook`, and `with_dependency` are never used
[INFO] [stdout]    --> tests/e2e/helpers.rs:134:12
[INFO] [stdout]     |
[INFO] [stdout] 107 | impl FixturePack {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub fn with_prompt(mut self, content: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn with_command(mut self, name: &str, content: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn with_hook(mut self, event: &str, entries: &[(&str, &str)]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn with_dependency(mut self, name: &str, version_req: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 32.72s
[INFO] running `Command { std: "docker" "inspect" "c7e6860d889716ee1d18f877830a2af73422c9840892af481df7164d2e34d7f0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c7e6860d889716ee1d18f877830a2af73422c9840892af481df7164d2e34d7f0", kill_on_drop: false }`
[INFO] [stdout] c7e6860d889716ee1d18f877830a2af73422c9840892af481df7164d2e34d7f0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 485c394c087744fcd83250cf54b0071f80e8d3ed88bed7f378a10bcc93cce680
[INFO] running `Command { std: "docker" "start" "-a" "485c394c087744fcd83250cf54b0071f80e8d3ed88bed7f378a10bcc93cce680", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `assert_cmd::prelude`
[INFO] [stderr]  --> tests/e2e/cli_auth.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 | use assert_cmd::prelude::*;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `assert_cmd::prelude`
[INFO] [stderr]  --> tests/e2e/cli_publish.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use assert_cmd::prelude::*;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `assert_cmd::prelude`
[INFO] [stderr]  --> tests/e2e/cli_diagnose.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use assert_cmd::prelude::*;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `assert_cmd::prelude`
[INFO] [stderr]  --> tests/e2e/lifecycle.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use assert_cmd::prelude::*;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `assert_cmd::prelude`
[INFO] [stderr]  --> tests/e2e/cli_dry_run.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use assert_cmd::prelude::*;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `assert_cmd::prelude`
[INFO] [stderr]  --> tests/e2e/cli_sync.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use assert_cmd::prelude::*;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `assert_cmd::prelude`
[INFO] [stderr]  --> tests/e2e/cli_hooks.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use assert_cmd::prelude::*;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `assert_cmd::prelude`
[INFO] [stderr]  --> tests/e2e/cli_use.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use assert_cmd::prelude::*;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `assert_cmd::prelude`
[INFO] [stderr]  --> tests/e2e/cli_init.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use assert_cmd::prelude::*;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `assert_cmd::prelude`
[INFO] [stderr]  --> tests/e2e/cli_update.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use assert_cmd::prelude::*;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `assert_cmd::prelude`
[INFO] [stderr]  --> tests/e2e/cli_install.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 | use assert_cmd::prelude::*;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stderr] 
[INFO] [stdout] running 214 tests
[INFO] [stderr] warning: unused import: `assert_cmd::prelude`
[INFO] [stderr]  --> tests/e2e/cli_remove.rs:2:5
[INFO] [stderr]   |
[INFO] [stdout] test adapters::claude_code::tests::deep_merge_objects ... ok
[INFO] [stderr] 2 | use assert_cmd::prelude::*;
[INFO] [stdout] test adapters::claude_code::tests::idempotent_prompt_apply ... ok
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `assert_cmd::prelude`
[INFO] [stderr]  --> tests/e2e/cli_list.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use assert_cmd::prelude::*;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `assert_cmd::prelude`
[INFO] [stdout] test adapters::claude_code::tests::apply_servers_rejects_non_object_config ... ok
[INFO] [stderr]  --> tests/e2e/cli_tap.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use assert_cmd::prelude::*;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `assert_cmd::prelude`
[INFO] [stderr]  --> tests/e2e/cli_profile.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use assert_cmd::prelude::*;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `assert_cmd::prelude`
[INFO] [stderr]  --> tests/e2e/cli_search.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use assert_cmd::prelude::*;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `with_prompt`, `with_command`, `with_hook`, and `with_dependency` are never used
[INFO] [stderr]    --> tests/e2e/helpers.rs:134:12
[INFO] [stderr]     |
[INFO] [stderr] 107 | impl FixturePack {
[INFO] [stderr]     | ---------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stdout] test adapters::claude_code::tests::apply_servers_omits_env_key_when_server_has_no_env_vars ... ok
[INFO] [stderr] 134 |     pub fn with_prompt(mut self, content: &str) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 140 |     pub fn with_command(mut self, name: &str, content: &str) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stdout] test adapters::claude_code::tests::remove_retains_root_when_project_manifest_missing_but_claude_md_has_orphans ... ok
[INFO] [stderr] ...
[INFO] [stdout] test adapters::claude_code::tests::remove_prompts_is_surgical_with_multiple_blocks ... ok
[INFO] [stderr] 165 |     pub fn with_hook(mut self, event: &str, entries: &[(&str, &str)]) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 177 |     pub fn with_dependency(mut self, name: &str, version_req: &str) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] test core::config::tests::add_tap_valid ... ok
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stdout] test core::config::tests::add_tap_duplicate_errors ... ok
[INFO] [stderr] warning: `packweave` (test "e2e") generated 17 warnings
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.28s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/packweave-bae52028e91ff8fb)
[INFO] [stdout] test adapters::gemini_cli::tests::remove_prompts_is_surgical_with_multiple_blocks ... ok
[INFO] [stdout] test core::config::tests::default_config_values ... ok
[INFO] [stdout] test adapters::gemini_cli::tests::apply_settings_and_remove_unchanged ... ok
[INFO] [stdout] test adapters::claude_code::tests::apply_settings_and_remove_unchanged ... ok
[INFO] [stdout] test adapters::claude_code::tests::apply_and_remove_prompts ... ok
[INFO] [stdout] test adapters::claude_code::tests::apply_and_remove_servers ... ok
[INFO] [stdout] test core::config::tests::list_taps_returns_registered ... ok
[INFO] [stdout] test adapters::claude_code::tests::apply_settings_preserves_user_modified_key ... ok
[INFO] [stdout] test core::config::tests::remove_tap_valid ... ok
[INFO] [stdout] test adapters::gemini_cli::tests::apply_servers_rejects_non_object_config ... ok
[INFO] [stdout] test adapters::gemini_cli::tests::apply_servers_omits_env_key_when_server_has_no_env_vars ... ok
[INFO] [stdout] test core::config::tests::roundtrip_toml ... ok
[INFO] [stdout] test adapters::gemini_cli::tests::apply_servers_writes_env_vars_as_references ... ok
[INFO] [stdout] test core::config::tests::roundtrip_toml_with_taps ... ok
[INFO] [stdout] test core::config::tests::validate_tap_name_valid_formats ... ok
[INFO] [stdout] test adapters::gemini_cli::tests::apply_and_remove_prompts ... ok
[INFO] [stdout] test adapters::claude_code::tests::remove_drops_root_when_project_manifest_missing_and_no_orphans ... ok
[INFO] [stdout] test core::config::tests::validate_tap_name_invalid_formats ... ok
[INFO] [stdout] test core::conflict::tests::both_sides_empty_tools_no_conflict ... ok
[INFO] [stdout] test adapters::gemini_cli::tests::apply_and_remove_servers ... ok
[INFO] [stdout] test core::conflict::tests::detects_tool_conflict_between_different_servers ... ok
[INFO] [stdout] test adapters::claude_code::tests::remove_retains_root_when_project_manifest_missing_but_mcp_json_has_orphans ... ok
[INFO] [stdout] test adapters::claude_code::tests::apply_servers_writes_env_vars_as_references ... ok
[INFO] [stdout] test core::conflict::tests::empty_tools_list_produces_no_conflict ... ok
[INFO] [stdout] test core::conflict::tests::multiple_conflicts_across_multiple_packs ... ok
[INFO] [stdout] test core::conflict::tests::no_conflict_when_no_installed_packs ... ok
[INFO] [stdout] test core::conflict::tests::no_conflict_when_tools_do_not_overlap ... ok
[INFO] [stdout] test core::conflict::tests::same_pack_name_skips_self_conflict ... ok
[INFO] [stdout] test core::conflict::tests::same_server_name_different_packs_no_tool_conflict ... ok
[INFO] [stdout] test core::credentials::tests::is_github_registry_accepts_subdomains ... ok
[INFO] [stdout] test core::credentials::tests::is_github_registry_detects_custom_github ... ok
[INFO] [stdout] test core::credentials::tests::is_github_registry_detects_default ... ok
[INFO] [stdout] test core::credentials::tests::is_github_registry_rejects_non_github ... ok
[INFO] [stdout] test core::credentials::tests::is_github_registry_rejects_substring_match ... ok
[INFO] [stdout] test core::credentials::tests::reject_symlink_credentials ... ok
[INFO] [stdout] test core::credentials::tests::resolve_returns_none_when_absent ... ok
[INFO] [stdout] test core::config::tests::remove_tap_not_found ... ok
[INFO] [stdout] test core::credentials::tests::resolve_prefers_env_var ... ok
[INFO] [stdout] test core::credentials::tests::validate_token_accepts_valid_pat ... ok
[INFO] [stdout] test core::credentials::tests::resolve_trims_whitespace ... ok
[INFO] [stdout] test core::credentials::tests::validate_token_rejects_control_chars ... ok
[INFO] [stdout] test core::credentials::tests::validate_token_rejects_empty ... ok
[INFO] [stdout] test core::lockfile::tests::lock_and_unlock ... ok
[INFO] [stdout] test core::lockfile::tests::old_lockfile_without_source_deserializes ... ok
[INFO] [stdout] test core::mcp_registry::tests::deserialize_minimal_response ... ok
[INFO] [stdout] test core::lockfile::tests::roundtrip_toml ... ok
[INFO] [stdout] test core::mcp_registry::tests::deserialize_real_api_response ... ok
[INFO] [stdout] test core::pack::tests::accept_http_server_with_url ... ok
[INFO] [stdout] test core::pack::tests::allow_bearer_env_var_in_authorization_header ... ok
[INFO] [stdout] test core::pack::tests::allow_env_var_for_x_api_key ... ok
[INFO] [stdout] test core::pack::tests::has_hooks_returns_true_with_claude_code_hooks ... ok
[INFO] [stdout] test core::pack::tests::hooks_for_cli_returns_none_for_unsupported_cli ... ok
[INFO] [stdout] test core::pack::tests::allow_env_var_in_bearer_prefix ... ok
[INFO] [stdout] test core::pack::tests::has_hooks_returns_false_without_hooks ... ok
[INFO] [stdout] test core::pack::tests::is_env_var_reference_works ... ok
[INFO] [stdout] test core::pack::tests::allow_env_var_reference_for_authorization ... ok
[INFO] [stdout] test core::mcp_registry::tests::deserialize_full_response ... ok
[INFO] [stdout] test core::pack::tests::allow_safe_static_headers ... ok
[INFO] [stdout] test core::pack::tests::reject_basic_auth_in_custom_header ... ok
[INFO] [stdout] test core::pack::tests::parse_minimal_pack ... ok
[INFO] [stdout] test core::pack::tests::allow_short_non_secret_custom_header ... ok
[INFO] [stdout] test core::pack::tests::contains_env_var_reference_works ... ok
[INFO] [stdout] test core::pack::tests::reject_duplicate_servers ... ok
[INFO] [stdout] test core::pack::tests::reject_empty_description ... ok
[INFO] [stdout] test core::pack::tests::reject_invalid_name ... ok
[INFO] [stdout] test core::pack::tests::reject_http_server_without_url ... ok
[INFO] [stdout] test core::pack::tests::parse_http_server_with_headers ... ok
[INFO] [stdout] test core::credentials::tests::validate_token_rejects_newlines ... ok
[INFO] [stdout] test core::pack::tests::hooks_for_cli_parses_entries ... ok
[INFO] [stdout] test core::pack::tests::looks_like_secret_detects_patterns ... ok
[INFO] [stdout] test core::profile::tests::add_and_remove_packs ... ok
[INFO] [stdout] test core::pack::tests::reject_bearer_token_in_custom_header ... ok
[INFO] [stdout] test core::pack::tests::parse_pack_with_servers ... ok
[INFO] [stdout] test core::pack::tests::reject_long_random_string_in_custom_header ... ok
[INFO] [stdout] test core::pack::tests::reject_stdio_server_without_command ... ok
[INFO] [stdout] test core::profile::tests::validate_profile_name_accepts_valid ... ok
[INFO] [stdout] test core::pack::tests::reject_plaintext_authorization_header ... ok
[INFO] [stdout] test core::pack::tests::x_custom_header_not_in_safe_list ... ok
[INFO] [stdout] test core::pack::tests::targets_default_to_true ... ok
[INFO] [stdout] test core::pack::tests::reject_plaintext_x_api_key_header ... ok
[INFO] [stdout] test core::publish::tests::check_version_not_published_different_version_ok ... ok
[INFO] [stdout] test core::publish::tests::check_version_not_published_existing_version_fails ... ok
[INFO] [stdout] test core::profile::tests::validate_profile_name_rejects_traversal ... ok
[INFO] [stdout] test core::publish::tests::check_version_not_published_new_pack_ok ... ok
[INFO] [stdout] test core::publish::tests::parse_github_registry_url_accepts_github_com ... ok
[INFO] [stdout] test core::publish::tests::parse_github_registry_url_custom_org ... ok
[INFO] [stdout] test core::publish::tests::parse_github_registry_url_default ... ok
[INFO] [stdout] test core::profile::tests::list_all_and_delete_with_temp_dir ... ok
[INFO] [stdout] test core::publish::tests::parse_github_registry_url_non_github_fails ... ok
[INFO] [stdout] test core::publish::tests::parse_github_registry_url_rejects_evil_subdomain ... ok
[INFO] [stdout] test core::publish::tests::collect_pack_files_requires_pack_toml ... ok
[INFO] [stdout] test core::publish::tests::collect_pack_files_rejects_large_file ... ok
[INFO] [stdout] test core::publish::tests::parse_github_registry_url_rejects_http ... ok
[INFO] [stdout] test core::publish::tests::collect_pack_files_skips_hidden_and_unknown ... ok
[INFO] [stdout] test core::publish::tests::resolve_api_base_default ... ok
[INFO] [stdout] test core::publish::tests::parse_github_registry_url_too_short_fails ... ok
[INFO] [stdout] test core::publish::tests::collect_pack_files_includes_readme ... ok
[INFO] [stdout] test core::registry::tests::composite_fetch_metadata_falls_through_to_tap ... ok
[INFO] [stdout] test core::registry::tests::composite_fetch_metadata_not_found ... ok
[INFO] [stdout] test core::registry::tests::composite_fetch_metadata_official_first ... ok
[INFO] [stdout] test core::credentials::tests::store_and_remove_roundtrip ... ok
[INFO] [stdout] test core::publish::tests::collect_pack_files_includes_nested_dirs ... ok
[INFO] [stdout] test core::registry::tests::composite_fetch_metadata_official_registry_error_is_fatal ... ok
[INFO] [stdout] test core::registry::tests::composite_fetch_metadata_tap_registry_error_is_ignored ... ok
[INFO] [stdout] test core::registry::tests::composite_fetch_metadata_three_registries_skip_erroring_tap ... ok
[INFO] [stdout] test core::registry::tests::composite_fetch_version_falls_through ... ok
[INFO] [stdout] test core::registry::tests::composite_fetch_version_tap_registry_error_is_ignored ... ok
[INFO] [stdout] test core::registry::tests::composite_publish_delegates_to_first_registry ... ok
[INFO] [stdout] test core::registry::tests::composite_fetch_version_official_registry_error_is_fatal ... ok
[INFO] [stdout] test core::publish::tests::collect_pack_files_includes_expected_dirs ... ok
[INFO] [stdout] test core::credentials::tests::store_sets_permissions_atomically ... ok
[INFO] [stdout] test core::registry::tests::composite_search_merges_deduplicates ... ok
[INFO] [stdout] test core::registry::tests::composite_search_official_description_wins ... ok
[INFO] [stdout] test core::registry::tests::composite_search_official_error_is_fatal ... ok
[INFO] [stdout] test core::registry::tests::composite_search_tap_error_is_ignored ... ok
[INFO] [stdout] test core::registry::tests::latest_version ... ok
[INFO] [stdout] test core::registry::tests::latest_version_no_releases ... ok
[INFO] [stdout] test core::registry::tests::mock_registry_fetch_version ... ok
[INFO] [stdout] test core::registry::tests::mock_registry_search ... ok
[INFO] [stdout] test core::registry::tests::new_strips_old_index_json_suffix ... ok
[INFO] [stdout] test core::registry::tests::trusted_host_case_insensitive ... ok
[INFO] [stdout] test core::registry::tests::new_strips_trailing_slash ... ok
[INFO] [stdout] test core::registry::tests::new_strips_index_json_with_trailing_slash ... ok
[INFO] [stdout] test core::registry::tests::trusted_host_matches_with_port ... ok
[INFO] [stdout] test core::registry::tests::trusted_host_rejects_evil_subdomain ... ok
[INFO] [stdout] test core::registry::tests::trusted_host_matches_github_raw ... ok
[INFO] [stdout] test core::registry::tests::trusted_host_rejects_non_github ... ok
[INFO] [stdout] test core::registry::tests::trusted_host_rejects_localhost ... ok
[INFO] [stdout] test core::registry::tests::trusted_host_matches_github_api ... ok
[INFO] [stdout] test core::resolver::tests::already_satisfied_transitive ... ok
[INFO] [stdout] test core::resolver::tests::circular_dependency_returns_error ... ok
[INFO] [stdout] test core::resolver::tests::deep_transitive_chain ... ok
[INFO] [stdout] test core::resolver::tests::diamond_dependency_version_conflict ... ok
[INFO] [stdout] test core::resolver::tests::plan_install_latest ... ok
[INFO] [stdout] test core::resolver::tests::plan_install_not_found ... ok
[INFO] [stdout] test core::resolver::tests::plan_install_upgrades_within_range ... ok
[INFO] [stdout] test core::resolver::tests::plan_install_already_satisfied ... ok
[INFO] [stdout] test core::resolver::tests::plan_install_with_version_req ... ok
[INFO] [stdout] test core::resolver::tests::plan_remove ... ok
[INFO] [stdout] test core::resolver::tests::plan_remove_not_installed ... ok
[INFO] [stdout] test core::resolver::tests::transitive_dependency_installed ... ok
[INFO] [stdout] test core::store::tests::equivalent_paths_backslash_produce_same_hash ... ok
[INFO] [stdout] test core::store::tests::equivalent_paths_produce_same_hash ... ok
[INFO] [stdout] test core::store::tests::fetch_rejects_release_without_pack_toml ... ok
[INFO] [stdout] test core::store::tests::evict_local_does_not_affect_registry ... ok
[INFO] [stdout] test core::store::tests::normalize_path_backslash_dot_segments ... ok
[INFO] [stdout] test core::store::tests::list_cached_mixed_sources ... ok
[INFO] [stdout] test core::store::tests::normalize_path_mixed_separators ... ok
[INFO] [stdout] test core::store::tests::normalize_path_only_dot ... ok
[INFO] [stdout] test core::store::tests::normalize_path_dotdot_past_root ... ok
[INFO] [stdout] test core::store::tests::evict_registry_does_not_affect_local ... ok
[INFO] [stdout] test core::store::tests::normalize_path_empty_becomes_dot ... ok
[INFO] [stdout] test core::store::tests::normalize_path_double_separators ... ok
[INFO] [stdout] test core::store::tests::list_cached_empty_store ... ok
[INFO] [stdout] test core::store::tests::normalize_path_preserves_clean_absolute ... ok
[INFO] [stdout] test core::store::tests::normalize_path_pure_backslash_path ... ok
[INFO] [stdout] test core::store::tests::normalize_path_relative_with_dot ... ok
[INFO] [stdout] test core::store::tests::normalize_path_relative_dotdot_at_start ... ok
[INFO] [stdout] test core::store::tests::normalize_path_removes_dot_segments ... ok
[INFO] [stdout] test core::store::tests::normalize_path_trailing_slashes ... ok
[INFO] [stdout] test core::store::tests::normalize_path_windows_backslashes ... ok
[INFO] [stdout] test core::store::tests::normalize_path_removes_trailing_slash ... ok
[INFO] [stdout] test core::store::tests::normalize_path_root ... ok
[INFO] [stdout] test core::store::tests::split_local_suffix_preserves_invalid_suffix ... ok
[INFO] [stdout] test core::store::tests::pack_dir_registry_and_local_are_different ... ok
[INFO] [stdout] test core::store::tests::split_local_suffix_strips_valid_suffix ... ok
[INFO] [stdout] test core::store::tests::stable_hash_dirty_path_equals_clean ... ok
[INFO] [stdout] test core::store::tests::list_cached_local_only ... ok
[INFO] [stdout] test core::store::tests::split_local_suffix_preserves_plain_version ... ok
[INFO] [stdout] test core::store::tests::normalize_path_windows_double_backslash ... ok
[INFO] [stdout] test core::store::tests::normalize_path_resolves_dotdot_segments ... ok
[INFO] [stdout] test core::store::tests::stable_hash_is_pinned ... ok
[INFO] [stdout] test core::store::tests::version_dir_name_different_paths_produce_different_hashes ... ok
[INFO] [stdout] test core::store::tests::version_dir_name_local_includes_hash_suffix ... ok
[INFO] [stdout] test core::credentials::tests::resolve_reads_file ... ok
[INFO] [stdout] test core::store::tests::version_dir_name_registry_has_no_suffix ... ok
[INFO] [stdout] test core::store::tests::list_cached_multiple_local_paths_both_returned ... ok
[INFO] [stdout] test core::update::tests::parse_pack_spec_invalid_version_req ... ok
[INFO] [stdout] test core::store::tests::list_cached_sort_order_deterministic ... ok
[INFO] [stdout] test core::update::tests::parse_pack_spec_scoped_name_at_latest ... ok
[INFO] [stdout] test core::update::tests::parse_pack_spec_with_version ... ok
[INFO] [stdout] test core::store::tests::list_cached_registry_only ... ok
[INFO] [stdout] test core::store::tests::write_files_creates_expected_files ... ok
[INFO] [stdout] test core::store::tests::write_files_empty_map_succeeds ... ok
[INFO] [stdout] test core::store::tests::write_files_rejects_absolute_path ... ok
[INFO] [stdout] test core::store::tests::write_files_rejects_backslash_absolute ... ok
[INFO] [stdout] test core::store::tests::write_files_rejects_path_traversal ... ok
[INFO] [stdout] test core::update::tests::parse_pack_spec_plain_name ... ok
[INFO] [stdout] test core::store::tests::write_files_rejects_windows_drive_prefix ... ok
[INFO] [stdout] test core::update::tests::major_version_req_major_0 ... ok
[INFO] [stdout] test core::update::tests::major_version_req_major_1 ... ok
[INFO] [stdout] test core::update::tests::parse_pack_spec_at_latest ... ok
[INFO] [stdout] test core::update::tests::parse_pack_spec_at_prefix ... ok
[INFO] [stdout] test core::update::tests::parse_pack_spec_hyphenated_name ... ok
[INFO] [stdout] test core::use_profile::tests::diff_empty_to_populated ... ok
[INFO] [stdout] test core::use_profile::tests::diff_mixed_add_remove_and_keep ... ok
[INFO] [stdout] test core::use_profile::tests::diff_populated_to_empty ... ok
[INFO] [stdout] test error::tests::invalid_version_req_error_message ... ok
[INFO] [stdout] test error::tests::pack_not_available_error_message ... ok
[INFO] [stdout] test core::use_profile::tests::dry_run_switch_does_not_call_adapters_or_registry ... ok
[INFO] [stdout] test core::use_profile::tests::diff_version_change_produces_remove_and_add ... ok
[INFO] [stdout] test core::use_profile::tests::diff_identical_profiles_is_empty ... ok
[INFO] [stdout] test core::use_profile::tests::load_or_fetch_local_source_errors_when_not_in_store ... ok
[INFO] [stdout] test core::use_profile::tests::load_or_fetch_git_source_errors_when_not_in_store ... ok
[INFO] [stdout] test error::tests::manifest_mismatch_error_message ... ok
[INFO] [stdout] test core::registry::tests::composite_publish_no_registries - should panic ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 214 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.19s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/weave-78f599397690b2c1)
[INFO] [stdout] 
[INFO] [stdout] running 235 tests
[INFO] [stdout] test adapters::claude_code::tests::deep_merge_objects ... ok
[INFO] [stdout] test adapters::claude_code::tests::apply_servers_rejects_non_object_config ... ok
[INFO] [stdout] test adapters::claude_code::tests::apply_and_remove_prompts ... ok
[INFO] [stdout] test adapters::claude_code::tests::idempotent_prompt_apply ... ok
[INFO] [stdout] test adapters::claude_code::tests::apply_settings_preserves_user_modified_key ... ok
[INFO] [stdout] test adapters::claude_code::tests::apply_settings_and_remove_unchanged ... ok
[INFO] [stdout] test adapters::gemini_cli::tests::apply_servers_rejects_non_object_config ... ok
[INFO] [stdout] test adapters::gemini_cli::tests::apply_servers_writes_env_vars_as_references ... ok
[INFO] [stdout] test adapters::claude_code::tests::apply_servers_writes_env_vars_as_references ... ok
[INFO] [stdout] test adapters::gemini_cli::tests::apply_settings_and_remove_unchanged ... ok
[INFO] [stdout] test cli::diagnose::tests::human_format_empty_profile ... ok
[INFO] [stdout] test cli::diagnose::tests::human_format_no_issues ... ok
[INFO] [stdout] test cli::diagnose::tests::human_format_with_drift ... ok
[INFO] [stdout] test adapters::claude_code::tests::remove_prompts_is_surgical_with_multiple_blocks ... ok
[INFO] [stdout] test cli::diagnose::tests::json_format_roundtrip ... ok
[INFO] [stdout] test adapters::gemini_cli::tests::apply_servers_omits_env_key_when_server_has_no_env_vars ... ok
[INFO] [stdout] test adapters::claude_code::tests::apply_and_remove_servers ... ok
[INFO] [stdout] test adapters::claude_code::tests::apply_servers_omits_env_key_when_server_has_no_env_vars ... ok
[INFO] [stdout] test adapters::gemini_cli::tests::apply_and_remove_servers ... ok
[INFO] [stdout] test cli::diagnose::tests::pack_targets_adapter_mapping ... ok
[INFO] [stdout] test cli::diagnose::tests::report_all_ok ... ok
[INFO] [stdout] test adapters::gemini_cli::tests::remove_prompts_is_surgical_with_multiple_blocks ... ok
[INFO] [stdout] test cli::diagnose::tests::report_drifted ... ok
[INFO] [stdout] test cli::diagnose::tests::report_empty_profile ... ok
[INFO] [stdout] test cli::diagnose::tests::report_missing_pack ... ok
[INFO] [stdout] test cli::diagnose::tests::report_not_targeted ... ok
[INFO] [stdout] test cli::diagnose::tests::report_skipped_uninstalled_adapter ... ok
[INFO] [stdout] test adapters::gemini_cli::tests::apply_and_remove_prompts ... ok
[INFO] [stdout] test adapters::claude_code::tests::remove_drops_root_when_project_manifest_missing_and_no_orphans ... ok
[INFO] [stdout] test adapters::claude_code::tests::remove_retains_root_when_project_manifest_missing_but_claude_md_has_orphans ... ok
[INFO] [stdout] test cli::list::tests::format_targets_subset ... ok
[INFO] [stdout] test cli::search::tests::invalid_target_is_rejected ... ok
[INFO] [stdout] test cli::search::tests::mcp_and_target_are_mutually_exclusive ... ok
[INFO] [stdout] test cli::search::tests::valid_targets_are_accepted ... ok
[INFO] [stdout] test cli::list::tests::format_targets_none ... ok
[INFO] [stdout] test cli::style::tests::styled_accepts_owned_string ... ok
[INFO] [stdout] test cli::style::tests::styled_borrows_str_slice ... ok
[INFO] [stdout] test cli::sync::tests::empty_lockfile_is_noop ... ok
[INFO] [stdout] test core::config::tests::add_tap_duplicate_errors ... ok
[INFO] [stdout] test core::config::tests::add_tap_valid ... ok
[INFO] [stdout] test cli::style::tests::styled_is_plain_text_when_stdout_not_tty ... ok
[INFO] [stdout] test core::config::tests::remove_tap_not_found ... ok
[INFO] [stdout] test core::config::tests::list_taps_returns_registered ... ok
[INFO] [stdout] test core::config::tests::remove_tap_valid ... ok
[INFO] [stdout] test adapters::claude_code::tests::remove_retains_root_when_project_manifest_missing_but_mcp_json_has_orphans ... ok
[INFO] [stdout] test core::config::tests::roundtrip_toml ... ok
[INFO] [stdout] test core::config::tests::validate_tap_name_valid_formats ... ok
[INFO] [stdout] test core::config::tests::default_config_values ... ok
[INFO] [stdout] test cli::list::tests::format_targets_all ... ok
[INFO] [stdout] test core::conflict::tests::both_sides_empty_tools_no_conflict ... ok
[INFO] [stdout] test core::conflict::tests::detects_tool_conflict_between_different_servers ... ok
[INFO] [stdout] test core::config::tests::validate_tap_name_invalid_formats ... ok
[INFO] [stdout] test core::credentials::tests::is_github_registry_rejects_substring_match ... ok
[INFO] [stdout] test core::config::tests::roundtrip_toml_with_taps ... ok
[INFO] [stdout] test core::conflict::tests::empty_tools_list_produces_no_conflict ... ok
[INFO] [stdout] test core::conflict::tests::multiple_conflicts_across_multiple_packs ... ok
[INFO] [stdout] test core::conflict::tests::no_conflict_when_no_installed_packs ... ok
[INFO] [stdout] test core::conflict::tests::no_conflict_when_tools_do_not_overlap ... ok
[INFO] [stdout] test core::conflict::tests::same_pack_name_skips_self_conflict ... ok
[INFO] [stdout] test core::conflict::tests::same_server_name_different_packs_no_tool_conflict ... ok
[INFO] [stdout] test core::credentials::tests::is_github_registry_accepts_subdomains ... ok
[INFO] [stdout] test core::credentials::tests::is_github_registry_detects_custom_github ... ok
[INFO] [stdout] test core::credentials::tests::is_github_registry_detects_default ... ok
[INFO] [stdout] test core::credentials::tests::is_github_registry_rejects_non_github ... ok
[INFO] [stdout] test core::mcp_registry::tests::deserialize_minimal_response ... ok
[INFO] [stdout] test core::credentials::tests::validate_token_rejects_control_chars ... ok
[INFO] [stdout] test core::credentials::tests::validate_token_rejects_empty ... ok
[INFO] [stdout] test core::credentials::tests::validate_token_rejects_newlines ... ok
[INFO] [stdout] test core::lockfile::tests::lock_and_unlock ... ok
[INFO] [stdout] test core::credentials::tests::validate_token_accepts_valid_pat ... ok
[INFO] [stdout] test core::lockfile::tests::old_lockfile_without_source_deserializes ... ok
[INFO] [stdout] test core::credentials::tests::resolve_reads_file ... ok
[INFO] [stdout] test core::lockfile::tests::roundtrip_toml ... ok
[INFO] [stdout] test core::mcp_registry::tests::deserialize_full_response ... ok
[INFO] [stdout] test core::pack::tests::allow_bearer_env_var_in_authorization_header ... ok
[INFO] [stdout] test core::pack::tests::accept_http_server_with_url ... ok
[INFO] [stdout] test core::pack::tests::allow_env_var_for_x_api_key ... ok
[INFO] [stdout] test core::pack::tests::allow_short_non_secret_custom_header ... ok
[INFO] [stdout] test core::pack::tests::allow_safe_static_headers ... ok
[INFO] [stdout] test core::pack::tests::is_env_var_reference_works ... ok
[INFO] [stdout] test core::pack::tests::has_hooks_returns_true_with_claude_code_hooks ... ok
[INFO] [stdout] test core::pack::tests::hooks_for_cli_returns_none_for_unsupported_cli ... ok
[INFO] [stdout] test core::pack::tests::contains_env_var_reference_works ... ok
[INFO] [stdout] test core::pack::tests::has_hooks_returns_false_without_hooks ... ok
[INFO] [stdout] test core::pack::tests::looks_like_secret_detects_patterns ... ok
[INFO] [stdout] test core::pack::tests::parse_pack_with_servers ... ok
[INFO] [stdout] test core::pack::tests::reject_bearer_token_in_custom_header ... ok
[INFO] [stdout] test core::pack::tests::reject_empty_description ... ok
[INFO] [stdout] test core::pack::tests::reject_http_server_without_url ... ok
[INFO] [stdout] test core::pack::tests::reject_invalid_name ... ok
[INFO] [stdout] test core::pack::tests::parse_minimal_pack ... ok
[INFO] [stdout] test core::pack::tests::allow_env_var_in_bearer_prefix ... ok
[INFO] [stdout] test core::pack::tests::reject_plaintext_authorization_header ... ok
[INFO] [stdout] test core::pack::tests::reject_long_random_string_in_custom_header ... ok
[INFO] [stdout] test core::pack::tests::targets_default_to_true ... ok
[INFO] [stdout] test core::pack::tests::reject_plaintext_x_api_key_header ... ok
[INFO] [stdout] test core::pack::tests::reject_stdio_server_without_command ... ok
[INFO] [stdout] test core::pack::tests::x_custom_header_not_in_safe_list ... ok
[INFO] [stdout] test core::pack::tests::parse_http_server_with_headers ... ok
[INFO] [stdout] test core::mcp_registry::tests::deserialize_real_api_response ... ok
[INFO] [stdout] test core::pack::tests::reject_basic_auth_in_custom_header ... ok
[INFO] [stdout] test core::pack::tests::reject_duplicate_servers ... ok
[INFO] [stdout] test core::pack::tests::hooks_for_cli_parses_entries ... ok
[INFO] [stdout] test core::pack::tests::allow_env_var_reference_for_authorization ... ok
[INFO] [stdout] test core::profile::tests::validate_profile_name_accepts_valid ... ok
[INFO] [stdout] test core::profile::tests::validate_profile_name_rejects_traversal ... ok
[INFO] [stdout] test core::profile::tests::add_and_remove_packs ... ok
[INFO] [stdout] test core::publish::tests::check_version_not_published_different_version_ok ... ok
[INFO] [stdout] test core::publish::tests::check_version_not_published_existing_version_fails ... ok
[INFO] [stdout] test core::publish::tests::collect_pack_files_includes_readme ... ok
[INFO] [stdout] test core::publish::tests::collect_pack_files_requires_pack_toml ... ok
[INFO] [stdout] test core::publish::tests::collect_pack_files_skips_hidden_and_unknown ... ok
[INFO] [stdout] test core::publish::tests::parse_github_registry_url_accepts_github_com ... ok
[INFO] [stdout] test core::publish::tests::check_version_not_published_new_pack_ok ... ok
[INFO] [stdout] test core::publish::tests::collect_pack_files_includes_nested_dirs ... ok
[INFO] [stdout] test core::publish::tests::parse_github_registry_url_custom_org ... ok
[INFO] [stdout] test core::publish::tests::parse_github_registry_url_default ... ok
[INFO] [stdout] test core::publish::tests::parse_github_registry_url_non_github_fails ... ok
[INFO] [stdout] test core::publish::tests::parse_github_registry_url_rejects_evil_subdomain ... ok
[INFO] [stdout] test core::publish::tests::parse_github_registry_url_rejects_http ... ok
[INFO] [stdout] test core::publish::tests::parse_github_registry_url_too_short_fails ... ok
[INFO] [stdout] test core::publish::tests::resolve_api_base_default ... ok
[INFO] [stdout] test core::registry::tests::composite_fetch_metadata_not_found ... ok
[INFO] [stdout] test core::registry::tests::composite_fetch_metadata_falls_through_to_tap ... ok
[INFO] [stdout] test core::publish::tests::collect_pack_files_includes_expected_dirs ... ok
[INFO] [stdout] test core::registry::tests::composite_fetch_metadata_official_first ... ok
[INFO] [stdout] test core::registry::tests::composite_fetch_metadata_three_registries_skip_erroring_tap ... ok
[INFO] [stdout] test core::registry::tests::composite_fetch_metadata_tap_registry_error_is_ignored ... ok
[INFO] [stdout] test core::registry::tests::composite_fetch_version_official_registry_error_is_fatal ... ok
[INFO] [stdout] test core::registry::tests::composite_fetch_version_tap_registry_error_is_ignored ... ok
[INFO] [stdout] test core::registry::tests::composite_fetch_metadata_official_registry_error_is_fatal ... ok
[INFO] [stdout] test core::registry::tests::composite_search_merges_deduplicates ... ok
[INFO] [stdout] test core::registry::tests::composite_search_official_description_wins ... ok
[INFO] [stdout] test core::registry::tests::composite_search_official_error_is_fatal ... ok
[INFO] [stdout] test core::registry::tests::composite_publish_delegates_to_first_registry ... ok
[INFO] [stdout] test core::registry::tests::latest_version ... ok
[INFO] [stdout] test core::registry::tests::latest_version_no_releases ... ok
[INFO] [stdout] test core::registry::tests::composite_search_tap_error_is_ignored ... ok
[INFO] [stdout] test core::registry::tests::composite_fetch_version_falls_through ... ok
[INFO] [stdout] test core::profile::tests::list_all_and_delete_with_temp_dir ... ok
[INFO] [stdout] test core::registry::tests::new_strips_old_index_json_suffix ... ok
[INFO] [stdout] test core::registry::tests::new_strips_index_json_with_trailing_slash ... ok
[INFO] [stdout] test core::registry::tests::mock_registry_fetch_version ... ok
[INFO] [stdout] test core::registry::tests::trusted_host_case_insensitive ... ok
[INFO] [stdout] test core::registry::tests::trusted_host_matches_github_raw ... ok
[INFO] [stdout] test core::registry::tests::trusted_host_matches_github_api ... ok
[INFO] [stdout] test core::registry::tests::trusted_host_matches_with_port ... ok
[INFO] [stdout] test core::registry::tests::trusted_host_rejects_localhost ... ok
[INFO] [stdout] test core::registry::tests::trusted_host_rejects_evil_subdomain ... ok
[INFO] [stdout] test core::resolver::tests::already_satisfied_transitive ... ok
[INFO] [stdout] test core::registry::tests::mock_registry_search ... ok
[INFO] [stdout] test core::registry::tests::trusted_host_rejects_non_github ... ok
[INFO] [stdout] test core::registry::tests::new_strips_trailing_slash ... ok
[INFO] [stdout] test core::resolver::tests::plan_install_upgrades_within_range ... ok
[INFO] [stdout] test core::resolver::tests::deep_transitive_chain ... ok
[INFO] [stdout] test core::resolver::tests::plan_install_latest ... ok
[INFO] [stdout] test core::resolver::tests::plan_install_already_satisfied ... ok
[INFO] [stdout] test core::resolver::tests::plan_remove ... ok
[INFO] [stdout] test core::resolver::tests::plan_remove_not_installed ... ok
[INFO] [stdout] test core::resolver::tests::circular_dependency_returns_error ... ok
[INFO] [stdout] test core::store::tests::equivalent_paths_backslash_produce_same_hash ... ok
[INFO] [stdout] test core::store::tests::equivalent_paths_produce_same_hash ... ok
[INFO] [stdout] test core::resolver::tests::transitive_dependency_installed ... ok
[INFO] [stdout] test core::resolver::tests::diamond_dependency_version_conflict ... ok
[INFO] [stdout] test core::resolver::tests::plan_install_not_found ... ok
[INFO] [stdout] test core::store::tests::fetch_rejects_release_without_pack_toml ... ok
[INFO] [stdout] test core::store::tests::evict_local_does_not_affect_registry ... ok
[INFO] [stdout] test core::resolver::tests::plan_install_with_version_req ... ok
[INFO] [stdout] test core::store::tests::normalize_path_backslash_dot_segments ... ok
[INFO] [stdout] test core::store::tests::normalize_path_dotdot_past_root ... ok
[INFO] [stdout] test core::store::tests::normalize_path_double_separators ... ok
[INFO] [stdout] test core::store::tests::normalize_path_empty_becomes_dot ... ok
[INFO] [stdout] test core::store::tests::normalize_path_mixed_separators ... ok
[INFO] [stdout] test core::store::tests::normalize_path_only_dot ... ok
[INFO] [stdout] test core::store::tests::normalize_path_preserves_clean_absolute ... ok
[INFO] [stdout] test core::store::tests::normalize_path_pure_backslash_path ... ok
[INFO] [stdout] test core::store::tests::normalize_path_relative_dotdot_at_start ... ok
[INFO] [stdout] test core::store::tests::normalize_path_relative_with_dot ... ok
[INFO] [stdout] test core::store::tests::normalize_path_removes_dot_segments ... ok
[INFO] [stdout] test core::store::tests::normalize_path_removes_trailing_slash ... ok
[INFO] [stdout] test core::store::tests::normalize_path_resolves_dotdot_segments ... ok
[INFO] [stdout] test core::store::tests::normalize_path_root ... ok
[INFO] [stdout] test core::store::tests::normalize_path_trailing_slashes ... ok
[INFO] [stdout] test core::store::tests::normalize_path_windows_backslashes ... ok
[INFO] [stdout] test core::store::tests::list_cached_sort_order_deterministic ... ok
[INFO] [stdout] test core::store::tests::normalize_path_windows_double_backslash ... ok
[INFO] [stdout] test core::store::tests::pack_dir_registry_and_local_are_different ... ok
[INFO] [stdout] test core::publish::tests::collect_pack_files_rejects_large_file ... ok
[INFO] [stdout] test core::store::tests::split_local_suffix_preserves_invalid_suffix ... ok
[INFO] [stdout] test core::store::tests::split_local_suffix_preserves_plain_version ... ok
[INFO] [stdout] test core::store::tests::split_local_suffix_strips_valid_suffix ... ok
[INFO] [stdout] test core::store::tests::stable_hash_is_pinned ... ok
[INFO] [stdout] test core::store::tests::version_dir_name_different_paths_produce_different_hashes ... ok
[INFO] [stdout] test core::store::tests::stable_hash_dirty_path_equals_clean ... ok
[INFO] [stdout] test core::store::tests::version_dir_name_local_includes_hash_suffix ... ok
[INFO] [stdout] test core::store::tests::write_files_empty_map_succeeds ... ok
[INFO] [stdout] test core::store::tests::write_files_creates_expected_files ... ok
[INFO] [stdout] test core::store::tests::version_dir_name_registry_has_no_suffix ... ok
[INFO] [stdout] test core::store::tests::write_files_rejects_backslash_absolute ... ok
[INFO] [stdout] test core::store::tests::write_files_rejects_absolute_path ... ok
[INFO] [stdout] test core::update::tests::major_version_req_major_0 ... ok
[INFO] [stdout] test core::store::tests::write_files_rejects_windows_drive_prefix ... ok
[INFO] [stdout] test core::update::tests::parse_pack_spec_at_latest ... ok
[INFO] [stdout] test core::update::tests::parse_pack_spec_at_prefix ... ok
[INFO] [stdout] test core::store::tests::write_files_rejects_path_traversal ... ok
[INFO] [stdout] test core::credentials::tests::store_and_remove_roundtrip ... ok
[INFO] [stdout] test core::update::tests::parse_pack_spec_plain_name ... ok
[INFO] [stdout] test core::update::tests::parse_pack_spec_scoped_name_at_latest ... ok
[INFO] [stdout] test core::update::tests::parse_pack_spec_hyphenated_name ... ok
[INFO] [stdout] test core::use_profile::tests::diff_empty_to_populated ... ok
[INFO] [stdout] test core::use_profile::tests::diff_identical_profiles_is_empty ... ok
[INFO] [stdout] test core::use_profile::tests::diff_mixed_add_remove_and_keep ... ok
[INFO] [stdout] test core::use_profile::tests::diff_populated_to_empty ... ok
[INFO] [stdout] test core::use_profile::tests::diff_version_change_produces_remove_and_add ... ok
[INFO] [stdout] test core::update::tests::parse_pack_spec_with_version ... ok
[INFO] [stdout] test core::update::tests::major_version_req_major_1 ... ok
[INFO] [stdout] test core::credentials::tests::store_sets_permissions_atomically ... ok
[INFO] [stdout] test core::credentials::tests::reject_symlink_credentials ... ok
[INFO] [stdout] test error::tests::invalid_version_req_error_message ... ok
[INFO] [stdout] test core::credentials::tests::resolve_returns_none_when_absent ... ok
[INFO] [stdout] test error::tests::manifest_mismatch_error_message ... ok
[INFO] [stdout] test error::tests::pack_not_available_error_message ... ok
[INFO] [stdout] test core::update::tests::parse_pack_spec_invalid_version_req ... ok
[INFO] [stdout] test core::registry::tests::composite_publish_no_registries - should panic ... ok
[INFO] [stdout] test core::store::tests::evict_registry_does_not_affect_local ... ok
[INFO] [stdout] test core::credentials::tests::resolve_trims_whitespace ... ok
[INFO] [stdout] test core::use_profile::tests::dry_run_switch_does_not_call_adapters_or_registry ... ok
[INFO] [stdout] test core::use_profile::tests::load_or_fetch_git_source_errors_when_not_in_store ... ok
[INFO] [stdout] test core::use_profile::tests::load_or_fetch_local_source_errors_when_not_in_store ... ok
[INFO] [stdout] test core::credentials::tests::resolve_prefers_env_var ... ok
[INFO] [stdout] test core::store::tests::list_cached_mixed_sources ... ok
[INFO] [stdout] test core::store::tests::list_cached_empty_store ... ok
[INFO] [stdout] test core::store::tests::list_cached_local_only ... ok
[INFO] [stdout] test core::store::tests::list_cached_multiple_local_paths_both_returned ... ok
[INFO] [stdout] test core::store::tests::list_cached_registry_only ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 235 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.08s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/claude_code_adapter.rs (/opt/rustwide/target/debug/deps/claude_code_adapter-dbd86d724c15d050)
[INFO] [stdout] 
[INFO] [stdout] running 52 tests
[INFO] [stdout] test apply_http_server_without_url_returns_error ... ok
[INFO] [stdout] test apply_rejects_non_object_mcp_servers ... ok
[INFO] [stdout] test apply_prompt_appends_to_existing_claude_md ... ok
[INFO] [stdout] test apply_preserves_existing_user_servers ... ok
[INFO] [stdout] test apply_http_server_writes_url ... ok
[INFO] [stdout] test apply_commands_multiple_files ... ok
[INFO] [stdout] test apply_hooks_when_allowed ... ok
[INFO] [stdout] test apply_does_not_write_project_scope_without_flag ... ok
[INFO] [stdout] test apply_hooks_rejects_non_object_hooks_value ... ok
[INFO] [stdout] test apply_rejects_malformed_claude_json ... ok
[INFO] [stdout] test apply_rejects_collision_with_user_server ... ok
[INFO] [stdout] test apply_persists_manifest_after_each_step_even_if_later_step_fails ... ok
[INFO] [stdout] test apply_skips_pack_not_targeting_claude ... ok
[INFO] [stdout] test apply_hooks_is_idempotent ... ok
[INFO] [stdout] test apply_prompts_idempotent ... ok
[INFO] [stdout] test apply_servers_adds_to_claude_json ... ok
[INFO] [stdout] test apply_prompts_appends_to_claude_md ... ok
[INFO] [stdout] test apply_skips_hooks_when_not_allowed ... ok
[INFO] [stdout] test has_hooks_detects_extension_hooks ... ok
[INFO] [stdout] test diagnose_reports_prompt_block_missing_from_claude_md ... ok
[INFO] [stdout] test apply_servers_writes_args ... ok
[INFO] [stdout] test apply_writes_manifest ... ok
[INFO] [stdout] test apply_commands_writes_files ... ok
[INFO] [stdout] test diagnose_reports_command_file_missing ... ok
[INFO] [stdout] test apply_servers_project_scope ... ok
[INFO] [stdout] test apply_project_scope_is_idempotent ... ok
[INFO] [stdout] test apply_two_packs_conflict_on_same_server_name ... ok
[INFO] [stdout] test remove_hooks_cleans_untagged_entries_migration ... ok
[INFO] [stdout] test apply_settings_is_idempotent ... ok
[INFO] [stdout] test apply_settings_preserves_existing_keys ... ok
[INFO] [stdout] test remove_cleans_up_mixed_legacy_and_tagged_hooks ... ok
[INFO] [stdout] test apply_servers_idempotent ... ok
[INFO] [stdout] test diagnose_reports_server_missing_from_claude_json ... ok
[INFO] [stdout] test remove_http_server_cleans_up ... ok
[INFO] [stdout] test diagnose_returns_no_issues_on_clean_state ... ok
[INFO] [stdout] test remove_deletes_settings_key_added_by_pack ... ok
[INFO] [stdout] test multi_pack_hooks_different_events ... ok
[INFO] [stdout] test remove_servers_cleans_up_claude_json ... ok
[INFO] [stdout] test remove_cleans_up_hooks ... ok
[INFO] [stdout] test remove_is_surgical_leaves_other_servers ... ok
[INFO] [stdout] test remove_servers_project_scope ... ok
[INFO] [stdout] test mid_apply_failure_records_project_root_and_remove_cleans_up ... ok
[INFO] [stdout] test apply_settings_merges_keys ... ok
[INFO] [stdout] test remove_prompt_is_surgical_multiple_packs ... ok
[INFO] [stdout] test remove_commands_cleans_up ... ok
[INFO] [stdout] test remove_prompts_cleans_section ... ok
[INFO] [stdout] test remove_commands_is_surgical ... ok
[INFO] [stdout] test remove_unknown_pack_is_a_no_op ... ok
[INFO] [stdout] test remove_settings_restores_original ... ok
[INFO] [stdout] test removing_all_packs_removes_hooks_key ... ok
[INFO] [stdout] test two_packs_contribute_hooks_to_same_event ... ok
[INFO] [stdout] test removing_one_pack_hooks_preserves_others ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 52 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/codex_adapter.rs (/opt/rustwide/target/debug/deps/codex_adapter-546993dade32414b)
[INFO] [stdout] 
[INFO] [stdout] running 39 tests
[INFO] [stdout] test apply_http_server_without_url_returns_error ... ok
[INFO] [stdout] test apply_appends_prompt_to_agents_md ... ok
[INFO] [stdout] test apply_http_server_writes_headers ... ok
[INFO] [stdout] test apply_preserves_comments_between_existing_sections ... ok
[INFO] [stdout] test apply_preserves_existing_user_servers ... ok
[INFO] [stdout] test apply_does_not_create_project_config_when_no_project_scope ... ok
[INFO] [stdout] test apply_sets_enabled_true ... ok
[INFO] [stdout] test apply_skips_pack_not_targeting_codex ... ok
[INFO] [stdout] test apply_rejects_collision_with_user_server ... ok
[INFO] [stdout] test apply_installs_skill_files ... ok
[INFO] [stdout] test apply_merges_settings_into_config_toml ... ok
[INFO] [stdout] test apply_prompt_is_idempotent ... ok
[INFO] [stdout] test apply_writes_server_to_config_toml ... ok
[INFO] [stdout] test apply_writes_multiple_servers ... ok
[INFO] [stdout] test apply_omits_env_when_server_has_no_env_vars ... ok
[INFO] [stdout] test apply_writes_server_args ... ok
[INFO] [stdout] test apply_skill_content_is_preserved ... ok
[INFO] [stdout] test diagnose_reports_missing_server ... ok
[INFO] [stdout] test apply_preserves_comments_in_config_toml ... ok
[INFO] [stdout] test apply_writes_url_for_http_transport ... ok
[INFO] [stdout] test diagnose_returns_no_issues_for_clean_state ... ok
[INFO] [stdout] test apply_writes_manifest ... ok
[INFO] [stdout] test apply_writes_env_vars_as_references ... ok
[INFO] [stdout] test apply_twice_is_idempotent_for_servers ... ok
[INFO] [stdout] test diagnose_reports_missing_skill_file ... ok
[INFO] [stdout] test remove_clears_manifest_entry ... ok
[INFO] [stdout] test apply_skills_tracks_manifest ... ok
[INFO] [stdout] test remove_unknown_pack_is_a_no_op ... ok
[INFO] [stdout] test apply_writes_server_to_project_config_toml_when_project_scope_active ... ok
[INFO] [stdout] test settings_mcp_servers_key_is_ignored ... ok
[INFO] [stdout] test remove_http_server_cleans_up ... ok
[INFO] [stdout] test remove_is_surgical_leaves_other_servers ... ok
[INFO] [stdout] test remove_deletes_prompt_block_from_agents_md ... ok
[INFO] [stdout] test remove_preserves_comments_in_config_toml ... ok
[INFO] [stdout] test remove_prompt_leaves_other_blocks ... ok
[INFO] [stdout] test remove_deletes_skill_files ... ok
[INFO] [stdout] test remove_restores_settings_from_config_toml ... ok
[INFO] [stdout] test remove_deletes_server_from_config_toml ... ok
[INFO] [stdout] test remove_removes_from_project_config_toml ... ok
[INFO] [stderr]      Running tests/e2e.rs (/opt/rustwide/target/debug/deps/e2e-ea299820488295eb)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 39 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 87 tests
[INFO] [stdout] test e2e::cli_auth::auth_login_empty_token_fails ... ok
[INFO] [stdout] test e2e::cli_auth::auth_logout_when_not_authenticated ... ok
[INFO] [stdout] test e2e::cli_auth::auth_logout_removes_credentials ... ok
[INFO] [stdout] test e2e::cli_auth::auth_login_stores_token ... ok
[INFO] [stdout] test e2e::cli_auth::auth_login_via_stdin ... ok
[INFO] [stdout] test e2e::cli_auth::auth_login_then_status_shows_authenticated ... ok
[INFO] [stdout] test e2e::cli_auth::auth_env_var_overrides_file ... ok
[INFO] [stdout] test e2e::cli_auth::auth_status_not_authenticated ... ok
[INFO] [stdout] test e2e::cli_dry_run::install_local_dry_run_does_not_write_to_store ... ok
[INFO] [stdout] test e2e::cli_diagnose::diagnose_empty_profile ... ok
[INFO] [stdout] test e2e::cli_auth::auth_status_empty_weave_token_env ... ok
[INFO] [stdout] test e2e::cli_dry_run::install_dry_run_shows_preview_without_writing ... ok
[INFO] [stdout] test e2e::cli_diagnose::diagnose_healthy_config ... ok
[INFO] [stdout] test e2e::cli_diagnose::diagnose_skips_uninstalled_adapters ... ok
[INFO] [stdout] test e2e::cli_init::init_default_name ... ok
[INFO] [stdout] test e2e::cli_init::init_scaffolds_pack_directory ... ok
[INFO] [stdout] test e2e::cli_diagnose::diagnose_detects_drift ... ok
[INFO] [stdout] test e2e::cli_diagnose::diagnose_json_output ... ok
[INFO] [stdout] test e2e::cli_dry_run::remove_dry_run_shows_preview_without_removing ... ok
[INFO] [stdout] test e2e::cli_hooks::sync_applies_hooks_with_flag ... ok
[INFO] [stdout] test e2e::cli_install::install_local_pack ... ok
[INFO] [stdout] test e2e::cli_auth::auth_login_then_search_works ... ok
[INFO] [stdout] test e2e::cli_install::install_local_pack_prompt_applied ... ok
[INFO] [stdout] test e2e::cli_install::install_local_pack_refresh_eviction_failure ... ok
[INFO] [stdout] test e2e::cli_hooks::use_applies_hooks_with_flag ... ok
[INFO] [stdout] test e2e::cli_hooks::install_hooks_applied_with_flag ... ok
[INFO] [stdout] test e2e::cli_auth::auth_login_overwrite ... ok
[INFO] [stdout] test e2e::cli_hooks::list_shows_hooks_badge ... ok
[INFO] [stdout] test e2e::cli_hooks::remove_cleans_up_hooks ... ok
[INFO] [stdout] test e2e::cli_hooks::install_hooks_skipped_without_flag ... ok
[INFO] [stdout] test e2e::cli_dry_run::sync_dry_run_shows_preview_without_applying ... ok
[INFO] [stdout] test e2e::cli_install::install_http_server_preserves_headers ... ok
[INFO] [stdout] test e2e::cli_install::install_http_server_writes_url ... ok
[INFO] [stdout] test e2e::cli_install::install_local_pack_refresh ... ok
[INFO] [stdout] test e2e::cli_install::install_with_at_prefix ... ok
[INFO] [stdout] test e2e::cli_list::list_empty ... ok
[INFO] [stdout] test e2e::cli_install::install_without_project_flag_does_not_write_mcp_json ... ok
[INFO] [stdout] test e2e::cli_profile::profile_create_and_list ... ok
[INFO] [stdout] test e2e::cli_install::install_single_pack ... ok
[INFO] [stdout] test e2e::cli_profile::profile_delete ... ok
[INFO] [stdout] test e2e::cli_auth::auth_token_not_sent_to_taps ... ok
[INFO] [stdout] test e2e::cli_profile::profile_create_duplicate_fails ... ok
[INFO] [stdout] test e2e::cli_profile::profile_delete_default_fails ... ok
[INFO] [stdout] test e2e::cli_diagnose::diagnose_json_detects_drift ... ok
[INFO] [stdout] test e2e::cli_publish::publish_accepts_explicit_path ... ok
[INFO] [stdout] test e2e::cli_profile::profile_list_shows_default ... ok
[INFO] [stdout] test e2e::cli_publish::publish_requires_auth ... ok
[INFO] [stdout] test e2e::cli_publish::publish_validates_pack_toml ... ok
[INFO] [stdout] test e2e::cli_dry_run::install_dry_run_does_not_affect_lockfile ... ok
[INFO] [stdout] test e2e::cli_install::install_nonexistent_pack ... ok
[INFO] [stdout] test e2e::cli_install::install_writes_claude_config ... ok
[INFO] [stdout] test e2e::cli_profile::profile_add_pack ... ok
[INFO] [stdout] test e2e::cli_sync::sync_empty_profile_noop ... ok
[INFO] [stdout] test e2e::cli_search::search_invalid_target ... ok
[INFO] [stdout] test e2e::cli_install::install_idempotent ... ok
[INFO] [stdout] test e2e::cli_install::install_with_project_flag_writes_mcp_json ... ok
[INFO] [stdout] test e2e::cli_tap::tap_add_duplicate_fails ... ok
[INFO] [stdout] test e2e::cli_profile::profile_delete_active_fails ... ok
[INFO] [stdout] test e2e::cli_tap::tap_add_registers_tap ... ok
[INFO] [stdout] test e2e::cli_remove::remove_not_installed ... ok
[INFO] [stdout] test e2e::cli_tap::tap_list_empty ... ok
[INFO] [stdout] test e2e::cli_list::list_after_install ... ok
[INFO] [stdout] test e2e::cli_remove::remove_installed_pack ... ok
[INFO] [stdout] test e2e::cli_tap::tap_remove_deregisters ... ok
[INFO] [stdout] test e2e::cli_sync::sync_recovers_from_drift ... ok
[INFO] [stdout] test e2e::cli_install::install_already_installed ... ok
[INFO] [stdout] test e2e::cli_tap::tap_remove_nonexistent_fails ... ok
[INFO] [stdout] test e2e::cli_remove::remove_cleans_project_scope_from_different_directory ... ok
[INFO] [stdout] test e2e::cli_sync::sync_reapplies_installed_pack ... ok
[INFO] [stdout] test e2e::cli_use::use_nonexistent_profile_fails ... ok
[INFO] [stdout] test e2e::cli_use::use_prints_active_profile ... ok
[INFO] [stdout] test e2e::cli_use::use_already_active_noop ... ok
[INFO] [stdout] test e2e::cli_publish::publish_detects_duplicate_version ... ok
[INFO] [stdout] test e2e::cli_tap::tap_list_shows_registered ... ok
[INFO] [stdout] test e2e::cli_install::remove_http_server_cleans_up ... ok
[INFO] [stdout] test e2e::cli_search::search_no_results ... ok
[INFO] [stdout] test e2e::cli_remove::remove_preserves_other_packs ... ok
[INFO] [stdout] test e2e::cli_search::search_finds_matching_pack ... ok
[INFO] [stdout] test e2e::cli_use::use_switch_profile ... ok
[INFO] [stdout] test e2e::cli_use::use_switch_removes_old_packs ... ok
[INFO] [stdout] test e2e::cli_install::install_writes_lockfile ... ok
[INFO] [stdout] test e2e::cli_sync::sync_idempotent ... ok
[INFO] [stdout] test e2e::cli_update::update_already_latest ... ok
[INFO] [stdout] test e2e::cli_update::update_to_newer_version ... ok
[INFO] [stdout] test e2e::cli_tap::tap_install_from_tap ... ok
[INFO] [stdout] test e2e::lifecycle::golden_path ... ok
[INFO] [stdout] test e2e::cli_use::use_switch_applies_new_packs ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 87 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.67s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/gemini_adapter.rs (/opt/rustwide/target/debug/deps/gemini_adapter-33be885a4e0c2134)
[INFO] [stdout] 
[INFO] [stdout] running 41 tests
[INFO] [stdout] test apply_http_server_without_url_returns_error ... ok
[INFO] [stdout] test apply_persists_manifest_after_each_step_even_if_later_step_fails ... ok
[INFO] [stdout] test apply_rejects_malformed_settings_json ... ok
[INFO] [stdout] test apply_merges_settings_fragment_into_settings_json ... ok
[INFO] [stdout] test apply_skips_pack_not_targeting_gemini ... ok
[INFO] [stdout] test apply_http_server_writes_url ... ok
[INFO] [stdout] test apply_preserves_existing_user_servers ... ok
[INFO] [stdout] test apply_rejects_collision_with_user_server ... ok
[INFO] [stdout] test apply_omits_env_key_when_server_has_no_env_vars ... ok
[INFO] [stdout] test apply_rejects_non_object_mcp_servers ... ok
[INFO] [stdout] test apply_prompt_is_idempotent ... ok
[INFO] [stdout] test apply_settings_is_idempotent ... ok
[INFO] [stdout] test apply_writes_server_args ... ok
[INFO] [stdout] test apply_twice_is_idempotent_for_servers ... ok
[INFO] [stdout] test apply_writes_manifest ... ok
[INFO] [stdout] test apply_writes_server_to_settings_json ... ok
[INFO] [stdout] test apply_writes_env_vars_as_references ... ok
[INFO] [stdout] test apply_twice_same_manifest_state ... ok
[INFO] [stdout] test apply_two_packs_conflict_on_same_server_name ... ok
[INFO] [stdout] test apply_prompt_appends_to_existing_gemini_md ... ok
[INFO] [stdout] test apply_writes_server_to_project_settings_json_when_project_dir_exists ... ok
[INFO] [stdout] test diagnose_reports_server_missing_from_settings_json ... ok
[INFO] [stdout] test remove_after_missing_settings_file_is_graceful ... ok
[INFO] [stdout] test apply_project_scope_is_idempotent ... ok
[INFO] [stdout] test remove_deletes_settings_key_added_by_pack ... ok
[INFO] [stdout] test remove_clears_manifest_entry ... ok
[INFO] [stdout] test diagnose_returns_no_issues_for_clean_state ... ok
[INFO] [stdout] test remove_unknown_pack_is_a_no_op ... ok
[INFO] [stdout] test apply_writes_multiple_servers ... ok
[INFO] [stdout] test apply_does_not_write_project_scope_when_dir_absent ... ok
[INFO] [stdout] test remove_preserves_user_managed_keys_in_settings_json ... ok
[INFO] [stdout] test diagnose_reports_prompt_block_missing_from_gemini_md ... ok
[INFO] [stdout] test remove_is_surgical_leaves_other_servers ... ok
[INFO] [stdout] test remove_http_server_cleans_up ... ok
[INFO] [stdout] test remove_deletes_server_from_settings_json ... ok
[INFO] [stdout] test apply_writes_prompt_block_to_gemini_md ... ok
[INFO] [stdout] test remove_strips_prompt_block_from_gemini_md ... ok
[INFO] [stdout] test remove_cleans_up_project_scope_servers ... ok
[INFO] [stdout] test remove_restores_settings_key_to_original_value ... ok
[INFO] [stdout] test remove_prompt_is_surgical_multiple_packs ... ok
[INFO] [stdout] test apply_settings_preserves_existing_keys ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 41 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/init.rs (/opt/rustwide/target/debug/deps/init-15d63ce03655e364)
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test init_fails_when_file_exists_with_target_name ... ok
[INFO] [stdout] test init_no_args_uses_current_directory_name ... ok
[INFO] [stdout] test init_no_args_fails_when_readme_already_exists ... ok
[INFO] [stdout] test init_no_args_fails_when_pack_toml_already_exists ... ok
[INFO] [stdout] test generated_pack_toml_parses_via_pack_from_toml ... ok
[INFO] [stdout] test init_rejects_uppercase_name ... ok
[INFO] [stdout] test init_creates_all_expected_files ... ok
[INFO] [stdout] test init_rejects_underscore_name ... ok
[INFO] [stdout] test init_fails_when_directory_already_exists ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests packweave
[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" "485c394c087744fcd83250cf54b0071f80e8d3ed88bed7f378a10bcc93cce680", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "485c394c087744fcd83250cf54b0071f80e8d3ed88bed7f378a10bcc93cce680", kill_on_drop: false }`
[INFO] [stdout] 485c394c087744fcd83250cf54b0071f80e8d3ed88bed7f378a10bcc93cce680
