[INFO] cloning repository https://github.com/farchanjo/math-calc-mcp
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/farchanjo/math-calc-mcp" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffarchanjo%2Fmath-calc-mcp", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffarchanjo%2Fmath-calc-mcp'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] c8e16e2a711c7562ca3583f5535884932a11560b
[INFO] testing farchanjo/math-calc-mcp against 1.99.0-beta.8+cargoflags=--release for beta-release-1.100-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffarchanjo%2Fmath-calc-mcp" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-4-tc1/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/farchanjo/math-calc-mcp
[INFO] finished tweaking git repo https://github.com/farchanjo/math-calc-mcp
[INFO] tweaked toml for git repo https://github.com/farchanjo/math-calc-mcp written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/farchanjo/math-calc-mcp on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 145 packages to highest Rust 1.94 compatible versions
[INFO] [stderr]       Adding base64 v0.22.1 (available: v0.23.1)
[INFO] [stderr]       Adding generic-array v0.14.7 (available: v0.14.9)
[INFO] [stderr]       Adding md-5 v0.10.6 (available: v0.11.0)
[INFO] [stderr]       Adding num-bigint v0.4.8 (available: v0.5.1)
[INFO] [stderr]       Adding rmcp v1.8.0 (available: v3.5.1)
[INFO] [stderr]       Adding schemars v0.8.22 (available: v1.2.3)
[INFO] [stderr]       Adding sha1 v0.10.7 (available: v0.11.0)
[INFO] [stderr]       Adding sha2 v0.10.9 (available: v0.11.1)
[INFO] [stderr]       Adding wide v0.7.33 (available: v1.7.1)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded lazy_static v1.5.1
[INFO] [stderr]   Downloaded schemars v1.2.3
[INFO] [stderr]   Downloaded astro-float-macro v0.4.6
[INFO] [stderr]   Downloaded schemars_derive v1.2.3
[INFO] [stderr]   Downloaded jiff-static v0.2.38
[INFO] [stderr]   Downloaded astro-float v0.9.6
[INFO] [stderr]   Downloaded defmt-parser v1.1.0
[INFO] [stderr]   Downloaded either v1.19.0
[INFO] [stderr]   Downloaded defmt v1.2.0
[INFO] [stderr]   Downloaded defmt-macros v1.2.0
[INFO] [stderr]   Downloaded jiff-tzdb v0.1.9
[INFO] [stderr]   Downloaded bigdecimal v0.4.11
[INFO] [stderr]   Downloaded astro-float-num v0.3.7
[INFO] [stderr]   Downloaded zerocopy-derive v0.8.63
[INFO] [stderr]   Downloaded zerocopy v0.8.63
[INFO] [stderr]   Downloaded jiff v0.2.38
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 2ab1f8f69ba9495b559f74f1244989b133713eafb15811f38bdd9b4428488c45
[INFO] running `Command { std: "docker" "start" "2ab1f8f69ba9495b559f74f1244989b133713eafb15811f38bdd9b4428488c45", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2ab1f8f69ba9495b559f74f1244989b133713eafb15811f38bdd9b4428488c45", 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" "2ab1f8f69ba9495b559f74f1244989b133713eafb15811f38bdd9b4428488c45" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2ab1f8f69ba9495b559f74f1244989b133713eafb15811f38bdd9b4428488c45", 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" "2ab1f8f69ba9495b559f74f1244989b133713eafb15811f38bdd9b4428488c45" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.107
[INFO] [stderr]    Compiling unicode-ident v1.0.27
[INFO] [stderr]    Compiling quote v1.0.47
[INFO] [stderr]    Compiling libc v0.2.191
[INFO] [stderr]    Compiling cfg-if v1.0.5
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling autocfg v1.5.1
[INFO] [stderr]    Compiling zmij v1.0.23
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling version_check v0.9.5
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling typenum v1.20.1
[INFO] [stderr]    Compiling zerocopy v0.8.63
[INFO] [stderr]    Compiling memchr v2.8.3
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling futures-sink v0.3.34
[INFO] [stderr]    Compiling futures-core v0.3.34
[INFO] [stderr]    Compiling serde_json v1.0.154
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling syn v3.0.9
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling ident_case v1.0.1
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling futures-channel v0.3.34
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling ref-cast v1.0.27
[INFO] [stderr]    Compiling either v1.19.0
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling lazy_static v1.5.1
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling futures-task v0.3.34
[INFO] [stderr]    Compiling futures-io v0.3.34
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling itertools v0.10.5
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling mio v1.2.4
[INFO] [stderr]    Compiling socket2 v0.6.5
[INFO] [stderr]    Compiling libm v0.2.16
[INFO] [stderr]    Compiling thiserror v2.0.21
[INFO] [stderr]    Compiling dyn-clone v1.0.20
[INFO] [stderr]    Compiling bytes v1.12.1
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling serde_derive_internals v0.30.0
[INFO] [stderr]    Compiling astro-float-num v0.3.7
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling serde_derive_internals v0.29.1
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling futures-macro v0.3.34
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling futures-util v0.3.34
[INFO] [stderr]    Compiling tokio-macros v2.7.2
[INFO] [stderr]    Compiling ref-cast-impl v1.0.27
[INFO] [stderr]    Compiling rand v0.8.8
[INFO] [stderr]    Compiling tokio v1.53.3
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling regex-automata v0.4.18
[INFO] [stderr]    Compiling thiserror-impl v2.0.21
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling schemars_derive v1.2.3
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling num-integer v0.1.47
[INFO] [stderr]    Compiling bigdecimal v0.4.11
[INFO] [stderr]    Compiling cpufeatures v0.2.17
[INFO] [stderr]    Compiling schemars v0.8.22
[INFO] [stderr]    Compiling crc32fast v1.5.2
[INFO] [stderr]    Compiling bytemuck v1.25.2
[INFO] [stderr]    Compiling log v0.4.34
[INFO] [stderr]    Compiling rmcp v1.8.0
[INFO] [stderr]    Compiling anyhow v1.0.104
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling futures-executor v0.3.34
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling safe_arch v0.7.4
[INFO] [stderr]    Compiling futures v0.3.34
[INFO] [stderr]    Compiling num-bigint v0.4.8
[INFO] [stderr]    Compiling rmcp-macros v1.8.0
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling schemars_derive v0.8.22
[INFO] [stderr]    Compiling async-trait v0.1.92
[INFO] [stderr]    Compiling schemars v1.2.3
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling astro-float-macro v0.4.6
[INFO] [stderr]    Compiling tokio-util v0.7.20
[INFO] [stderr]    Compiling thread_local v1.1.10
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling jiff-core v0.1.1
[INFO] [stderr]    Compiling smallvec v1.16.3
[INFO] [stderr]    Compiling pastey v0.2.3
[INFO] [stderr]    Compiling astro-float v0.9.6
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling wide v0.7.33
[INFO] [stderr]    Compiling jiff v0.2.38
[INFO] [stderr]    Compiling sha1 v0.10.7
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling md-5 v0.10.6
[INFO] [stderr]    Compiling hex v0.4.3
[INFO] [stderr]    Compiling urlencoding v2.1.3
[INFO] [stderr]    Compiling arithma v0.4.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of deprecated associated function `tokio::io::unix::AsyncFd::<T>::with_interest`: unsound due to lack of I/O safety; use `AsyncFd::register_with_interest` instead (see https://github.com/tokio-rs/tokio/pull/8587)
[INFO] [stdout]    --> src/transport/async_stdio.rs:105:34
[INFO] [stdout]     |
[INFO] [stdout] 105 |             let inner = AsyncFd::with_interest(BorrowedFd(STDIN_FD), Interest::READABLE)?;
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `-D deprecated` implied by `-D warnings`
[INFO] [stdout]     = help: to override `-D warnings` add `#[allow(deprecated)]`
[INFO] [stdout]     = note: the `deprecated` lint ignores `-D warnings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `tokio::io::unix::AsyncFd::<T>::with_interest`: unsound due to lack of I/O safety; use `AsyncFd::register_with_interest` instead (see https://github.com/tokio-rs/tokio/pull/8587)
[INFO] [stdout]    --> src/transport/async_stdio.rs:168:34
[INFO] [stdout]     |
[INFO] [stdout] 168 |             let inner = AsyncFd::with_interest(BorrowedFd(STDOUT_FD), Interest::WRITABLE)?;
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 4m 17s
[INFO] running `Command { std: "docker" "inspect" "2ab1f8f69ba9495b559f74f1244989b133713eafb15811f38bdd9b4428488c45", 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" "2ab1f8f69ba9495b559f74f1244989b133713eafb15811f38bdd9b4428488c45" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling cfg-if v1.0.5
[INFO] [stderr]    Compiling libc v0.2.191
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling typenum v1.20.1
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling memchr v2.8.3
[INFO] [stderr]    Compiling futures-core v0.3.34
[INFO] [stderr]    Compiling futures-sink v0.3.34
[INFO] [stderr]    Compiling zerocopy v0.8.63
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling futures-channel v0.3.34
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling zmij v1.0.23
[INFO] [stderr]    Compiling lazy_static v1.5.1
[INFO] [stderr]    Compiling futures-task v0.3.34
[INFO] [stderr]    Compiling futures-io v0.3.34
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling either v1.19.0
[INFO] [stderr]    Compiling dyn-clone v1.0.20
[INFO] [stderr]    Compiling bytes v1.12.1
[INFO] [stderr]    Compiling futures-util v0.3.34
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling itertools v0.10.5
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling mio v1.2.4
[INFO] [stderr]    Compiling socket2 v0.6.5
[INFO] [stderr]    Compiling ref-cast v1.0.27
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling num-integer v0.1.47
[INFO] [stderr]    Compiling tokio v1.53.3
[INFO] [stderr]    Compiling cpufeatures v0.2.17
[INFO] [stderr]    Compiling bytemuck v1.25.2
[INFO] [stderr]    Compiling log v0.4.34
[INFO] [stderr]    Compiling num-bigint v0.4.8
[INFO] [stderr]    Compiling safe_arch v0.7.4
[INFO] [stderr]    Compiling regex-automata v0.4.18
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling serde_json v1.0.154
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling futures-executor v0.3.34
[INFO] [stderr]    Compiling futures v0.3.34
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling schemars v1.2.3
[INFO] [stderr]    Compiling thiserror v2.0.21
[INFO] [stderr]    Compiling libm v0.2.16
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling thread_local v1.1.10
[INFO] [stderr]    Compiling rand v0.8.8
[INFO] [stderr]    Compiling jiff-core v0.1.1
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling smallvec v1.16.3
[INFO] [stderr]    Compiling astro-float-num v0.3.7
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling bigdecimal v0.4.11
[INFO] [stderr]    Compiling schemars v0.8.22
[INFO] [stderr]    Compiling jiff v0.2.38
[INFO] [stderr]    Compiling tokio-util v0.7.20
[INFO] [stderr]    Compiling astro-float v0.9.6
[INFO] [stderr]    Compiling crc32fast v1.5.2
[INFO] [stderr]    Compiling anyhow v1.0.104
[INFO] [stderr]    Compiling wide v0.7.33
[INFO] [stderr]    Compiling sha1 v0.10.7
[INFO] [stderr]    Compiling rmcp v1.8.0
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling md-5 v0.10.6
[INFO] [stderr]    Compiling yansi v1.0.1
[INFO] [stderr]    Compiling diff v0.1.13
[INFO] [stderr]    Compiling urlencoding v2.1.3
[INFO] [stderr]    Compiling hex v0.4.3
[INFO] [stderr]    Compiling pretty_assertions v1.4.1
[INFO] [stderr]    Compiling approx v0.5.1
[INFO] [stderr]    Compiling arithma v0.4.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of deprecated associated function `tokio::io::unix::AsyncFd::<T>::with_interest`: unsound due to lack of I/O safety; use `AsyncFd::register_with_interest` instead (see https://github.com/tokio-rs/tokio/pull/8587)
[INFO] [stdout]    --> src/transport/async_stdio.rs:105:34
[INFO] [stdout]     |
[INFO] [stdout] 105 |             let inner = AsyncFd::with_interest(BorrowedFd(STDIN_FD), Interest::READABLE)?;
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `-D deprecated` implied by `-D warnings`
[INFO] [stdout]     = help: to override `-D warnings` add `#[allow(deprecated)]`
[INFO] [stdout]     = note: the `deprecated` lint ignores `-D warnings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `tokio::io::unix::AsyncFd::<T>::with_interest`: unsound due to lack of I/O safety; use `AsyncFd::register_with_interest` instead (see https://github.com/tokio-rs/tokio/pull/8587)
[INFO] [stdout]    --> src/transport/async_stdio.rs:168:34
[INFO] [stdout]     |
[INFO] [stdout] 168 |             let inner = AsyncFd::with_interest(BorrowedFd(STDOUT_FD), Interest::WRITABLE)?;
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `tokio::io::unix::AsyncFd::<T>::with_interest`: unsound due to lack of I/O safety; use `AsyncFd::register_with_interest` instead (see https://github.com/tokio-rs/tokio/pull/8587)
[INFO] [stdout]    --> src/transport/async_stdio.rs:105:34
[INFO] [stdout]     |
[INFO] [stdout] 105 |             let inner = AsyncFd::with_interest(BorrowedFd(STDIN_FD), Interest::READABLE)?;
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `-D deprecated` implied by `-D warnings`
[INFO] [stdout]     = help: to override `-D warnings` add `#[allow(deprecated)]`
[INFO] [stdout]     = note: the `deprecated` lint ignores `-D warnings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `tokio::io::unix::AsyncFd::<T>::with_interest`: unsound due to lack of I/O safety; use `AsyncFd::register_with_interest` instead (see https://github.com/tokio-rs/tokio/pull/8587)
[INFO] [stdout]    --> src/transport/async_stdio.rs:168:34
[INFO] [stdout]     |
[INFO] [stdout] 168 |             let inner = AsyncFd::with_interest(BorrowedFd(STDOUT_FD), Interest::WRITABLE)?;
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `tokio::io::unix::AsyncFd::<T>::with_interest`: unsound due to lack of I/O safety; use `AsyncFd::register_with_interest` instead (see https://github.com/tokio-rs/tokio/pull/8587)
[INFO] [stdout]    --> src/transport/async_stdio.rs:235:33
[INFO] [stdout]     |
[INFO] [stdout] 235 |                 inner: AsyncFd::with_interest(BorrowedFd(fds[0]), Interest::READABLE).unwrap(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `tokio::io::unix::AsyncFd::<T>::with_interest`: unsound due to lack of I/O safety; use `AsyncFd::register_with_interest` instead (see https://github.com/tokio-rs/tokio/pull/8587)
[INFO] [stdout]    --> src/transport/async_stdio.rs:238:33
[INFO] [stdout]     |
[INFO] [stdout] 238 |                 inner: AsyncFd::with_interest(BorrowedFd(fds[1]), Interest::WRITABLE).unwrap(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 3m 31s
[INFO] running `Command { std: "docker" "inspect" "2ab1f8f69ba9495b559f74f1244989b133713eafb15811f38bdd9b4428488c45", 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" "2ab1f8f69ba9495b559f74f1244989b133713eafb15811f38bdd9b4428488c45" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: use of deprecated associated function `tokio::io::unix::AsyncFd::<T>::with_interest`: unsound due to lack of I/O safety; use `AsyncFd::register_with_interest` instead (see https://github.com/tokio-rs/tokio/pull/8587)
[INFO] [stderr]    --> src/transport/async_stdio.rs:105:34
[INFO] [stderr]     |
[INFO] [stderr] 105 |             let inner = AsyncFd::with_interest(BorrowedFd(STDIN_FD), Interest::READABLE)?;
[INFO] [stderr]     |                                  ^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `-D deprecated` implied by `-D warnings`
[INFO] [stderr]     = help: to override `-D warnings` add `#[allow(deprecated)]`
[INFO] [stderr]     = note: the `deprecated` lint ignores `-D warnings`
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated associated function `tokio::io::unix::AsyncFd::<T>::with_interest`: unsound due to lack of I/O safety; use `AsyncFd::register_with_interest` instead (see https://github.com/tokio-rs/tokio/pull/8587)
[INFO] [stderr]    --> src/transport/async_stdio.rs:168:34
[INFO] [stderr]     |
[INFO] [stderr] 168 |             let inner = AsyncFd::with_interest(BorrowedFd(STDOUT_FD), Interest::WRITABLE)?;
[INFO] [stderr]     |                                  ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `arithma` (lib) generated 2 warnings
[INFO] [stderr] warning: use of deprecated associated function `tokio::io::unix::AsyncFd::<T>::with_interest`: unsound due to lack of I/O safety; use `AsyncFd::register_with_interest` instead (see https://github.com/tokio-rs/tokio/pull/8587)
[INFO] [stderr]    --> src/transport/async_stdio.rs:235:33
[INFO] [stderr]     |
[INFO] [stderr] 235 |                 inner: AsyncFd::with_interest(BorrowedFd(fds[0]), Interest::READABLE).unwrap(),
[INFO] [stderr]     |                                 ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated associated function `tokio::io::unix::AsyncFd::<T>::with_interest`: unsound due to lack of I/O safety; use `AsyncFd::register_with_interest` instead (see https://github.com/tokio-rs/tokio/pull/8587)
[INFO] [stderr]    --> src/transport/async_stdio.rs:238:33
[INFO] [stderr]     |
[INFO] [stderr] 238 |                 inner: AsyncFd::with_interest(BorrowedFd(fds[1]), Interest::WRITABLE).unwrap(),
[INFO] [stderr]     |                                 ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `arithma` (lib test) generated 4 warnings (2 duplicates)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.26s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/deps/math_calc-6283ce79ab41bed0)
[INFO] [stdout] 
[INFO] [stdout] running 887 tests
[INFO] [stdout] test engine::expression::tests::adjacent_numbers_reject ... ok
[INFO] [stdout] test engine::expression::tests::const_pi ... ok
[INFO] [stdout] test engine::expression::tests::const_in_expression ... ok
[INFO] [stdout] test engine::expression::tests::addition_overflow_is_error ... ok
[INFO] [stdout] test engine::expression::tests::const_tau_is_two_pi ... ok
[INFO] [stdout] test engine::expression::tests::const_phi_golden_ratio ... ok
[INFO] [stdout] test engine::expression::tests::adjacent_numbers_partial_expression ... ok
[INFO] [stdout] test engine::expression::tests::const_e ... ok
[INFO] [stdout] test engine::expression::tests::division_by_zero_is_error ... ok
[INFO] [stdout] test engine::expression::tests::division_precedence ... ok
[INFO] [stdout] test engine::expression::tests::double_unary_minus ... ok
[INFO] [stdout] test engine::expression::tests::cos_r_pi_is_minus_one ... ok
[INFO] [stdout] test engine::expression::tests::decimal_number ... ok
[INFO] [stdout] test engine::expression::tests::err_blank_input ... ok
[INFO] [stdout] test engine::expression::tests::err_empty_input ... ok
[INFO] [stdout] test engine::expression::tests::err_unexpected_end ... ok
[INFO] [stdout] test engine::expression::tests::err_unknown_function ... ok
[INFO] [stdout] test engine::expression::tests::err_expected_close_paren ... ok
[INFO] [stdout] test engine::expression::tests::err_unclosed_paren_wins_over_unknown_variable ... ok
[INFO] [stdout] test engine::expression::tests::err_invalid_number ... ok
[INFO] [stdout] test engine::expression::tests::err_unexpected_char_trailing ... ok
[INFO] [stdout] test engine::expression::tests::err_unexpected_char_leading ... ok
[INFO] [stdout] test engine::expression::tests::err_expected_close_paren_in_function ... ok
[INFO] [stdout] test engine::expression::tests::fn_acosh_below_one_is_domain_error ... ok
[INFO] [stdout] test engine::expression::tests::fn_cbrt ... ok
[INFO] [stdout] test engine::expression::tests::fn_ceil ... ok
[INFO] [stdout] test engine::expression::tests::fn_cos_degrees ... ok
[INFO] [stdout] test engine::expression::tests::fn_atanh_at_boundary_is_domain_error ... ok
[INFO] [stdout] test engine::expression::tests::fn_exp ... ok
[INFO] [stdout] test engine::expression::tests::err_unknown_variable ... ok
[INFO] [stdout] test engine::expression::tests::fn_factorial_negative_or_fractional_is_domain_error ... ok
[INFO] [stdout] test engine::expression::tests::fn_factorial ... ok
[INFO] [stdout] test engine::expression::tests::fn_floor ... ok
[INFO] [stdout] test engine::expression::tests::fn_abs ... ok
[INFO] [stdout] test engine::expression::tests::fn_arity_mismatch_is_domain_error ... ok
[INFO] [stdout] test engine::expression::tests::exp_ln_round_trip ... ok
[INFO] [stdout] test engine::expression::tests::fn_hypot ... ok
[INFO] [stdout] test engine::expression::tests::fn_inverse_hyperbolic ... ok
[INFO] [stdout] test engine::expression::tests::fn_inverse_trig_domain_errors ... ok
[INFO] [stdout] test engine::expression::tests::fn_inverse_trig_returns_degrees ... ok
[INFO] [stdout] test engine::expression::tests::fn_gcd_fractional_is_domain_error ... ok
[INFO] [stdout] test engine::expression::tests::fn_log_natural ... ok
[INFO] [stdout] test engine::expression::tests::fn_ln_alias_for_log ... ok
[INFO] [stdout] test engine::expression::tests::fn_hyperbolic ... ok
[INFO] [stdout] test engine::expression::tests::fn_min_max_single_arg ... ok
[INFO] [stdout] test engine::expression::tests::fn_log10 ... ok
[INFO] [stdout] test engine::expression::tests::fn_log2 ... ok
[INFO] [stdout] test engine::expression::tests::fn_mod_by_zero_is_division_error ... ok
[INFO] [stdout] test engine::expression::tests::fn_mod_two_args ... ok
[INFO] [stdout] test engine::expression::tests::fn_gcd_lcm ... ok
[INFO] [stdout] test engine::expression::tests::fn_pow_two_args ... ok
[INFO] [stdout] test engine::expression::tests::fn_no_args_for_zero_arity_func_is_unknown ... ok
[INFO] [stdout] test engine::expression::tests::fn_min_max_variadic ... ok
[INFO] [stdout] test engine::expression::tests::fn_sin_degrees ... ok
[INFO] [stdout] test engine::expression::tests::fn_round_trunc_sign ... ok
[INFO] [stdout] test engine::expression::tests::function_composition ... ok
[INFO] [stdout] test engine::expression::tests::fn_sqrt ... ok
[INFO] [stdout] test engine::expression::tests::fn_tan_degrees ... ok
[INFO] [stdout] test engine::expression::tests::log_of_negative_is_domain_error ... ok
[INFO] [stdout] test engine::expression::tests::modulo_by_zero_is_error ... ok
[INFO] [stdout] test engine::expression::tests::multiplication_overflow_is_error ... ok
[INFO] [stdout] test engine::expression::tests::multiplication_precedence ... ok
[INFO] [stdout] test engine::expression::tests::leading_dot_number ... ok
[INFO] [stdout] test engine::expression::tests::left_to_right_same_precedence ... ok
[INFO] [stdout] test engine::expression::tests::negative_overflow_is_error ... ok
[INFO] [stdout] test engine::expression::tests::log10_of_zero_is_domain_error ... ok
[INFO] [stdout] test engine::expression::tests::parenthesized_grouping ... ok
[INFO] [stdout] test engine::expression::tests::log_of_zero_is_domain_error ... ok
[INFO] [stdout] test engine::expression::tests::function_in_expression ... ok
[INFO] [stdout] test engine::expression::tests::modulo_operator ... ok
[INFO] [stdout] test engine::expression::tests::nested_parentheses ... ok
[INFO] [stdout] test engine::expression::tests::power_binds_tighter_than_unary_minus ... ok
[INFO] [stdout] test engine::expression::tests::power_overflow_is_error ... ok
[INFO] [stdout] test engine::expression::tests::power_basic ... ok
[INFO] [stdout] test engine::expression::tests::fn_atan2_quadrants ... ok
[INFO] [stdout] test engine::expression::tests::sin_pi_is_zero ... ok
[INFO] [stdout] test engine::expression::tests::power_right_associative ... ok
[INFO] [stdout] test engine::expression::tests::scientific_notation_lowercase ... ok
[INFO] [stdout] test engine::expression::tests::scientific_notation_negative_exponent ... ok
[INFO] [stdout] test engine::expression::tests::scientific_notation_positive_exponent_sign ... ok
[INFO] [stdout] test engine::expression::tests::scientific_notation_uppercase ... ok
[INFO] [stdout] test engine::expression::tests::simple_subtraction ... ok
[INFO] [stdout] test engine::expression::tests::simple_addition ... ok
[INFO] [stdout] test engine::expression::tests::tan_r_at_quarter_pi_is_one ... ok
[INFO] [stdout] test engine::expression::tests::unary_minus_inside_parens ... ok
[INFO] [stdout] test engine::expression::tests::variable_with_underscore_and_digits ... ok
[INFO] [stdout] test engine::expression::tests::whitespace_inside_number_rejected ... ok
[INFO] [stdout] test engine::expression::tests::unary_minus_prefix ... ok
[INFO] [stdout] test engine::expression::tests::variable_lookup ... ok
[INFO] [stdout] test engine::expression::tests::whitespace_is_stripped ... ok
[INFO] [stdout] test engine::expression::tests::variable_shadows_constant ... ok
[INFO] [stdout] test engine::expression::tests::zero_to_zero_is_one ... ok
[INFO] [stdout] test engine::expression_exact::tests::blank_expression_is_error ... ok
[INFO] [stdout] test engine::expression_exact::tests::adjacent_numbers_reject ... ok
[INFO] [stdout] test engine::expression::tests::zero_to_negative_power_is_division_by_zero ... ok
[INFO] [stdout] test engine::expression_exact::tests::const_e_exact_truncated ... ok
[INFO] [stdout] test engine::expression::tests::sqrt_of_negative_is_domain_error ... ok
[INFO] [stdout] test engine::expression::tests::sin_r_pi_is_zero ... ok
[INFO] [stdout] test engine::expression::tests::tan_at_integer_90_rejects_singularity ... ok
[INFO] [stdout] test engine::expression_exact::tests::abs_ceil_floor_exact ... ok
[INFO] [stdout] test engine::expression_exact::tests::composed_integer_near_miss_still_snaps ... ok
[INFO] [stdout] test engine::expression_exact::tests::fn_arity_mismatch_is_domain_error ... ok
[INFO] [stdout] test engine::expression_exact::tests::division_uses_exact_precision_scale ... ok
[INFO] [stdout] test engine::expression_exact::tests::division_by_zero_is_error ... ok
[INFO] [stdout] test engine::expression_exact::tests::fn_atan2_quadrants ... ok
[INFO] [stdout] test engine::expression_exact::tests::fn_factorial_exact_arbitrary_precision ... ok
[INFO] [stdout] test engine::expression_exact::tests::fn_exp_one_is_e ... ok
[INFO] [stdout] test engine::expression_exact::tests::fn_hyperbolic_zero ... ok
[INFO] [stdout] test engine::expression_exact::tests::fn_exp_zero_is_one ... ok
[INFO] [stdout] test engine::expression_exact::tests::fn_gcd_lcm_exact ... ok
[INFO] [stdout] test engine::expression_exact::tests::const_phi_golden_ratio ... ok
[INFO] [stdout] test engine::expression_exact::tests::const_pi_exact_truncated ... ok
[INFO] [stdout] test engine::expression_exact::tests::const_tau_is_two_pi ... ok
[INFO] [stdout] test engine::expression_exact::tests::decimal_addition_is_exact ... ok
[INFO] [stdout] test engine::expression_exact::tests::fn_hypot_exact_pythagorean_triple ... ok
[INFO] [stdout] test engine::expression_exact::tests::fn_pow_two_args_exact ... ok
[INFO] [stdout] test engine::expression_exact::tests::integer_arithmetic_strips_trailing_zeros ... ok
[INFO] [stdout] test engine::expression_exact::tests::fn_inverse_trig_returns_degrees ... ok
[INFO] [stdout] test engine::expression_exact::tests::fn_min_max_pick_extremes ... ok
[INFO] [stdout] test engine::expression_exact::tests::long_decimal_variable_preserved ... ok
[INFO] [stdout] test engine::expression_exact::tests::modulo_by_zero_is_error ... ok
[INFO] [stdout] test engine::expression_exact::tests::log10_of_zero_is_domain_error ... ok
[INFO] [stdout] test engine::expression_exact::tests::modulo_operator_exact ... ok
[INFO] [stdout] test engine::expression_exact::tests::log_of_negative_is_domain_error ... ok
[INFO] [stdout] test engine::expression_exact::tests::fn_ln_alias ... ok
[INFO] [stdout] test engine::expression_exact::tests::nested_domain_error_propagates ... ok
[INFO] [stdout] test engine::expression_exact::tests::log_of_zero_is_domain_error ... ok
[INFO] [stdout] test engine::expression_exact::tests::fn_round_trunc_sign_exact ... ok
[INFO] [stdout] test engine::expression_exact::tests::tiny_composed_values_are_not_snapped_to_zero ... ok
[INFO] [stdout] test engine::expression_exact::tests::tiny_literal_values_are_not_snapped_to_zero ... ok
[INFO] [stdout] test engine::expression_exact::tests::round_trip_inverse_transcendentals_snap_to_exact ... ok
[INFO] [stdout] test engine::expression_exact::tests::sqrt_irrational_has_many_digits ... ok
[INFO] [stdout] test engine::expression_exact::tests::sqrt_of_negative_is_domain_error ... ok
[INFO] [stdout] test engine::expression_exact::tests::round_trip_preserves_genuinely_irrational_digits ... ok
[INFO] [stdout] test engine::expression_exact::tests::power_integer_exponent_is_exact ... ok
[INFO] [stdout] test engine::expression_exact::tests::trig_snap_preserves_genuinely_small_results ... ok
[INFO] [stdout] test engine::expression_exact::tests::unclosed_paren_wins_over_unknown_variable ... ok
[INFO] [stdout] test engine::expression_exact::tests::power_zero_to_the_zero_is_one ... ok
[INFO] [stdout] test engine::expression_exact::tests::unknown_function_is_error ... ok
[INFO] [stdout] test engine::expression_exact::tests::variable_shadows_constant ... ok
[INFO] [stdout] test engine::expression_exact::tests::whitespace_between_tokens_still_works ... ok
[INFO] [stdout] test engine::expression_exact::tests::tan_at_vertical_asymptotes_raises_domain_error ... ok
[INFO] [stdout] test engine::unit_registry::tests::all_units_has_expected_count ... ok
[INFO] [stdout] test engine::expression_exact::tests::trig_degrees_notable_zero_angles_snap ... ok
[INFO] [stdout] test engine::expression_exact::tests::unknown_variable_is_error ... ok
[INFO] [stdout] test engine::expression_exact::tests::trig_radians_at_pi_snaps_to_zero ... ok
[INFO] [stdout] test engine::expression_exact::tests::unary_minus ... ok
[INFO] [stdout] test engine::unit_registry::tests::ambiguous_names_not_aliased ... ok
[INFO] [stdout] test engine::unit_registry::tests::celsius_to_gas_mark_rejects_out_of_range ... ok
[INFO] [stdout] test engine::unit_registry::tests::celsius_to_gas_mark_closest ... ok
[INFO] [stdout] test engine::unit_registry::tests::categories_as_str_matches_java_enum ... ok
[INFO] [stdout] test engine::unit_registry::tests::convert_in_category_rejects_wrong_category ... ok
[INFO] [stdout] test engine::unit_registry::tests::category_parse_case_insensitive ... ok
[INFO] [stdout] test engine::unit_registry::tests::celsius_to_kelvin ... ok
[INFO] [stdout] test engine::unit_registry::tests::convert_in_category_accepts_matching ... ok
[INFO] [stdout] test engine::unit_registry::tests::conversion_factor_km_to_mi ... ok
[INFO] [stdout] test engine::unit_registry::tests::data_storage_iec_binary_multipliers ... ok
[INFO] [stdout] test engine::unit_registry::tests::celsius_to_fahrenheit ... ok
[INFO] [stdout] test engine::unit_registry::tests::conversion_factor_same_unit_is_one ... ok
[INFO] [stdout] test engine::unit_registry::tests::data_storage_si_decimal_multipliers ... ok
[INFO] [stdout] test engine::unit_registry::tests::conversion_factor_rejects_temperature ... ok
[INFO] [stdout] test engine::unit_registry::tests::electrical_aliases_do_not_collide_with_existing_codes ... ok
[INFO] [stdout] test engine::unit_registry::tests::electrical_si_aliases_interop_with_legacy_codes ... ok
[INFO] [stdout] test engine::unit_registry::tests::cross_category_error ... ok
[INFO] [stdout] test engine::unit_registry::tests::find_unit_case_insensitive ... ok
[INFO] [stdout] test engine::unit_registry::tests::fahrenheit_to_kelvin_via_celsius ... ok
[INFO] [stdout] test engine::unit_registry::tests::explain_same_temperature ... ok
[INFO] [stdout] test engine::unit_registry::tests::gas_mark_to_celsius_lookup ... ok
[INFO] [stdout] test engine::unit_registry::tests::gas_mark_out_of_range ... ok
[INFO] [stdout] test engine::unit_registry::tests::kelvin_to_celsius ... ok
[INFO] [stdout] test engine::unit_registry::tests::electrical_si_aliases_resolve ... ok
[INFO] [stdout] test engine::unit_registry::tests::explain_linear ... ok
[INFO] [stdout] test engine::unit_registry::tests::fahrenheit_to_celsius ... ok
[INFO] [stdout] test engine::unit_registry::tests::km_to_mi_exact ... ok
[INFO] [stdout] test engine::unit_registry::tests::l_to_ml ... ok
[INFO] [stdout] test engine::unit_registry::tests::length_sub_millimetre_conversions_exact ... ok
[INFO] [stdout] test engine::unit_registry::tests::kg_to_lb_roundtrip ... ok
[INFO] [stdout] test engine::unit_registry::tests::lb_to_kg_exact ... ok
[INFO] [stdout] test engine::unit_registry::tests::explain_temperature_formula ... ok
[INFO] [stdout] test engine::unit_registry::tests::nautical_mile_exact ... ok
[INFO] [stdout] test engine::unit_registry::tests::list_units_does_not_expose_aliases ... ok
[INFO] [stdout] test engine::unit_registry::tests::long_name_aliases_resolve ... ok
[INFO] [stdout] test engine::unit_registry::tests::mi_to_km_exact ... ok
[INFO] [stdout] test engine::unit_registry::tests::pressure_psi_matches_derived_factor ... ok
[INFO] [stdout] test engine::unit_registry::tests::rankine_roundtrip_through_celsius ... ok
[INFO] [stdout] test engine::unit_registry::tests::to_celsius_rejects_negative_kelvin ... ok
[INFO] [stdout] test engine::unit_registry::tests::unknown_unit_error ... ok
[INFO] [stdout] test mcp::message::builder::tests::block_override_forces_multiline ... ok
[INFO] [stdout] test mcp::message::builder::tests::custom_status ... ok
[INFO] [stdout] test mcp::message::builder::tests::error_codes_format_stable ... ok
[INFO] [stdout] test mcp::message::builder::tests::error_with_detail_renders_three_lines ... ok
[INFO] [stdout] test mcp::message::builder::tests::ok_many_fields_stay_inline ... ok
[INFO] [stdout] test mcp::message::builder::tests::ok_no_fields_is_header_only ... ok
[INFO] [stdout] test mcp::message::builder::tests::ok_single_result_inline ... ok
[INFO] [stdout] test mcp::message::builder::tests::ok_three_fields_inline ... ok
[INFO] [stdout] test mcp::message::builder::tests::sanitization_applies_in_fields ... ok
[INFO] [stdout] test mcp::message::expression_error::tests::division_by_zero_has_no_detail ... ok
[INFO] [stdout] test mcp::message::expression_error::tests::unknown_variable_renders_with_detail ... ok
[INFO] [stdout] test mcp::message::expression_error::tests::domain_error_maps_to_domain_error_code ... ok
[INFO] [stdout] test engine::unit_registry::tests::length_units_match_canonical_catalogue ... ok
[INFO] [stdout] test engine::unit_registry::tests::list_categories_has_21_in_declaration_order ... ok
[INFO] [stdout] test engine::unit_registry::tests::ml_to_l ... ok
[INFO] [stdout] test engine::unit_registry::tests::reciprocal_factor_conversions_round_cleanly ... ok
[INFO] [stdout] test mcp::message::helpers::tests::format_error_includes_detail_when_present ... ok
[INFO] [stdout] test engine::unit_registry::tests::to_celsius_rejects_celsius_below_absolute_zero ... ok
[INFO] [stdout] test engine::unit_registry::tests::to_celsius_rejects_unknown ... ok
[INFO] [stdout] test tools::analog_electronics::tests::capacitor_parallel_rejects_negative ... ok
[INFO] [stdout] test tools::analog_electronics::tests::capacitor_parallel_sums ... ok
[INFO] [stdout] test tools::analog_electronics::tests::combination_bad_mode_errors ... ok
[INFO] [stdout] test tools::analog_electronics::tests::capacitor_series_reciprocal ... ok
[INFO] [stdout] test mcp::message::helpers::tests::sanitize_leaves_printable_intact ... ok
[INFO] [stdout] test tools::analog_electronics::tests::current_divider_accepts_zero_total_current ... ok
[INFO] [stdout] test tools::analog_electronics::tests::current_divider_equal_split ... ok
[INFO] [stdout] test tools::analog_electronics::tests::current_divider_rejects_negative_r2 ... ok
[INFO] [stdout] test tools::analog_electronics::tests::current_divider_rejects_negative_r1 ... ok
[INFO] [stdout] test tools::analog_electronics::tests::current_divider_rejects_negative_total_current ... ok
[INFO] [stdout] test tools::analog_electronics::tests::current_divider_rejects_zero_r1 ... ok
[INFO] [stdout] test tools::analog_electronics::tests::current_divider_rejects_zero_r2 ... ok
[INFO] [stdout] test tools::analog_electronics::tests::decibel_bad_mode ... ok
[INFO] [stdout] test tools::analog_electronics::tests::decibel_negative_power_error ... ok
[INFO] [stdout] test mcp::message::helpers::tests::format_error_omits_empty_detail ... ok
[INFO] [stdout] test tools::analog_electronics::tests::decibel_voltage_to_db ... ok
[INFO] [stdout] test mcp::message::helpers::tests::format_error_sanitizes_both_reason_and_detail ... ok
[INFO] [stdout] test mcp::message::helpers::tests::sanitize_escapes_control_chars ... ok
[INFO] [stdout] test tools::analog_electronics::tests::filter_cutoff_rejects_negative_reactive ... ok
[INFO] [stdout] test tools::analog_electronics::tests::decibel_power_to_db ... ok
[INFO] [stdout] test tools::analog_electronics::tests::filter_cutoff_bad_type_errors ... ok
[INFO] [stdout] test tools::analog_electronics::tests::filter_cutoff_prefix_and_type ... ok
[INFO] [stdout] test tools::analog_electronics::tests::led_resistor_bad_current ... ok
[INFO] [stdout] test tools::analog_electronics::tests::impedance_near_resonance_magnitude_matches_r ... ok
[INFO] [stdout] test tools::analog_electronics::tests::impedance_rejects_negative_capacitance ... ok
[INFO] [stdout] test tools::analog_electronics::tests::led_resistor_bad_voltages ... ok
[INFO] [stdout] test tools::analog_electronics::tests::led_resistor_rejects_negative_vs ... ok
[INFO] [stdout] test tools::analog_electronics::tests::impedance_rejects_negative_frequency ... ok
[INFO] [stdout] test tools::analog_electronics::tests::impedance_rejects_zero_frequency ... ok
[INFO] [stdout] test tools::analog_electronics::tests::inductor_series_rejects_negative ... ok
[INFO] [stdout] test tools::analog_electronics::tests::inductor_series_sums ... ok
[INFO] [stdout] test tools::analog_electronics::tests::led_resistor_rejects_negative_vf ... ok
[INFO] [stdout] test tools::analog_electronics::tests::ohms_law_rejects_negative_voltage_vi ... ok
[INFO] [stdout] test tools::analog_electronics::tests::ohms_law_vi_produces_r_and_p ... ok
[INFO] [stdout] test tools::analog_electronics::tests::ohms_law_rejects_negative_current_ir ... ok
[INFO] [stdout] test tools::analog_electronics::tests::ohms_law_rejects_negative_power_rp ... ok
[INFO] [stdout] test tools::analog_electronics::tests::ohms_law_rejects_negative_resistance_vr ... ok
[INFO] [stdout] test tools::analog_electronics::tests::ohms_law_vr_produces_i_and_p ... ok
[INFO] [stdout] test tools::analog_electronics::tests::ohms_law_wrong_count_errors ... ok
[INFO] [stdout] test tools::analog_electronics::tests::led_resistor_standard ... ok
[INFO] [stdout] test tools::analog_electronics::tests::ohms_law_rp_uses_sqrt_path ... ok
[INFO] [stdout] test tools::analog_electronics::tests::rc_time_constant_millis ... ok
[INFO] [stdout] test tools::analog_electronics::tests::resistor_series_rejects_negative ... ok
[INFO] [stdout] test tools::analog_electronics::tests::rc_time_constant_rejects_negative_capacitance ... ok
[INFO] [stdout] test tools::analog_electronics::tests::rc_time_constant_rejects_negative_resistance ... ok
[INFO] [stdout] test tools::analog_electronics::tests::rl_time_constant_basic ... ok
[INFO] [stdout] test tools::analog_electronics::tests::rlc_resonance_produces_all_fields ... ok
[INFO] [stdout] test tools::analog_electronics::tests::rl_time_constant_rejects_negative_resistance ... ok
[INFO] [stdout] test tools::analog_electronics::tests::rlc_resonance_rejects_zero_inductance ... ok
[INFO] [stdout] test tools::analog_electronics::tests::voltage_divider_accepts_zero_vin ... ok
[INFO] [stdout] test tools::analog_electronics::tests::voltage_divider_half ... ok
[INFO] [stdout] test tools::analog_electronics::tests::voltage_divider_rejects_zero_r1 ... ok
[INFO] [stdout] test tools::analog_electronics::tests::resistor_series_sums ... ok
[INFO] [stdout] test tools::analog_electronics::tests::voltage_divider_rejects_negative_r2 ... ok
[INFO] [stdout] test tools::analog_electronics::tests::voltage_divider_rejects_negative_vin ... ok
[INFO] [stdout] test tools::analog_electronics::tests::voltage_divider_rejects_zero_r2 ... ok
[INFO] [stdout] test tools::analog_electronics::tests::wheatstone_bridge_rejects_negative_r2 ... ok
[INFO] [stdout] test tools::analog_electronics::tests::wheatstone_bridge_rejects_negative_r3 ... ok
[INFO] [stdout] test tools::analog_electronics::tests::wheatstone_basic ... ok
[INFO] [stdout] test tools::basic::tests::abs_negative ... ok
[INFO] [stdout] test tools::analog_electronics::tests::wheatstone_zero_denominator ... ok
[INFO] [stdout] test tools::analog_electronics::tests::wheatstone_bridge_rejects_negative_r1 ... ok
[INFO] [stdout] test tools::basic::tests::abs_preserves_scale ... ok
[INFO] [stdout] test tools::basic::tests::add_integers ... ok
[INFO] [stdout] test tools::basic::tests::divide_preserves_sub_scale_quotients ... ok
[INFO] [stdout] test tools::analog_electronics::tests::resistor_parallel_halves_equal_pair ... ok
[INFO] [stdout] test tools::analog_electronics::tests::rlc_resonance_rejects_negative_capacitance ... ok
[INFO] [stdout] test tools::analog_electronics::tests::rlc_resonance_rejects_negative_resistance ... ok
[INFO] [stdout] test tools::analog_electronics::tests::voltage_divider_rejects_negative_r1 ... ok
[INFO] [stdout] test tools::basic::tests::add_exact_zero_collapses_scale ... ok
[INFO] [stdout] test tools::basic::tests::divide_by_zero_returns_error_envelope ... ok
[INFO] [stdout] test tools::basic::tests::add_avoids_binary_float_drift ... ok
[INFO] [stdout] test tools::basic::tests::modulo_exact_zero_collapses_scale ... ok
[INFO] [stdout] test tools::basic::tests::modulo_integers ... ok
[INFO] [stdout] test tools::basic::tests::multiply_by_zero_collapses_cosmetic_trailing_zeros ... ok
[INFO] [stdout] test tools::basic::tests::parse_error_reports_label_and_value ... ok
[INFO] [stdout] test tools::basic::tests::power_allows_trivial_bases_with_large_exponent ... ok
[INFO] [stdout] test tools::basic::tests::modulo_by_zero ... ok
[INFO] [stdout] test tools::basic::tests::divide_strips_trailing_zeros ... ok
[INFO] [stdout] test tools::basic::tests::power_integer_base ... ok
[INFO] [stdout] test tools::basic::tests::power_rejects_exponent_that_would_exceed_output_cap ... ok
[INFO] [stdout] test tools::basic::tests::power_negative_exponent_falls_back_to_exact ... ok
[INFO] [stdout] test tools::basic::tests::power_fractional_exponent_falls_back_to_exact ... ok
[INFO] [stdout] test tools::basic::tests::multiply_integers ... ok
[INFO] [stdout] test tools::basic::tests::multiply_preserves_decimal_scale ... ok
[INFO] [stdout] test tools::basic::tests::power_fractional_exponent_negative_base_domain_errors ... ok
[INFO] [stdout] test tools::calculus::tests::derivative_empty_expression ... ok
[INFO] [stdout] test tools::basic::tests::divide_twenty_digit_precision ... ok
[INFO] [stdout] test tools::calculus::tests::derivative_of_constant_is_zero ... ok
[INFO] [stdout] test tools::calculus::tests::derivative_snaps_critical_point_drift_to_zero ... ok
[INFO] [stdout] test tools::calculus::tests::derivative_still_works_near_singularity ... ok
[INFO] [stdout] test tools::calculus::tests::derivative_snaps_to_nearest_integer ... ok
[INFO] [stdout] test tools::calculus::tests::derivative_of_cubic ... ok
[INFO] [stdout] test tools::basic::tests::power_zero_exponent_is_one ... ok
[INFO] [stdout] test tools::calculus::tests::derivative_of_x_squared_at_3 ... ok
[INFO] [stdout] test tools::basic::tests::subtract_integers ... ok
[INFO] [stdout] test tools::calculus::tests::derivative_invalid_expression_parse_error ... ok
[INFO] [stdout] test tools::calculus::tests::derivative_rejects_singularity_at_origin ... ok
[INFO] [stdout] test tools::calculus::tests::derivative_unknown_function ... ok
[INFO] [stdout] test tools::calculus::tests::derivative_unknown_variable ... ok
[INFO] [stdout] test tools::calculus::tests::integral_invalid_expression ... ok
[INFO] [stdout] test tools::calculus::tests::derivative_variable_mismatch_clarifies_declared_name ... ok
[INFO] [stdout] test tools::calculus::tests::nth_derivative_first_matches_central_diff ... ok
[INFO] [stdout] test tools::calculus::tests::nth_derivative_bubbles_parse_error ... ok
[INFO] [stdout] test tools::calculus::tests::nth_derivative_negative_order ... ok
[INFO] [stdout] test tools::calculus::tests::nth_derivative_order_above_range ... ok
[INFO] [stdout] test tools::calculus::tests::nth_derivative_order_below_range ... ok
[INFO] [stdout] test tools::calculus::tests::nth_derivative_second_of_x_squared_is_two ... ok
[INFO] [stdout] test tools::calculus::tests::tangent_line_equation_uses_actual_variable_name ... ok
[INFO] [stdout] test tools::calculus::tests::tangent_line_invalid_expression ... ok
[INFO] [stdout] test tools::calculus::tests::integral_with_singularity_inside_interval_errors ... ok
[INFO] [stdout] test tools::calculus::tests::tangent_line_of_linear_function ... ok
[INFO] [stdout] test tools::calculus::tests::tangent_line_of_x_squared_at_3 ... ok
[INFO] [stdout] test tools::calculus::tests::tangent_line_snaps_critical_point_slope_to_zero ... ok
[INFO] [stdout] test tools::calculus::tests::integral_of_x_from_minus1_to_1_is_zero ... ok
[INFO] [stdout] test tools::calculus::tests::integral_of_x_squared_0_to_1 ... ok
[INFO] [stdout] test tools::calculus::tests::integral_of_constant ... ok
[INFO] [stdout] test tools::calculus::tests::tangent_line_rejects_singularity ... ok
[INFO] [stdout] test tools::calculus::tests::nth_derivative_rejects_singularity ... ok
[INFO] [stdout] test tools::chemistry::tests::half_life_round_trip_with_decay_constant ... ok
[INFO] [stdout] test tools::calculus::tests::tangent_line_omits_zero_intercept ... ok
[INFO] [stdout] test tools::chemistry::tests::henderson_hasselbalch_equal_concentrations ... ok
[INFO] [stdout] test tools::calculus::tests::integral_of_x_squared_0_to_3_snaps_to_nine ... ok
[INFO] [stdout] test tools::chemistry::tests::ideal_gas_moles_basic ... ok
[INFO] [stdout] test tools::chemistry::tests::ideal_gas_moles_rejects_negative_pressure ... ok
[INFO] [stdout] test tools::chemistry::tests::ideal_gas_moles_rejects_negative_volume ... ok
[INFO] [stdout] test tools::chemistry::tests::molar_mass_bracket_mismatch_is_error ... ok
[INFO] [stdout] test tools::chemistry::tests::molality_basic ... ok
[INFO] [stdout] test tools::chemistry::tests::molar_mass_calcium_hydroxide_with_parens ... ok
[INFO] [stdout] test tools::chemistry::tests::molality_rejects_negative_moles ... ok
[INFO] [stdout] test tools::chemistry::tests::molar_mass_carbon_monoxide_no_f64_drift ... ok
[INFO] [stdout] test tools::chemistry::tests::molar_mass_hydrate_remerges_water_without_triggering_duplicate_guard ... ok
[INFO] [stdout] test tools::chemistry::tests::molar_mass_invalid_syntax_errors ... ok
[INFO] [stdout] test tools::chemistry::tests::molar_mass_nacl_no_f64_drift ... ok
[INFO] [stdout] test tools::chemistry::tests::molar_mass_iron_sulfate_nested ... ok
[INFO] [stdout] test tools::chemistry::tests::molar_mass_iupac_superheavy_elements ... ok
[INFO] [stdout] test tools::chemistry::tests::molar_mass_lanthanide_compound ... ok
[INFO] [stdout] test tools::chemistry::tests::molar_mass_glucose ... ok
[INFO] [stdout] test tools::chemistry::tests::molar_mass_parenthesised_group_does_not_trigger_duplicate_guard ... ok
[INFO] [stdout] test tools::chemistry::tests::molar_mass_rejects_duplicate_element_at_flat_level ... ok
[INFO] [stdout] test tools::chemistry::tests::molar_mass_retry_preserves_two_letter_elements ... ok
[INFO] [stdout] test tools::chemistry::tests::molar_mass_lowercase_formula_is_title_cased ... ok
[INFO] [stdout] test tools::chemistry::tests::molar_mass_hydrate_period ... ok
[INFO] [stdout] test tools::chemistry::tests::molar_mass_hydrate_middle_dot ... ok
[INFO] [stdout] test tools::chemistry::tests::molar_mass_water ... ok
[INFO] [stdout] test tools::chemistry::tests::molar_mass_square_brackets ... ok
[INFO] [stdout] test tools::chemistry::tests::molar_mass_title_case_helper ... ok
[INFO] [stdout] test tools::chemistry::tests::molar_mass_tungsten_alloy ... ok
[INFO] [stdout] test tools::chemistry::tests::molar_mass_unknown_element_errors ... ok
[INFO] [stdout] test tools::chemistry::tests::molarity_rejects_negative_moles ... ok
[INFO] [stdout] test tools::chemistry::tests::ph_invalid_concentration_errors ... ok
[INFO] [stdout] test tools::chemistry::tests::poh_at_unit_concentration_emits_canonical_zero ... ok
[INFO] [stdout] test tools::chemistry::tests::poh_basic ... ok
[INFO] [stdout] test tools::chemistry::tests::molarity_basic ... ok
[INFO] [stdout] test tools::combinatorics::tests::combination_large_arbitrary_precision ... ok
[INFO] [stdout] test tools::combinatorics::tests::combination_basic ... ok
[INFO] [stdout] test tools::combinatorics::tests::euler_totient_known_values ... ok
[INFO] [stdout] test tools::combinatorics::tests::fibonacci_negative_errors ... ok
[INFO] [stdout] test tools::combinatorics::tests::combination_negative_errors ... ok
[INFO] [stdout] test tools::combinatorics::tests::is_prime_composites ... ok
[INFO] [stdout] test tools::combinatorics::tests::is_prime_large ... ok
[INFO] [stdout] test tools::combinatorics::tests::is_prime_negative_errors ... ok
[INFO] [stdout] test tools::chemistry::tests::ph_at_unit_concentration_emits_canonical_zero ... ok
[INFO] [stdout] test tools::chemistry::tests::ph_neutral_water ... ok
[INFO] [stdout] test tools::combinatorics::tests::combination_edge_cases ... ok
[INFO] [stdout] test tools::combinatorics::tests::is_prime_small_primes ... ok
[INFO] [stdout] test tools::combinatorics::tests::fibonacci_known_values ... ok
[INFO] [stdout] test tools::combinatorics::tests::fibonacci_large_arbitrary_precision ... ok
[INFO] [stdout] test tools::combinatorics::tests::prime_factors_one_is_empty_product ... ok
[INFO] [stdout] test tools::combinatorics::tests::prime_factors_of_two ... ok
[INFO] [stdout] test tools::complex::tests::complex_power_snaps_to_integer ... ok
[INFO] [stdout] test tools::complex::tests::conjugate_flips_imag_sign ... ok
[INFO] [stdout] test tools::combinatorics::tests::next_prime_basic ... ok
[INFO] [stdout] test tools::combinatorics::tests::permutation_basic ... ok
[INFO] [stdout] test tools::complex::tests::div_basic ... ok
[INFO] [stdout] test tools::complex::tests::div_by_zero_errors ... ok
[INFO] [stdout] test tools::complex::tests::conjugate_of_zero_canonicalizes_negative_zero ... ok
[INFO] [stdout] test tools::combinatorics::tests::permutation_edge_zero ... ok
[INFO] [stdout] test tools::combinatorics::tests::prime_factors_zero_errors ... ok
[INFO] [stdout] test tools::complex::tests::magnitude_3_4_is_5 ... ok
[INFO] [stdout] test tools::combinatorics::tests::prime_factors_basic ... ok
[INFO] [stdout] test tools::complex::tests::add_basic ... ok
[INFO] [stdout] test tools::complex::tests::div_tiny_denominator_no_spurious_zero ... ok
[INFO] [stdout] test tools::combinatorics::tests::prime_factors_of_prime ... ok
[INFO] [stdout] test tools::complex::tests::phase_negative_real_epsilon_imag_stays_in_range ... ok
[INFO] [stdout] test tools::complex::tests::mult_basic ... ok
[INFO] [stdout] test tools::complex::tests::phase_negative_real_is_180 ... ok
[INFO] [stdout] test tools::complex::tests::phase_pure_imaginary_is_90 ... ok
[INFO] [stdout] test tools::complex::tests::polar_to_rect_53deg_gives_clean_345 ... ok
[INFO] [stdout] test tools::complex::tests::polar_to_rect_basic ... ok
[INFO] [stdout] test tools::complex::tests::rect_to_polar_basic ... ok
[INFO] [stdout] test tools::complex::tests::sqrt_of_minus_one_is_i ... ok
[INFO] [stdout] test tools::complex::tests::sqrt_of_real_positive ... ok
[INFO] [stdout] test tools::cooking::tests::oven_celsius_to_fahrenheit ... ok
[INFO] [stdout] test tools::complex::tests::power_zero_to_zero_errors ... ok
[INFO] [stdout] test tools::cooking::tests::oven_celsius_to_gas_mark ... ok
[INFO] [stdout] test tools::complex::tests::sqrt_tiny_input_preserves_magnitude ... ok
[INFO] [stdout] test tools::cooking::tests::oven_gas_mark_out_of_range_uses_canonical_envelope ... ok
[INFO] [stdout] test tools::complex::tests::phase_of_zero_is_zero_by_convention ... ok
[INFO] [stdout] test tools::cooking::tests::oven_fahrenheit_to_gasmark ... ok
[INFO] [stdout] test tools::complex::tests::power_squared ... ok
[INFO] [stdout] test tools::cooking::tests::oven_fractional_above_range_preserves_value ... ok
[INFO] [stdout] test tools::cooking::tests::oven_fractional_gas_mark_preserves_value_in_error ... ok
[INFO] [stdout] test tools::cooking::tests::oven_gas_mark_to_celsius ... ok
[INFO] [stdout] test tools::cooking::tests::oven_gasmark_roundtrip ... ok
[INFO] [stdout] test tools::cooking::tests::volume_rejects_negative_value ... ok
[INFO] [stdout] test tools::cooking::tests::weight_invalid_unit ... ok
[INFO] [stdout] test tools::cooking::tests::weight_lb_to_oz_happy_path ... ok
[INFO] [stdout] test tools::cooking::tests::weight_rejects_negative_value ... ok
[INFO] [stdout] test tools::crypto::tests::base64_decode_invalid_errors ... ok
[INFO] [stdout] test tools::crypto::tests::base64_round_trip ... ok
[INFO] [stdout] test tools::crypto::tests::crc32_known_vector ... ok
[INFO] [stdout] test tools::complex::tests::parse_error_propagates ... ok
[INFO] [stdout] test tools::cooking::tests::oven_allows_negative_celsius ... ok
[INFO] [stdout] test tools::crypto::tests::empty_inputs_are_supported ... ok
[INFO] [stdout] test tools::crypto::tests::hex_encode_basic ... ok
[INFO] [stdout] test tools::crypto::tests::sha256_known_vector ... ok
[INFO] [stdout] test tools::crypto::tests::sha512_known_vector ... ok
[INFO] [stdout] test tools::cooking::tests::oven_invalid_unit_error ... ok
[INFO] [stdout] test tools::crypto::tests::md5_known_vector ... ok
[INFO] [stdout] test tools::cooking::tests::volume_cup_alias_to_tbsp ... ok
[INFO] [stdout] test tools::crypto::tests::sha1_known_vector ... ok
[INFO] [stdout] test tools::crypto::tests::url_decode_rejects_invalid_percent_escape ... ok
[INFO] [stdout] test tools::cooking::tests::volume_gal_alias_to_l ... ok
[INFO] [stdout] test tools::crypto::tests::url_decode_rejects_single_digit_percent ... ok
[INFO] [stdout] test tools::crypto::tests::url_decode_literal_plus_survives_via_percent_encoding ... ok
[INFO] [stdout] test tools::crypto::tests::url_decode_round_trip ... ok
[INFO] [stdout] test tools::crypto::tests::url_decode_translates_plus_to_space_form_encoding ... ok
[INFO] [stdout] test tools::cooking::tests::volume_invalid_unit ... ok
[INFO] [stdout] test tools::cooking::tests::volume_floz_alias_to_ml ... ok
[INFO] [stdout] test tools::crypto::tests::url_encode_special_chars ... ok
[INFO] [stdout] test tools::crypto::tests::url_decode_rejects_trailing_percent ... ok
[INFO] [stdout] test tools::datetime::tests::convert_accepts_bare_epoch_seconds ... ok
[INFO] [stdout] test tools::datetime::tests::convert_invalid_source_zone ... ok
[INFO] [stdout] test tools::datetime::tests::convert_accepts_bare_epoch_milliseconds ... ok
[INFO] [stdout] test tools::datetime::tests::convert_accepts_negative_epoch_seconds ... ok
[INFO] [stdout] test tools::datetime::tests::convert_parse_error ... ok
[INFO] [stdout] test tools::datetime::tests::convert_still_rejects_short_digits_as_dates ... ok
[INFO] [stdout] test tools::datetime::tests::convert_accepts_unambiguous_local_time ... ok
[INFO] [stdout] test tools::datetime::tests::convert_rejects_dst_gap_in_spring_forward ... ok
[INFO] [stdout] test tools::datetime::tests::datetime_difference_negative_order_normalized ... ok
[INFO] [stdout] test tools::datetime::tests::datetime_difference_one_year_two_months ... ok
[INFO] [stdout] test tools::datetime::tests::format_datetime_rejects_empty_format ... ok
[INFO] [stdout] test tools::datetime::tests::format_datetime_rejects_placeholder_without_tokens ... ok
[INFO] [stdout] test tools::datetime::tests::format_datetime_accepts_strftime_with_tokens ... ok
[INFO] [stdout] test tools::datetime::tests::current_datetime_invalid_zone ... ok
[INFO] [stdout] test tools::datetime::tests::current_datetime_strftime_year_is_four_digits ... ok
[INFO] [stdout] test tools::datetime::tests::current_datetime_uses_requested_zone ... ok
[INFO] [stdout] test tools::datetime::tests::datetime_difference_invalid_zone ... ok
[INFO] [stdout] test tools::datetime::tests::convert_rejects_dst_fold_in_autumn_back ... ok
[INFO] [stdout] test tools::datetime::tests::format_epoch_input_to_iso ... ok
[INFO] [stdout] test tools::datetime::tests::format_iso_offset_has_offset_no_zone ... ok
[INFO] [stdout] test tools::datetime::tests::format_rfc1123_input_roundtrips ... ok
[INFO] [stdout] test tools::datetime::tests::format_rfc1123_output ... ok
[INFO] [stdout] test tools::datetime::tests::format_iso_local_strips_zone ... ok
[INFO] [stdout] test tools::digital_electronics::tests::adc_resolution_ten_bit ... ok
[INFO] [stdout] test tools::digital_electronics::tests::bitwise_accepts_hex_and_binary_prefixes ... ok
[INFO] [stdout] test tools::datetime::tests::convert_utc_to_tokyo ... ok
[INFO] [stdout] test tools::digital_electronics::tests::bitwise_and_ones ... ok
[INFO] [stdout] test tools::digital_electronics::tests::bitwise_not_is_arbitrary_precision_twos_complement ... ok
[INFO] [stdout] test tools::digital_electronics::tests::bitwise_or_simple ... ok
[INFO] [stdout] test tools::digital_electronics::tests::bitwise_shift_negative_is_out_of_range ... ok
[INFO] [stdout] test tools::digital_electronics::tests::bitwise_shift_unparseable_still_parse_error ... ok
[INFO] [stdout] test tools::digital_electronics::tests::bitwise_shl ... ok
[INFO] [stdout] test tools::digital_electronics::tests::bitwise_rejects_malformed_literal ... ok
[INFO] [stdout] test tools::datetime::tests::format_strftime_uppercase_conversions_preserved ... ok
[INFO] [stdout] test tools::digital_electronics::tests::bitwise_shift_beyond_u32_is_out_of_range ... ok
[INFO] [stdout] test tools::digital_electronics::tests::adc_resolution_bad_bits_errors ... ok
[INFO] [stdout] test tools::digital_electronics::tests::bitwise_shl_is_unbounded ... ok
[INFO] [stdout] test tools::digital_electronics::tests::bitwise_shr ... ok
[INFO] [stdout] test tools::digital_electronics::tests::bitwise_unknown_op_errors ... ok
[INFO] [stdout] test tools::digital_electronics::tests::convert_base_decimal_to_hex ... ok
[INFO] [stdout] test tools::digital_electronics::tests::convert_base_hex_to_binary ... ok
[INFO] [stdout] test tools::digital_electronics::tests::dac_output_midpoint ... ok
[INFO] [stdout] test tools::digital_electronics::tests::convert_base_bad_base_errors ... ok
[INFO] [stdout] test tools::digital_electronics::tests::convert_base_binary_to_decimal ... ok
[INFO] [stdout] test tools::digital_electronics::tests::bitwise_xor_simple ... ok
[INFO] [stdout] test tools::digital_electronics::tests::convert_base_invalid_digit_errors ... ok
[INFO] [stdout] test tools::digital_electronics::tests::frequency_period_non_positive_errors ... ok
[INFO] [stdout] test tools::digital_electronics::tests::frequency_period_period_to_freq ... ok
[INFO] [stdout] test tools::digital_electronics::tests::frequency_period_freq_to_period ... ok
[INFO] [stdout] test tools::digital_electronics::tests::dac_output_out_of_range_errors ... ok
[INFO] [stdout] test tools::digital_electronics::tests::frequency_period_survives_extreme_magnitudes ... ok
[INFO] [stdout] test tools::digital_electronics::tests::gray_code_bad_direction_errors ... ok
[INFO] [stdout] test tools::digital_electronics::tests::frequency_period_bad_mode_errors ... ok
[INFO] [stdout] test tools::digital_electronics::tests::gray_code_from_gray_roundtrip ... ok
[INFO] [stdout] test tools::digital_electronics::tests::gray_code_invalid_binary_errors ... ok
[INFO] [stdout] test tools::digital_electronics::tests::gray_code_to_gray ... ok
[INFO] [stdout] test tools::digital_electronics::tests::timer_555_astable_period_survives_tiny_rc ... ok
[INFO] [stdout] test tools::digital_electronics::tests::timer_555_astable_rejects_negative_r2 ... ok
[INFO] [stdout] test tools::digital_electronics::tests::nyquist_rate_rejects_negative ... ok
[INFO] [stdout] test tools::digital_electronics::tests::nyquist_rate_rejects_zero ... ok
[INFO] [stdout] test tools::digital_electronics::tests::timer_555_astable_all_fields_present ... ok
[INFO] [stdout] test tools::digital_electronics::tests::timer_555_monostable_formula ... ok
[INFO] [stdout] test tools::digital_electronics::tests::timer_555_monostable_rejects_zero_r ... ok
[INFO] [stdout] test tools::digital_electronics::tests::timer_555_monostable_rejects_negative_c ... ok
[INFO] [stdout] test tools::digital_electronics::tests::timer_555_astable_rejects_zero_r1 ... ok
[INFO] [stdout] test tools::digital_electronics::tests::nyquist_rate_audio ... ok
[INFO] [stdout] test tools::digital_electronics::tests::twos_complement_bad_direction_errors ... ok
[INFO] [stdout] test tools::digital_electronics::tests::twos_complement_from_accepts_short_string ... ok
[INFO] [stdout] test tools::digital_electronics::tests::twos_complement_from_rejects_string_longer_than_bit_width ... ok
[INFO] [stdout] test tools::digital_electronics::tests::twos_complement_negative_eight_bit ... ok
[INFO] [stdout] test tools::digital_electronics::tests::twos_complement_bad_bits_errors ... ok
[INFO] [stdout] test tools::digital_electronics::tests::twos_complement_boundary_values_accepted ... ok
[INFO] [stdout] test tools::digital_electronics::tests::twos_complement_value_above_signed_range_errors ... ok
[INFO] [stdout] test tools::digital_electronics::tests::twos_complement_positive_eight_bit ... ok
[INFO] [stdout] test tools::digital_electronics::tests::twos_complement_roundtrip_negative ... ok
[INFO] [stdout] test tools::digital_electronics::tests::twos_complement_roundtrip_positive ... ok
[INFO] [stdout] test tools::digital_electronics::tests::twos_complement_value_below_signed_range_errors ... ok
[INFO] [stdout] test tools::financial::tests::amortization_schedule_10k_6pct_1yr ... ok
[INFO] [stdout] test tools::financial::tests::amortization_schedule_accepts_40_year_mortgage ... ok
[INFO] [stdout] test tools::financial::tests::amortization_schedule_rejects_schedule_beyond_cap ... ok
[INFO] [stdout] test tools::financial::tests::compound_interest_annual ... ok
[INFO] [stdout] test tools::financial::tests::compound_interest_monthly ... ok
[INFO] [stdout] test tools::financial::tests::compound_interest_negative_principal ... ok
[INFO] [stdout] test tools::financial::tests::compound_interest_negative_rate ... ok
[INFO] [stdout] test tools::financial::tests::amortization_schedule_zero_rate ... ok
[INFO] [stdout] test tools::financial::tests::compound_interest_negative_years_still_rejected ... ok
[INFO] [stdout] test tools::financial::tests::amortization_schedule_zero_rate_preserves_principal ... ok
[INFO] [stdout] test tools::financial::tests::compound_interest_parse_error ... ok
[INFO] [stdout] test tools::financial::tests::compound_interest_zero_compounds ... ok
[INFO] [stdout] test tools::financial::tests::amortization_schedule_last_month_zero_balance ... ok
[INFO] [stdout] test tools::financial::tests::amortization_schedule_parse_error ... ok
[INFO] [stdout] test tools::financial::tests::compound_interest_zero_rate ... ok
[INFO] [stdout] test tools::financial::tests::compound_interest_zero_years_is_identity ... ok
[INFO] [stdout] test tools::financial::tests::future_value_annuity_zero_rate ... ok
[INFO] [stdout] test tools::financial::tests::loan_payment_standard ... ok
[INFO] [stdout] test tools::financial::tests::present_value_basic ... ok
[INFO] [stdout] test tools::financial::tests::loan_payment_zero_principal ... ok
[INFO] [stdout] test tools::financial::tests::loan_payment_zero_rate ... ok
[INFO] [stdout] test tools::financial::tests::present_value_zero_years_returns_future_value ... ok
[INFO] [stdout] test tools::financial::tests::loan_payment_parse_error_principal ... ok
[INFO] [stdout] test tools::financial::tests::roi_negative_cost_error ... ok
[INFO] [stdout] test tools::financial::tests::roi_parse_error_gain ... ok
[INFO] [stdout] test tools::financial::tests::roi_zero_cost_error ... ok
[INFO] [stdout] test tools::financial::tests::future_value_annuity_basic ... ok
[INFO] [stdout] test tools::geometry::tests::circle_area_radius_two ... ok
[INFO] [stdout] test tools::financial::tests::roi_basic ... ok
[INFO] [stdout] test tools::geometry::tests::circle_area_zero_radius_is_zero ... ok
[INFO] [stdout] test tools::geometry::tests::circle_area_negative_radius_still_rejected ... ok
[INFO] [stdout] test tools::geometry::tests::circle_area_unit_radius ... ok
[INFO] [stdout] test tools::geometry::tests::circle_perimeter_unit_radius ... ok
[INFO] [stdout] test tools::geometry::tests::cylinder_volume_unit ... ok
[INFO] [stdout] test tools::geometry::tests::distance_3d_unit_diagonal ... ok
[INFO] [stdout] test tools::geometry::tests::point_to_line_coincident_endpoints_errors ... ok
[INFO] [stdout] test tools::geometry::tests::polygon_area_unit_square ... ok
[INFO] [stdout] test tools::geometry::tests::regular_polygon_hexagon_side_1 ... ok
[INFO] [stdout] test tools::geometry::tests::point_to_line_distance_basic ... ok
[INFO] [stdout] test tools::geometry::tests::polygon_area_rejects_too_few_points ... ok
[INFO] [stdout] test tools::geometry::tests::regular_polygon_min_sides_enforced ... ok
[INFO] [stdout] test tools::geometry::tests::distance_2d_pythagorean ... ok
[INFO] [stdout] test tools::geometry::tests::cone_volume_unit ... ok
[INFO] [stdout] test tools::geometry::tests::sphere_volume_radius_one ... ok
[INFO] [stdout] test tools::geometry::tests::triangle_area_3_4_5_right_triangle ... ok
[INFO] [stdout] test tools::geometry::tests::triangle_area_equilateral ... ok
[INFO] [stdout] test tools::geometry::tests::regular_polygon_square_side_2 ... ok
[INFO] [stdout] test tools::geometry::tests::regular_polygon_tiny_side_preserves_magnitude ... ok
[INFO] [stdout] test tools::geometry::tests::sphere_area_radius_one ... ok
[INFO] [stdout] test tools::geometry::tests::triangle_area_inequality_violated ... ok
[INFO] [stdout] test tools::graphing::tests::find_roots_bubbles_unknown_variable ... ok
[INFO] [stdout] test tools::graphing::tests::find_roots_cubic_three_roots ... ok
[INFO] [stdout] test tools::graphing::tests::find_roots_ignores_pole_sign_change ... ok
[INFO] [stdout] test tools::graphing::tests::find_roots_min_greater_than_max ... ok
[INFO] [stdout] test tools::graphing::tests::plot_bubbles_unknown_variable ... ok
[INFO] [stdout] test tools::graphing::tests::plot_invalid_range_equal ... ok
[INFO] [stdout] test tools::graphing::tests::plot_invalid_range_inverted ... ok
[INFO] [stdout] test tools::graphing::tests::plot_invalid_steps_negative ... ok
[INFO] [stdout] test tools::graphing::tests::plot_invalid_steps_zero ... ok
[INFO] [stdout] test tools::graphing::tests::find_roots_no_roots_returns_empty ... ok
[INFO] [stdout] test tools::graphing::tests::plot_out_of_domain_points_emit_undefined_not_abort ... ok
[INFO] [stdout] test tools::graphing::tests::plot_samples_pole_emit_undefined_not_abort ... ok
[INFO] [stdout] test tools::graphing::tests::solve_bubbles_unknown_variable ... ok
[INFO] [stdout] test tools::graphing::tests::solve_derivative_zero_error ... ok
[INFO] [stdout] test tools::graphing::tests::solve_x_squared_minus_four_negative_guess ... ok
[INFO] [stdout] test tools::graphing::tests::solve_x_squared_minus_four_positive_guess ... ok
[INFO] [stdout] test tools::graphing::tests::find_roots_x_squared_minus_four ... ok
[INFO] [stdout] test tools::matrices::tests::add_2x2 ... ok
[INFO] [stdout] test tools::matrices::tests::cross_product_basic ... ok
[INFO] [stdout] test tools::graphing::tests::find_roots_rejects_rational_pole_sign_change ... ok
[INFO] [stdout] test tools::matrices::tests::cross_product_non_3d_errors ... ok
[INFO] [stdout] test tools::matrices::tests::determinant_2x2 ... ok
[INFO] [stdout] test tools::matrices::tests::determinant_3x3 ... ok
[INFO] [stdout] test tools::matrices::tests::determinant_mixed_scale_diagonal_not_snapped ... ok
[INFO] [stdout] test tools::graphing::tests::find_roots_rejects_tan_asymptotes_as_roots ... ok
[INFO] [stdout] test tools::matrices::tests::determinant_singular ... ok
[INFO] [stdout] test tools::matrices::tests::determinant_singular_fp_noise_snaps_to_zero ... ok
[INFO] [stdout] test tools::matrices::tests::determinant_tiny_entries_1e_minus_10_not_clipped ... ok
[INFO] [stdout] test tools::matrices::tests::determinant_truly_small_not_clipped ... ok
[INFO] [stdout] test tools::matrices::tests::eigenvalues_diagonal_2x2 ... ok
[INFO] [stdout] test tools::matrices::tests::eigenvalues_large_entries_no_overflow ... ok
[INFO] [stdout] test tools::matrices::tests::eigenvalues_tiny_entries_no_underflow ... ok
[INFO] [stdout] test tools::matrices::tests::gaussian_elimination_2x3_solve ... ok
[INFO] [stdout] test tools::matrices::tests::gaussian_elimination_canonicalizes_negative_zero ... ok
[INFO] [stdout] test tools::matrices::tests::add_dimension_mismatch_errors ... ok
[INFO] [stdout] test tools::matrices::tests::determinant_non_square_errors ... ok
[INFO] [stdout] test tools::matrices::tests::eigenvalues_complex_2x2 ... ok
[INFO] [stdout] test tools::matrices::tests::gaussian_elimination_inconsistent_errors ... ok
[INFO] [stdout] test tools::matrices::tests::gaussian_elimination_mixed_scale_not_rejected ... ok
[INFO] [stdout] test tools::matrices::tests::inverse_emits_clean_integers_instead_of_ulp_residue ... ok
[INFO] [stdout] test tools::matrices::tests::inverse_mixed_scale_diagonal_not_rejected ... ok
[INFO] [stdout] test tools::matrices::tests::inverse_singular_errors ... ok
[INFO] [stdout] test tools::matrices::tests::inverse_tiny_entries_well_conditioned_not_rejected ... ok
[INFO] [stdout] test tools::matrices::tests::mult_2x2_identity ... ok
[INFO] [stdout] test tools::matrices::tests::mult_compatible_dims ... ok
[INFO] [stdout] test tools::matrices::tests::rank_full_2x2 ... ok
[INFO] [stdout] test tools::matrices::tests::gaussian_elimination_underdetermined_errors ... ok
[INFO] [stdout] test tools::matrices::tests::inverse_2x2 ... ok
[INFO] [stdout] test tools::matrices::tests::rank_singular_2x2 ... ok
[INFO] [stdout] test tools::matrices::tests::rank_tiny_entries_reports_full_rank ... ok
[INFO] [stdout] test tools::measure_reference::tests::conversion_factor_km_to_m ... ok
[INFO] [stdout] test tools::measure_reference::tests::conversion_factor_temperature_error ... ok
[INFO] [stdout] test tools::measure_reference::tests::conversion_factor_unknown_unit ... ok
[INFO] [stdout] test tools::measure_reference::tests::explain_conversion_cross_category_error ... ok
[INFO] [stdout] test tools::measure_reference::tests::explain_conversion_linear ... ok
[INFO] [stdout] test tools::measure_reference::tests::explain_conversion_temperature_formula ... ok
[INFO] [stdout] test tools::measure_reference::tests::list_categories_inline_envelope ... ok
[INFO] [stdout] test tools::matrices::tests::rank_mixed_scale_diagonal_reports_full_rank ... ok
[INFO] [stdout] test tools::measure_reference::tests::list_tool_categories_matches_server_instructions ... ok
[INFO] [stdout] test tools::measure_reference::tests::list_units_case_insensitive_category ... ok
[INFO] [stdout] test tools::measure_reference::tests::list_units_unknown_category ... ok
[INFO] [stdout] test tools::network::tests::compress_ipv6_middle_run ... ok
[INFO] [stdout] test tools::network::tests::decimal_to_ip_ipv6_max_and_edges ... ok
[INFO] [stdout] test tools::network::tests::error_bad_cidr ... ok
[INFO] [stdout] test tools::network::tests::error_bad_ip ... ok
[INFO] [stdout] test tools::network::tests::error_binary_to_ipv4_group_count ... ok
[INFO] [stdout] test tools::matrices::tests::trace_3x3 ... ok
[INFO] [stdout] test tools::measure_reference::tests::list_units_length ... ok
[INFO] [stdout] test tools::network::tests::error_binary_to_ipv4_non_binary_digit ... ok
[INFO] [stdout] test tools::matrices::tests::transpose_2x3 ... ok
[INFO] [stdout] test tools::network::tests::expand_ipv6_non_v4_mapped_stays_hex ... ok
[INFO] [stdout] test tools::network::tests::expand_compress_ipv6_roundtrip ... ok
[INFO] [stdout] test tools::network::tests::ip_in_subnet_cases ... ok
[INFO] [stdout] test tools::network::tests::ip_in_subnet_family_mismatch_is_explicit ... ok
[INFO] [stdout] test tools::network::tests::ip_to_binary_ipv4_roundtrip ... ok
[INFO] [stdout] test tools::graphing::tests::plot_x_squared_endpoints ... ok
[INFO] [stdout] test tools::network::tests::error_wrong_version ... ok
[INFO] [stdout] test tools::network::tests::ip_to_binary_ipv6_roundtrip ... ok
[INFO] [stdout] test tools::network::tests::expand_ipv6_v4_mapped_keeps_dotted_quad ... ok
[INFO] [stdout] test tools::network::tests::error_empty_summary_list ... ok
[INFO] [stdout] test tools::network::tests::ip_to_decimal_ipv4_roundtrip ... ok
[INFO] [stdout] test tools::network::tests::ip_to_decimal_ipv6_roundtrip ... ok
[INFO] [stdout] test tools::network::tests::subnet_calc_192_168_1_0_slash_24 ... ok
[INFO] [stdout] test tools::network::tests::subnet_calc_cidr_31_point_to_point ... ok
[INFO] [stdout] test tools::network::tests::subnet_calc_cidr_32_host_route ... ok
[INFO] [stdout] test tools::network::tests::subnet_calc_slash_zero_classified_by_network ... ok
[INFO] [stdout] test tools::network::tests::summarize_adjacent_slash_22 ... ok
[INFO] [stdout] test tools::network::tests::summarize_adjacent_slash_24s_still_succeeds ... ok
[INFO] [stdout] test tools::network::tests::summarize_refuses_disjoint_rfc1918_blocks ... ok
[INFO] [stdout] test tools::network::tests::summarize_refuses_two_distant_slash_24s ... ok
[INFO] [stdout] test tools::network::tests::summarize_single_subnet_returns_itself ... ok
[INFO] [stdout] test tools::network::tests::summarize_two_slash_25_to_slash_24 ... ok
[INFO] [stdout] test tools::network::tests::tcp_throughput_bw_limited ... ok
[INFO] [stdout] test tools::network::tests::tcp_throughput_rejects_zero_window ... ok
[INFO] [stdout] test tools::network::tests::tcp_throughput_window_limited ... ok
[INFO] [stdout] test tools::network::tests::tcp_throughput_rejects_negative_bandwidth ... ok
[INFO] [stdout] test tools::network::tests::tcp_throughput_rejects_negative_rtt ... ok
[INFO] [stdout] test tools::network::tests::throughput_100mb_10s_to_mbps ... ok
[INFO] [stdout] test tools::network::tests::throughput_rejects_negative_data_size ... ok
[INFO] [stdout] test tools::network::tests::transfer_time_1gb_at_100mbps ... ok
[INFO] [stdout] test tools::network::tests::transfer_time_rejects_negative_bandwidth ... ok
[INFO] [stdout] test tools::network::tests::transfer_time_rejects_negative_file_size ... ok
[INFO] [stdout] test tools::network::tests::transfer_time_rejects_zero_bandwidth ... ok
[INFO] [stdout] test tools::network::tests::vlsm_basic_slash_24 ... ok
[INFO] [stdout] test tools::network::tests::vlsm_cannot_fit ... ok
[INFO] [stdout] test tools::network::tests::vlsm_rejects_empty_host_counts ... ok
[INFO] [stdout] test tools::network::tests::throughput_rejects_negative_time ... ok
[INFO] [stdout] test tools::network::tests::vlsm_rejects_negative_host_count ... ok
[INFO] [stdout] test tools::network::tests::throughput_rejects_zero_time ... ok
[INFO] [stdout] test tools::network::tests::vlsm_rejects_zero_host_count ... ok
[INFO] [stdout] test tools::numeric::tests::canonicalize_zero_eliminates_negative_zero ... ok
[INFO] [stdout] test tools::numeric::tests::precision_snap_handles_extreme_magnitudes_without_nan ... ok
[INFO] [stdout] test tools::numeric::tests::precision_snap_passes_through_edge_cases ... ok
[INFO] [stdout] test tools::numeric::tests::precision_snap_preserves_small_magnitudes ... ok
[INFO] [stdout] test tools::numeric::tests::precision_snap_removes_ulp_residue ... ok
[INFO] [stdout] test tools::numeric::tests::precision_snap_still_rounds_ulp_drift ... ok
[INFO] [stdout] test tools::numeric::tests::preserves_genuinely_non_integer_values ... ok
[INFO] [stdout] test tools::numeric::tests::preserves_tiny_values_near_zero_target ... ok
[INFO] [stdout] test tools::numeric::tests::snaps_hexagon_circumradius_residue ... ok
[INFO] [stdout] test tools::numeric::tests::snaps_negative_integer_residue ... ok
[INFO] [stdout] test tools::numeric::tests::still_snaps_near_nonzero_integer_from_derivative_drift ... ok
[INFO] [stdout] test tools::physics::tests::doppler_observer_approaching ... ok
[INFO] [stdout] test tools::physics::tests::doppler_supersonic_receding_source_is_domain_error ... ok
[INFO] [stdout] test tools::physics::tests::doppler_supersonic_source_is_domain_error ... ok
[INFO] [stdout] test tools::physics::tests::escape_velocity_earth_approx ... ok
[INFO] [stdout] test tools::physics::tests::gravitational_force_rejects_negative_mass ... ok
[INFO] [stdout] test tools::physics::tests::gravitational_force_two_kg_one_meter ... ok
[INFO] [stdout] test tools::network::tests::subnet_calc_ipv6 ... ok
[INFO] [stdout] test tools::physics::tests::gravitational_zero_distance_errors ... ok
[INFO] [stdout] test tools::physics::tests::heat_transfer_rejects_negative_area ... ok
[INFO] [stdout] test tools::network::tests::subnet_calc_ipv6_slash_128_single_host ... ok
[INFO] [stdout] test tools::physics::tests::heat_transfer_rejects_negative_conductivity ... ok
[INFO] [stdout] test tools::physics::tests::ideal_gas_rejects_negative_moles_when_solving_p ... ok
[INFO] [stdout] test tools::physics::tests::ideal_gas_rejects_negative_pressure_when_solving_v ... ok
[INFO] [stdout] test tools::physics::tests::ideal_gas_rejects_negative_volume_when_solving_n ... ok
[INFO] [stdout] test tools::physics::tests::ideal_gas_rejects_zero_temperature_when_solving_p ... ok
[INFO] [stdout] test tools::numeric::tests::canonicalize_zero_preserves_other_values ... ok
[INFO] [stdout] test tools::physics::tests::ideal_gas_invalid_solve_for_errors ... ok
[INFO] [stdout] test tools::physics::tests::kinematics_accepts_negative_acceleration ... ok
[INFO] [stdout] test tools::numeric::tests::passes_through_nan_and_infinity ... ok
[INFO] [stdout] test tools::physics::tests::kinematics_simple ... ok
[INFO] [stdout] test tools::physics::tests::newtons_force_basic ... ok
[INFO] [stdout] test tools::physics::tests::newtons_force_zero_mass_ok ... ok
[INFO] [stdout] test tools::physics::tests::orbital_velocity_iss_altitude ... ok
[INFO] [stdout] test tools::physics::tests::planck_energy_basic ... ok
[INFO] [stdout] test tools::physics::tests::kinematics_rejects_negative_time ... ok
[INFO] [stdout] test tools::physics::tests::heat_transfer_basic ... ok
[INFO] [stdout] test tools::physics::tests::ideal_gas_solve_for_v ... ok
[INFO] [stdout] test tools::physics::tests::planck_energy_zero_frequency_ok ... ok
[INFO] [stdout] test tools::physics::tests::projectile_backward_launch_signed_range ... ok
[INFO] [stdout] test tools::physics::tests::projectile_rejects_angle_above_180 ... ok
[INFO] [stdout] test tools::physics::tests::projectile_rejects_negative_angle ... ok
[INFO] [stdout] test tools::physics::tests::projectile_vertical_launch_zero_range ... ok
[INFO] [stdout] test tools::physics::tests::stefan_boltzmann_blackbody ... ok
[INFO] [stdout] test tools::physics::tests::stefan_boltzmann_emissivity_out_of_range ... ok
[INFO] [stdout] test tools::physics::tests::planck_energy_rejects_negative_frequency ... ok
[INFO] [stdout] test tools::physics::tests::stefan_boltzmann_rejects_negative_area ... ok
[INFO] [stdout] test tools::physics::tests::wave_length_rejects_negative_frequency ... ok
[INFO] [stdout] test tools::physics::tests::wave_length_speed_of_light_at_1_mhz ... ok
[INFO] [stdout] test tools::physics::tests::wave_length_rejects_negative_wave_speed ... ok
[INFO] [stdout] test tools::physics::tests::newtons_force_rejects_negative_mass ... ok
[INFO] [stdout] test tools::printing::tests::clear_resets_total ... ok
[INFO] [stdout] test tools::printing::tests::err_division_by_zero ... ok
[INFO] [stdout] test tools::printing::tests::err_empty_input ... ok
[INFO] [stdout] test tools::printing::tests::err_missing_op_field ... ok
[INFO] [stdout] test tools::printing::tests::err_missing_value_field ... ok
[INFO] [stdout] test tools::printing::tests::err_not_a_json_array ... ok
[INFO] [stdout] test tools::printing::tests::multiply_divide_and_grand_total ... ok
[INFO] [stdout] test tools::printing::tests::numeric_value_accepted ... ok
[INFO] [stdout] test tools::printing::tests::single_add_structure ... ok
[INFO] [stdout] test tools::physics::tests::projectile_45deg_optimal_range ... ok
[INFO] [stdout] test tools::physics::tests::projectile_negative_speed_errors ... ok
[INFO] [stdout] test tools::printing::tests::add_and_subtract_with_subtotal ... ok
[INFO] [stdout] test tools::printing::tests::err_unknown_control_op ... ok
[INFO] [stdout] test tools::programmable::tests::eval_vars_accepts_numeric_string ... ok
[INFO] [stdout] test tools::programmable::tests::eval_vars_empty_object_is_valid ... ok
[INFO] [stdout] test tools::programmable::tests::eval_vars_power ... ok
[INFO] [stdout] test tools::programmable::tests::eval_vars_invalid_json_is_error ... ok
[INFO] [stdout] test tools::programmable::tests::eval_vars_empty_expression_is_error ... ok
[INFO] [stdout] test tools::programmable::tests::eval_vars_float_values ... ok
[INFO] [stdout] test tools::programmable::tests::eval_vars_unknown_variable_is_error ... ok
[INFO] [stdout] test tools::programmable::tests::eval_vars_rejects_non_numeric_string ... ok
[INFO] [stdout] test tools::programmable::tests::eval_vars_simple ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_blank_is_error ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_exact_avoids_binary_drift ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_exact_factorial_over_cap_is_out_of_range ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_decimal_result_has_no_trailing_zero ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_empty_is_error ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_exact_empty_is_error ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_exact_large_exponent_fractional_base_converges_to_e ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_exact_integer_arithmetic ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_exact_log_of_negative_is_domain_error ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_exact_log10_of_zero_is_domain_error ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_exact_log_of_zero_is_domain_error ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_exact_power_small_integer_stays_exact ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_exact_vars_empty_object_is_valid ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_exact_sqrt_of_negative_is_domain_error ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_exact_unknown_function_is_error ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_exact_unknown_variable_is_error ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_exact_vars_unknown_variable_is_error ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_exact_with_variables_rejects_reserved_e ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_exact_vars_rejects_non_scalar_value ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_exact_vars_invalid_json_is_error ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_exact_vars_number_value_works ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_exact_vars_string_value_round_trips ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_factorial_over_cap_is_out_of_range ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_unknown_variable_is_error ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_with_variables_rejects_reserved_pi ... ok
[INFO] [stdout] test tools::scientific::tests::cos_ninety ... ok
[INFO] [stdout] test tools::scientific::tests::cos_one_eighty ... ok
[INFO] [stdout] test tools::scientific::tests::cos_sixty ... ok
[INFO] [stdout] test tools::scientific::tests::cos_zero ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_trig_exact ... ok
[INFO] [stdout] test tools::scientific::tests::factorial_above_range_reports_error ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_unknown_function_is_error ... ok
[INFO] [stdout] test tools::scientific::tests::factorial_fifty_digits_match_reference ... ok
[INFO] [stdout] test tools::scientific::tests::factorial_five ... ok
[INFO] [stdout] test tools::scientific::tests::factorial_max_input_fits_in_payload ... ok
[INFO] [stdout] test tools::scientific::tests::factorial_hundred_ends_with_expected_trailing_zeros ... ok
[INFO] [stdout] test tools::scientific::tests::factorial_negative_reports_error ... ok
[INFO] [stdout] test tools::scientific::tests::factorial_one ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_integer_arithmetic ... ok
[INFO] [stdout] test tools::programmable::tests::evaluate_negative_base_fractional_exp_is_domain_error ... ok
[INFO] [stdout] test tools::scientific::tests::factorial_twenty ... ok
[INFO] [stdout] test tools::scientific::tests::factorial_twenty_one_now_exact_past_u64 ... ok
[INFO] [stdout] test tools::scientific::tests::factorial_zero ... ok
[INFO] [stdout] test tools::scientific::tests::log10_thousand ... ok
[INFO] [stdout] test tools::scientific::tests::log10_hundred ... ok
[INFO] [stdout] test tools::scientific::tests::log_of_e_is_one ... ok
[INFO] [stdout] test tools::scientific::tests::log_zero_reports_error ... ok
[INFO] [stdout] test tools::scientific::tests::sin_negative_thirty_normalizes_to_three_thirty ... ok
[INFO] [stdout] test tools::scientific::tests::log10_zero_reports_error ... ok
[INFO] [stdout] test tools::scientific::tests::log_negative_reports_error ... ok
[INFO] [stdout] test tools::scientific::tests::sin_non_integer_angle_falls_back ... ok
[INFO] [stdout] test tools::scientific::tests::sin_non_notable_angle_falls_back ... ok
[INFO] [stdout] test tools::scientific::tests::sin_one_eighty ... ok
[INFO] [stdout] test tools::scientific::tests::sin_zero ... ok
[INFO] [stdout] test tools::scientific::tests::sin_forty_five_uses_exact_table ... ok
[INFO] [stdout] test tools::scientific::tests::sin_full_circle_normalizes_to_zero ... ok
[INFO] [stdout] test tools::scientific::tests::sin_thirty ... ok
[INFO] [stdout] test tools::scientific::tests::sqrt_negative_reports_error ... ok
[INFO] [stdout] test tools::scientific::tests::sqrt_perfect_square ... ok
[INFO] [stdout] test tools::scientific::tests::tan_forty_five ... ok
[INFO] [stdout] test tools::scientific::tests::tan_negative_two_seventy_is_asymptote ... ok
[INFO] [stdout] test tools::scientific::tests::tan_two_seventy_is_asymptote ... ok
[INFO] [stdout] test tools::scientific::tests::tan_zero ... ok
[INFO] [stdout] test tools::scientific::tests::tan_ninety_is_asymptote ... ok
[INFO] [stdout] test tools::statistics::tests::binomial_pmf_basic ... ok
[INFO] [stdout] test tools::scientific::tests::sin_ninety ... ok
[INFO] [stdout] test tools::statistics::tests::binomial_pmf_p_one_boundary ... ok
[INFO] [stdout] test tools::scientific::tests::sqrt_irrational ... ok
[INFO] [stdout] test tools::scientific::tests::tan_one_eighty ... ok
[INFO] [stdout] test tools::statistics::tests::confidence_interval_rejects_boundary_levels ... ok
[INFO] [stdout] test tools::statistics::tests::binomial_pmf_invalid_p_errors ... ok
[INFO] [stdout] test tools::statistics::tests::correlation_perfect_negative ... ok
[INFO] [stdout] test tools::statistics::tests::correlation_perfect_positive ... ok
[INFO] [stdout] test tools::statistics::tests::confidence_interval_centered_on_mean ... ok
[INFO] [stdout] test tools::statistics::tests::binomial_pmf_p_zero_boundary ... ok
[INFO] [stdout] test tools::statistics::tests::correlation_constant_series_errors ... ok
[INFO] [stdout] test tools::statistics::tests::correlation_survives_mixed_extreme_scales ... ok
[INFO] [stdout] test tools::statistics::tests::linear_regression_y_equals_2x_plus_1 ... ok
[INFO] [stdout] test tools::statistics::tests::mean_simple ... ok
[INFO] [stdout] test tools::statistics::tests::correlation_unequal_length_errors ... ok
[INFO] [stdout] test tools::statistics::tests::mean_with_negatives ... ok
[INFO] [stdout] test tools::statistics::tests::iqr_basic ... ok
[INFO] [stdout] test tools::statistics::tests::mean_empty_array_errors ... ok
[INFO] [stdout] test tools::statistics::tests::mode_multi_modal ... ok
[INFO] [stdout] test tools::statistics::tests::median_even_length_averages_middles ... ok
[INFO] [stdout] test tools::statistics::tests::mode_single_dominant ... ok
[INFO] [stdout] test tools::statistics::tests::median_odd_length ... ok
[INFO] [stdout] test tools::statistics::tests::normal_cdf_symmetric_about_mean ... ok
[INFO] [stdout] test tools::statistics::tests::normal_cdf_three_sigma_matches_reference ... ok
[INFO] [stdout] test tools::statistics::tests::normal_pdf_at_mean_is_max ... ok
[INFO] [stdout] test tools::statistics::tests::normal_cdf_one_sigma ... ok
[INFO] [stdout] test tools::statistics::tests::percentile_50_matches_median ... ok
[INFO] [stdout] test tools::statistics::tests::quartile_q1_q3 ... ok
[INFO] [stdout] test tools::statistics::tests::stddev_sample_matches_sqrt_variance ... ok
[INFO] [stdout] test tools::statistics::tests::t_test_against_known_mean ... ok
[INFO] [stdout] test tools::statistics::tests::variance_population_for_same_data ... ok
[INFO] [stdout] test tools::statistics::tests::percentile_25_quartile ... ok
[INFO] [stdout] test tools::statistics::tests::variance_sample_default ... ok
[INFO] [stdout] test tools::unit_converter::tests::allows_negative_temperature ... ok
[INFO] [stdout] test tools::unit_converter::tests::allows_negative_voltage ... ok
[INFO] [stdout] test tools::unit_converter::tests::auto_detect_allows_negative_temperature ... ok
[INFO] [stdout] test tools::unit_converter::tests::auto_detect_cross_category_error ... ok
[INFO] [stdout] test tools::unit_converter::tests::auto_detect_km_to_mi ... ok
[INFO] [stdout] test tools::unit_converter::tests::category_parse_case_insensitive ... ok
[INFO] [stdout] test tools::unit_converter::tests::auto_detect_rejects_negative_length ... ok
[INFO] [stdout] test tools::unit_converter::tests::cross_category_unit_in_wrong_category ... ok
[INFO] [stdout] test tools::unit_converter::tests::invalid_number_returns_error ... ok
[INFO] [stdout] test tools::unit_converter::tests::km_to_m_happy_path ... ok
[INFO] [stdout] test tools::unit_converter::tests::rejects_negative_length ... ok
[INFO] [stdout] test tools::unit_converter::tests::rejects_negative_mass ... ok
[INFO] [stdout] test tools::unit_converter::tests::unknown_category_error ... ok
[INFO] [stdout] test tools::statistics::tests::parse_error_in_array_propagates ... ok
[INFO] [stdout] test tools::unit_converter::tests::unknown_unit_error ... ok
[INFO] [stdout] test tools::unit_converter::tests::auto_detect_temperature_celsius_fahrenheit ... ok
[INFO] [stdout] test tools::vector::tests::dot_product_known_identity ... ok
[INFO] [stdout] test tools::vector::tests::dot_product_longer_arrays ... ok
[INFO] [stdout] test tools::vector::tests::dot_product_mismatched_lengths ... ok
[INFO] [stdout] test tools::vector::tests::magnitude_array_many_elements ... ok
[INFO] [stdout] test tools::vector::tests::magnitude_array_pythagoras ... ok
[INFO] [stdout] test tools::vector::tests::dot_product_parse_error ... ok
[INFO] [stdout] test tools::vector::tests::magnitude_array_tiny_components_no_underflow ... ok
[INFO] [stdout] test tools::vector::tests::magnitude_array_empty ... ok
[INFO] [stdout] test tools::vector::tests::magnitude_array_large_components_no_overflow ... ok
[INFO] [stdout] test tools::vector::tests::magnitude_array_pythagorean_scaled ... ok
[INFO] [stdout] test tools::vector::tests::scale_array_invalid_scalar ... ok
[INFO] [stdout] test tools::vector::tests::scale_array_basic ... ok
[INFO] [stdout] test tools::vector::tests::sum_array_basic ... ok
[INFO] [stdout] test tools::vector::tests::sum_array_empty_string_is_invalid_input ... ok
[INFO] [stdout] test tools::vector::tests::scale_array_with_negative_scalar ... ok
[INFO] [stdout] test tools::vector::tests::sum_array_tail_only ... ok
[INFO] [stdout] test tools::vector::tests::sum_array_invalid_input ... ok
[INFO] [stdout] test tools::vector::tests::sum_array_with_fractions ... ok
[INFO] [stdout] test transport::async_stdio::unix::tests::roundtrip_short_message ... ok
[INFO] [stdout] test transport::async_stdio::unix::tests::set_non_blocking_is_idempotent ... ok
[INFO] [stdout] test tools::vector::tests::magnitude_array_3d ... ok
[INFO] [stdout] test transport::async_stdio::unix::tests::reader_waits_for_writer_across_yield ... ok
[INFO] [stdout] test tools::datetime::tests::list_timezones_europe ... ok
[INFO] [stdout] test tools::datetime::tests::list_timezones_unknown_region_errors ... ok
[INFO] [stdout] test tools::datetime::tests::list_timezones_all_keyword ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 887 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.34s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/release/deps/arithma-66bfbaabab5b2431)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests math_calc
[INFO] [stdout] 
[INFO] [stdout] running 2 tests
[INFO] [stdout] test src/engine/expression.rs - engine::expression::evaluate (line 107) ... ok
[INFO] [stdout] test src/engine/expression.rs - engine::expression::evaluate_with_variables (line 122) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 10.97s; merged doctests compilation took 10.96s
[INFO] running `Command { std: "docker" "inspect" "2ab1f8f69ba9495b559f74f1244989b133713eafb15811f38bdd9b4428488c45", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2ab1f8f69ba9495b559f74f1244989b133713eafb15811f38bdd9b4428488c45", kill_on_drop: false }`
[INFO] [stdout] 2ab1f8f69ba9495b559f74f1244989b133713eafb15811f38bdd9b4428488c45
