[INFO] fetching crate riverctl 0.2.18...
[INFO] testing riverctl-0.2.18 against 1.100.0-beta.1 for beta-1.100-2
[INFO] extracting crate riverctl 0.2.18 into /workspace/builds/worker-6-tc2/source
[INFO] started tweaking crates.io crate riverctl 0.2.18
[INFO] finished tweaking crates.io crate riverctl 0.2.18
[INFO] tweaked toml for crates.io crate riverctl 0.2.18 written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate riverctl 0.2.18 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate riverctl 0.2.18 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.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:140:12
[INFO] [stderr]     |
[INFO] [stderr] 140 | homepage = "https://github.com/freenet/river"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 146 | repository = "https://github.com/freenet/river"
[INFO] [stderr]     |              ----------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `riverctl` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 4bd30c8e924417880fe67dd912668c7acd3b88b35fd8490bc42ad7e0551b3b74
[INFO] running `Command { std: "docker" "start" "4bd30c8e924417880fe67dd912668c7acd3b88b35fd8490bc42ad7e0551b3b74", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4bd30c8e924417880fe67dd912668c7acd3b88b35fd8490bc42ad7e0551b3b74", 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" "4bd30c8e924417880fe67dd912668c7acd3b88b35fd8490bc42ad7e0551b3b74" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4bd30c8e924417880fe67dd912668c7acd3b88b35fd8490bc42ad7e0551b3b74", 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" "4bd30c8e924417880fe67dd912668c7acd3b88b35fd8490bc42ad7e0551b3b74" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:140:12
[INFO] [stderr]     |
[INFO] [stderr] 140 | homepage = "https://github.com/freenet/river"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 146 | repository = "https://github.com/freenet/river"
[INFO] [stderr]     |              ----------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `riverctl` (manifest) generated 1 warning
[INFO] [stderr]    Compiling typenum v1.20.0
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling cc v1.2.62
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling zerocopy v0.8.48
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling zeroize_derive v1.4.3
[INFO] [stderr]    Compiling zerofrom v0.1.8
[INFO] [stderr]    Compiling zerocopy-derive v0.8.48
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling yoke v0.8.2
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling rustls v0.23.40
[INFO] [stderr]    Compiling rustls-pki-types v1.14.1
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling toml_write v0.1.2
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling arrayvec v0.7.6
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling hybrid-array v0.4.12
[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 rand_core v0.9.5
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling bytes v1.11.1
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling blake3 v1.8.5
[INFO] [stderr]    Compiling webpki-roots v1.0.7
[INFO] [stderr]    Compiling curve25519-dalek v4.1.3
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling cmov v0.5.3
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling bs58 v0.5.1
[INFO] [stderr]    Compiling ctutils v0.4.2
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling tokio v1.52.3
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling webpki-roots v0.26.11
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling block-buffer v0.12.0
[INFO] [stderr]    Compiling crypto-common v0.2.1
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling inout v0.1.4
[INFO] [stderr]    Compiling rand v0.9.4
[INFO] [stderr]    Compiling flatbuffers v24.12.23
[INFO] [stderr]    Compiling curve25519-dalek-derive v0.1.1
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling utf-8 v0.7.6
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling digest v0.11.3
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling cipher v0.4.4
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling serde_with_macros v3.20.0
[INFO] [stderr]    Compiling universal-hash v0.5.1
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling signature v2.2.0
[INFO] [stderr]    Compiling freenet-stdlib v0.8.5
[INFO] [stderr]    Compiling ciborium-io v0.2.2
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling freenet-migrate-build v0.2.0
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling serde_with v3.20.0
[INFO] [stderr]    Compiling tungstenite v0.27.0
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling ed25519 v2.2.3
[INFO] [stderr]    Compiling polyval v0.6.2
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling bincode v1.3.3
[INFO] [stderr]    Compiling tokio-tungstenite v0.27.0
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling freenet-scaffold-macro v0.2.2
[INFO] [stderr]    Compiling freenet-macros v0.2.0
[INFO] [stderr]    Compiling semver v1.0.28
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling console v0.15.11
[INFO] [stderr]    Compiling freenet-scaffold v0.2.2
[INFO] [stderr]    Compiling ed25519-dalek v2.2.0
[INFO] [stderr]    Compiling river-core v0.1.21
[INFO] [stderr]    Compiling ghash v0.5.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling aes v0.8.4
[INFO] [stderr]    Compiling ctr v0.9.2
[INFO] [stderr]    Compiling aead v0.5.2
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling redb v3.1.3
[INFO] [stderr]    Compiling time v0.3.51
[INFO] [stderr]    Compiling dirs-sys v0.4.1
[INFO] [stderr]    Compiling aes-gcm v0.10.3
[INFO] [stderr]    Compiling rand v0.8.6
[INFO] [stderr]    Compiling crossbeam-channel v0.5.15
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling x25519-dalek v2.0.1
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling shell-words v1.1.1
[INFO] [stderr]    Compiling riverctl v0.2.18 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling symlink v0.1.0
[INFO] [stderr]    Compiling dialoguer v0.11.0
[INFO] [stderr]    Compiling indicatif v0.17.11
[INFO] [stderr] warning: riverctl@0.2.18: Copied room_contract.wasm from contracts/room_contract.wasm
[INFO] [stderr]    Compiling ureq v2.12.1
[INFO] [stderr]    Compiling directories v5.0.1
[INFO] [stderr]    Compiling colored v2.2.0
[INFO] [stderr]    Compiling atty v0.2.14
[INFO] [stderr]    Compiling fs2 v0.4.3
[INFO] [stderr]    Compiling tracing-appender v0.2.5
[INFO] [stderr]    Compiling freenet-migrate v0.6.0
[INFO] [stderr] warning: unused dependency `indicatif`
[INFO] [stderr]   --> Cargo.toml:60:15
[INFO] [stderr]    |
[INFO] [stderr] 60 | [dependencies.indicatif]
[INFO] [stderr]    |               ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `indicatif`
[INFO] [stderr] warning: unused dependency `redb`
[INFO] [stderr]   --> Cargo.toml:66:15
[INFO] [stderr]    |
[INFO] [stderr] 66 | [dependencies.redb]
[INFO] [stderr]    |               ^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `redb`
[INFO] [stderr] warning: unused dependency `toml`
[INFO] [stderr]   --> Cargo.toml:91:15
[INFO] [stderr]    |
[INFO] [stderr] 91 | [dependencies.toml]
[INFO] [stderr]    |               ^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `toml`
[INFO] [stderr] warning: `riverctl` (manifest) generated 3 warnings
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 32s
[INFO] running `Command { std: "docker" "inspect" "4bd30c8e924417880fe67dd912668c7acd3b88b35fd8490bc42ad7e0551b3b74", 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" "4bd30c8e924417880fe67dd912668c7acd3b88b35fd8490bc42ad7e0551b3b74" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:140:12
[INFO] [stderr]     |
[INFO] [stderr] 140 | homepage = "https://github.com/freenet/river"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 146 | repository = "https://github.com/freenet/river"
[INFO] [stderr]     |              ----------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `riverctl` (manifest) generated 1 warning
[INFO] [stderr]    Compiling tokio v1.52.3
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling openssl-sys v0.9.115
[INFO] [stderr]    Compiling libz-sys v1.1.28
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling libssh2-sys v0.3.1
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling serde_repr v0.1.20
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling freenet-stdlib v0.1.40
[INFO] [stderr]    Compiling hex v0.4.3
[INFO] [stderr]    Compiling predicates-core v1.0.10
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling bollard-stubs v1.47.1-rc.27.3.1
[INFO] [stderr]    Compiling freenet-macros v0.1.3
[INFO] [stderr]    Compiling filetime v0.2.29
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling assert_cmd v2.2.2
[INFO] [stderr]    Compiling difflib v0.4.0
[INFO] [stderr] warning: riverctl@0.2.18: Copied room_contract.wasm from contracts/room_contract.wasm
[INFO] [stderr]    Compiling predicates-tree v1.0.13
[INFO] [stderr]    Compiling tar v0.4.45
[INFO] [stderr]    Compiling predicates v3.1.4
[INFO] [stderr]    Compiling ureq v2.12.1
[INFO] [stderr]    Compiling ipnetwork v0.20.0
[INFO] [stderr]    Compiling sysinfo v0.37.2
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling which v8.0.2
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling tokio-tungstenite v0.27.0
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling freenet-stdlib v0.8.5
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tracing-appender v0.2.5
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling ssh2 v0.9.5
[INFO] [stderr]    Compiling hyperlocal v0.9.1
[INFO] [stderr]    Compiling river-core v0.1.21
[INFO] [stderr]    Compiling freenet-migrate v0.6.0
[INFO] [stderr]    Compiling bollard v0.18.1
[INFO] [stderr]    Compiling riverctl v0.2.18 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling freenet-test-network v0.1.24
[INFO] [stdout] warning: use of deprecated method `freenet_migrate::ProbeDriver::<O>::on_timeout`: silence and absence are different facts: use `on_unknown` for a timeout or transport failure, `on_absent` for an answered NotFound. See freenet-migrate#19.
[INFO] [stdout]     --> src/api.rs:7945:16
[INFO] [stdout]      |
[INFO] [stdout] 7945 |         driver.on_timeout(a); // absent generation
[INFO] [stdout]      |                ^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `freenet_migrate::ProbeDriver::<O>::on_timeout`: silence and absence are different facts: use `on_unknown` for a timeout or transport failure, `on_absent` for an answered NotFound. See freenet-migrate#19.
[INFO] [stdout]     --> src/api.rs:8557:16
[INFO] [stdout]      |
[INFO] [stdout] 8557 |         driver.on_timeout(first);
[INFO] [stdout]      |                ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `freenet_migrate::ProbeDriver::<O>::on_timeout`: silence and absence are different facts: use `on_unknown` for a timeout or transport failure, `on_absent` for an answered NotFound. See freenet-migrate#19.
[INFO] [stdout]     --> src/api.rs:8657:16
[INFO] [stdout]      |
[INFO] [stdout] 8657 |         driver.on_timeout(a); // absent generation
[INFO] [stdout]      |                ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused dependency `indicatif`
[INFO] [stderr]   --> Cargo.toml:60:15
[INFO] [stderr]    |
[INFO] [stderr] 60 | [dependencies.indicatif]
[INFO] [stderr]    |               ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `indicatif`
[INFO] [stderr] warning: unused dependency `redb`
[INFO] [stderr]   --> Cargo.toml:66:15
[INFO] [stderr]    |
[INFO] [stderr] 66 | [dependencies.redb]
[INFO] [stderr]    |               ^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `redb`
[INFO] [stderr] warning: unused dependency `toml`
[INFO] [stderr]   --> Cargo.toml:91:15
[INFO] [stderr]    |
[INFO] [stderr] 91 | [dependencies.toml]
[INFO] [stderr]    |               ^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `toml`
[INFO] [stderr] warning: `riverctl` (manifest) generated 3 warnings
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 2m 09s
[INFO] running `Command { std: "docker" "inspect" "4bd30c8e924417880fe67dd912668c7acd3b88b35fd8490bc42ad7e0551b3b74", 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" "4bd30c8e924417880fe67dd912668c7acd3b88b35fd8490bc42ad7e0551b3b74" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:140:12
[INFO] [stderr]     |
[INFO] [stderr] 140 | homepage = "https://github.com/freenet/river"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 146 | repository = "https://github.com/freenet/river"
[INFO] [stderr]     |              ----------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `riverctl` (manifest) generated 1 warning
[INFO] [stderr] warning: riverctl@0.2.18: Copied room_contract.wasm from contracts/room_contract.wasm
[INFO] [stderr] warning: use of deprecated method `freenet_migrate::ProbeDriver::<O>::on_timeout`: silence and absence are different facts: use `on_unknown` for a timeout or transport failure, `on_absent` for an answered NotFound. See freenet-migrate#19.
[INFO] [stderr]     --> src/api.rs:7945:16
[INFO] [stderr]      |
[INFO] [stderr] 7945 |         driver.on_timeout(a); // absent generation
[INFO] [stderr]      |                ^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `freenet_migrate::ProbeDriver::<O>::on_timeout`: silence and absence are different facts: use `on_unknown` for a timeout or transport failure, `on_absent` for an answered NotFound. See freenet-migrate#19.
[INFO] [stderr]     --> src/api.rs:8557:16
[INFO] [stderr]      |
[INFO] [stderr] 8557 |         driver.on_timeout(first);
[INFO] [stderr]      |                ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `freenet_migrate::ProbeDriver::<O>::on_timeout`: silence and absence are different facts: use `on_unknown` for a timeout or transport failure, `on_absent` for an answered NotFound. See freenet-migrate#19.
[INFO] [stderr]     --> src/api.rs:8657:16
[INFO] [stderr]      |
[INFO] [stderr] 8657 |         driver.on_timeout(a); // absent generation
[INFO] [stderr]      |                ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `riverctl` (lib test) generated 3 warnings
[INFO] [stderr] warning: unused dependency `indicatif`
[INFO] [stderr]   --> Cargo.toml:60:15
[INFO] [stderr]    |
[INFO] [stderr] 60 | [dependencies.indicatif]
[INFO] [stderr]    |               ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `indicatif`
[INFO] [stderr] warning: unused dependency `redb`
[INFO] [stderr]   --> Cargo.toml:66:15
[INFO] [stderr]    |
[INFO] [stderr] 66 | [dependencies.redb]
[INFO] [stderr]    |               ^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `redb`
[INFO] [stderr] warning: unused dependency `toml`
[INFO] [stderr]   --> Cargo.toml:91:15
[INFO] [stderr]    |
[INFO] [stderr] 91 | [dependencies.toml]
[INFO] [stderr]    |               ^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `toml`
[INFO] [stderr] warning: `riverctl` (manifest) generated 3 warnings
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.59s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/build/riverctl/a68095f63356bfb3/out/riverctl-a68095f63356bfb3)
[INFO] [stdout] 
[INFO] [stdout] running 402 tests
[INFO] [stdout] test api::authorize_send_tests::contract_rejects_an_owner_entry_in_members ... ok
[INFO] [stdout] test api::authorize_send_tests::listed_member_may_send ... ok
[INFO] [stdout] test api::authorize_send_tests::owner_may_send_although_members_list_never_lists_them ... ok
[INFO] [stdout] test api::authorize_send_tests::owners_message_survives_apply_delta_with_no_membership_delta ... ok
[INFO] [stdout] test api::authorize_send_tests::guard_call_anchor_is_unique_in_production ... ok
[INFO] [stdout] test api::authorize_send_tests::human_output_arms_never_call_a_raw_content_or_mention_helper ... ok
[INFO] [stdout] test api::authorize_send_tests::owner_exemption_is_not_reachable_from_attacker_controlled_state ... ok
[INFO] [stdout] test api::authorize_send_tests::api_source_satisfies_the_membership_guard_invariants ... ok
[INFO] [stdout] test api::authorize_send_tests::pin_catches_owner_blind_scan_under_a_new_variable_name ... ok
[INFO] [stdout] test api::authorize_send_tests::pin_catches_discarded_authorization_result ... ok
[INFO] [stdout] test api::authorize_send_tests::pin_catches_owner_blind_scan_written_with_the_memberid_idiom ... ok
[INFO] [stdout] test api::authorize_send_tests::pin_catches_deleted_owner_early_return_in_build_rejoin_delta ... ok
[INFO] [stdout] test api::authorize_send_tests::pin_accepts_the_unmutated_source ... ok
[INFO] [stdout] test api::authorize_send_tests::pruned_member_with_rejoin_credentials_may_send ... ok
[INFO] [stdout] test api::authorize_send_tests::room_has_member_key_counts_the_owner_and_listed_members_only ... ok
[INFO] [stdout] test api::authorize_send_tests::pin_catches_owner_blind_scan_written_with_find ... ok
[INFO] [stdout] test api::authorize_send_tests::stranger_without_rejoin_credentials_is_rejected ... ok
[INFO] [stdout] test api::await_response_tests::a_connection_error_stops_the_wait ... ok
[INFO] [stdout] test api::await_response_tests::a_get_response_for_another_contract_does_not_answer_ours ... ok
[INFO] [stdout] test api::await_response_tests::a_not_found_is_reported_rather_than_waited_out ... ok
[INFO] [stdout] test api::await_response_tests::a_notification_arriving_first_does_not_fail_the_send ... ok
[INFO] [stdout] test api::await_response_tests::a_timeout_says_what_it_stepped_over ... ok
[INFO] [stdout] test api::await_response_tests::nothing_is_read_after_the_deadline_passes ... ok
[INFO] [stdout] test api::await_response_tests::several_unrelated_responses_are_all_stepped_over ... ok
[INFO] [stdout] test api::authorize_send_tests::production_source_strips_test_code_but_keeps_production ... ok
[INFO] [stdout] test api::await_response_tests::silence_ends_at_the_deadline ... ok
[INFO] [stdout] test api::await_response_tests::stepping_over_does_not_restart_the_clock ... ok
[INFO] [stdout] test api::create_room_tests::build_new_room_state_public_has_no_secret_and_public_metadata ... ok
[INFO] [stdout] test api::await_response_tests::a_timeout_on_silence_says_the_node_sent_nothing ... ok
[INFO] [stdout] test api::create_room_tests::build_new_room_state_private_is_encrypted_and_owner_decryptable ... ok
[INFO] [stdout] test api::authorize_send_tests::terminal_nickname_sites_escape_human_output_and_leave_json_raw ... ok
[INFO] [stdout] test api::display_text_tests::join_event_renders_as_joined_not_encrypted ... ok
[INFO] [stdout] test api::authorize_send_tests::pin_catches_rejoin_delta_replaced_by_none ... ok
[INFO] [stdout] test api::deputy_resolve_tests::resolve_deputy_target_accepts_a_full_verifying_key ... ok
[INFO] [stdout] test api::deputy_resolve_tests::revoke_resolves_pruned_deputy_from_own_deputies_list ... ok
[INFO] [stdout] test api::display_text_tests::private_body_still_renders_as_encrypted ... ok
[INFO] [stdout] test api::authorize_send_tests::pin_catches_the_guard_commented_out_in_place ... ok
[INFO] [stdout] test api::display_text_tests::private_text_decrypts_with_secret ... ok
[INFO] [stdout] test api::display_text_tests::unseal_nickname_display_decrypts_private_and_falls_back ... ok
[INFO] [stdout] test api::invitation_tests::invitation_cbor_decodes_legacy_invitation_without_secrets_field ... ok
[INFO] [stdout] test api::display_text_tests::unknown_public_content_renders_upgrade_placeholder ... ok
[INFO] [stdout] test api::invitation_tests::invitation_cbor_round_trip_with_secrets ... ok
[INFO] [stdout] test api::display_text_tests::public_text_renders_plaintext ... ok
[INFO] [stdout] test api::invitation_tests::invitation_debug_redacts_room_secrets ... ok
[INFO] [stdout] test api::display_text_tests::private_reply_context_decrypts_with_secret ... ok
[INFO] [stdout] test api::invitation_tests::invitation_with_empty_secrets_round_trips ... ok
[INFO] [stdout] test api::mention_cli_tests::leaves_already_encoded_token_untouched ... ok
[INFO] [stdout] test api::mention_cli_tests::leaves_ambiguous_nickname_as_plain_text ... ok
[INFO] [stdout] test api::display_text_tests::private_edit_shows_edited_text_after_rebuild ... ok
[INFO] [stdout] test api::mention_cli_tests::leaves_unknown_name_as_plain_text ... ok
[INFO] [stdout] test api::mention_cli_tests::does_not_match_private_nickname ... ok
[INFO] [stdout] test api::invitation_tests::invitation_decodes_frozen_cross_side_fixture ... ok
[INFO] [stdout] test api::authorize_send_tests::pin_catches_the_guard_moved_out_of_the_send_path ... ok
[INFO] [stdout] test api::mention_cli_tests::render_escaped_escapes_the_resolved_live_nickname ... ok
[INFO] [stdout] test api::mention_cli_tests::public_reply_to_undecryptable_private_target ... ok
[INFO] [stdout] test api::mention_cli_tests::message_display_text_renders_mentions ... ok
[INFO] [stdout] test api::mention_cli_tests::reply_author_ansi_escapes_are_escaped_for_terminal_and_raw_in_json ... ok
[INFO] [stdout] test api::mention_cli_tests::render_escaped_escapes_the_snapshot_fallback_name_too ... ok
[INFO] [stdout] test api::mention_cli_tests::message_display_text_for_terminal_escapes_mentioned_nickname_json_stays_raw ... ok
[INFO] [stdout] test api::mention_cli_tests::render_falls_back_to_snapshot_for_unknown_member ... ok
[INFO] [stdout] test api::mention_cli_tests::reply_context_display_renders_mention_in_preview ... ok
[INFO] [stdout] test api::mention_cli_tests::reply_context_display_does_not_slice_a_boundary_mention_token ... ok
[INFO] [stdout] test api::mention_cli_tests::render_uses_current_nickname_over_snapshot ... ok
[INFO] [stdout] test api::mention_cli_tests::quoted_text_is_dropped_once_the_quoted_message_is_gone ... ok
[INFO] [stdout] test api::authorize_send_tests::stripper_does_not_eat_production_after_a_non_braced_cfg_test_item ... ok
[INFO] [stdout] test api::mention_cli_tests::resolved_outgoing_mention_uses_base32_ref_not_hex ... ok
[INFO] [stdout] test api::mention_cli_tests::resolves_unambiguous_public_nickname ... ok
[INFO] [stdout] test api::mention_cli_tests::undecodable_public_reply_reports_unavailable ... ok
[INFO] [stdout] test api::mention_cli_tests::reply_context_display_marks_truncation ... ok
[INFO] [stdout] test api::mention_cli_tests::reply_preview_escapes_mentioned_nickname_for_terminal_json_stays_raw ... ok
[INFO] [stdout] test api::mention_cli_tests::reply_json_includes_verified_target_identity ... ok
[INFO] [stdout] test api::mention_cli_tests::unverifiable_quotes_are_omitted_from_json_and_neutral_in_text ... ok
[INFO] [stdout] test api::migration_recovery_tests::active_migration_routes_through_decision_driver ... ok
[INFO] [stdout] test api::migration_recovery_tests::cli_migration_driver_exhausts_to_local_cache ... ok
[INFO] [stdout] test api::migration_recovery_tests::cli_driver_exhausts_to_the_not_found_error ... ok
[INFO] [stdout] test api::mention_cli_tests::unquotable_targets_are_reported_unavailable ... ok
[INFO] [stdout] test api::migration_recovery_tests::current_wasm_is_not_in_legacy_registry ... ok
[INFO] [stdout] test api::migration_recovery_tests::every_room_contract_put_is_gated_on_publishing_the_bundled_generation ... ok
[INFO] [stdout] test api::migration_recovery_tests::legacy_recovery_routes_through_decision_driver ... ok
[INFO] [stdout] test api::migration_recovery_tests::legacy_derivation_matches_live_key_for_current_wasm ... ok
[INFO] [stdout] test api::migration_recovery_tests::forward_put_sites_strip_upgrade_pointer ... ok
[INFO] [stdout] test api::migration_recovery_tests::fold_forward_upgrade_state_keeps_base_messages ... ok
[INFO] [stdout] test api::migration_recovery_tests::migration_candidates_put_stored_key_first_and_keep_retry_duplicate ... ok
[INFO] [stdout] test api::migration_recovery_tests::fold_forward_upgrade_state_adds_followed_messages ... ok
[INFO] [stdout] test api::migration_recovery_tests::migration_probe_ops_merge_with_local_is_the_real_merge ... ok
[INFO] [stdout] test api::migration_recovery_tests::next_upgrade_hop_follows_unvisited_pointer ... ok
[INFO] [stdout] test api::migration_recovery_tests::next_upgrade_hop_none_without_pointer ... ok
[INFO] [stdout] test api::migration_recovery_tests::next_upgrade_hop_refuses_known_backward_key ... ok
[INFO] [stdout] test api::migration_recovery_tests::migration_outcome_recovered_returns_merged_others_seed_local ... ok
[INFO] [stdout] test api::migration_recovery_tests::next_upgrade_hop_stops_on_cycle ... ok
[INFO] [stdout] test api::migration_recovery_tests::recovery_outcome_seed_local_and_no_legacy_map_to_not_found_err ... ok
[INFO] [stdout] test api::migration_recovery_tests::river_cli_probe_ops_prepare_forward_is_identity ... ok
[INFO] [stdout] test api::migration_recovery_tests::recovery_outcome_recovered_returns_state_and_reports_forward_put ... ok
[INFO] [stdout] test api::migration_recovery_tests::cli_migration_driver_adopts_newest_and_merges_local ... ok
[INFO] [stdout] test api::migration_recovery_tests::strip_upgrade_pointer_for_forward_put_clears_pointer ... ok
[INFO] [stdout] test api::migration_recovery_tests::cli_driver_recovers_fully_populated_room_verbatim ... ok
[INFO] [stdout] test api::migration_recovery_tests::strip_upgrade_pointer_for_forward_put_noop_without_pointer ... ok
[INFO] [stdout] test api::migration_recovery_tests::migration_retry_after_transient_timeout_recovers_newest ... ok
[INFO] [stdout] test api::migration_recovery_tests::the_shared_probe_driver_keeps_its_configuration ... ok
[INFO] [stdout] test api::migration_recovery_tests::walk_upgrade_chain_follows_multi_generation_forward_chain ... ok
[INFO] [stdout] test api::monitor_tests::a_departed_authors_key_is_null_not_a_wrong_key ... ok
[INFO] [stdout] test api::monitor_tests::classify_reaction_notsurfaced_unchanged_changed ... ok
[INFO] [stdout] test api::monitor_tests::classify_seen_detects_new_unchanged_edited ... ok
[INFO] [stdout] test api::migration_recovery_tests::cli_driver_adopts_newest_real_generation ... ok
[INFO] [stdout] test api::monitor_tests::a_seeded_poll_of_an_unchanged_room_emits_nothing ... ok
[INFO] [stdout] test api::migration_recovery_tests::walk_upgrade_chain_refuses_backward_head_pointer ... ok
[INFO] [stdout] test api::monitor_tests::deletions_to_suppress_excludes_only_shown_messages ... ok
[INFO] [stdout] test api::monitor_tests::emit_new_and_edited_seeds_reactions_for_surfaced_messages ... ok
[INFO] [stdout] test api::monitor_tests::fixtures_agree_on_their_keys ... ok
[INFO] [stdout] test api::monitor_tests::each_event_type_emits_its_documented_field_set ... ok
[INFO] [stdout] test api::monitor_tests::live_reaction_change_is_detected_when_text_is_unchanged ... ok
[INFO] [stdout] test api::monitor_tests::every_stream_json_event_carries_the_authors_full_verifying_key ... ok
[INFO] [stdout] test api::migration_recovery_tests::river_cli_probe_ops_roundtrips_fully_populated_state ... ok
[INFO] [stdout] test api::monitor_tests::monitor_seen_key_distinct_for_same_author_and_time_different_content ... ok
[INFO] [stdout] test api::monitor_tests::reactions_fingerprint_detects_actor_swap_at_constant_count ... ok
[INFO] [stdout] test api::monitor_tests::reactions_fingerprint_distinguishes_delimiter_colliding_labels ... ok
[INFO] [stdout] test api::monitor_tests::reactions_fingerprint_none_empty_and_nonempty ... ok
[INFO] [stdout] test api::monitor_tests::reply_context_extracts_author_and_truncated_preview ... ok
[INFO] [stdout] test api::monitor_tests::reaction_to_unsurfaced_message_is_suppressed ... ok
[INFO] [stdout] test api::monitor_tests::reply_context_none_for_plain_message ... ok
[INFO] [stdout] test api::monitor_tests::reply_context_none_for_event ... ok
[INFO] [stdout] test api::monitor_tests::should_emit_deletion_only_for_seen_and_unreported ... ok
[INFO] [stdout] test api::monitor_tests::preexisting_reaction_on_surfaced_message_is_not_reemitted ... ok
[INFO] [stdout] test api::monitor_tests::live_reaction_removal_is_detected ... ok
[INFO] [stdout] test api::migration_recovery_tests::migration_probe_ops_classifies_via_shared_classifier ... ok
[INFO] [stdout] test api::reaccept_guard_tests::accept_invitation_has_reaccept_guard ... ok
[INFO] [stdout] test api::recheck_tests::a_move_ends_the_stream_with_the_restart_status ... ok
[INFO] [stdout] test api::recheck_tests::nothing_moved_means_the_stream_carries_on ... ok
[INFO] [stdout] test api::monitor_tests::reply_context_preview_boundaries ... ok
[INFO] [stdout] test api::recheck_tests::a_failed_recheck_is_an_ordinary_failure_not_a_restart ... ok
[INFO] [stdout] test api::recheck_tests::the_recheck_interval_is_jittered_within_twenty_percent ... ok
[INFO] [stdout] test api::rejoin_nickname_tests::over_long_nickname_falls_back_to_member ... ok
[INFO] [stdout] test api::rejoin_nickname_tests::private_room_with_secret_seals_nickname ... ok
[INFO] [stdout] test api::migration_recovery_tests::room_keys_for_the_network_are_derived_only_through_the_anchor ... ok
[INFO] [stdout] test api::monitor_tests::reactions_fingerprint_is_order_independent ... ok
[INFO] [stdout] test api::reaccept_guard_tests::refusal_error_names_room_and_points_to_leave ... ok
[INFO] [stdout] test api::migration_recovery_tests::river_cli_probe_ops_classifies_and_never_merges ... ok
[INFO] [stdout] test api::monitor_tests::the_emitted_key_is_the_authors_real_key_for_a_member_and_for_the_owner ... ok
[INFO] [stdout] test api::rejoin_nickname_tests::private_room_without_secret_does_not_leak_real_nickname ... ok
[INFO] [stdout] test api::rejoin_nickname_tests::public_room_restores_real_nickname ... ok
[INFO] [stdout] test api::rejoin_nickname_tests::no_stored_nickname_falls_back_to_member ... ok
[INFO] [stdout] test api::resolve_own_member_info_base_tests::republish_base_reads_canonical_revoke_not_first_match_grant ... ok
[INFO] [stdout] test api::resolve_own_member_info_base_tests::no_member_info_returns_none ... ok
[INFO] [stdout] test api::response_multiplexing_pin::pin_catches_a_commented_out_wait ... ok
[INFO] [stdout] test api::response_multiplexing_pin::pin_catches_a_new_direct_read_under_a_different_variable_name ... ok
[INFO] [stdout] test api::response_multiplexing_pin::pin_catches_a_new_update_send ... ok
[INFO] [stdout] test api::subscribe_handshake_tests::a_put_answer_for_another_contract_does_not_answer_ours ... ok
[INFO] [stdout] test api::subscribe_handshake_tests::a_notification_does_not_answer_the_put ... ok
[INFO] [stdout] test api::subscribe_handshake_tests::a_put_onto_an_existing_contract_is_answered_by_an_update_response ... ok
[INFO] [stdout] test api::subscribe_handshake_tests::a_put_response_answers_the_put ... ok
[INFO] [stdout] test api::response_multiplexing_pin::pin_catches_a_send_path_reverting_to_a_direct_read ... ok
[INFO] [stdout] test api::subscribe_handshake_tests::a_refusal_is_an_answer_not_a_reason_to_keep_waiting ... ok
[INFO] [stdout] test api::subscribe_handshake_tests::an_update_response_for_another_contract_does_not_answer_ours ... ok
[INFO] [stdout] test api::subscribe_handshake_tests::other_responses_are_tolerated ... ok
[INFO] [stdout] test api::subscribe_handshake_tests::an_update_notification_does_not_answer_the_update ... ok
[INFO] [stdout] test api::subscribe_handshake_tests::the_acknowledgement_is_recognised ... ok
[INFO] [stdout] test api::subscribe_handshake_tests::the_handshake_queue_is_bounded ... ok
[INFO] [stdout] test api::subscribe_handshake_tests::the_update_response_is_recognised ... ok
[INFO] [stdout] test api::response_multiplexing_pin::pin_catches_a_new_send_only_call_site ... ok
[INFO] [stdout] test api::subscribe_handshake_tests::an_update_notification_does_not_answer_the_subscribe ... ok
[INFO] [stdout] test api::subscribe_handshake_tests::other_responses_do_not_answer_the_update ... ok
[INFO] [stdout] test api::response_multiplexing_pin::pin_catches_a_put_path_that_stops_consulting_its_classifier ... ok
[INFO] [stdout] test api::response_multiplexing_pin::pin_catches_a_call_site_reached_through_a_cloned_arc ... ok
[INFO] [stdout] test api::response_multiplexing_pin::api_source_routes_every_wait_through_a_shared_waiter ... ok
[INFO] [stdout] test api::response_multiplexing_pin::pin_catches_the_waiter_disappearing ... ok
[INFO] [stdout] test commands::debug::tests::bans_command_delegates_to_the_shared_helpers ... ok
[INFO] [stdout] test commands::debug::tests::contract_get_summary_json_includes_room_fields ... ok
[INFO] [stdout] test commands::debug::tests::deputy_ban_is_enforcing_while_the_grant_stands ... ok
[INFO] [stdout] test commands::debug::tests::ban_json_keeps_the_pre_existing_fields_and_serializes_state_as_a_string ... ok
[INFO] [stdout] test commands::debug::tests::ban_by_a_member_with_no_grant_is_undetermined_once_the_target_is_absent ... ok
[INFO] [stdout] test commands::debug::tests::ban_is_inert_once_its_banner_is_no_longer_a_member ... ok
[INFO] [stdout] test commands::debug::tests::human_output_handles_an_empty_ban_list ... ok
[INFO] [stdout] test commands::debug::tests::human_output_marks_each_state_distinctly ... ok
[INFO] [stdout] test commands::debug::tests::every_enforcement_state_has_a_distinct_json_spelling ... ok
[INFO] [stdout] test commands::debug::tests::human_output_only_explains_states_that_are_present ... ok
[INFO] [stdout] test commands::debug::tests::ban_naming_the_room_owner_is_inert_not_undetermined ... ok
[INFO] [stdout] test commands::debug::tests::room_config_description_none_when_unset ... ok
[INFO] [stdout] test commands::debug::tests::room_config_includes_description ... ok
[INFO] [stdout] test commands::debug::tests::status_error_json_stays_valid_with_special_chars ... ok
[INFO] [stdout] test commands::dm::tests::apply_per_pair_cap_drops_oldest_above_cap ... ok
[INFO] [stdout] test commands::dm::tests::apply_per_pair_cap_isolates_pairs ... ok
[INFO] [stdout] test commands::debug::tests::deputy_ban_is_inert_after_the_grant_is_revoked ... ok
[INFO] [stdout] test commands::debug::tests::absolute_grants_stay_enforcing_with_the_target_absent ... ok
[INFO] [stdout] test commands::dm::tests::decode_invitation_from_payload_validates_room_match ... ok
[INFO] [stdout] test commands::dm::tests::dm_list_escapes_nickname_for_human_and_keeps_json_raw ... ok
[INFO] [stdout] test commands::dm::tests::dm_send_uses_legacy_raw_text_wire_shape ... ok
[INFO] [stdout] test commands::dm::tests::dm_send_has_no_client_side_pair_cap_guard ... ok
[INFO] [stdout] test commands::dm::tests::format_dm_body_for_cli_invite_blank_personal_message_treated_as_none ... ok
[INFO] [stdout] test commands::dm::tests::format_dm_body_for_cli_invite_has_room_prefix_and_message ... ok
[INFO] [stdout] test commands::dm::tests::format_dm_body_for_cli_invite_no_personal_message ... ok
[INFO] [stdout] test commands::dm::tests::format_dm_body_for_cli_renders_text_verbatim ... ok
[INFO] [stdout] test commands::dm::tests::hex_token_round_trip ... ok
[INFO] [stdout] test commands::dm::tests::invite_dm_body_round_trips_through_accept_path ... ok
[INFO] [stdout] test commands::dm::tests::parse_hex_token_rejects_bad_inputs ... ok
[INFO] [stdout] test commands::dm::tests::resolve_recipient_vk_accepts_a_full_verifying_key ... ok
[INFO] [stdout] test commands::dm::tests::normalize_personal_message_blanks_to_none ... ok
[INFO] [stdout] test commands::dm::tests::room_has_member_recognizes_owner_and_members ... ok
[INFO] [stdout] test commands::dm::tests::resolve_recipient_vk_rejects_ambiguous_prefix ... ok
[INFO] [stdout] test commands::dm::tests::select_errors_on_distinct_targets ... ok
[INFO] [stdout] test commands::dm::tests::select_drops_malformed_across_targets ... ok
[INFO] [stdout] test commands::dm::tests::select_errors_when_all_malformed ... ok
[INFO] [stdout] test commands::debug::tests::owner_ban_of_a_present_member_is_enforcing ... ok
[INFO] [stdout] test commands::dm::tests::select_room_filter_no_match_errors ... ok
[INFO] [stdout] test commands::dm::tests::select_picks_newest_valid_for_single_target ... ok
[INFO] [stdout] test commands::dm::tests::collect_inbound_invites_filters_correctly ... ok
[INFO] [stdout] test commands::debug::tests::ban_signed_by_someone_other_than_its_attributed_banner_is_inert ... ok
[INFO] [stdout] test commands::identity::tests::coherence_error_mentions_corruption_when_no_override ... ok
[INFO] [stdout] test commands::dm::tests::select_skips_malformed_newest_falls_back_to_valid ... ok
[INFO] [stdout] test commands::dm::tests::select_room_filter_disambiguates_same_sender_two_rooms ... ok
[INFO] [stdout] test commands::dm::tests::select_room_filter_too_broad_still_errors ... ok
[INFO] [stdout] test commands::dm::tests::short_member_id_is_short ... ok
[INFO] [stdout] test commands::identity::tests::coherence_error_mentions_override_when_override_set ... ok
[INFO] [stdout] test commands::identity::tests::coherence_passes_when_signing_key_matches_member ... ok
[INFO] [stdout] test commands::identity::tests::import_overwrite_refusal_matrix ... ok
[INFO] [stdout] test commands::debug::tests::each_ban_is_classified_independently ... ok
[INFO] [stdout] test commands::identity::whoami_payload_tests::whoami_json_member_id_matches_author_display_form ... ok
[INFO] [stdout] test commands::identity::whoami_wiring_tests::whoami_short_circuit_passes_signing_key_override ... ok
[INFO] [stdout] test commands::identity::whoami_wiring_tests::whoami_short_circuits_before_client_creation ... ok
[INFO] [stdout] test commands::identity::whoami_payload_tests::whoami_json_field_names_are_stable ... ok
[INFO] [stdout] test commands::member::tests::ban_safety_flags_are_explicit_and_closed ... ok
[INFO] [stdout] test commands::identity::whoami_payload_tests::whoami_json_absent_nickname_is_null ... ok
[INFO] [stdout] test commands::identity::tests::force_import_overwrites_stored_identity ... ok
[INFO] [stdout] test commands::member::tests::deputies_accepts_an_explicit_member_id ... ok
[INFO] [stdout] test commands::member::tests::member_list_json_keeps_the_pre_existing_shape_and_adds_both_directions ... ok
[INFO] [stdout] test commands::member::tests::ids_to_strings_renders_short_ids ... ok
[INFO] [stdout] test commands::member::tests::room_id_is_required_for_both_new_commands ... ok
[INFO] [stdout] test commands::member::tests::deputies_member_id_is_optional_and_defaults_to_self ... ok
[INFO] [stdout] test commands::message::tests::message_list_json_exposes_author_verifying_key ... ok
[INFO] [stdout] test commands::member::tests::deputized_by_is_spelled_in_kebab_case_and_requires_a_member_id ... ok
[INFO] [stdout] test commands::message::tests::send_json_returns_the_new_message_id ... ok
[INFO] [stdout] test commands::message::tests::reaction_json_exposes_who_reacted_not_just_how_many ... ok
[INFO] [stdout] test commands::message::tests::message_list_escapes_nickname_for_human_and_keeps_json_raw ... ok
[INFO] [stdout] test commands::message::tests::reply_json_returns_the_new_message_id ... ok
[INFO] [stdout] test deputies::tests::a_grant_from_an_absent_deputizer_is_inactive ... ok
[INFO] [stdout] test commands::room::tests::join_json_reports_unsupported_with_invitation_hint ... ok
[INFO] [stdout] test deputies::tests::a_grant_naming_a_pruned_member_is_reported_but_marked_inactive ... ok
[INFO] [stdout] test deputies::tests::a_private_room_nickname_decrypts_through_party ... ok
[INFO] [stdout] test deputies::tests::all_grants_and_index_cover_every_grant_deterministically ... ok
[INFO] [stdout] test deputies::tests::an_inactive_grant_reaches_nobody ... ok
[INFO] [stdout] test commands::identity::tests::empty_invitation_secrets_round_trip_to_empty ... ok
[INFO] [stdout] test deputies::tests::a_hostile_nickname_cannot_forge_an_extra_output_row ... ok
[INFO] [stdout] test deputies::tests::ban_member_is_wired_to_the_self_removal_rule ... ok
[INFO] [stdout] test deputies::tests::bans_that_do_not_remove_the_banner_are_not_refused ... ok
[INFO] [stdout] test deputies::tests::empty_deputies_reports_nothing_in_either_direction ... ok
[INFO] [stdout] test commands::debug::tests::legitimate_ancestor_ban_becomes_undetermined_once_its_target_is_removed ... ok
[INFO] [stdout] test deputies::tests::escape_nickname_inline_matches_display_nickname_minus_quotes ... ok
[INFO] [stdout] test deputies::tests::dedup_survives_two_distinct_ids_that_print_identically ... ok
[INFO] [stdout] test deputies::tests::duplicate_records_collapse_to_one_row_with_the_canonical_nickname ... ok
[INFO] [stdout] test deputies::tests::human_status_line_names_the_deputizer_not_a_bare_badge ... ok
[INFO] [stdout] test deputies::tests::member_id_from_key_input_parses_full_keys_and_rejects_non_keys ... ok
[INFO] [stdout] test deputies::tests::member_with_no_member_info_record_has_no_deputies ... ok
[INFO] [stdout] test deputies::tests::inactive_line_names_both_parties_when_both_are_absent ... ok
[INFO] [stdout] test commands::identity::tests::invitation_secrets_survive_export_armor_import_persist ... ok
[INFO] [stdout] test deputies::tests::forward_and_reverse_lookup_agree_on_a_grant ... ok
[INFO] [stdout] test deputies::tests::resolve_short_id_accepts_a_full_verifying_key_exactly ... ok
[INFO] [stdout] test deputies::tests::json_shape_is_pinned_so_scripts_do_not_break_silently ... ok
[INFO] [stdout] test deputies::tests::reads_the_canonical_record_so_a_revoked_grant_is_not_reported ... ok
[INFO] [stdout] test deputies::tests::invite_subtrees_survives_a_cycle_and_a_self_invite ... ok
[INFO] [stdout] test deputies::tests::reach_excludes_subtree_members_who_deputized_this_deputy ... ok
[INFO] [stdout] test deputies::tests::resolve_short_id_matches_case_insensitively_and_rejects_unknown ... ok
[INFO] [stdout] test deputies::tests::reverse_lookup_finds_every_deputizer_of_one_member ... ok
[INFO] [stdout] test deputies::tests::reach_excludes_targets_whose_ban_would_remove_the_deputy ... ok
[INFO] [stdout] test deputies::tests::reach_is_the_deputizers_invite_subtree_not_merely_that_a_grant_exists ... ok
[INFO] [stdout] test deputies::tests::status_line_uses_singular_for_a_reach_of_one ... ok
[INFO] [stdout] test deputies::tests::self_removing_bans_are_refused_directly_and_transitively ... ok
[INFO] [stdout] test error::tests::a_rekey_exits_with_the_restart_status_and_everything_else_with_one ... ok
[INFO] [stdout] test error::tests::a_rekey_reports_a_restart_not_a_crash ... ok
[INFO] [stdout] test pointer::tests::a_corrupt_stored_floor_surfaces_rather_than_resetting ... ok
[INFO] [stdout] test error::tests::the_restart_status_survives_added_context ... ok
[INFO] [stdout] test deputies::tests::verifying_key_resolves_owner_and_members_and_is_none_for_unknown ... ok
[INFO] [stdout] test pointer::tests::author_key_matches_the_documented_pointer_address ... ok
[INFO] [stdout] test pointer::tests::floor_keys_are_scoped_to_the_author_key ... ok
[INFO] [stdout] test pointer::tests::classify_recognises_bundled_legacy_and_unknown ... ok
[INFO] [stdout] test deputies::tests::the_guardrail_does_not_apply_where_an_absolute_grant_already_does ... ok
[INFO] [stdout] test pointer::tests::never_published_falls_back_to_bundled_silently ... ok
[INFO] [stdout] test deputies::tests::room_wide_status_covers_zero_one_and_many_other_members ... ok
[INFO] [stdout] test pointer::tests::floor_round_trips_through_its_stored_form ... ok
[INFO] [stdout] test pointer::tests::recheck_ignores_a_reconfirmed_generation ... ok
[INFO] [stdout] test pointer::tests::recheck_ignores_an_unverified_hash_change ... ok
[INFO] [stdout] test commands::debug::tests::a_present_target_agrees_with_the_contracts_excluded_set ... ok
[INFO] [stdout] test pointer::tests::recheck_restarts_for_a_verified_move_past_this_binary_too ... ok
[INFO] [stdout] test pointer::tests::the_remembered_floor_beats_a_disk_that_fell_behind ... ok
[INFO] [stdout] test pointer::tests::transport_failure_falls_back_to_bundled_with_a_visible_warning ... ok
[INFO] [stdout] test pointer::tests::unavailable_falls_back_to_bundled_with_a_visible_warning ... ok
[INFO] [stdout] test pointer::tests::resolved_equals_bundled_behaves_exactly_as_before ... ok
[INFO] [stdout] test pointer::tests::recheck_restarts_for_a_verified_move_to_a_known_generation ... ok
[INFO] [stdout] test deputies::tests::resolve_short_id_reports_ambiguity_rather_than_guessing ... ok
[INFO] [stdout] test private_room::tests::accept_invitation_calls_seal_invitee_nickname ... ok
[INFO] [stdout] test pointer::tests::stale_and_competing_record_keep_the_last_resolved_hash ... ok
[INFO] [stdout] test private_room::tests::build_action_body_errors_when_body_exceeds_max_message_size ... ok
[INFO] [stdout] test private_room::tests::build_action_body_private_room_errors_when_secret_lacks_current_version ... ok
[INFO] [stdout] test private_room::tests::build_action_and_reply_bodies_accepted_by_contract_apply_delta ... ok
[INFO] [stdout] test private_room::tests::build_action_body_private_room_errors_without_secret ... ok
[INFO] [stdout] test private_room::tests::build_action_body_private_room_seals_and_roundtrips_all_action_kinds ... ok
[INFO] [stdout] test private_room::tests::build_action_body_private_room_seals_via_contract_blob ... ok
[INFO] [stdout] test private_room::tests::build_action_body_public_room_matches_dedicated_constructor ... ok
[INFO] [stdout] test private_room::tests::build_message_body_errors_when_body_exceeds_max_message_size ... ok
[INFO] [stdout] test private_room::tests::build_message_body_private_room_errors_when_secret_lacks_current_version ... ok
[INFO] [stdout] test private_room::tests::build_message_body_private_room_errors_without_secret ... ok
[INFO] [stdout] test private_room::tests::build_message_body_output_is_accepted_by_contract_apply_delta ... ok
[INFO] [stdout] test private_room::tests::build_message_body_private_room_seals_and_roundtrips_via_invitation_secret ... ok
[INFO] [stdout] test private_room::tests::build_message_body_public_room_is_plaintext ... ok
[INFO] [stdout] test private_room::tests::build_message_body_private_room_seals_via_contract_blob ... ok
[INFO] [stdout] test private_room::tests::build_reply_body_private_room_errors_when_secret_lacks_current_version ... ok
[INFO] [stdout] test private_room::tests::build_reply_body_private_room_errors_without_secret ... ok
[INFO] [stdout] test private_room::tests::build_reply_body_errors_when_body_exceeds_max_message_size ... ok
[INFO] [stdout] test private_room::tests::build_reply_body_private_room_seals_and_roundtrips ... ok
[INFO] [stdout] test private_room::tests::build_reply_body_public_room_matches_dedicated_constructor ... ok
[INFO] [stdout] test private_room::tests::collect_invitation_secrets_is_sorted_by_version ... ok
[INFO] [stdout] test private_room::tests::collect_secrets_public_room_is_empty ... ok
[INFO] [stdout] test private_room::tests::contract_blob_wins_over_stale_invitation_secret_at_same_version ... ok
[INFO] [stdout] test private_room::tests::collect_invitation_secrets_empty_input_is_empty ... ok
[INFO] [stdout] test private_room::tests::heal_defers_for_unanchored_member ... ok
[INFO] [stdout] test private_room::tests::heal_clamps_over_long_nickname_to_member_placeholder ... ok
[INFO] [stdout] test private_room::tests::heal_falls_back_to_member_placeholder_when_no_nickname ... ok
[INFO] [stdout] test private_room::tests::heal_defers_when_placeholder_exceeds_max_nickname_size ... ok
[INFO] [stdout] test private_room::tests::heal_private_room_defers_when_secret_lacks_current_version ... ok
[INFO] [stdout] test private_room::tests::heal_private_room_with_secret_seals_nickname ... ok
[INFO] [stdout] test error::tests::every_other_error_reports_exactly_as_before ... ok
[INFO] [stdout] test pointer::tests::a_withdrawn_floor_refuses_every_arm ... ok
[INFO] [stdout] test pointer::tests::legacy_generation_is_trusted_and_reanchors_the_probe ... ok
[INFO] [stdout] test private_room::tests::heal_returns_none_for_owner ... ok
[INFO] [stdout] test pointer::tests::unavailable_keeps_the_last_resolved_hash_over_the_bundled_one ... ok
[INFO] [stdout] test pointer::tests::unknown_generation_refuses_writes_and_refuses_to_probe ... ok
[INFO] [stdout] test pointer::tests::withdrawn_refuses ... ok
[INFO] [stdout] test private_room::tests::merge_invitation_secrets_empty_cases ... ok
[INFO] [stdout] test private_room::tests::merge_invitation_secrets_new_wins_on_collision ... ok
[INFO] [stdout] test private_room::tests::merge_invitation_secrets_preserves_existing_entries_new_does_not_carry ... ok
[INFO] [stdout] test private_room::tests::invitation_secrets_folded_in_for_unknown_versions ... ok
[INFO] [stdout] test private_room::tests::heal_public_room_missing_member_info_is_healed ... ok
[INFO] [stdout] test private_room::tests::heal_returns_none_when_self_not_in_members ... ok
[INFO] [stdout] test private_room::tests::heal_private_room_without_secret_defers ... ok
[INFO] [stdout] test private_room::tests::seal_field_private_room_without_secret_errors ... ok
[INFO] [stdout] test private_room::tests::non_owner_decrypts_own_blob_from_state ... ok
[INFO] [stdout] test private_room::tests::seal_field_public_room_stays_public ... ok
[INFO] [stdout] test private_room::tests::seal_field_private_room_seals_and_roundtrips ... ok
[INFO] [stdout] test private_room::tests::owner_recovers_random_v0_from_contract_blob_not_via_derivation ... ok
[INFO] [stdout] test private_room::tests::heal_returns_none_when_member_info_already_present ... ok
[INFO] [stdout] test private_room::tests::seal_invitee_nickname_private_room_uses_invitation_secret ... ok
[INFO] [stdout] test private_room::tests::seal_invitee_nickname_private_room_returns_none_when_no_secret ... ok
[INFO] [stdout] test private_room::tests::seal_invitee_nickname_public_room_returns_public_bytes ... ok
[INFO] [stdout] test private_room::tests::heal_output_is_accepted_by_member_info_apply_delta ... ok
[INFO] [stdout] test storage::tests::both_stream_loops_recheck_the_room_contract_pointer ... ok
[INFO] [stdout] test private_room::tests::seal_invitee_nickname_returns_none_when_invitation_lacks_current_version ... ok
[INFO] [stdout] test storage::tests::a_corrupt_pointer_floor_store_surfaces_rather_than_reading_as_never_resolved ... ok
[INFO] [stdout] test storage::tests::import_identity_seeds_invitation_secrets_wiring_pinned ... ok
[INFO] [stdout] test storage::tests::floor_memory_and_stream_seeding_are_wired ... ok
[INFO] [stdout] test storage::tests::import_room_atomic_preserves_previous_contract_key ... ok
[INFO] [stdout] test storage::tests::import_room_atomic_overwrite_keeps_stored_state ... ok
[INFO] [stdout] test storage::tests::force_import_prunes_dm_cache_only_on_key_change ... ok
[INFO] [stdout] test storage::tests::invitation_secrets_round_trip_via_disk ... ok
[INFO] [stdout] test storage::tests::import_room_atomic_rechecks_existence_under_lock ... ok
[INFO] [stdout] test storage::tests::import_room_atomic_same_key_preserves_invitation_secrets ... ok
[INFO] [stdout] test storage::tests::list_rooms_decrypts_private_room_name ... ok
[INFO] [stdout] test storage::tests::list_rooms_includes_self_member_id ... ok
[INFO] [stdout] test storage::tests::import_room_atomic_same_key_preserves_nickname_and_chain ... ok
[INFO] [stdout] test storage::tests::concurrent_outbound_dm_appends_do_not_lose_updates ... ok
[INFO] [stdout] test storage::tests::list_rooms_private_name_falls_back_without_secret ... ok
[INFO] [stdout] test storage::tests::load_rooms_regenerates_keys_against_the_resolved_generation ... ok
[INFO] [stdout] test storage::tests::pointer_floor_round_trips_and_is_scoped_by_key ... ok
[INFO] [stdout] test storage::tests::persisted_signing_key_bytes_ignores_override ... ok
[INFO] [stdout] test storage::tests::monitor_edit_detection_wiring_pinned ... ok
[INFO] [stdout] test storage::tests::message_author_derivation_shared_with_whoami ... ok
[INFO] [stdout] test storage::tests::rejoin_nickname_wiring_pinned ... ok
[INFO] [stdout] test storage::tests::remove_room_clears_stored_entry ... ok
[INFO] [stdout] test storage::tests::rooms_json_decodes_legacy_blob_without_invitation_secrets_field ... ok
[INFO] [stdout] test storage::tests::inline_identity_nickname_agrees_across_paths_in_private_room ... ok
[INFO] [stdout] test storage::tests::rooms_storage_locking_and_atomic_write_pinned ... ok
[INFO] [stdout] test storage::tests::remove_room_prunes_outbound_dm_cache ... ok
[INFO] [stdout] test storage::tests::reaccept_guard_prevents_clobber ... ok
[INFO] [stdout] test storage::tests::saving_an_older_pointer_floor_does_not_regress_the_stored_one ... ok
[INFO] [stdout] test storage::tests::self_identity_empty_room_nickname_falls_back ... ok
[INFO] [stdout] test storage::tests::self_identity_falls_back_to_local_nickname ... ok
[INFO] [stdout] test storage::tests::self_identity_does_not_inherit_persisted_nickname_under_override ... ok
[INFO] [stdout] test storage::tests::self_identity_agrees_with_list_rooms ... ok
[INFO] [stdout] test storage::tests::self_identity_none_for_unknown_room ... ok
[INFO] [stdout] test storage::tests::self_identity_decrypts_private_nickname ... ok
[INFO] [stdout] test storage::tests::self_identity_member_id_matches_message_author_derivation ... ok
[INFO] [stdout] test storage::tests::self_identity_prefers_room_state_nickname_over_local ... ok
[INFO] [stdout] test storage::tests::self_identity_reports_override_own_room_nickname ... ok
[INFO] [stdout] test storage::tests::concurrent_add_room_does_not_lose_updates ... ok
[INFO] [stdout] test storage::tests::self_identity_reports_ownership ... ok
[INFO] [stdout] test storage::tests::test_stored_room_info_without_self_nickname_field_defaults_none ... ok
[INFO] [stdout] test storage::tests::self_identity_honors_signing_key_override ... ok
[INFO] [stdout] test storage::tests::self_identity_undecryptable_private_nickname_falls_back ... ok
[INFO] [stdout] test storage::tests::test_update_contract_key_room_not_found ... ok
[INFO] [stdout] test storage::tests::signing_key_override_is_returned_and_not_persisted ... ok
[INFO] [stdout] test storage::tests::test_update_self_nickname_missing_room_is_noop ... ok
[INFO] [stdout] test version_check::tests::cache_round_trips_including_failed_attempt_sentinel ... ok
[INFO] [stdout] test version_check::tests::highest_non_yanked_empty_or_garbage_is_none ... ok
[INFO] [stdout] test storage::tests::test_update_contract_key_preserves_state ... ok
[INFO] [stdout] test storage::tests::test_storage_roundtrip ... ok
[INFO] [stdout] test version_check::tests::highest_non_yanked_picks_max_and_skips_yanked ... ok
[INFO] [stdout] test version_check::tests::outdated_comparison_is_correct ... ok
[INFO] [stdout] test version_check::tests::semver_ordering_is_numeric_not_lexical ... ok
[INFO] [stdout] test version_check::tests::parse_semver_basic_and_suffixes ... ok
[INFO] [stdout] test storage::tests::test_update_contract_key_success ... ok
[INFO] [stdout] test storage::tests::test_update_self_nickname_round_trips ... ok
[INFO] [stdout] test version_check::tests::highest_non_yanked_out_of_order_lines ... ok
[INFO] [stdout] test storage::tests::test_load_rooms_sets_previous_contract_key_on_mismatch ... ok
[INFO] [stdout] test storage::tests::member_info_heal_wiring_pinned ... ok
[INFO] [stdout] test storage::tests::concurrent_reads_never_observe_a_torn_write ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 402 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.69s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/build/riverctl/c07092c66bde62eb/out/riverctl-c07092c66bde62eb)
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test cli_tests::parse_signing_key_bytes_rejects_empty ... ok
[INFO] [stdout] test cli_tests::parse_signing_key_bytes_rejects_long_input ... ok
[INFO] [stdout] test cli_tests::parse_signing_key_bytes_accepts_32_byte_input ... ok
[INFO] [stdout] test cli_tests::message_actions_accept_negative_signed_message_ids ... ok
[INFO] [stdout] test cli_tests::parse_signing_key_bytes_rejects_short_input ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests riverctl
[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" "4bd30c8e924417880fe67dd912668c7acd3b88b35fd8490bc42ad7e0551b3b74", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4bd30c8e924417880fe67dd912668c7acd3b88b35fd8490bc42ad7e0551b3b74", kill_on_drop: false }`
[INFO] [stdout] 4bd30c8e924417880fe67dd912668c7acd3b88b35fd8490bc42ad7e0551b3b74
