[INFO] fetching crate sonda-core 1.23.1...
[INFO] testing sonda-core-1.23.1 against 1.100.0-beta.1+cargoflags=--release for beta-release-1.100-2
[INFO] extracting crate sonda-core 1.23.1 into /workspace/builds/worker-3-tc2/source
[INFO] started tweaking crates.io crate sonda-core 1.23.1
[INFO] removed 0 missing examples
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate sonda-core 1.23.1
[INFO] tweaked toml for crates.io crate sonda-core 1.23.1 written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate sonda-core 1.23.1 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate sonda-core 1.23.1 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:173:12
[INFO] [stderr]     |
[INFO] [stderr] 173 | homepage = "https://github.com/davidban77/sonda"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 178 | repository = "https://github.com/davidban77/sonda"
[INFO] [stderr]     |              -------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `sonda-core` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 5a64e70496d181c9a4ba309af13e8032a3e1df37fa94686a3c677e5464f28bbf
[INFO] running `Command { std: "docker" "start" "5a64e70496d181c9a4ba309af13e8032a3e1df37fa94686a3c677e5464f28bbf", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5a64e70496d181c9a4ba309af13e8032a3e1df37fa94686a3c677e5464f28bbf", 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" "5a64e70496d181c9a4ba309af13e8032a3e1df37fa94686a3c677e5464f28bbf" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5a64e70496d181c9a4ba309af13e8032a3e1df37fa94686a3c677e5464f28bbf", 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" "5a64e70496d181c9a4ba309af13e8032a3e1df37fa94686a3c677e5464f28bbf" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:173:12
[INFO] [stderr]     |
[INFO] [stderr] 173 | homepage = "https://github.com/davidban77/sonda"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 178 | repository = "https://github.com/davidban77/sonda"
[INFO] [stderr]     |              -------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `sonda-core` (manifest) generated 1 warning
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling syn v3.0.3
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling serde_ignored v0.1.14
[INFO] [stderr]    Compiling thiserror-impl v2.0.20
[INFO] [stderr]    Compiling async-trait v0.1.92
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling thiserror v2.0.20
[INFO] [stderr]    Compiling tokio v1.53.1
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling serde_yaml_ng v0.10.0
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling tokio-util v0.7.19
[INFO] [stderr]    Compiling sonda-core v1.23.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 50.95s
[INFO] running `Command { std: "docker" "inspect" "5a64e70496d181c9a4ba309af13e8032a3e1df37fa94686a3c677e5464f28bbf", 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" "5a64e70496d181c9a4ba309af13e8032a3e1df37fa94686a3c677e5464f28bbf" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:173:12
[INFO] [stderr]     |
[INFO] [stderr] 173 | homepage = "https://github.com/davidban77/sonda"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 178 | repository = "https://github.com/davidban77/sonda"
[INFO] [stderr]     |              -------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `sonda-core` (manifest) generated 1 warning
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling ref-cast v1.0.26
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling winnow v1.0.1
[INFO] [stderr]    Compiling cc v1.2.58
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling num-integer v0.1.47
[INFO] [stderr]    Compiling num-complex v0.4.6
[INFO] [stderr]    Compiling ref-cast-impl v1.0.26
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling rstest_macros v0.26.1
[INFO] [stderr]    Compiling regex-automata v0.4.18
[INFO] [stderr]    Compiling unicode-general-category v1.1.0
[INFO] [stderr]    Compiling borrow-or-share v0.2.4
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling clap_builder v4.6.6
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling num-bigint v0.4.8
[INFO] [stderr]    Compiling num-iter v0.1.46
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling vte v0.14.1
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling num-cmp v0.1.0
[INFO] [stderr]    Compiling micromap v0.3.0
[INFO] [stderr]    Compiling glob v0.3.3
[INFO] [stderr]    Compiling relative-path v1.9.3
[INFO] [stderr]    Compiling bytecount v0.6.9
[INFO] [stderr]    Compiling uuid-simd v0.8.0
[INFO] [stderr]    Compiling strip-ansi-escapes v0.2.1
[INFO] [stderr]    Compiling page_size v0.6.0
[INFO] [stderr]    Compiling console v0.16.3
[INFO] [stderr]    Compiling jsonschema-regex v0.52.1
[INFO] [stderr]    Compiling similar v2.7.0
[INFO] [stderr]    Compiling sysinfo v0.39.6
[INFO] [stderr]    Compiling alloca v0.4.0
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling toml_edit v0.25.11+spec-1.1.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling num-rational v0.4.2
[INFO] [stderr]    Compiling proc-macro-crate v3.5.0
[INFO] [stderr]    Compiling num v0.4.3
[INFO] [stderr]    Compiling fraction v0.17.0
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling clap v4.6.6
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zerocopy-derive v0.8.48
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling strum_macros v0.28.0
[INFO] [stderr]    Compiling tracing-test-macro v0.2.6
[INFO] [stderr]    Compiling tokio v1.53.1
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling fancy-regex v0.19.0
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling zerocopy v0.8.48
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling strum v0.28.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling rstest v0.26.1
[INFO] [stderr]    Compiling fluent-uri v0.4.1
[INFO] [stderr]    Compiling serde_yaml_ng v0.10.0
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling email_address v0.2.9
[INFO] [stderr]    Compiling insta v1.48.0
[INFO] [stderr]    Compiling tracing-test v0.2.6
[INFO] [stderr]    Compiling tokio-util v0.7.19
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling referencing v0.52.1
[INFO] [stderr]    Compiling jsonschema-value v0.52.1
[INFO] [stderr]    Compiling sonda-core v1.23.1 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling criterion v0.8.2
[INFO] [stderr]    Compiling jsonschema v0.52.0
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> tests/compile_after_fixtures.rs:68:33
[INFO] [stdout]    |
[INFO] [stdout] 68 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(compiled));
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: `#[warn(semicolon_in_expressions_from_non_local_macros)]` (part of `#[warn(future_incompatible)]`) on by default
[INFO] [stdout]    = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> tests/compile_after_fixtures.rs:79:33
[INFO] [stdout]    |
[INFO] [stdout] 79 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(compiled));
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> tests/compile_after_fixtures.rs:90:33
[INFO] [stdout]    |
[INFO] [stdout] 90 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(compiled));
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]    --> tests/compile_after_fixtures.rs:104:33
[INFO] [stdout]     |
[INFO] [stdout] 104 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(compiled));
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]    --> tests/compile_after_fixtures.rs:116:33
[INFO] [stdout]     |
[INFO] [stdout] 116 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(compiled));
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]    --> tests/compile_after_fixtures.rs:142:33
[INFO] [stdout]     |
[INFO] [stdout] 142 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(compiled));
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]    --> tests/fixture_examples.rs:233:33
[INFO] [stdout]     |
[INFO] [stdout] 233 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(normalized));
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]     = note: `#[warn(semicolon_in_expressions_from_non_local_macros)]` (part of `#[warn(future_incompatible)]`) on by default
[INFO] [stdout]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]    --> tests/fixture_examples.rs:251:33
[INFO] [stdout]     |
[INFO] [stdout] 251 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(normalized));
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]    --> tests/fixture_examples.rs:282:33
[INFO] [stdout]     |
[INFO] [stdout] 282 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(normalized));
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> tests/compile_snapshot.rs:83:33
[INFO] [stdout]    |
[INFO] [stdout] 83 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(entries));
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: `#[warn(semicolon_in_expressions_from_non_local_macros)]` (part of `#[warn(future_incompatible)]`) on by default
[INFO] [stdout]    = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> tests/compile_snapshot.rs:94:33
[INFO] [stdout]    |
[INFO] [stdout] 94 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(prepared_view(&prepared)));
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]    --> tests/compile_snapshot.rs:108:33
[INFO] [stdout]     |
[INFO] [stdout] 108 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(entries));
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]    --> tests/compile_snapshot.rs:119:33
[INFO] [stdout]     |
[INFO] [stdout] 119 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(prepared_view(&prepared)));
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]    --> tests/compile_snapshot.rs:133:33
[INFO] [stdout]     |
[INFO] [stdout] 133 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(entries));
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]    --> tests/compile_snapshot.rs:144:33
[INFO] [stdout]     |
[INFO] [stdout] 144 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(prepared_view(&prepared)));
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]    --> tests/compile_snapshot.rs:158:33
[INFO] [stdout]     |
[INFO] [stdout] 158 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(entries));
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]    --> tests/compile_snapshot.rs:169:33
[INFO] [stdout]     |
[INFO] [stdout] 169 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(prepared_view(&prepared)));
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]    --> tests/compile_snapshot.rs:183:33
[INFO] [stdout]     |
[INFO] [stdout] 183 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(entries));
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]    --> tests/compile_snapshot.rs:194:33
[INFO] [stdout]     |
[INFO] [stdout] 194 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(prepared_view(&prepared)));
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> tests/expand_fixtures.rs:44:33
[INFO] [stdout]    |
[INFO] [stdout] 44 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(expanded));
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: `#[warn(semicolon_in_expressions_from_non_local_macros)]` (part of `#[warn(future_incompatible)]`) on by default
[INFO] [stdout]    = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> tests/expand_fixtures.rs:84:33
[INFO] [stdout]    |
[INFO] [stdout] 84 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(expanded));
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> tests/expand_fixtures.rs:99:33
[INFO] [stdout]    |
[INFO] [stdout] 99 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(expanded));
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 4m 13s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: sonda-core v1.23.1 (/opt/rustwide/workdir)
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 5`
[INFO] running `Command { std: "docker" "inspect" "5a64e70496d181c9a4ba309af13e8032a3e1df37fa94686a3c677e5464f28bbf", 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" "5a64e70496d181c9a4ba309af13e8032a3e1df37fa94686a3c677e5464f28bbf" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:173:12
[INFO] [stderr]     |
[INFO] [stderr] 173 | homepage = "https://github.com/davidban77/sonda"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 178 | repository = "https://github.com/davidban77/sonda"
[INFO] [stderr]     |              -------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `sonda-core` (manifest) generated 1 warning
[INFO] [stderr] warning: trailing semicolon in macro used in expression position
[INFO] [stderr]   --> tests/expand_fixtures.rs:44:33
[INFO] [stderr]    |
[INFO] [stderr] 44 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(expanded));
[INFO] [stderr]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stderr]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stderr]    = note: `#[warn(semicolon_in_expressions_from_non_local_macros)]` (part of `#[warn(future_incompatible)]`) on by default
[INFO] [stderr]    = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: trailing semicolon in macro used in expression position
[INFO] [stderr]   --> tests/expand_fixtures.rs:84:33
[INFO] [stderr]    |
[INFO] [stderr] 84 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(expanded));
[INFO] [stderr]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stderr]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stderr]    = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: trailing semicolon in macro used in expression position
[INFO] [stderr]   --> tests/expand_fixtures.rs:99:33
[INFO] [stderr]    |
[INFO] [stderr] 99 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(expanded));
[INFO] [stderr]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stderr]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stderr]    = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: trailing semicolon in macro used in expression position
[INFO] [stderr]   --> tests/compile_after_fixtures.rs:68:33
[INFO] [stderr]    |
[INFO] [stderr] 68 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(compiled));
[INFO] [stderr]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stderr]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stderr]    = note: `#[warn(semicolon_in_expressions_from_non_local_macros)]` (part of `#[warn(future_incompatible)]`) on by default
[INFO] [stderr]    = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: trailing semicolon in macro used in expression position
[INFO] [stderr]   --> tests/compile_after_fixtures.rs:79:33
[INFO] [stderr]    |
[INFO] [stderr] 79 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(compiled));
[INFO] [stderr]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stderr]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stderr]    = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: trailing semicolon in macro used in expression position
[INFO] [stderr]   --> tests/compile_after_fixtures.rs:90:33
[INFO] [stderr]    |
[INFO] [stderr] 90 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(compiled));
[INFO] [stderr]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stderr]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stderr]    = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: trailing semicolon in macro used in expression position
[INFO] [stderr]    --> tests/compile_after_fixtures.rs:104:33
[INFO] [stderr]     |
[INFO] [stderr] 104 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(compiled));
[INFO] [stderr]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stderr]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stderr]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: trailing semicolon in macro used in expression position
[INFO] [stderr]    --> tests/compile_after_fixtures.rs:116:33
[INFO] [stderr]     |
[INFO] [stderr] 116 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(compiled));
[INFO] [stderr]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stderr]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stderr]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: trailing semicolon in macro used in expression position
[INFO] [stderr]    --> tests/compile_after_fixtures.rs:142:33
[INFO] [stderr]     |
[INFO] [stderr] 142 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(compiled));
[INFO] [stderr]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stderr]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stderr]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: `sonda-core` (test "expand_fixtures") generated 3 warnings
[INFO] [stderr] warning: `sonda-core` (test "compile_after_fixtures") generated 6 warnings
[INFO] [stderr] warning: trailing semicolon in macro used in expression position
[INFO] [stderr]    --> tests/fixture_examples.rs:233:33
[INFO] [stderr]     |
[INFO] [stderr] 233 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(normalized));
[INFO] [stderr]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stderr]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stderr]     = note: `#[warn(semicolon_in_expressions_from_non_local_macros)]` (part of `#[warn(future_incompatible)]`) on by default
[INFO] [stderr]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: trailing semicolon in macro used in expression position
[INFO] [stderr]    --> tests/fixture_examples.rs:251:33
[INFO] [stderr]     |
[INFO] [stderr] 251 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(normalized));
[INFO] [stderr]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stderr]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stderr]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: trailing semicolon in macro used in expression position
[INFO] [stderr]    --> tests/fixture_examples.rs:282:33
[INFO] [stderr]     |
[INFO] [stderr] 282 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(normalized));
[INFO] [stderr]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stderr]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stderr]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: trailing semicolon in macro used in expression position
[INFO] [stderr]   --> tests/compile_snapshot.rs:83:33
[INFO] [stderr]    |
[INFO] [stderr] 83 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(entries));
[INFO] [stderr]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stderr]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stderr]    = note: `#[warn(semicolon_in_expressions_from_non_local_macros)]` (part of `#[warn(future_incompatible)]`) on by default
[INFO] [stderr]    = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: trailing semicolon in macro used in expression position
[INFO] [stderr]   --> tests/compile_snapshot.rs:94:33
[INFO] [stderr]    |
[INFO] [stderr] 94 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(prepared_view(&prepared)));
[INFO] [stderr]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stderr]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stderr]    = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: trailing semicolon in macro used in expression position
[INFO] [stderr]    --> tests/compile_snapshot.rs:108:33
[INFO] [stderr]     |
[INFO] [stderr] 108 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(entries));
[INFO] [stderr]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stderr]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stderr]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: trailing semicolon in macro used in expression position
[INFO] [stderr]    --> tests/compile_snapshot.rs:119:33
[INFO] [stderr]     |
[INFO] [stderr] 119 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(prepared_view(&prepared)));
[INFO] [stderr]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stderr]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stderr]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: trailing semicolon in macro used in expression position
[INFO] [stderr]    --> tests/compile_snapshot.rs:133:33
[INFO] [stderr]     |
[INFO] [stderr] 133 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(entries));
[INFO] [stderr]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stderr]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stderr]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: trailing semicolon in macro used in expression position
[INFO] [stderr]    --> tests/compile_snapshot.rs:144:33
[INFO] [stderr]     |
[INFO] [stderr] 144 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(prepared_view(&prepared)));
[INFO] [stderr]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stderr]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stderr]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: trailing semicolon in macro used in expression position
[INFO] [stderr]    --> tests/compile_snapshot.rs:158:33
[INFO] [stderr]     |
[INFO] [stderr] 158 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(entries));
[INFO] [stderr]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stderr]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stderr]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: trailing semicolon in macro used in expression position
[INFO] [stderr]    --> tests/compile_snapshot.rs:169:33
[INFO] [stderr]     |
[INFO] [stderr] 169 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(prepared_view(&prepared)));
[INFO] [stderr]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stderr]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stderr]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: trailing semicolon in macro used in expression position
[INFO] [stderr]    --> tests/compile_snapshot.rs:183:33
[INFO] [stderr]     |
[INFO] [stderr] 183 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(entries));
[INFO] [stderr]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stderr]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stderr]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: trailing semicolon in macro used in expression position
[INFO] [stderr]    --> tests/compile_snapshot.rs:194:33
[INFO] [stderr]     |
[INFO] [stderr] 194 |     snapshot_settings().bind(|| insta::assert_json_snapshot!(prepared_view(&prepared)));
[INFO] [stderr]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stderr]     = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stderr]     = note: this warning originates in the macro `insta::assert_json_snapshot` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stderr] 
[INFO] [stderr] warning: `sonda-core` (test "fixture_examples") generated 3 warnings
[INFO] [stderr] warning: `sonda-core` (test "compile_snapshot") generated 10 warnings
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.36s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: sonda-core v1.23.1 (/opt/rustwide/workdir)
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 6`
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/build/sonda-core/dc80b8ef976da315/out/sonda_core-dc80b8ef976da315)
[INFO] [stdout] 
[INFO] [stdout] running 2084 tests
[INFO] [stdout] test acquire::csv_out::tests::carriage_return_is_refused_too ... ok
[INFO] [stdout] test acquire::csv_out::tests::a_reported_nan_is_a_value_and_is_never_written_as_absence ... ok
[INFO] [stdout] test acquire::csv_out::tests::a_label_key_containing_the_delimiter_is_refused_rather_than_mangled ... ok
[INFO] [stdout] test acquire::csv_out::tests::a_gap_is_written_as_a_blank_and_still_holds_its_row ... ok
[INFO] [stdout] test acquire::csv_out::tests::hostile_label_keys_survive_the_round_trip::case_02_backslash ... ok
[INFO] [stdout] test acquire::csv_out::tests::hostile_label_keys_survive_the_round_trip::case_01_quote ... ok
[INFO] [stdout] test acquire::csv_out::tests::an_empty_label_key_is_refused_somewhere_in_the_path ... ok
[INFO] [stdout] test acquire::csv_out::tests::a_query_that_dropped_the_metric_name_emits_a_nameless_header ... ok
[INFO] [stdout] test acquire::csv_out::tests::hostile_metric_names_survive_the_round_trip::case_1_quote ... ok
[INFO] [stdout] test acquire::csv_out::tests::hostile_label_keys_survive_the_round_trip::case_03_close_brace ... ok
[INFO] [stdout] test acquire::csv_out::tests::hostile_label_keys_survive_the_round_trip::case_08_unicode ... ok
[INFO] [stdout] test acquire::csv_out::tests::hostile_label_keys_survive_the_round_trip::case_07_colon ... ok
[INFO] [stdout] test acquire::csv_out::tests::hostile_label_keys_survive_the_round_trip::case_05_space ... ok
[INFO] [stdout] test acquire::csv_out::tests::hostile_label_keys_survive_the_round_trip::case_04_open_brace ... ok
[INFO] [stdout] test acquire::csv_out::tests::a_column_with_no_gaps_declares_no_windows ... ok
[INFO] [stdout] test acquire::csv_out::tests::hostile_label_keys_survive_the_round_trip::case_06_comma ... ok
[INFO] [stdout] test acquire::csv_out::tests::a_value_that_is_itself_a_label_block_does_not_escape_its_field ... ok
[INFO] [stdout] test acquire::csv_out::tests::hostile_label_keys_survive_the_round_trip::case_09_leading_digit ... ok
[INFO] [stdout] test acquire::csv_out::tests::a_capture_with_gaps_round_trips_through_the_real_reader_and_cross_check ... ok
[INFO] [stdout] test acquire::csv_out::tests::hostile_label_values_survive_both_escaping_layers ... ok
[INFO] [stdout] test acquire::csv_out::tests::hostile_label_keys_survive_the_round_trip::case_10_plain ... ok
[INFO] [stdout] test acquire::csv_out::tests::hostile_metric_names_survive_the_round_trip::case_6_unicode ... ok
[INFO] [stdout] test acquire::csv_out::tests::newline_in_a_label_value_is_refused_with_the_label_named ... ok
[INFO] [stdout] test acquire::csv_out::tests::hostile_metric_names_survive_the_round_trip::case_2_brace ... ok
[INFO] [stdout] test acquire::normalize::tests::a_complete_series_resamples_to_its_own_values ... ok
[INFO] [stdout] test acquire::normalize::tests::a_reported_infinity_is_a_sample_too ... ok
[INFO] [stdout] test acquire::csv_out::tests::hostile_metric_names_survive_the_round_trip::case_3_comma ... ok
[INFO] [stdout] test acquire::csv_out::tests::hostile_metric_names_survive_the_round_trip::case_5_space ... ok
[INFO] [stdout] test acquire::csv_out::tests::hostile_metric_names_survive_the_round_trip::case_7_plain ... ok
[INFO] [stdout] test acquire::csv_out::tests::hostile_metric_names_survive_the_round_trip::case_4_equals ... ok
[INFO] [stdout] test acquire::csv_out::tests::one_window_per_run_not_per_absent_row ... ok
[INFO] [stdout] test acquire::csv_out::tests::plain_labels_round_trip_through_the_real_parser ... ok
[INFO] [stdout] test acquire::normalize::tests::grid_point_n_is_exactly_start_plus_n_times_step ... ok
[INFO] [stdout] test acquire::normalize::tests::a_reported_nan_is_a_sample_and_a_missing_one_is_not ... ok
[INFO] [stdout] test acquire::normalize::tests::a_range_that_is_not_a_whole_multiple_stops_short_of_end ... ok
[INFO] [stdout] test acquire::normalize::tests::a_missing_sample_becomes_absent_and_does_not_shift_its_neighbours ... ok
[INFO] [stdout] test acquire::csv_out::tests::timestamps_are_the_grid_and_values_line_up_with_them ... ok
[INFO] [stdout] test acquire::csv_out::tests::values_round_trip_through_f64_parse_without_precision_loss ... ok
[INFO] [stdout] test acquire::csv_out::tests::several_series_become_several_columns_in_a_stable_order ... ok
[INFO] [stdout] test acquire::csv_out::tests::the_emitted_file_is_detected_as_having_a_header ... ok
[INFO] [stdout] test acquire::normalize::tests::resampling_never_fabricates_a_value_between_two_samples ... ok
[INFO] [stdout] test acquire::normalize::tests::a_sample_far_off_grid_is_not_snapped_onto_it ... ok
[INFO] [stdout] test acquire::normalize::tests::sub_millisecond_jitter_still_lands_on_its_grid_point ... ok
[INFO] [stdout] test acquire::response::tests::a_query_error_surfaces_the_servers_own_message ... ok
[INFO] [stdout] test acquire::response::tests::an_empty_result_is_success_with_no_series ... ok
[INFO] [stdout] test acquire::response::tests::an_instant_query_result_is_rejected_with_a_useful_reason ... ok
[INFO] [stdout] test acquire::response::tests::malformed_bodies_produce_clean_errors_not_panics ... ok
[INFO] [stdout] test acquire::response::tests::non_finite_values_survive_verbatim ... ok
[INFO] [stdout] test acquire::response::tests::parses_labels_and_samples ... ok
[INFO] [stdout] test acquire::yaml_out::tests::a_series_with_no_metric_name_is_refused_with_the_reason ... ok
[INFO] [stdout] test acquire::normalize::tests::float_error_does_not_lose_the_last_grid_point ... ok
[INFO] [stdout] test acquire::normalize::tests::rejects_non_positive_step_and_inverted_range ... ok
[INFO] [stdout] test acquire::yaml_out::tests::a_timescale_is_emitted_only_when_it_is_not_one ... ok
[INFO] [stdout] test acquire::yaml_out::tests::a_timescale_moves_rate_duration_and_windows_together ... ok
[INFO] [stdout] test acquire::yaml_out::tests::a_timescale_that_is_not_a_positive_number_is_refused ... ok
[INFO] [stdout] test acquire::yaml_out::tests::columns_are_offset_past_the_timestamp_column ... ok
[INFO] [stdout] test acquire::yaml_out::tests::distinct_names_sharing_an_absence_pattern_still_share_a_block ... ok
[INFO] [stdout] test acquire::yaml_out::tests::emitted_header_states_that_rate_is_derived ... ok
[INFO] [stdout] test acquire::yaml_out::tests::columns_sharing_an_absence_pattern_share_a_block_and_others_do_not ... ok
[INFO] [stdout] test acquire::yaml_out::tests::columns_split_by_name_keep_their_own_silence ... ok
[INFO] [stdout] test analysis::pattern::tests::detect_linear_climb ... ok
[INFO] [stdout] test acquire::yaml_out::tests::every_block_sets_repeat_false_even_with_no_silence_to_declare ... ok
[INFO] [stdout] test acquire::yaml_out::tests::nothing_emitted_carries_jitter ... ok
[INFO] [stdout] test analysis::pattern::tests::detect_low_variance_as_steady ... ok
[INFO] [stdout] test acquire::yaml_out::tests::the_emitted_scenario_compiles_and_loads_its_own_capture ... ok
[INFO] [stdout] test acquire::yaml_out::tests::zero_series_is_refused_rather_than_emitting_an_empty_scenario ... ok
[INFO] [stdout] test analysis::pattern::tests::detect_constant_values_as_steady ... ok
[INFO] [stdout] test analysis::pattern::tests::empty_values_returns_steady_zero ... ok
[INFO] [stdout] test analysis::pattern::tests::detect_noisy_climb ... ok
[INFO] [stdout] test analysis::pattern::tests::detect_sawtooth_pattern ... ok
[INFO] [stdout] test analysis::pattern::tests::detect_flap_pattern ... ok
[INFO] [stdout] test analysis::pattern::tests::name_returns_flap_for_flap_variant ... ok
[INFO] [stdout] test acquire::normalize::tests::samples_outside_the_window_are_dropped_not_folded_in ... ok
[INFO] [stdout] test acquire::yaml_out::tests::a_timescaled_capture_still_compiles_and_loads_its_own_file ... ok
[INFO] [stdout] test analysis::pattern::tests::name_returns_climb_for_climb_variant ... ok
[INFO] [stdout] test acquire::yaml_out::tests::one_metric_across_several_label_sets_splits_rather_than_colliding ... ok
[INFO] [stdout] test acquire::normalize::tests::a_series_with_no_samples_at_all_is_all_gap ... ok
[INFO] [stdout] test acquire::normalize::tests::counter_reset_is_carried_through_verbatim ... ok
[INFO] [stdout] test analysis::pattern::tests::name_returns_sawtooth_for_sawtooth_variant ... ok
[INFO] [stdout] test analysis::pattern::tests::name_returns_spike_for_spike_variant ... ok
[INFO] [stdout] test analysis::pattern::tests::pattern_detection_is_deterministic ... ok
[INFO] [stdout] test analysis::pattern::tests::name_returns_steady_for_steady_variant ... ok
[INFO] [stdout] test analysis::pattern::tests::name_returns_step_for_step_variant ... ok
[INFO] [stdout] test analysis::pattern::tests::pattern_display_includes_parameters ... ok
[INFO] [stdout] test analysis::pattern::tests::single_value_returns_steady ... ok
[INFO] [stdout] test analysis::pattern::tests::two_values_returns_steady ... ok
[INFO] [stdout] test catalog::builtin::tests::every_declared_name_matches_the_packs_own_name_field ... ok
[INFO] [stdout] test catalog::builtin::tests::no_builtin_is_skipped_by_the_shared_classifier ... ok
[INFO] [stdout] test catalog::builtin::tests::packs_are_sorted_by_name_and_unique ... ok
[INFO] [stdout] test catalog::builtin::tests::resolver_error_names_the_available_builtins ... ok
[INFO] [stdout] test catalog::builtin::tests::the_embedded_set_matches_the_declared_count ... ok
[INFO] [stdout] test catalog::builtin::tests::resolver_returns_a_builtin_by_name ... ok
[INFO] [stdout] test analysis::pattern::tests::detect_monotonic_counter_as_step ... ok
[INFO] [stdout] test catalog::tests::enumerate_errors_on_nonexistent_dir ... ok
[INFO] [stdout] test analysis::pattern::tests::detect_periodic_spikes ... ok
[INFO] [stdout] test catalog::tests::enumerate_skips_an_unreadable_file_and_keeps_the_rest ... ok
[INFO] [stdout] test catalog::tests::enumerate_returns_runnable_and_composable_sorted_by_name ... ok
[INFO] [stdout] test catalog::tests::an_unrecognized_kind_is_reported_with_the_value_the_file_declared ... ok
[INFO] [stdout] test catalog::tests::enumerate_skips_files_without_kind ... ok
[INFO] [stdout] test catalog::tests::resolve_returns_error_for_unknown_name ... ok
[INFO] [stdout] test catalog::tests::merged_marks_a_user_pack_that_shadows_a_builtin_and_drops_the_builtin_row ... ok
[INFO] [stdout] test catalog::tests::merged_with_no_user_dir_is_exactly_the_builtin_set ... ok
[INFO] [stdout] test catalog::tests::enumerate_with_skips_names_the_file_that_has_no_kind_header ... ok
[INFO] [stdout] test catalog::tests::a_non_yaml_file_is_not_reported_as_skipped ... ok
[INFO] [stdout] test catalog::tests::resolver_reports_an_unusable_catalog_dir_instead_of_silently_using_builtins ... ok
[INFO] [stdout] test catalog::tests::resolve_returns_path_for_known_name ... ok
[INFO] [stdout] test catalog::tests::merged_keeps_both_sources_when_no_name_collides ... ok
[INFO] [stdout] test catalog::tests::resolve_finds_a_readable_entry_next_to_an_unreadable_file ... ok
[INFO] [stdout] test catalog::tests::resolver_falls_back_to_the_builtin_catalog_with_no_catalog_dir ... ok
[INFO] [stdout] test catalog::builtin::tests::every_pack_lists_as_a_composable_entry_carrying_a_category ... ok
[INFO] [stdout] test catalog::tests::enumerate_preserves_tags ... ok
[INFO] [stdout] test catalog::tests::resolver_unknown_name_names_both_halves_of_the_chain ... ok
[INFO] [stdout] test catalog::tests::resolver_unknown_name_with_a_catalog_dir_does_not_repeat_the_flag ... ok
[INFO] [stdout] test catalog::tests::resolver_prefers_a_user_dir_pack_over_the_builtin_of_the_same_name ... ok
[INFO] [stdout] test compile::tests::compile_error_is_send_and_sync ... ok
[INFO] [stdout] test catalog::tests::resolver_still_finds_a_builtin_when_the_user_dir_holds_other_packs ... ok
[INFO] [stdout] test catalog::tests::resolver_unknown_name_with_no_catalog_dir_says_how_to_add_one ... ok
[INFO] [stdout] test catalog::tests::enumerate_classifies_runnable_and_composable_kinds ... ok
[INFO] [stdout] test compile::tests::compile_after_failure_surfaces_as_compile_after_variant ... ok
[INFO] [stdout] test compile::tests::normalize_failure_surfaces_as_normalize_variant ... ok
[INFO] [stdout] test compile::tests::expand_failure_surfaces_as_expand_variant ... ok
[INFO] [stdout] test compile::tests::parse_failure_surfaces_as_parse_variant ... ok
[INFO] [stdout] test compile::tests::yaml_with_while_clause_rejected_with_compiled_path_hint ... ok
[INFO] [stdout] test compiler::compile_after::tests::clock_group_auto_assigned_as_chain_plus_lowest_id ... ok
[INFO] [stdout] test compiler::compile_after::tests::clock_group_whitespace_variants_conflict ... ok
[INFO] [stdout] test compiler::compile_after::tests::clock_group_empty_string_mixed_with_some_x_uses_x ... ok
[INFO] [stdout] test compiler::compile_after::tests::dotted_pack_ref_resolves ... ok
[INFO] [stdout] test compiler::compile_after::tests::delay_is_added_to_crossing_time ... ok
[INFO] [stdout] test compiler::compile_after::tests::conflicting_clock_groups_are_rejected ... ok
[INFO] [stdout] test compiler::compile_after::tests::defaults_duration_carries_into_while_compiled_entry ... ok
[INFO] [stdout] test compile::tests::one_shot_compiles_minimal_inline_scenario ... ok
[INFO] [stdout] test compile::tests::yaml_with_delay_clause_rejected_with_compiled_path_hint ... ok
[INFO] [stdout] test compiler::compile_after::tests::ambiguous_bare_pack_ref_is_rejected ... ok
[INFO] [stdout] test compiler::compile_after::tests::explicit_clock_group_propagates_to_chain_members ... ok
[INFO] [stdout] test compiler::compile_after::tests::format_duration_fractional_seconds_round_trip ... ok
[INFO] [stdout] test compiler::compile_after::tests::follower_phase_offset_matches_expected_crossing::case_3_step_greater_than ... ok
[INFO] [stdout] test compiler::compile_after::tests::format_duration_whole_units::case_2_whole_minutes ... ok
[INFO] [stdout] test compiler::compile_after::tests::flap_alias_produces_expected_up_duration_offset ... ok
[INFO] [stdout] test compiler::compile_after::tests::format_duration_whole_units::case_4_zero ... ok
[INFO] [stdout] test compiler::compile_after::tests::follower_phase_offset_matches_expected_crossing::case_4_sequence_less_than ... ok
[INFO] [stdout] test compiler::compile_after::tests::invalid_duration_surfaces_invalid_duration::case_1_after_delay ... ok
[INFO] [stdout] test compiler::compile_after::tests::independent_signals_keep_no_clock_group ... ok
[INFO] [stdout] test compiler::compile_after::tests::format_duration_whole_units::case_3_whole_hours ... ok
[INFO] [stdout] test compiler::compile_after::tests::follower_phase_offset_matches_expected_crossing::case_1_flap_less_than ... ok
[INFO] [stdout] test compiler::compile_after::tests::invalid_duration_surfaces_invalid_duration::case_3_alias_flap_up_duration ... ok
[INFO] [stdout] test compiler::compile_after::tests::log_signal_can_depend_on_metrics_target ... ok
[INFO] [stdout] test compiler::compile_after::tests::outgoing_edges_yields_after_then_while ... ok
[INFO] [stdout] test compiler::compile_after::tests::phase_offset_delay_and_crossing_sum ... ok
[INFO] [stdout] test compiler::compile_after::tests::metrics_entry_cannot_depend_on_logs_target ... ok
[INFO] [stdout] test compiler::compile_after::tests::explicit_phase_offset_is_added ... ok
[INFO] [stdout] test compiler::compile_after::tests::invalid_duration_surfaces_invalid_duration::case_2_phase_offset_zero ... ok
[INFO] [stdout] test compiler::compile_after::tests::saturation_greater_than_sets_offset ... ok
[INFO] [stdout] test compiler::compile_after::tests::self_reference_is_rejected ... ok
[INFO] [stdout] test compiler::compile_after::tests::follower_phase_offset_matches_expected_crossing::case_2_spike_event_less_than ... ok
[INFO] [stdout] test compiler::compile_after::tests::self_while_reference_is_rejected_with_while_kind ... ok
[INFO] [stdout] test compiler::compile_after::tests::format_duration_whole_units::case_5_negative_zero ... ok
[INFO] [stdout] test compiler::compile_after::tests::two_entry_cycle_is_detected ... ok
[INFO] [stdout] test compiler::compile_after::tests::step_less_than_is_unsupported ... ok
[INFO] [stdout] test compiler::compile_after::tests::three_entry_cycle_path_is_returned ... ok
[INFO] [stdout] test compiler::compile_after::tests::transitive_chain_accumulates ... ok
[INFO] [stdout] test compiler::compile_after::tests::mixed_after_while_cycle_uses_labeled_format ... ok
[INFO] [stdout] test compiler::compile_after::tests::unresolvable_target_generator_is_rejected::case_1_constant ... ok
[INFO] [stdout] test compiler::compile_after::tests::unresolvable_target_generator_is_rejected::case_2_sine ... ok
[INFO] [stdout] test acquire::yaml_out::tests::a_step_that_is_not_a_whole_millisecond_still_round_trips_at_length ... ok
[INFO] [stdout] test compiler::compile_after::tests::while_against_log_template_upstream_is_rejected_as_non_metrics ... ok
[INFO] [stdout] test compiler::compile_after::tests::unknown_ref_surfaces_available_ids ... ok
[INFO] [stdout] test compiler::compile_after::tests::while_against_csv_replay_upstream_is_rejected ... ok
[INFO] [stdout] test compiler::compile_after::tests::while_strict_operators_reject_non_strict::case_4_ne ... ok
[INFO] [stdout] test compiler::compile_after::tests::pure_after_cycle_keeps_short_arrow_format ... ok
[INFO] [stdout] test compiler::compile_after::tests::format_duration_whole_units::case_1_whole_seconds ... ok
[INFO] [stdout] test acquire::csv_out::tests::the_window_boundary_survives_steps_that_break_the_obvious_encoding ... ok
[INFO] [stdout] test compiler::compile_after::tests::while_with_cross_scenario_name_and_unknown_ref_defers ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::default_may_contain_colons_slashes_and_query_strings ... ok
[INFO] [stdout] test compiler::compile_after::tests::unresolvable_target_generator_is_rejected::case_3_steady ... ok
[INFO] [stdout] test compiler::compile_after::tests::while_strict_operators_reject_non_strict::case_2_ge ... ok
[INFO] [stdout] test compiler::compile_after::tests::unresolvable_target_generator_is_rejected::case_4_uniform ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::dollar_followed_by_non_special_char_passes_through ... ok
[INFO] [stdout] test compiler::compile_after::tests::while_strict_operators_reject_non_strict::case_3_eq ... ok
[INFO] [stdout] test compiler::compile_after::tests::while_against_nan_constant_is_rejected ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::empty_default_is_allowed ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::dollar_dollar_escape_produces_literal_dollar ... ok
[INFO] [stdout] test compiler::compile_after::tests::while_targeting_logs_signal_is_rejected ... ok
[INFO] [stdout] test compiler::compile_after::tests::while_against_nan_sequence_value_is_rejected ... ok
[INFO] [stdout] test compiler::compile_after::tests::while_strict_operators_reject_non_strict::case_1_le ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::interpolate_uses_process_env ... ok
[INFO] [stdout] test compiler::compile_after::tests::while_with_self_scenario_name_and_typo_ref_errors ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::error_type_is_send_and_sync ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::input_without_references_is_unchanged ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::malformed_empty_name_returns_error ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::long_default_with_special_chars ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::malformed_unterminated_reference_returns_error ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::empty_input_returns_empty_output ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::multi_line_input_reports_correct_line_for_unset_var ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::dollar_dollar_does_not_consume_following_brace ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::optional_var_unset_uses_default ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::multiple_vars_in_one_string_all_substituted ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::lone_dollar_at_eof_passes_through ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::lowercase_name_returns_invalid_name_error ... ok
[INFO] [stdout] test compiler::compile_after::tests::while_with_self_scenario_name_and_local_match_resolves_locally ... ok
[INFO] [stdout] test compiler::compile_after::tests::while_yaml_compiles_and_propagates_clause ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::name_with_invalid_chars_returns_error ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::nested_dollar_brace_inside_default_terminates_at_first_close ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::name_starting_with_digit_returns_error ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::substitution_is_single_pass_not_recursive ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::name_with_digits_after_first_char_is_valid ... ok
[INFO] [stdout] test compiler::expand::tests::a_fold_that_makes_a_name_repeat_without_ids_is_refused ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::name_starting_with_underscore_is_valid ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::non_ascii_input_passes_through_unchanged ... ok
[INFO] [stdout] test compiler::expand::tests::a_bare_override_key_against_a_repeated_name_is_refused ... ok
[INFO] [stdout] test compiler::expand::tests::a_bare_override_key_against_a_unique_name_still_works ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::position_tracks_source_columns_past_a_substitution ... ok
[INFO] [stdout] test compiler::expand::tests::a_chain_resolving_to_no_metrics_is_an_empty_pack ... ok
[INFO] [stdout] test compiler::expand::tests::a_pack_extending_itself_is_refused ... ok
[INFO] [stdout] test compiler::expand::tests::a_name_dot_id_override_key_reaches_exactly_one_spec ... ok
[INFO] [stdout] test compiler::expand::tests::a_missing_leaf_and_a_missing_base_are_different_errors ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::optional_var_set_uses_value_not_default ... ok
[INFO] [stdout] test compiler::expand::tests::a_cycle_the_entry_point_is_not_part_of_is_still_refused ... ok
[INFO] [stdout] test compiler::expand::tests::a_pack_with_a_repeated_name_and_no_ids_is_refused_at_expansion ... ok
[INFO] [stdout] test compiler::expand::tests::an_extends_naming_a_missing_base_says_which_pack_named_it ... ok
[INFO] [stdout] test compiler::expand::tests::classify_pack_reference_distinguishes_name_and_file_path::case_2_dot_relative ... ok
[INFO] [stdout] test compiler::expand::tests::classify_pack_reference_distinguishes_name_and_file_path::case_3_absolute_path ... ok
[INFO] [stdout] test compiler::expand::tests::defaults_labels_flow_into_pack_metric_labels ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::required_var_unset_returns_error_with_position ... ok
[INFO] [stdout] test compiler::env_interpolate::tests::required_var_set_is_substituted ... ok
[INFO] [stdout] test compiler::expand::tests::classify_pack_reference_distinguishes_name_and_file_path::case_1_plain_name ... ok
[INFO] [stdout] test compiler::expand::tests::an_addition_repeating_a_base_selector_names_the_base ... ok
[INFO] [stdout] test compiler::expand::tests::a_two_pack_cycle_is_refused_naming_the_loop ... ok
[INFO] [stdout] test compiler::expand::tests::classify_pack_reference_distinguishes_name_and_file_path::case_4_plain_relative ... ok
[INFO] [stdout] test compiler::expand::tests::a_three_deep_chain_resolves_root_first ... ok
[INFO] [stdout] test compiler::expand::tests::an_override_key_naming_no_spec_lists_the_real_selectors ... ok
[INFO] [stdout] test compiler::expand::tests::in_memory_resolver_classifies_file_paths ... ok
[INFO] [stdout] test compiler::expand::tests::in_memory_resolver_errors_on_missing_reference ... ok
[INFO] [stdout] test compiler::expand::tests::deviations_on_a_pack_that_does_extend_are_applied ... ok
[INFO] [stdout] test compiler::expand::tests::deviations_on_a_pack_with_no_extends_are_refused_not_dropped ... ok
[INFO] [stdout] test compiler::expand::tests::expanded_file_is_send_and_sync ... ok
[INFO] [stdout] test compiler::expand::tests::duplicate_entry_id_error_preserves_both_sources ... ok
[INFO] [stdout] test compiler::expand::tests::expand_produces_one_entry_per_pack_metric ... ok
[INFO] [stdout] test compiler::expand::tests::duplicate_entry_id_detected_regardless_of_source_order::case_1_inline_first_then_auto ... ok
[INFO] [stdout] test compiler::expand::tests::empty_pack_is_an_error ... ok
[INFO] [stdout] test compiler::expand::tests::entry_level_after_propagates_to_every_metric ... ok
[INFO] [stdout] test compiler::expand::tests::entry_level_while_propagates_to_every_metric ... ok
[INFO] [stdout] test compiler::expand::tests::expanded_entries_have_no_pack_field ... ok
[INFO] [stdout] test compiler::expand::tests::duplicate_entry_id_detected_regardless_of_source_order::case_2_auto_first_then_inline ... ok
[INFO] [stdout] test compiler::expand::tests::expanded_signal_type_is_metrics ... ok
[INFO] [stdout] test compiler::expand::tests::in_memory_resolver_returns_registered_pack ... ok
[INFO] [stdout] test compiler::expand::tests::pack_shared_labels_override_defaults_labels ... ok
[INFO] [stdout] test compiler::expand::tests::inline_entries_pass_through_untouched ... ok
[INFO] [stdout] test compiler::expand::tests::label_precedence_chain_applied_in_order ... ok
[INFO] [stdout] test compiler::expand::tests::repeated_metric_names_produce_one_entry_per_spec_instance ... ok
[INFO] [stdout] test compiler::expand::tests::missing_generator_falls_back_to_constant_zero ... ok
[INFO] [stdout] test compiler::expand::tests::override_after_replaces_entry_after_for_that_metric ... ok
[INFO] [stdout] test compiler::expand::tests::schedule_delivery_fields_propagate_to_every_metric ... ok
[INFO] [stdout] test compiler::expand::tests::override_generator_replaces_pack_generator ... ok
[INFO] [stdout] test compiler::expand::tests::mixed_inline_and_pack_entries_interleave_correctly ... ok
[INFO] [stdout] test compiler::expand::tests::override_while_replaces_entry_while_for_that_metric ... ok
[INFO] [stdout] test compiler::expand::tests::sub_signal_ids_follow_effective_entry_id::case_1_user_supplied_entry_id ... ok
[INFO] [stdout] test compiler::expand::tests::pack_by_file_path_is_resolved_through_trait ... ok
[INFO] [stdout] test compiler::expand::tests::the_extension_shared_labels_slot_sits_between_base_and_per_metric ... ok
[INFO] [stdout] test compiler::expand::tests::the_resolved_pack_keeps_the_leafs_identity ... ok
[INFO] [stdout] test compiler::expand::tests::two_anonymous_pack_entries_disambiguate_by_index ... ok
[INFO] [stdout] test compiler::expand::tests::two_override_keys_addressing_one_spec_are_refused ... ok
[INFO] [stdout] test compiler::expand::tests::sub_signal_ids_follow_effective_entry_id::case_2_auto_generated_entry_id ... ok
[INFO] [stdout] test compiler::expand::tests::unresolvable_pack_is_an_error ... ok
[INFO] [stdout] test compiler::expand::tests::unique_metric_names_keep_clean_sub_signal_ids ... ok
[INFO] [stdout] test compiler::normalize::tests::close_snap_to_non_finite_is_rejected_at_compile::case_1_nan ... ok
[INFO] [stdout] test compiler::normalize::tests::after_without_duration_is_rejected ... ok
[INFO] [stdout] test compiler::normalize::tests::after_clause_and_timing_fields_preserved ... ok
[INFO] [stdout] test compiler::expand::tests::unknown_override_key_is_an_error ... ok
[INFO] [stdout] test compiler::normalize::tests::after_with_entry_duration_is_accepted ... ok
[INFO] [stdout] test compiler::compile_after::tests::deep_while_chain_compiles_quickly ... ok
[INFO] [stdout] test compiler::normalize::tests::close_stale_marker_true_rejected_on_non_remote_write_sink::case_2_file ... ok
[INFO] [stdout] test compiler::normalize::tests::close_stale_marker_true_rejected_on_non_remote_write_sink::case_1_stdout ... ok
[INFO] [stdout] test compiler::normalize::tests::close_stale_marker_true_rejected_on_non_remote_write_sink::case_3_tcp ... ok
[INFO] [stdout] test compiler::normalize::tests::close_snap_to_non_finite_is_rejected_at_compile::case_3_neg_inf ... ok
[INFO] [stdout] test compiler::normalize::tests::close_stale_marker_true_rejected_on_non_remote_write_sink::case_4_udp ... ok
[INFO] [stdout] test compiler::normalize::tests::close_stale_marker_unset_is_accepted_on_non_remote_write_sink ... ok
[INFO] [stdout] test compiler::expand::tests::inline_entry_labels_pass_through_unchanged ... ok
[INFO] [stdout] test compiler::expand::tests::repeated_metric_names_produce_unique_sub_signal_ids ... ok
[INFO] [stdout] test compiler::normalize::tests::default_encoder_per_signal_type::case_3_summary ... ok
[INFO] [stdout] test compiler::normalize::tests::default_sink_is_stdout ... ok
[INFO] [stdout] test compiler::normalize::tests::default_encoder_per_signal_type::case_4_logs ... ok
[INFO] [stdout] test compiler::normalize::tests::defaults_duration_satisfies_while_without_duration ... ok
[INFO] [stdout] test compiler::normalize::tests::delay_close_zero_is_accepted ... ok
[INFO] [stdout] test compiler::normalize::tests::delay_without_while_is_rejected ... ok
[INFO] [stdout] test compiler::normalize::tests::empty_scenarios_list_normalizes_to_empty_entries ... ok
[INFO] [stdout] test compiler::normalize::tests::close_snap_to_non_finite_is_rejected_at_compile::case_2_pos_inf ... ok
[INFO] [stdout] test compiler::normalize::tests::defaults_duration_satisfies_after_without_duration ... ok
[INFO] [stdout] test compiler::normalize::tests::close_stale_marker_true_with_snap_to_is_accepted_on_non_remote_write_sink ... ok
[INFO] [stdout] test compiler::normalize::tests::delay_open_zero_is_accepted ... ok
[INFO] [stdout] test compiler::normalize::tests::inline_and_pack_entries_compose_defaults_labels_asymmetrically ... ok
[INFO] [stdout] test compiler::normalize::tests::entry_inherits_encoder_and_sink_from_defaults ... ok
[INFO] [stdout] test compiler::normalize::tests::labels_merge_entry_wins_on_conflict ... ok
[INFO] [stdout] test compiler::normalize::tests::entry_duration_overrides_defaults_duration ... ok
[INFO] [stdout] test compiler::normalize::tests::merge_labels_both_none_returns_none ... ok
[INFO] [stdout] test compiler::normalize::tests::entry_encoder_overrides_defaults_encoder ... ok
[INFO] [stdout] test compiler::normalize::tests::entry_inherits_rate_and_duration_from_defaults ... ok
[INFO] [stdout] test compiler::normalize::tests::entry_rate_overrides_defaults_rate ... ok
[INFO] [stdout] test compiler::normalize::tests::histogram_fields_preserved ... ok
[INFO] [stdout] test compiler::normalize::tests::default_encoder_per_signal_type::case_2_histogram ... ok
[INFO] [stdout] test compiler::normalize::tests::merge_labels_entry_overrides_defaults_on_conflict ... ok
[INFO] [stdout] test compiler::normalize::tests::default_encoder_per_signal_type::case_1_metrics ... ok
[INFO] [stdout] test compiler::normalize::tests::entry_labels_preserved_when_defaults_has_no_labels ... ok
[INFO] [stdout] test compiler::normalize::tests::labels_from_defaults_alone_are_preserved ... ok
[INFO] [stdout] test compiler::normalize::tests::missing_rate_error_label_follows_priority_chain::case_3_pack_falls_back_to_pack_name ... ok
[INFO] [stdout] test compiler::normalize::tests::multi_scenario_mixed_entries_all_normalize ... ok
[INFO] [stdout] test compiler::normalize::tests::merge_labels_only_entry_returns_entry ... ok
[INFO] [stdout] test compiler::normalize::tests::non_after_entry_without_duration_is_accepted ... ok
[INFO] [stdout] test compiler::normalize::tests::missing_rate_error_label_follows_priority_chain::case_2_pack_prefers_id ... ok
[INFO] [stdout] test compiler::normalize::tests::missing_rate_error_label_follows_priority_chain::case_1_inline_uses_name ... ok
[INFO] [stdout] test compiler::normalize::tests::normalize_error_is_send_and_sync ... ok
[INFO] [stdout] test compiler::normalize::tests::normalized_file_defaults_labels_matches_source ... ok
[INFO] [stdout] test compiler::normalize::tests::normalized_types_are_send_and_sync ... ok
[INFO] [stdout] test compiler::normalize::tests::merge_labels_only_defaults_returns_defaults_clone ... ok
[INFO] [stdout] test compiler::normalize::tests::missing_rate_message_mentions_entry_and_hint ... ok
[INFO] [stdout] test compiler::normalize::tests::no_labels_anywhere_produces_none ... ok
[INFO] [stdout] test compiler::normalize::tests::pack_entry_inherits_defaults_but_defers_label_merge ... ok
[INFO] [stdout] test compiler::normalize::tests::shorthand_logs_signal_picks_json_lines_default ... ok
[INFO] [stdout] test compiler::normalize::tests::signal_type_picks_built_in_encoder_and_stdout_sink::case_1_metrics ... ok
[INFO] [stdout] test compiler::parse::tests::cross_post_while_ref_with_dot_is_rejected ... ok
[INFO] [stdout] test compiler::normalize::tests::while_without_duration_is_rejected ... ok
[INFO] [stdout] test compiler::normalize::tests::tags_survive_normalization ... ok
[INFO] [stdout] test compiler::normalize::tests::signal_type_picks_built_in_encoder_and_stdout_sink::case_4_logs ... ok
[INFO] [stdout] test compiler::normalize::tests::signal_type_picks_built_in_encoder_and_stdout_sink::case_3_summary ... ok
[INFO] [stdout] test compiler::normalize::tests::while_value_non_finite_is_rejected_at_compile::case_3_neg_inf ... ok
[INFO] [stdout] test compiler::normalize::tests::while_inherits_from_defaults ... ok
[INFO] [stdout] test compiler::parse::tests::deny_unknown_fields_rejects_typo ... ok
[INFO] [stdout] test compiler::parse::tests::cross_post_while_clause_round_trips ... ok
[INFO] [stdout] test compiler::parse::tests::detect_version_cases::case_3_absent ... ok
[INFO] [stdout] test compiler::parse::tests::detect_version_cases::case_1_v2 ... ok
[INFO] [stdout] test compiler::parse::tests::error_type_is_send_and_sync ... ok
[INFO] [stdout] test compiler::parse::tests::file_with_defaults_block ... ok
[INFO] [stdout] test compiler::parse::tests::entry_with_after_clause ... ok
[INFO] [stdout] test compiler::parse::tests::duplicate_ids_returns_error ... ok
[INFO] [stdout] test compiler::normalize::tests::shorthand_single_signal_normalizes_through_wrapped_form ... ok
[INFO] [stdout] test compiler::parse::tests::entry_with_all_optional_fields ... ok
[INFO] [stdout] test compiler::normalize::tests::while_value_non_finite_is_rejected_at_compile::case_1_nan ... ok
[INFO] [stdout] test compiler::parse::tests::detect_version_cases::case_2_v1_explicit ... ok
[INFO] [stdout] test compiler::normalize::tests::while_value_non_finite_is_rejected_at_compile::case_2_pos_inf ... ok
[INFO] [stdout] test compiler::normalize::tests::signal_type_picks_built_in_encoder_and_stdout_sink::case_2_histogram ... ok
[INFO] [stdout] test compiler::parse::tests::both_generator_and_pack_returns_error ... ok
[INFO] [stdout] test compiler::parse::tests::cross_post_while_without_body_scenario_name_is_rejected ... ok
[INFO] [stdout] test compiler::parse::tests::detect_version_cases::case_4_unparseable ... ok
[INFO] [stdout] test compiler::parse::tests::id_validation_cases::case_03_single_upper ... ok
[INFO] [stdout] test compiler::parse::tests::id_validation_cases::case_01_simple_snake ... ok
[INFO] [stdout] test compiler::parse::tests::id_validation_cases::case_05_double_underscore ... ok
[INFO] [stdout] test compiler::parse::tests::id_validation_cases::case_02_leading_underscore ... ok
[INFO] [stdout] test compiler::parse::tests::histogram_entry_with_distribution_and_buckets ... ok
[INFO] [stdout] test compiler::parse::tests::entry_with_after_clause_and_delay ... ok
[INFO] [stdout] test compiler::parse::tests::id_validation_cases::case_06_empty ... ok
[INFO] [stdout] test compiler::parse::tests::invalid_after_op_returns_yaml_error ... ok
[INFO] [stdout] test compiler::parse::tests::invalid_id_returns_invalid_id_error::case_1_starts_with_digit ... ok
[INFO] [stdout] test compiler::parse::tests::error_display_messages ... ok
[INFO] [stdout] test compiler::parse::tests::flat_shorthand_never_carries_top_level_metadata ... ok
[INFO] [stdout] test compiler::parse::tests::inline_without_name_returns_error ... ok
[INFO] [stdout] test compiler::parse::tests::id_validation_cases::case_07_starts_with_digit ... ok
[INFO] [stdout] test compiler::parse::tests::id_validation_cases::case_04_alphanumeric ... ok
[INFO] [stdout] test compiler::parse::tests::id_validation_cases::case_09_contains_hyphen ... ok
[INFO] [stdout] test compiler::parse::tests::id_validation_cases::case_08_contains_dot ... ok
[INFO] [stdout] test compiler::parse::tests::if_unresolved_without_scenario_name_is_rejected ... ok
[INFO] [stdout] test compiler::parse::tests::kind_composable_with_invalid_pack_body_propagates_error ... ok
[INFO] [stdout] test compiler::parse::tests::id_validation_cases::case_11_single_digit ... ok
[INFO] [stdout] test compiler::parse::tests::id_validation_cases::case_10_contains_space ... ok
[INFO] [stdout] test compiler::parse::tests::invalid_id_returns_invalid_id_error::case_2_contains_dot ... ok
[INFO] [stdout] test compiler::parse::tests::invalid_signal_type_returns_error ... ok
[INFO] [stdout] test compiler::parse::tests::kind_composable_with_scenarios_block_returns_error ... ok
[INFO] [stdout] test compiler::parse::tests::histogram_without_distribution_fails ... ok
[INFO] [stdout] test compiler::parse::tests::metadata_partial_roundtrip::case_1_only_scenario_name ... ok
[INFO] [stdout] test compiler::parse::tests::metadata_on_entry_is_rejected ... ok
[INFO] [stdout] test compiler::parse::tests::metadata_partial_roundtrip::case_4_name_and_category ... ok
[INFO] [stdout] test compiler::parse::tests::metadata_partial_roundtrip::case_3_only_description ... ok
[INFO] [stdout] test compiler::parse::tests::kind_runnable_with_scenarios_parses ... ok
[INFO] [stdout] test compiler::parse::tests::invalid_id_returns_invalid_id_error::case_3_empty_string ... ok
[INFO] [stdout] test compiler::parse::tests::kind_composable_with_pack_body_parses ... ok
[INFO] [stdout] test compiler::parse::tests::mismatched_generator_family_returns_unexpected_field::case_1_metrics_with_log_generator ... ok
[INFO] [stdout] test compiler::parse::tests::metadata_unknown_field_is_rejected_by_deny_unknown_fields ... ok
[INFO] [stdout] test compiler::parse::tests::mismatched_generator_family_returns_unexpected_field::case_3_logs_with_generator ... ok
[INFO] [stdout] test compiler::parse::tests::malformed_canonical_file_does_not_produce_misleading_error ... ok
[INFO] [stdout] test compiler::parse::tests::mismatched_generator_family_returns_unexpected_field::case_2_metrics_with_distribution ... ok
[INFO] [stdout] test compiler::parse::tests::mismatched_generator_family_returns_unexpected_field::case_4_logs_with_distribution ... ok
[INFO] [stdout] test compiler::parse::tests::mismatched_generator_family_returns_unexpected_field::case_5_histogram_with_generator ... ok
[INFO] [stdout] test compiler::parse::tests::local_only_while_clause_continues_to_parse ... ok
[INFO] [stdout] test compiler::parse::tests::kind_runnable_with_empty_scenarios_returns_error ... ok
[INFO] [stdout] test compiler::parse::tests::logs_without_log_generator_returns_error ... ok
[INFO] [stdout] test compiler::parse::tests::kind_runnable_with_no_body_returns_runnable_missing_body ... ok
[INFO] [stdout] test compiler::parse::tests::metadata_all_fields_present_roundtrip ... ok
[INFO] [stdout] test compiler::parse::tests::metadata_absent_leaves_fields_none ... ok
[INFO] [stdout] test compiler::parse::tests::kind_runnable_with_flat_shorthand_parses ... ok
[INFO] [stdout] test compiler::parse::tests::metadata_partial_roundtrip::case_2_only_category ... ok
[INFO] [stdout] test compiler::parse::tests::missing_kind_returns_error ... ok
[INFO] [stdout] test compiler::parse::tests::neither_generator_nor_pack_returns_error ... ok
[INFO] [stdout] test compiler::parse::tests::missing_version_returns_yaml_error ... ok
[INFO] [stdout] test compiler::parse::tests::mismatched_generator_family_returns_unexpected_field::case_7_summary_with_generator ... ok
[INFO] [stdout] test compiler::parse::tests::multi_scenario_with_three_entries ... ok
[INFO] [stdout] test compiler::parse::tests::shorthand_with_defaults_key_is_rejected ... ok
[INFO] [stdout] test compiler::parse::tests::pack_with_logs_signal_type_returns_error ... ok
[INFO] [stdout] test compiler::parse::tests::pack_entry_with_overrides ... ok
[INFO] [stdout] test compiler::parse::tests::tags_list_is_carried_through ... ok
[INFO] [stdout] test compiler::parse::tests::shorthand_infers_logs_from_log_generator ... ok
[INFO] [stdout] test compiler::parse::tests::single_signal_shorthand_inline ... ok
[INFO] [stdout] test compiler::parse::tests::single_signal_shorthand_pack ... ok
[INFO] [stdout] test compiler::parse::tests::v2_scenario_file_is_send_and_sync ... ok
[INFO] [stdout] test compiler::parse::unknown_field_tests::a_typo_on_a_required_field_reports_the_missing_field_instead ... ok
[INFO] [stdout] test compiler::parse::tests::summary_entry_with_distribution_and_quantiles ... ok
[INFO] [stdout] test compiler::parse::tests::tags_empty_list_is_empty_vec ... ok
[INFO] [stdout] test compiler::parse::tests::mismatched_generator_family_returns_unexpected_field::case_6_histogram_with_log_generator ... ok
[INFO] [stdout] test compiler::parse::tests::tags_absent_defaults_to_empty_vec ... ok
[INFO] [stdout] test compiler::parse::tests::unsupported_version_returns_invalid_version::case_2_version_0 ... ok
[INFO] [stdout] test compiler::parse::unknown_field_tests::the_documented_worked_example_produces_the_documented_path ... ok
[INFO] [stdout] test compiler::parse::tests::unexpected_field_error_display_message ... ok
[INFO] [stdout] test compiler::parse::tests::shorthand_infers_histogram_from_distribution_and_buckets ... ok
[INFO] [stdout] test compiler::parse::tests::unknown_kind_returns_error_with_valid_values ... ok
[INFO] [stdout] test compiler::parse::tests::shorthand_infers_summary_from_distribution_and_quantiles ... ok
[INFO] [stdout] test compiler::parse::unknown_field_tests::dynamic_labels_flatten_hole_is_still_open ... ok
[INFO] [stdout] test compiler::parse::tests::unsupported_version_returns_invalid_version::case_1_version_1 ... ok
[INFO] [stdout] test compiler::parse::unknown_field_tests::nested_block_typo_is_rejected_and_names_its_path ... ok
[INFO] [stdout] test compiler::prepare::tests::clock_group_is_passed_through_on_all_variants ... ok
[INFO] [stdout] test compiler::parse::unknown_field_tests::top_level_and_entry_typos_stay_rejected ... ok
[INFO] [stdout] test compiler::prepare::tests::histogram_observations_per_tick_widens_zero_correctly ... ok
[INFO] [stdout] test compiler::prepare::tests::labels_empty_btree_maps_to_empty_hash ... ok
[INFO] [stdout] test compiler::prepare::tests::metrics_entry_translates_to_scenario_entry_metrics ... ok
[INFO] [stdout] test compiler::prepare::tests::entry_with_metric_type_and_help_propagates_through_compiler ... ok
[INFO] [stdout] test compiler::prepare::tests::missing_required_field_fails_per_signal_type::case_2_logs ... ok
[INFO] [stdout] test compiler::prepare::tests::missing_required_field_fails_per_signal_type::case_4_summary ... ok
[INFO] [stdout] test compiler::prepare::tests::phase_offset_string_is_passed_through_verbatim ... ok
[INFO] [stdout] test compiler::prepare::tests::metrics_without_generator_produces_missing_generator_error ... ok
[INFO] [stdout] test compiler::prepare::tests::prepare_error_is_send_and_sync ... ok
[INFO] [stdout] test compiler::prepare::tests::prepare_version_check_precedes_entry_translation ... ok
[INFO] [stdout] test compiler::prepare::tests::histogram_entry_translates_with_distribution_and_buckets ... ok
[INFO] [stdout] test compiler::prepare::tests::missing_required_field_fails_per_signal_type::case_3_histogram ... ok
[INFO] [stdout] test compiler::prepare::tests::logs_entry_translates_to_scenario_entry_logs ... ok
[INFO] [stdout] test compiler::prepare::tests::entry_without_metric_type_and_help_propagates_as_none ... ok
[INFO] [stdout] test compiler::prepare::tests::pack_expansion_propagates_entry_level_metric_type_to_all_expanded_metrics ... ok
[INFO] [stdout] test compiler::prepare::tests::prepare_rejects_non_v2_version ... ok
[INFO] [stdout] test compiler::prepare::tests::histogram_observations_per_tick_widens_u32_max_correctly ... ok
[INFO] [stdout] test compiler::prepare::tests::labels_btree_to_hash_preserves_all_pairs ... ok
[INFO] [stdout] test compiler::prepare::tests::labels_none_stays_none ... ok
[INFO] [stdout] test compiler::prepare::tests::prepare_preserves_entry_order ... ok
[INFO] [stdout] test compiler::prepare::tests::summary_observations_per_tick_widens_u32_max_correctly ... ok
[INFO] [stdout] test compiler::prepare::tests::missing_required_field_fails_per_signal_type::case_1_metrics ... ok
[INFO] [stdout] test compiler::prepare::tests::summary_without_distribution_produces_missing_distribution_error ... ok
[INFO] [stdout] test compiler::prepare::tests::unknown_signal_type_falls_back_to_name_when_id_absent ... ok
[INFO] [stdout] test compiler::prepare::tests::prepare_fails_fast_on_first_bad_entry ... ok
[INFO] [stdout] test compiler::prepare::tests::unknown_signal_type_produces_unknown_signal_type_error ... ok
[INFO] [stdout] test compiler::prepare::tests::summary_entry_translates_with_distribution_and_quantiles ... ok
[INFO] [stdout] test compiler::timing::tests::constant_crossing::case_1_greater_than_satisfied_ambiguous ... ok
[INFO] [stdout] test compiler::timing::tests::always_unsupported::case_1_steady ... ok
[INFO] [stdout] test compiler::timing::tests::constant_crossing::case_3_less_than_satisfied_ambiguous ... ok
[INFO] [stdout] test compiler::timing::tests::always_unsupported::case_4_csv_replay ... ok
[INFO] [stdout] test compiler::prepare::tests::histogram_without_distribution_produces_missing_distribution_error ... ok
[INFO] [stdout] test compiler::timing::tests::always_unsupported::case_3_uniform ... ok
[INFO] [stdout] test compiler::timing::tests::always_unsupported::case_2_sine ... ok
[INFO] [stdout] test compiler::timing::tests::flap_crossing::case_1_less_than_one_returns_up_duration ... ok
[INFO] [stdout] test compiler::timing::tests::constant_crossing::case_4_less_than_not_satisfied_out_of_range ... ok
[INFO] [stdout] test compiler::prepare::tests::logs_without_log_generator_produces_missing_log_generator_error ... ok
[INFO] [stdout] test compiler::timing::tests::flap_crossing::case_2_less_than_half_returns_up_duration ... ok
[INFO] [stdout] test compiler::timing::tests::constant_crossing::case_2_greater_than_not_satisfied_out_of_range ... ok
[INFO] [stdout] test compiler::prepare::tests::prepare_empty_file_returns_empty_vec ... ok
[INFO] [stdout] test compiler::timing::tests::flap_crossing::case_3_greater_than_zero_is_ambiguous ... ok
[INFO] [stdout] test compiler::timing::tests::flap_crossing::case_7_custom_values ... ok
[INFO] [stdout] test compiler::timing::tests::sawtooth_crossing::case_6_less_than_at_baseline_out_of_range ... ok
[INFO] [stdout] test compiler::timing::tests::sawtooth_crossing::case_2_greater_than_near_ceiling ... ok
[INFO] [stdout] test compiler::timing::tests::sawtooth_crossing::case_4_greater_than_below_baseline_ambiguous ... ok
[INFO] [stdout] test compiler::timing::tests::flap_crossing::case_4_less_than_zero_is_out_of_range ... ok
[INFO] [stdout] test compiler::timing::tests::sawtooth_crossing::case_1_greater_than_at_midpoint ... ok
[INFO] [stdout] test compiler::timing::tests::flap_crossing::case_6_threshold_above_up_value_greater_than_out_of_range ... ok
[INFO] [stdout] test compiler::timing::tests::sawtooth_crossing::case_7_less_than_midpoint_ambiguous_at_t0 ... ok
[INFO] [stdout] test compiler::timing::tests::flap_crossing::case_5_threshold_above_up_value_less_than_is_ambiguous ... ok
[INFO] [stdout] test compiler::timing::tests::sawtooth_crossing::case_3_greater_than_at_ceiling_out_of_range ... ok
[INFO] [stdout] test compiler::timing::tests::sawtooth_crossing::case_8_equal_baseline_ceiling_out_of_range ... ok
[INFO] [stdout] test compiler::timing::tests::sequence_crossing::case_2_less_than_finds_first_crossing ... ok
[INFO] [stdout] test compiler::timing::tests::sawtooth_crossing::case_5_less_than_above_ceiling_ambiguous ... ok
[INFO] [stdout] test compiler::timing::tests::sequence_crossing::case_5_empty_values_out_of_range ... ok
[INFO] [stdout] test compiler::timing::tests::sequence_crossing::case_4_no_crossing_out_of_range ... ok
[INFO] [stdout] test compiler::timing::tests::sequence_crossing::case_3_first_value_matches_ambiguous ... ok
[INFO] [stdout] test compiler::timing::tests::spike_crossing::case_4_greater_than_at_peak_out_of_range ... ok
[INFO] [stdout] test compiler::timing::tests::spike_crossing::case_3_less_than_at_baseline_out_of_range ... ok
[INFO] [stdout] test compiler::timing::tests::spike_crossing::case_2_greater_than_ambiguous_at_t0 ... ok
[INFO] [stdout] test compiler::timing::tests::spike_crossing::case_1_less_than_returns_spike_duration ... ok
[INFO] [stdout] test compiler::timing::tests::spike_crossing::case_6_greater_than_below_baseline_ambiguous ... ok
[INFO] [stdout] test compiler::timing::tests::spike_crossing::case_5_less_than_above_peak_ambiguous ... ok
[INFO] [stdout] test config::aliases::tests::degradation_defaults_produce_sawtooth_with_jitter ... ok
[INFO] [stdout] test config::aliases::tests::desugar_entry_passes_logs_unchanged ... ok
[INFO] [stdout] test compiler::timing::tests::sequence_crossing::case_1_greater_than_finds_first_crossing ... ok
[INFO] [stdout] test compiler::timing::tests::step_crossing::case_04_less_than_unsupported ... ok
[INFO] [stdout] test config::aliases::tests::desugar_entry_passes_non_alias_metrics_unchanged ... ok
[INFO] [stdout] test compiler::timing::tests::step_crossing::case_05_start_above_threshold_ambiguous ... ok
[INFO] [stdout] test compiler::timing::tests::step_crossing::case_03_high_rate_divides_ticks_by_rate ... ok
[INFO] [stdout] test compiler::timing::tests::step_crossing::case_07_negative_step_size_out_of_range ... ok
[INFO] [stdout] test compiler::timing::tests::step_crossing::case_02_non_divisible_uses_ceil ... ok
[INFO] [stdout] test config::aliases::tests::degradation_custom_params_with_noise ... ok
[INFO] [stdout] test compiler::timing::tests::step_crossing::case_01_divides_evenly_advances_one_tick ... ok
[INFO] [stdout] test config::aliases::tests::flap_enum_variant_produces_expected_sequence::case_3_oper_state ... ok
[INFO] [stdout] test config::aliases::tests::flap_enum_variant_produces_expected_sequence::case_2_link_state ... ok
[INFO] [stdout] test config::aliases::tests::degradation_preserves_user_jitter ... ok
[INFO] [stdout] test config::aliases::tests::create_generator_rejects_undesugared_alias ... ok
[INFO] [stdout] test compiler::timing::tests::step_crossing::case_08_wrap_below_threshold_out_of_range ... ok
[INFO] [stdout] test compiler::timing::tests::step_crossing::case_06_zero_step_size_out_of_range ... ok
[INFO] [stdout] test compiler::timing::tests::step_crossing::case_09_wrap_above_threshold_succeeds ... ok
[INFO] [stdout] test compiler::timing::tests::step_crossing::case_10_inactive_max ... ok
[INFO] [stdout] test config::aliases::tests::flap_custom_values_and_durations ... ok
[INFO] [stdout] test config::aliases::tests::flap_enum_yaml_roundtrip_deserializes_each_variant ... ok
[INFO] [stdout] test config::aliases::tests::flap_enum_variant_produces_expected_sequence::case_1_boolean ... ok
[INFO] [stdout] test config::aliases::tests::flap_enum_variant_produces_expected_sequence::case_4_admin_state ... ok
[INFO] [stdout] test config::aliases::tests::flap_defaults_produce_correct_sequence ... ok
[INFO] [stdout] test config::aliases::tests::flap_explicit_values_without_enum_are_preserved ... ok
[INFO] [stdout] test config::aliases::tests::flap_low_rate_inflates_zero_ticks_to_one ... ok
[INFO] [stdout] test config::aliases::tests::leak_accepts_time_to_ceiling_equal_to_duration ... ok
[INFO] [stdout] test config::aliases::tests::flap_enum_variant_produces_expected_sequence::case_5_neighbor_state ... ok
[INFO] [stdout] test config::aliases::tests::flap_enum_with_explicit_down_value_is_rejected ... ok
[INFO] [stdout] test config::aliases::tests::flap_enum_with_explicit_up_value_is_rejected ... ok
[INFO] [stdout] test config::aliases::tests::flap_with_invalid_duration_returns_error ... ok
[INFO] [stdout] test config::aliases::tests::flap_without_enum_or_explicit_values_uses_v15_defaults ... ok
[INFO] [stdout] test config::aliases::tests::is_alias_returns_false_for_concrete_generators ... ok
[INFO] [stdout] test config::aliases::tests::is_alias_returns_true_for_aliases ... ok
[INFO] [stdout] test config::aliases::tests::leak_defaults_produce_sawtooth ... ok
[INFO] [stdout] test config::aliases::tests::non_alias_generator_passes_through_unchanged ... ok
[INFO] [stdout] test config::aliases::tests::leak_custom_params ... ok
[INFO] [stdout] test config::aliases::tests::leak_accepts_when_no_duration_set ... ok
[INFO] [stdout] test config::aliases::tests::leak_rejects_time_to_ceiling_shorter_than_duration ... ok
[INFO] [stdout] test config::aliases::tests::saturation_custom_params ... ok
[INFO] [stdout] test config::aliases::tests::spike_event_defaults_produce_spike ... ok
[INFO] [stdout] test config::aliases::tests::saturation_defaults_produce_sawtooth ... ok
[INFO] [stdout] test config::aliases::tests::spike_event_custom_params ... ok
[INFO] [stdout] test config::aliases::tests::steady_custom_params ... ok
[INFO] [stdout] test config::aliases::tests::spike_event_with_invalid_interval_returns_error ... ok
[INFO] [stdout] test config::aliases::tests::steady_defaults_produce_sine_with_jitter ... ok
[INFO] [stdout] test config::aliases::tests::steady_preserves_user_jitter ... ok
[INFO] [stdout] test config::expand_tests::a_blank_last_row_held_past_the_data_is_refused ... ok
[INFO] [stdout] test config::expand_tests::a_blank_last_row_is_accepted_when_the_run_ends_with_the_data ... ok
[INFO] [stdout] test config::expand_tests::a_blank_last_row_is_accepted_when_the_window_reaches_the_end ... ok
[INFO] [stdout] test config::expand_tests::a_blank_last_row_on_an_unbounded_run_is_refused ... ok
[INFO] [stdout] test config::expand_tests::a_capture_without_silence_may_still_burst ... ok
[INFO] [stdout] test config::expand_tests::a_blank_with_no_windows_declared_is_refused ... ok
[INFO] [stdout] test config::expand_tests::a_blank_outside_the_declared_window_is_refused ... ok
[INFO] [stdout] test config::expand_tests::a_present_last_row_held_past_the_data_is_fine ... ok
[INFO] [stdout] test config::expand_tests::a_capture_without_silence_may_still_loop ... ok
[INFO] [stdout] test config::expand_tests::a_long_run_of_uncovered_blanks_is_summarised ... ok
[INFO] [stdout] test config::expand_tests::a_window_at_zero_covers_a_blank_first_row ... ok
[INFO] [stdout] test config::expand_tests::a_window_over_recorded_samples_is_refused ... ok
[INFO] [stdout] test config::expand_tests::auto_discover_from_header_when_no_columns ... ok
[INFO] [stdout] test config::expand_tests::auto_discovery_missing_file_returns_generator_error ... ok
[INFO] [stdout] test config::expand_tests::auto_discovery_expands_from_csv_header ... ok
[INFO] [stdout] test config::expand_tests::auto_discovery_grafana_style_extracts_labels ... ok
[INFO] [stdout] test config::expand_tests::auto_discovery_single_column_file_returns_error ... ok
[INFO] [stdout] test config::expand_tests::auto_discovery_all_numeric_returns_error ... ok
[INFO] [stdout] test config::expand_tests::auto_discovery_single_data_column_no_time_yields_no_data_columns ... ok
[INFO] [stdout] test config::expand_tests::blanks_are_accepted_once_the_capture_stops_looping ... ok
[INFO] [stdout] test config::expand_tests::blanks_are_refused_when_repeat_is_explicitly_true ... ok
[INFO] [stdout] test config::expand_tests::blanks_are_refused_when_the_scenario_bursts ... ok
[INFO] [stdout] test config::expand_tests::columns_without_labels_preserve_scenario_labels ... ok
[INFO] [stdout] test config::expand_tests::blanks_are_refused_when_repeat_is_left_to_its_default ... ok
[INFO] [stdout] test config::expand_tests::blanks_inside_a_declared_window_are_accepted ... ok
[INFO] [stdout] test config::expand_tests::duplicate_column_index_returns_error ... ok
[INFO] [stdout] test config::expand_tests::epoch_milliseconds_heuristic_treats_values_above_threshold_as_ms ... ok
[INFO] [stdout] test config::expand_tests::duplicate_column_name_not_first_returns_error ... ok
[INFO] [stdout] test config::expand_tests::expand_entry_passes_through_summary ... ok
[INFO] [stdout] test config::expand_tests::empty_columns_list_returns_error ... ok
[INFO] [stdout] test config::expand_tests::expand_log_scenario_auto_discovers_timestamp_column ... ok
[INFO] [stdout] test config::expand_tests::expand_log_scenario_overrides_user_rate_when_differs ... ok
[INFO] [stdout] test config::expand_tests::duplicate_column_index_not_first_returns_error ... ok
[INFO] [stdout] test config::expand_tests::expand_entry_passes_through_histogram ... ok
[INFO] [stdout] test config::expand_tests::expand_log_scenario_rejects_non_monotonic_timestamps ... ok
[INFO] [stdout] test config::expand_tests::default_metric_name_used_when_header_lacks_name_single_column ... ok
[INFO] [stdout] test config::expand_tests::default_metric_name_suffixes_index_when_multiple_columns_lack_name ... ok
[INFO] [stdout] test config::expand_tests::expand_entry_logs_passes_through ... ok
[INFO] [stdout] test config::expand_tests::deserialize_per_column_labels_from_yaml ... ok
[INFO] [stdout] test config::expand_tests::histogram_config_normal_distribution ... ok
[INFO] [stdout] test config::expand_tests::expanded_configs_inherit_non_none_gaps_and_bursts ... ok
[INFO] [stdout] test config::expand_tests::expanded_configs_inherit_parent_fields ... ok
[INFO] [stdout] test config::expand_tests::explicit_columns_merge_header_labels_with_user_spec_labels ... ok
[INFO] [stdout] test config::expand_tests::expand_log_scenario_resolves_timestamp_in_non_zero_column ... ok
[INFO] [stdout] test config::expand_tests::explicit_user_spec_labels_override_header_labels_on_key_conflict ... ok
[INFO] [stdout] test config::expand_tests::expand_log_scenario_with_timescale_two_doubles_rate ... ok
[INFO] [stdout] test config::expand_tests::missing_default_metric_name_still_errors_when_header_lacks_name ... ok
[INFO] [stdout] test config::expand_tests::histogram_config_defaults_when_omitted ... ok
[INFO] [stdout] test config::expand_tests::histogram_config_deserializes_from_yaml ... ok
[INFO] [stdout] test config::expand_tests::duplicate_column_name_returns_error ... ok
[INFO] [stdout] test config::expand_tests::importer_output_passes_the_monotonicity_check ... ok
[INFO] [stdout] test config::expand_tests::non_csv_replay_passes_through ... ok
[INFO] [stdout] test config::expand_tests::monotonic_timestamps_are_accepted ... ok
[INFO] [stdout] test config::expand_tests::non_monotonic_timestamps_return_clear_error ... ok
[INFO] [stdout] test config::expand_tests::histogram_config_uniform_distribution ... ok
[INFO] [stdout] test config::expand_tests::expand_log_scenario_derives_rate_from_ten_second_step_csv ... ok
[INFO] [stdout] test config::expand_tests::no_columns_no_header_returns_error ... ok
[INFO] [stdout] test config::expand_tests::non_monotonic_row_beyond_the_sample_window_is_refused ... ok
[INFO] [stdout] test config::expand_tests::expand_entry_metrics_two_columns ... ok
[INFO] [stdout] test config::expand_tests::expand_log_scenario_respects_explicit_columns_mapping ... ok
[INFO] [stdout] test config::expand_tests::out_of_order_timestamp_is_refused_naming_the_row ... ok
[INFO] [stdout] test config::expand_tests::per_column_labels_merge_into_child ... ok
[INFO] [stdout] test config::expand_tests::rate_derived_from_csv_ten_second_steps_yields_point_one ... ok
[INFO] [stdout] test config::expand_tests::per_column_labels_override_scenario_level_on_conflict ... ok
[INFO] [stdout] test config::expand_tests::phase_offset_is_not_refused_alongside_blanks ... ok
[INFO] [stdout] test config::expand_tests::rate_derived_with_timescale_half_yields_point_zero_five ... ok
[INFO] [stdout] test config::expand_tests::rate_derived_with_timescale_two_yields_point_two ... ok
[INFO] [stdout] test config::expand_tests::scenario_entry_base_works_for_summary ... ok
[INFO] [stdout] test config::expand_tests::scenario_entry_base_works_for_histogram ... ok
[INFO] [stdout] test config::expand_tests::repeated_timestamp_is_refused_naming_the_row ... ok
[INFO] [stdout] test config::expand_tests::single_data_row_returns_clear_error ... ok
[INFO] [stdout] test config::expand_tests::several_windows_each_cover_their_own_blanks ... ok
[INFO] [stdout] test config::expand_tests::summary_config_defaults_when_omitted ... ok
[INFO] [stdout] test config::expand_tests::summary_config_deserializes_from_yaml ... ok
[INFO] [stdout] test config::expand_tests::the_row_at_the_window_end_is_not_covered ... ok
[INFO] [stdout] test config::expand_tests::three_column_expansion ... ok
[INFO] [stdout] test config::expand_tests::timescale_field_deserializes_from_yaml ... ok
[INFO] [stdout] test config::expand_tests::two_column_expansion ... ok
[INFO] [stdout] test config::tests::backward_compatible_yaml_without_spikes ... ok
[INFO] [stdout] test config::expand_tests::timescale_zero_returns_validation_error ... ok
[INFO] [stdout] test config::expand_tests::timescale_negative_returns_validation_error ... ok
[INFO] [stdout] test config::expand_tests::user_rate_override_emits_warning ... ok
[INFO] [stdout] test config::tests::base_schedule_config_is_clone_and_debug ... ok
[INFO] [stdout] test config::tests::dynamic_labels_and_static_labels_coexist ... ok
[INFO] [stdout] test config::tests::csv_replay_without_columns_field_has_none ... ok
[INFO] [stdout] test config::tests::csv_replay_columns_deserializes_from_yaml ... ok
[INFO] [stdout] test config::tests::dynamic_labels_counter_deserializes_from_yaml ... ok
[INFO] [stdout] test config::tests::dynamic_labels_defaults_to_none ... ok
[INFO] [stdout] test config::tests::dynamic_labels_counter_no_prefix_deserializes ... ok
[INFO] [stdout] test config::tests::dynamic_labels_multiple_entries_deserialize ... ok
[INFO] [stdout] test config::tests::log_scenario_config_clock_group_defaults_to_none ... ok
[INFO] [stdout] test config::tests::dynamic_labels_values_list_deserializes_from_yaml ... ok
[INFO] [stdout] test config::tests::dynamic_labels_on_log_config_deserializes ... ok
[INFO] [stdout] test config::tests::log_scenario_config_deref_accesses_base_fields ... ok
[INFO] [stdout] test config::tests::log_scenario_config_flatten_deserializes_all_fields ... ok
[INFO] [stdout] test config::tests::log_scenario_config_labels_default_to_none ... ok
[INFO] [stdout] test config::tests::log_scenario_config_labels_deserialize_from_yaml ... ok
[INFO] [stdout] test config::tests::scenario_config_cardinality_spikes_defaults_to_none ... ok
[INFO] [stdout] test config::tests::scenario_config_deref_mut_allows_base_field_mutation ... ok
[INFO] [stdout] test config::tests::scenario_config_deref_accesses_base_fields ... ok
[INFO] [stdout] test config::tests::log_scenario_config_jitter_deserializes_from_yaml ... ok
[INFO] [stdout] test config::tests::scenario_config_both_phase_offset_and_clock_group ... ok
[INFO] [stdout] test config::tests::log_scenario_config_empty_labels_deserializes_as_some_empty_map ... ok
[INFO] [stdout] test config::tests::log_scenario_config_phase_offset_deserializes_from_yaml ... ok
[INFO] [stdout] test config::tests::log_scenario_config_encoder_defaults_to_json_lines ... ok
[INFO] [stdout] test config::tests::log_scenario_config_phase_offset_defaults_to_none ... ok
[INFO] [stdout] test config::tests::log_scenario_config_cardinality_spikes_deserializes ... ok
[INFO] [stdout] test config::tests::scenario_config_clock_group_deserializes_from_yaml ... ok
[INFO] [stdout] test config::tests::scenario_config_labels_deserialize_from_yaml ... ok
[INFO] [stdout] test config::tests::scenario_config_phase_offset_defaults_to_none ... ok
[INFO] [stdout] test config::tests::scenario_config_phase_offset_milliseconds ... ok
[INFO] [stdout] test config::tests::scenario_entry_base_returns_shared_config_for_logs ... ok
[INFO] [stdout] test config::tests::log_scenario_config_clock_group_deserializes_from_yaml ... ok
[INFO] [stdout] test config::tests::scenario_config_phase_offset_deserializes_from_yaml ... ok
[INFO] [stdout] test config::tests::scenario_config_flatten_deserializes_all_fields ... ok
[INFO] [stdout] test config::tests::scenario_config_jitter_without_seed ... ok
[INFO] [stdout] test config::tests::scenario_config_jitter_defaults_to_none ... ok
[INFO] [stdout] test config::tests::scenario_config_clock_group_defaults_to_none ... ok
[INFO] [stdout] test config::tests::scenario_config_phase_offset_minutes ... ok
[INFO] [stdout] test config::tests::scenario_config_jitter_deserializes_from_yaml ... ok
[INFO] [stdout] test config::tests::scenario_config_cardinality_spikes_deserializes_from_yaml ... ok
[INFO] [stdout] test config::tests::scenario_entry_phase_offset_returns_none_for_metrics_without_offset ... ok
[INFO] [stdout] test config::tests::scenario_entry_phase_offset_returns_value_for_logs ... ok
[INFO] [stdout] test config::tests::scenario_config_encoder_defaults_to_prometheus_text ... ok
[INFO] [stdout] test config::validate::tests::deserialize_config_with_gap ... ok
[INFO] [stdout] test config::validate::tests::deserialize_config_without_burst_has_none_bursts ... ok
[INFO] [stdout] test config::validate::tests::deserialize_config_with_labels ... ok
[INFO] [stdout] test config::validate::tests::burst_config_is_cloneable_and_debuggable ... ok
[INFO] [stdout] test config::tests::scenario_entry_clock_group_returns_none_when_absent ... ok
[INFO] [stdout] test config::tests::phase_offset_values_are_parseable_as_durations ... ok
[INFO] [stdout] test config::validate::tests::dynamic_label_counter_zero_cardinality_returns_error ... ok
[INFO] [stdout] test config::validate::tests::dynamic_label_values_list_empty_returns_error ... ok
[INFO] [stdout] test config::validate::tests::gap_config_is_cloneable_and_debuggable ... ok
[INFO] [stdout] test config::validate::tests::one_retry_attempt_is_the_documented_minimum_and_is_accepted ... ok
[INFO] [stdout] test config::validate::tests::dynamic_label_empty_key_returns_error ... ok
[INFO] [stdout] test config::validate::tests::deserialize_minimal_config_encoder_defaults_to_prometheus_text ... ok
[INFO] [stdout] test config::validate::tests::parse_delay_duration_accepts_zero_seconds ... ok
[INFO] [stdout] test config::tests::scenario_entry_base_returns_shared_config_for_metrics ... ok
[INFO] [stdout] test config::validate::tests::parse_delay_duration_agrees_with_parse_offset_duration ... ok
[INFO] [stdout] test config::validate::tests::parse_delay_duration_accepts_zero_milliseconds ... ok
[INFO] [stdout] test config::tests::scenario_entry_phase_offset_returns_value_for_metrics ... ok
[INFO] [stdout] test config::tests::scenario_entry_signal_type_name_covers_all_variants ... ok
[INFO] [stdout] test config::tests::scenario_entry_clock_group_returns_value_for_metrics ... ok
[INFO] [stdout] test config::validate::tests::parse_duration_fractional_hours ... ok
[INFO] [stdout] test config::tests::spike_strategy_defaults_to_counter ... ok
[INFO] [stdout] test config::validate::tests::deserialize_minimal_scenario_config ... ok
[INFO] [stdout] test config::validate::tests::parse_duration_fractional_preserves_sub_millisecond_precision ... ok
[INFO] [stdout] test config::validate::tests::parse_duration_integer_values_still_work_after_f64_switch ... ok
[INFO] [stdout] test config::validate::tests::parse_delay_duration_rejects_garbage ... ok
[INFO] [stdout] test config::validate::tests::deserialize_config_with_burst ... ok
[INFO] [stdout] test config::validate::tests::deserialize_full_scenario_config_from_architecture_example ... ok
[INFO] [stdout] test config::validate::tests::deserialize_minimal_config_sink_defaults_to_stdout ... ok
[INFO] [stdout] test config::validate::tests::dynamic_label_invalid_key_returns_error ... ok
[INFO] [stdout] test config::validate::tests::parse_delay_duration_accepts_bare_zero ... ok
[INFO] [stdout] test config::validate::tests::parse_duration_numeric_only_returns_err ... ok
[INFO] [stdout] test config::validate::tests::parse_duration_fractional_minutes ... ok
[INFO] [stdout] test config::validate::tests::parse_duration_one_millisecond ... ok
[INFO] [stdout] test config::validate::tests::parse_duration_unit_only_no_number_returns_err ... ok
[INFO] [stdout] test config::validate::tests::parse_delay_duration_accepts_positive_value ... ok
[INFO] [stdout] test config::validate::tests::parse_duration_fractional_seconds ... ok
[INFO] [stdout] test config::validate::tests::parse_duration_minutes ... ok
[INFO] [stdout] test config::validate::tests::parse_duration_zero_minutes_returns_err ... ok
[INFO] [stdout] test config::validate::tests::parse_duration_hours ... ok
[INFO] [stdout] test config::validate::tests::parse_duration_zero_fractional_returns_err ... ok
[INFO] [stdout] test config::validate::tests::parse_duration_negative_milliseconds_returns_err ... ok
[INFO] [stdout] test config::validate::tests::parse_duration_seconds ... ok
[INFO] [stdout] test config::validate::tests::parse_duration_unknown_unit_returns_err ... ok
[INFO] [stdout] test config::validate::tests::parse_duration_zero_seconds_returns_err ... ok
[INFO] [stdout] test config::validate::tests::parse_duration_one_second ... ok
[INFO] [stdout] test config::validate::tests::parse_duration_empty_string_returns_err ... ok
[INFO] [stdout] test config::validate::tests::parse_offset_duration_cases::case_03_zero_millis ... ok
[INFO] [stdout] test config::validate::tests::parse_offset_duration_cases::case_04_zero_minutes ... ok
[INFO] [stdout] test config::validate::tests::parse_offset_duration_cases::case_02_zero_seconds ... ok
[INFO] [stdout] test config::validate::tests::parse_duration_large_value ... ok
[INFO] [stdout] test config::validate::tests::parse_offset_duration_cases::case_11_garbage ... ok
[INFO] [stdout] test config::validate::tests::parse_duration_infinity_returns_err ... ok
[INFO] [stdout] test config::validate::tests::parse_duration_negative_seconds_returns_err ... ok
[INFO] [stdout] test config::validate::tests::parse_duration_milliseconds ... ok
[INFO] [stdout] test config::validate::tests::parse_offset_duration_cases::case_13_unknown_unit ... ok
[INFO] [stdout] test config::validate::tests::parse_duration_no_unit_returns_err ... ok
[INFO] [stdout] test config::validate::tests::parse_optional_duration_positive_value_is_some ... ok
[INFO] [stdout] test config::validate::tests::parse_delay_duration_rejects_negative_value ... ok
[INFO] [stdout] test config::validate::tests::parse_optional_duration_zero_is_none ... ok
[INFO] [stdout] test config::validate::tests::parse_duration_fractional_milliseconds ... ok
[INFO] [stdout] test config::validate::tests::parse_offset_duration_cases::case_12_empty ... ok
[INFO] [stdout] test config::validate::tests::parse_offset_duration_cases::case_01_bare_zero ... ok
[INFO] [stdout] test config::validate::tests::parse_start_time_empty_string_is_err ... ok
[INFO] [stdout] test config::validate::tests::parse_offset_duration_cases::case_14_no_numeric_part ... ok
[INFO] [stdout] test config::validate::tests::parse_optional_duration_garbage_returns_err ... ok
[INFO] [stdout] test config::validate::tests::parse_start_time_garbage_is_err ... ok
[INFO] [stdout] test config::validate::tests::parse_offset_duration_cases::case_05_zero_hours ... ok
[INFO] [stdout] test config::validate::tests::parse_offset_duration_cases::case_06_positive_seconds ... ok
[INFO] [stdout] test config::validate::tests::parse_start_time_positive_days_offset_is_forward ... ok
[INFO] [stdout] test config::validate::tests::parse_offset_duration_cases::case_07_positive_millis ... ok
[INFO] [stdout] test config::validate::tests::parse_start_time_positive_hours_offset_is_forward ... ok
[INFO] [stdout] test config::validate::tests::parse_start_time_rfc3339_returns_exact_instant ... ok
[INFO] [stdout] test config::validate::tests::precision_0_accepted ... ok
[INFO] [stdout] test config::validate::tests::parse_offset_duration_cases::case_08_positive_minutes ... ok
[INFO] [stdout] test config::validate::tests::precision_17_accepted ... ok
[INFO] [stdout] test config::validate::tests::parse_offset_duration_cases::case_09_negative ... ok
[INFO] [stdout] test config::validate::tests::parse_offset_duration_cases::case_10_negative_zero_suffix ... ok
[INFO] [stdout] test config::validate::tests::parse_start_time_negative_days_offset_is_backward ... ok
[INFO] [stdout] test config::validate::tests::parse_start_time_now_returns_now_variant ... ok
[INFO] [stdout] test config::validate::tests::parse_start_time_overflowing_day_offset_is_err ... ok
[INFO] [stdout] test config::validate::tests::parse_start_time_now_tolerates_surrounding_whitespace ... ok
[INFO] [stdout] test config::validate::tests::precision_influx_18_rejected ... ok
[INFO] [stdout] test config::validate::tests::precision_none_accepted ... ok
[INFO] [stdout] test config::validate::tests::scenario_config_is_cloneable ... ok
[INFO] [stdout] test config::validate::tests::precision_18_rejected ... ok
[INFO] [stdout] test config::validate::tests::spike_config_for_not_less_than_every_returns_error ... ok
[INFO] [stdout] test config::validate::tests::spike_config_invalid_label_returns_error ... ok
[INFO] [stdout] test config::validate::tests::round_trip_uniform_generator_values_in_range ... ok
[INFO] [stdout] test config::validate::tests::spike_config_unparseable_every_returns_error ... ok
[INFO] [stdout] test config::validate::tests::parse_start_time_rfc3339_with_offset_normalizes_to_utc_instant ... ok
[INFO] [stdout] test config::validate::tests::parse_start_time_zero_offset_is_err ... ok
[INFO] [stdout] test config::validate::tests::scenario_config_is_debuggable ... ok
[INFO] [stdout] test config::validate::tests::spike_config_empty_label_returns_error ... ok
[INFO] [stdout] test config::validate::tests::precision_255_rejected ... ok
[INFO] [stdout] test config::validate::tests::valid_dynamic_label_values_list_returns_ok ... ok
[INFO] [stdout] test config::validate::tests::parse_start_time_offset_accepts_minutes_and_seconds ... ok
[INFO] [stdout] test config::validate::tests::valid_spike_config_random_returns_ok ... ok
[INFO] [stdout] test config::validate::tests::spike_config_zero_cardinality_returns_error ... ok
[INFO] [stdout] test config::validate::tests::parse_start_time_offset_without_unit_is_err ... ok
[INFO] [stdout] test config::validate::tests::valid_dynamic_label_counter_no_prefix_returns_ok ... ok
[INFO] [stdout] test config::validate::tests::spike_config_unparseable_for_returns_error ... ok
[INFO] [stdout] test config::validate::tests::valid_dynamic_label_counter_returns_ok ... ok
[INFO] [stdout] test config::validate::tests::validate_architecture_example_config_passes ... ok
[INFO] [stdout] test config::validate::tests::round_trip_creates_generator_encoder_sink_successfully ... ok
[INFO] [stdout] test config::validate::tests::validate_buckets_rejects_empty ... ok
[INFO] [stdout] test config::validate::tests::validate_buckets_accepts_sorted_positive_values ... ok
[INFO] [stdout] test config::validate::tests::spike_config_for_equal_to_every_returns_error ... ok
[INFO] [stdout] test config::validate::tests::round_trip_constant_generator_produces_expected_value ... ok
[INFO] [stdout] test config::validate::tests::valid_spike_config_counter_returns_ok ... ok
[INFO] [stdout] test config::validate::tests::validate_buckets_rejects_duplicates ... ok
[INFO] [stdout] test config::validate::tests::validate_buckets_rejects_infinity ... ok
[INFO] [stdout] test config::validate::tests::validate_buckets_rejects_nan ... ok
[INFO] [stdout] test config::validate::tests::validate_buckets_rejects_negative_value ... ok
[INFO] [stdout] test config::validate::tests::validate_buckets_rejects_unsorted ... ok
[INFO] [stdout] test config::validate::tests::validate_buckets_rejects_zero_value ... ok
[INFO] [stdout] test config::validate::tests::validate_burst_config_burst_for_greater_than_every_returns_err ... ok
[INFO] [stdout] test config::validate::tests::validate_burst_config_burst_for_equal_to_every_returns_err ... ok
[INFO] [stdout] test config::validate::tests::validate_burst_config_fractional_multiplier_passes ... ok
[INFO] [stdout] test config::validate::tests::validate_burst_config_invalid_every_returns_err ... ok
[INFO] [stdout] test config::validate::tests::validate_burst_config_multiplier_nan_returns_err ... ok
[INFO] [stdout] test config::validate::tests::validate_burst_config_multiplier_negative_returns_err ... ok
[INFO] [stdout] test config::validate::tests::validate_config_burst_for_greater_than_every_returns_err ... ok
[INFO] [stdout] test config::validate::tests::validate_config_burst_multiplier_zero_returns_err ... ok
[INFO] [stdout] test config::validate::tests::validate_burst_config_valid_values_pass ... ok
[INFO] [stdout] test config::validate::tests::validate_config_gap_for_greater_than_every_returns_err ... ok
[INFO] [stdout] test config::validate::tests::validate_config_invalid_duration_error_has_no_double_prefix ... ok
[INFO] [stdout] test config::validate::tests::validate_config_error_messages_are_descriptive ... ok
[INFO] [stdout] test config::validate::tests::validate_config_jitter_negative_returns_err ... ok
[INFO] [stdout] test config::validate::tests::validate_config_gap_invalid_for_error_has_no_double_prefix ... ok
[INFO] [stdout] test config::validate::tests::validate_config_invalid_metric_name_contains_hyphen_returns_err ... ok
[INFO] [stdout] test config::validate::tests::validate_config_jitter_negative_infinity_returns_err ... ok
[INFO] [stdout] test config::validate::tests::validate_config_invalid_duration_returns_err ... ok
[INFO] [stdout] test config::validate::tests::validate_config_jitter_positive_is_accepted ... ok
[INFO] [stdout] test config::validate::tests::validate_config_none_duration_is_accepted ... ok
[INFO] [stdout] test config::validate::tests::validate_config_rate_fractional_positive_is_valid ... ok
[INFO] [stdout] test config::validate::tests::validate_config_rate_nan_returns_err ... ok
[INFO] [stdout] test config::validate::tests::validate_config_gap_for_less_than_every_is_valid ... ok
[INFO] [stdout] test config::validate::tests::validate_config_invalid_metric_name_empty_returns_err ... ok
[INFO] [stdout] test config::validate::tests::validate_config_gap_invalid_every_error_has_no_double_prefix ... ok
[INFO] [stdout] test config::validate::tests::validate_config_gap_invalid_every_returns_err ... ok
[INFO] [stdout] test config::validate::tests::validate_config_jitter_nan_returns_err ... ok
[INFO] [stdout] test config::validate::tests::validate_config_invalid_metric_name_starts_with_digit_returns_err ... ok
[INFO] [stdout] test config::validate::tests::validate_config_jitter_none_is_accepted ... ok
[INFO] [stdout] test config::validate::tests::validate_burst_config_invalid_for_returns_err ... ok
[INFO] [stdout] test config::validate::tests::validate_config_gap_for_equal_to_every_returns_err ... ok
[INFO] [stdout] test config::validate::tests::validate_config_gap_invalid_for_returns_err ... ok
[INFO] [stdout] test config::validate::tests::validate_config_rate_positive_is_valid ... ok
[INFO] [stdout] test config::validate::tests::validate_config_rate_negative_returns_err ... ok
[INFO] [stdout] test config::validate::tests::validate_config_jitter_zero_is_accepted ... ok
[INFO] [stdout] test config::validate::tests::validate_config_jitter_positive_infinity_returns_err ... ok
[INFO] [stdout] test config::validate::tests::validate_config_rate_zero_returns_err ... ok
[INFO] [stdout] test config::validate::tests::validate_config_valid_metric_name_double_underscore_prefix ... ok
[INFO] [stdout] test config::validate::tests::validate_burst_config_multiplier_zero_returns_err ... ok
[INFO] [stdout] test config::validate::tests::validate_config_valid_metric_name_colon_separator ... ok
[INFO] [stdout] test config::validate::tests::validate_config_valid_duration_is_accepted ... ok
[INFO] [stdout] test config::validate::tests::validate_config_valid_metric_name_up ... ok
[INFO] [stdout] test config::validate::tests::validate_config_with_valid_spike_returns_ok ... ok
[INFO] [stdout] test config::validate::tests::validate_config_with_invalid_spike_returns_error ... ok
[INFO] [stdout] test config::validate::tests::validate_config_with_invalid_dynamic_label_key_returns_error ... ok
[INFO] [stdout] test config::validate::tests::validate_config_valid_metric_name_with_underscores ... ok
[INFO] [stdout] test config::validate::tests::validate_config_with_valid_burst_passes ... ok
[INFO] [stdout] test config::validate::tests::validate_distribution_exponential_positive_rate ... ok
[INFO] [stdout] test config::validate::tests::validate_config_with_valid_dynamic_labels_returns_ok ... ok
[INFO] [stdout] test config::validate::tests::validate_distribution_normal_negative_stddev ... ok
[INFO] [stdout] test config::validate::tests::validate_distribution_exponential_negative_rate ... ok
[INFO] [stdout] test config::validate::tests::validate_distribution_normal_positive_stddev ... ok
[INFO] [stdout] test config::validate::tests::validate_distribution_normal_zero_stddev ... ok
[INFO] [stdout] test config::validate::tests::validate_distribution_exponential_zero_rate ... ok
[INFO] [stdout] test config::validate::tests::validate_distribution_uniform_min_greater_than_max ... ok
[INFO] [stdout] test config::validate::tests::validate_distribution_uniform_min_equal_to_max ... ok
[INFO] [stdout] test config::validate::tests::validate_histogram_config_accepts_valid ... ok
[INFO] [stdout] test config::validate::tests::validate_distribution_uniform_valid ... ok
[INFO] [stdout] test config::validate::tests::validate_distribution_uniform_nan_min ... ok
[INFO] [stdout] test config::validate::tests::validate_histogram_config_rejects_zero_observations ... ok
[INFO] [stdout] test config::validate::tests::validate_histogram_config_rejects_zero_rate ... ok
[INFO] [stdout] test config::validate::tests::validate_log_config_jitter_negative_returns_err ... ok
[INFO] [stdout] test config::validate::tests::validate_histogram_config_rejects_invalid_metric_name ... ok
[INFO] [stdout] test config::validate::tests::validate_histogram_config_rejects_unsorted_buckets ... ok
[INFO] [stdout] test config::validate::tests::validate_log_config_with_invalid_dynamic_label_returns_error ... ok
[INFO] [stdout] test config::validate::tests::validate_log_config_jitter_nan_returns_err ... ok
[INFO] [stdout] test config::validate::tests::validate_quantiles_rejects_nan ... ok
[INFO] [stdout] test config::validate::tests::validate_quantiles_rejects_duplicates ... ok
[INFO] [stdout] test config::validate::tests::validate_quantiles_rejects_greater_than_one ... ok
[INFO] [stdout] test config::validate::tests::validate_quantiles_rejects_empty ... ok
[INFO] [stdout] test config::validate::tests::validate_log_config_with_valid_dynamic_labels_returns_ok ... ok
[INFO] [stdout] test config::validate::tests::validate_quantiles_rejects_negative ... ok
[INFO] [stdout] test config::validate::tests::validate_quantiles_rejects_one ... ok
[INFO] [stdout] test config::validate::tests::validate_quantiles_accepts_valid_targets ... ok
[INFO] [stdout] test config::validate::tests::validate_quantiles_rejects_zero ... ok
[INFO] [stdout] test config::validate::tests::validate_sink_config_stdout_is_ok ... ok
[INFO] [stdout] test config::validate::tests::validate_sink_config_rejects_backoff_ceiling_below_its_floor ... ok
[INFO] [stdout] test config::validate::tests::validate_summary_config_accepts_valid ... ok
[INFO] [stdout] test config::validate::tests::validate_quantiles_rejects_unsorted ... ok
[INFO] [stdout] test config::validate::tests::validate_sink_config_udp_is_ok ... ok
[INFO] [stdout] test config::validate::tests::validate_sink_config_rejects_zero_max_attempts ... ok
[INFO] [stdout] test config::validate::tests::validate_sink_config_file_is_ok ... ok
[INFO] [stdout] test config::validate::tests::validate_sink_config_tcp_with_good_retry_is_ok ... ok
[INFO] [stdout] test config::validate::tests::validate_sink_config_tcp_with_no_retry_is_ok ... ok
[INFO] [stdout] test config::validate::tests::validate_sink_config_tcp_with_garbage_max_backoff_returns_err ... ok
[INFO] [stdout] test config::validate::tests::validate_summary_config_rejects_out_of_range_quantiles ... ok
[INFO] [stdout] test config::validate::tests::validate_summary_config_rejects_zero_observations ... ok
[INFO] [stdout] test config::validate::tests::validate_sink_config_tcp_with_garbage_initial_backoff_returns_err ... ok
[INFO] [stdout] test emit::tests::emit_log_propagates_config_error_for_invalid_sink_config ... ok
[INFO] [stdout] test emit::tests::emit_metric_propagates_config_error_for_invalid_sink_config ... ok
[INFO] [stdout] test config::validate::tests::validate_summary_config_rejects_zero_rate ... ok
[INFO] [stdout] test emit::tests::emit_log_writes_encoded_line_to_sink ... ok
[INFO] [stdout] test encoder::influx::tests::create_encoder_returns_working_influx_encoder_with_custom_field_key ... ok
[INFO] [stdout] test encoder::influx::tests::custom_field_key_appears_in_output ... ok
[INFO] [stdout] test encoder::influx::tests::create_encoder_returns_working_influx_encoder_with_default_field_key ... ok
[INFO] [stdout] test encoder::influx::tests::encoder_config_deserialization_influx_lp_no_field_key ... ok
[INFO] [stdout] test config::validate::tests::validate_summary_config_rejects_invalid_metric_name ... ok
[INFO] [stdout] test encoder::influx::tests::encode_appends_to_existing_buffer_content ... ok
[INFO] [stdout] test encoder::influx::tests::encoder_config_deserialization_influx_lp_with_field_key ... ok
[INFO] [stdout] test encoder::influx::tests::influx_line_protocol_is_send_and_sync ... ok
[INFO] [stdout] test encoder::influx::tests::multiple_encodes_accumulate_in_buffer ... ok
[INFO] [stdout] test encoder::influx::tests::no_labels_output_has_no_comma_after_measurement ... ok
[INFO] [stdout] test encoder::influx::tests::measurement_with_space_is_escaped ... ok
[INFO] [stdout] test encoder::influx::tests::none_field_key_defaults_to_value ... ok
[INFO] [stdout] test encoder::influx::tests::no_labels_produces_measurement_space_field_space_timestamp ... ok
[INFO] [stdout] test encoder::influx::tests::precision_two_limits_decimals_influx ... ok
[INFO] [stdout] test encoder::influx::tests::precision_zero_influx ... ok
[INFO] [stdout] test encoder::influx::tests::precision_none_preserves_full_output_influx ... ok
[INFO] [stdout] test encoder::influx::tests::regression_anchor_custom_field_key_exact_bytes ... ok
[INFO] [stdout] test encoder::influx::tests::pre_epoch_timestamp_returns_encoder_error ... ok
[INFO] [stdout] test encoder::influx::tests::regression_anchor_no_labels_exact_bytes ... ok
[INFO] [stdout] test encoder::influx::tests::output_ends_with_newline ... ok
[INFO] [stdout] test emit::tests::emit_metric_writes_encoded_line_to_sink ... ok
[INFO] [stdout] test encoder::influx::tests::tag_value_with_comma_is_escaped ... ok
[INFO] [stdout] test encoder::json::tests::empty_labels_produces_empty_json_object ... ok
[INFO] [stdout] test encoder::json::tests::encode_log_fields_appear_in_spec_order ... ok
[INFO] [stdout] test encoder::influx::tests::three_labels_sorted_alphabetically ... ok
[INFO] [stdout] test encoder::influx::tests::timestamp_does_not_contain_decimal_point ... ok
[INFO] [stdout] test encoder::influx::tests::two_labels_sorted_by_key_in_tag_set ... ok
[INFO] [stdout] test encoder::json::tests::encode_log_includes_severity_field ... ok
[INFO] [stdout] test encoder::json::tests::encode_log_empty_fields_produces_empty_json_object ... ok
[INFO] [stdout] test encoder::influx::tests::regression_anchor_two_labels_exact_bytes ... ok
[INFO] [stdout] test encoder::json::tests::each_encoded_line_ends_with_newline ... ok
[INFO] [stdout] test encoder::influx::tests::tag_value_with_all_special_chars_is_escaped ... ok
[INFO] [stdout] test encoder::json::tests::encode_log_includes_message_field ... ok
[INFO] [stdout] test encoder::json::tests::encode_log_labels_are_sorted_by_key ... ok
[INFO] [stdout] test encoder::json::tests::encode_log_includes_fields_field ... ok
[INFO] [stdout] test encoder::influx::tests::tag_value_with_space_is_escaped ... ok
[INFO] [stdout] test encoder::json::tests::encode_log_regression_anchor_with_labels_exact_output ... ok
[INFO] [stdout] test encoder::influx::tests::tag_value_with_equals_is_escaped ... ok
[INFO] [stdout] test encoder::json::tests::encode_log_includes_timestamp_field ... ok
[INFO] [stdout] test encoder::json::tests::encode_log_severity_warn_is_lowercase ... ok
[INFO] [stdout] test encoder::influx::tests::timestamp_is_not_milliseconds ... ok
[INFO] [stdout] test encoder::json::tests::encode_log_with_empty_labels_produces_empty_labels_object ... ok
[INFO] [stdout] test encoder::json::tests::encode_log_with_labels_and_fields_both_present ... ok
[INFO] [stdout] test encoder::json::tests::encode_metric_many_labels_produces_sorted_json_object ... ok
[INFO] [stdout] test encoder::json::tests::encode_log_line_ends_with_newline ... ok
[INFO] [stdout] test encoder::json::tests::encode_log_severity_trace_is_lowercase ... ok
[INFO] [stdout] test encoder::json::tests::encode_log_with_labels_includes_labels_in_json ... ok
[INFO] [stdout] test encoder::json::tests::encode_log_severity_error_is_lowercase ... ok
[INFO] [stdout] test encoder::json::tests::encode_log_many_fields_produces_sorted_json_object ... ok
[INFO] [stdout] test encoder::json::tests::encode_log_produces_valid_json ... ok
[INFO] [stdout] test encoder::json::tests::format_rfc3339_millis_epoch_returns_correct_string ... ok
[INFO] [stdout] test encoder::json::tests::encode_log_regression_anchor_simple_info_event ... ok
[INFO] [stdout] test encoder::json::tests::encode_log_regression_anchor_with_fields ... ok
[INFO] [stdout] test encoder::json::tests::encode_log_severity_fatal_is_lowercase ... ok
[INFO] [stdout] test encoder::influx::tests::timestamp_is_nanoseconds_at_least_13_digits ... ok
[INFO] [stdout] test encoder::json::tests::encode_log_severity_debug_is_lowercase ... ok
[INFO] [stdout] test encoder::json::tests::format_rfc3339_millis_leap_year_feb_29 ... ok
[INFO] [stdout] test encoder::json::tests::format_rfc3339_millis_end_of_year_dec_31 ... ok
[INFO] [stdout] test encoder::json::tests::format_rfc3339_millis_midnight_boundary ... ok
[INFO] [stdout] test encoder::json::tests::format_rfc3339_millis_array_length_is_24 ... ok
[INFO] [stdout] test encoder::json::tests::encode_log_roundtrip_timestamp_matches_original ... ok
[INFO] [stdout] test encoder::json::tests::format_rfc3339_millis_known_timestamp_2026_03_20_returns_correct_string ... ok
[INFO] [stdout] test encoder::json::tests::encoder_config_json_lines_creates_encoder_via_factory ... ok
[INFO] [stdout] test encoder::json::tests::encode_log_roundtrip_message_matches_original ... ok
[INFO] [stdout] test encoder::json::tests::encode_log_roundtrip_fields_match_original ... ok
[INFO] [stdout] test encoder::json::tests::format_rfc3339_millis_start_of_day_plus_one_second ... ok
[INFO] [stdout] test encoder::json::tests::encode_log_severity_info_is_lowercase ... ok
[INFO] [stdout] test encoder::json::tests::format_rfc3339_millis_preserves_milliseconds ... ok
[INFO] [stdout] test encoder::json::tests::json_fields_appear_in_consistent_order ... ok
[INFO] [stdout] test encoder::json::tests::format_rfc3339_millis_array_matches_buffer_output ... ok
[INFO] [stdout] test encoder::json::tests::labels_ref_serializes_multiple_labels_in_sorted_order ... ok
[INFO] [stdout] test encoder::json::tests::precision_none_preserves_full_value_in_json ... ok
[INFO] [stdout] test encoder::json::tests::json_lines_encoder_is_send_and_sync ... ok
[INFO] [stdout] test encoder::json::tests::format_rfc3339_millis_array_is_valid_utf8 ... ok
[INFO] [stdout] test encoder::json::tests::precision_two_rounds_json_value ... ok
[INFO] [stdout] test encoder::json::tests::precision_zero_rounds_to_whole_number_in_json ... ok
[INFO] [stdout] test encoder::json::tests::multiple_events_each_end_with_newline ... ok
[INFO] [stdout] test encoder::json::tests::labels_ref_serializes_single_label ... ok
[INFO] [stdout] test encoder::json::tests::regression_anchor_multiple_labels_sorted_in_output ... ok
[INFO] [stdout] test encoder::json::tests::regression_anchor_single_label_exact_output ... ok
[INFO] [stdout] test encoder::json::tests::roundtrip_labels_match_original_event ... ok
[INFO] [stdout] test encoder::json::tests::roundtrip_name_matches_original_event ... ok
[INFO] [stdout] test encoder::json::tests::roundtrip_timestamp_matches_original_event ... ok
[INFO] [stdout] test encoder::json::tests::prometheus_encoder_encode_log_still_returns_not_supported_after_slice_2_3 ... ok
[INFO] [stdout] test encoder::json::tests::regression_anchor_no_labels_exact_output ... ok
[INFO] [stdout] test encoder::json::tests::roundtrip_value_matches_original_event ... ok
[INFO] [stdout] test encoder::json::tests::string_map_ref_serializes_empty_map_as_empty_object ... ok
[INFO] [stdout] test encoder::json::tests::string_map_ref_serializes_entries_in_sorted_order ... ok
[INFO] [stdout] test encoder::json::tests::labels_ref_handles_values_with_special_json_characters ... ok
[INFO] [stdout] test encoder::json::tests::labels_ref_serializes_empty_labels_as_empty_object ... ok
[INFO] [stdout] test encoder::json::tests::multiple_encodes_accumulate_in_same_buffer ... ok
[INFO] [stdout] test encoder::json::tests::output_is_valid_json_parseable_by_serde_json ... ok
[INFO] [stdout] test encoder::json::tests::timestamp_uses_rfc3339_format_with_millisecond_precision ... ok
[INFO] [stdout] test encoder::prometheus::tests::encode_metadata_emits_type_line_only_when_help_is_none ... ok
[INFO] [stdout] test encoder::prometheus::tests::label_value_with_newline_is_escaped ... ok
[INFO] [stdout] test encoder::prometheus::tests::label_value_with_double_quote_is_escaped ... ok
[INFO] [stdout] test encoder::json::tests::timestamp_with_zero_milliseconds_shows_dot_zero_zero_zero ... ok
[INFO] [stdout] test encoder::prometheus::tests::encode_appends_to_existing_buffer_content ... ok
[INFO] [stdout] test encoder::prometheus::tests::encode_metadata_help_text_escapes_backslash_and_newline ... ok
[INFO] [stdout] test encoder::prometheus::tests::label_value_with_all_three_escape_sequences ... ok
[INFO] [stdout] test encoder::prometheus::tests::encoder_config_deserialization_prometheus_text ... ok
[INFO] [stdout] test encoder::prometheus::tests::encode_metadata_all_metric_types_render_canonical_string ... ok
[INFO] [stdout] test encoder::prometheus::tests::create_encoder_returns_working_encoder_for_prometheus_text ... ok
[INFO] [stdout] test encoder::prometheus::tests::label_value_with_backslash_is_escaped ... ok
[INFO] [stdout] test encoder::prometheus::tests::encode_does_not_reallocate_when_buffer_pre_sized ... ok
[INFO] [stdout] test encoder::prometheus::tests::output_ends_with_newline ... ok
[INFO] [stdout] test encoder::prometheus::tests::precision_none_preserves_full_output ... ok
[INFO] [stdout] test encoder::json::tests::timestamp_at_unix_epoch_formats_correctly ... ok
[INFO] [stdout] test encoder::prometheus::tests::no_labels_format_has_no_curly_braces ... ok
[INFO] [stdout] test encoder::prometheus::tests::encode_metadata_emits_help_before_type ... ok
[INFO] [stdout] test encoder::prometheus::tests::label_value_with_no_special_chars_is_not_escaped ... ok
[INFO] [stdout] test encoder::prometheus::tests::precision_zero_rounds_to_integer ... ok
[INFO] [stdout] test encoder::prometheus::tests::prom_metric_type_as_str_returns_lowercase ... ok
[INFO] [stdout] test encoder::prometheus::tests::labels_are_always_sorted_by_key ... ok
[INFO] [stdout] test encoder::prometheus::tests::prometheus_text_with_emit_timestamp_false_no_labels_omits_timestamp ... ok
[INFO] [stdout] test encoder::prometheus::tests::prometheus_text_default_constructor_emits_timestamp ... ok
[INFO] [stdout] test encoder::prometheus::tests::prometheus_text_encoder_is_send_and_sync ... ok
[INFO] [stdout] test encoder::prometheus::tests::prometheus_text_with_emit_timestamp_false_omits_timestamp ... ok
[INFO] [stdout] test encoder::prometheus::tests::prometheus_text_with_emit_timestamp_true_then_false_round_trips ... ok
[INFO] [stdout] test encoder::prometheus::tests::regression_anchor_exact_byte_output_with_labels ... ok
[INFO] [stdout] test encoder::prometheus::tests::precision_two_limits_decimals ... ok
[INFO] [stdout] test encoder::prometheus::tests::precision_two_preserves_trailing_zeros ... ok
[INFO] [stdout] test encoder::prometheus::tests::prometheus_text_with_emit_timestamp_false_pre_epoch_does_not_error ... ok
[INFO] [stdout] test encoder::prometheus::tests::single_label_produces_correct_format ... ok
[INFO] [stdout] test encoder::prometheus::tests::timestamp_does_not_include_decimal_point ... ok
[INFO] [stdout] test encoder::syslog::tests::create_encoder_syslog_via_factory_encodes_log_event ... ok
[INFO] [stdout] test encoder::prometheus::tests::prometheus_text_with_emit_timestamp_false_still_emits_help_and_type_lines ... ok
[INFO] [stdout] test encoder::prometheus::tests::no_labels_omits_braces ... ok
[INFO] [stdout] test encoder::prometheus::tests::pre_epoch_timestamp_returns_encoder_error ... ok
[INFO] [stdout] test encoder::prometheus::tests::timestamp_is_integer_milliseconds_since_epoch ... ok
[INFO] [stdout] test encoder::syslog::tests::encode_log_contains_nil_values_for_procid_msgid_and_sd ... ok
[INFO] [stdout] test encoder::syslog::tests::encode_log_message_with_unicode_characters ... ok
[INFO] [stdout] test encoder::syslog::tests::encode_log_contains_hostname_in_output ... ok
[INFO] [stdout] test encoder::syslog::tests::encode_log_contains_version_one ... ok
[INFO] [stdout] test encoder::prometheus::tests::two_labels_sorted_by_key_comma_separated ... ok
[INFO] [stdout] test encoder::prometheus::tests::regression_anchor_exact_byte_output_no_labels ... ok
[INFO] [stdout] test encoder::syslog::tests::encode_log_contains_app_name_in_output ... ok
[INFO] [stdout] test encoder::syslog::tests::encode_log_default_hostname_and_app_name_are_sonda ... ok
[INFO] [stdout] test encoder::prometheus::tests::timestamp_at_epoch_zero_is_zero ... ok
[INFO] [stdout] test encoder::syslog::tests::encode_log_contains_message_in_output ... ok
[INFO] [stdout] test encoder::syslog::tests::encode_log_message_with_spaces_is_included_verbatim ... ok
[INFO] [stdout] test encoder::syslog::tests::encode_log_produces_line_ending_with_newline ... ok
[INFO] [stdout] test encoder::syslog::tests::encode_log_message_with_angle_brackets ... ok
[INFO] [stdout] test encoder::syslog::tests::encode_log_with_labels_escapes_all_special_characters_combined ... ok
[INFO] [stdout] test encoder::syslog::tests::encoder_config_syslog_deserializes_with_hostname ... ok
[INFO] [stdout] test encoder::syslog::tests::priority_for_error_is_facility_user_plus_error_syslog_severity ... ok
[INFO] [stdout] test encoder::syslog::tests::priority_for_info_is_facility_user_plus_informational_syslog_severity ... ok
[INFO] [stdout] test encoder::syslog::tests::encode_log_with_labels_escapes_double_quote_in_value ... ok
[INFO] [stdout] test encoder::syslog::tests::encode_log_with_labels_includes_structured_data ... ok
[INFO] [stdout] test encoder::syslog::tests::priority_for_trace_is_facility_user_plus_debug_syslog_severity ... ok
[INFO] [stdout] test encoder::syslog::tests::priority_for_fatal_is_facility_user_plus_emergency_syslog_severity ... ok
[INFO] [stdout] test encoder::syslog::tests::encode_log_starts_with_priority_marker ... ok
[INFO] [stdout] test encoder::syslog::tests::encode_log_with_labels_escapes_backslash_in_value ... ok
[INFO] [stdout] test encoder::syslog::tests::regression_anchor_fatal_severity_exact_output ... ok
[INFO] [stdout] test encoder::syslog::tests::encode_log_timestamp_is_rfc3339_with_millisecond_precision ... ok
[INFO] [stdout] test encoder::syslog::tests::encode_log_with_labels_escapes_closing_bracket_in_value ... ok
[INFO] [stdout] test encoder::syslog::tests::encode_log_with_multiple_labels_includes_all_in_structured_data ... ok
[INFO] [stdout] test encoder::syslog::tests::encode_log_without_labels_uses_nil_structured_data ... ok
[INFO] [stdout] test encoder::syslog::tests::encode_metric_does_not_write_to_buffer ... ok
[INFO] [stdout] test encoder::syslog::tests::encode_metric_returns_not_supported_error ... ok
[INFO] [stdout] test encoder::syslog::tests::regression_anchor_info_severity_exact_output ... ok
[INFO] [stdout] test encoder::syslog::tests::encoder_config_syslog_deserializes_with_both_hostname_and_app_name ... ok
[INFO] [stdout] test encoder::syslog::tests::syslog_encoder_is_send_and_sync ... ok
[INFO] [stdout] test encoder::syslog::tests::encoder_config_syslog_deserializes_without_optional_fields ... ok
[INFO] [stdout] test encoder::tests::create_encoder_influx_lp_no_field_key_succeeds ... ok
[INFO] [stdout] test encoder::syslog::tests::priority_for_debug_is_facility_user_plus_debug_syslog_severity ... ok
[INFO] [stdout] test encoder::syslog::tests::priority_for_warn_is_facility_user_plus_warning_syslog_severity ... ok
[INFO] [stdout] test encoder::syslog::tests::regression_anchor_error_severity_exact_output ... ok
[INFO] [stdout] test encoder::tests::create_encoder_otlp_disabled_returns_feature_hint_error ... ok
[INFO] [stdout] test encoder::tests::create_encoder_prometheus_text_succeeds ... ok
[INFO] [stdout] test encoder::tests::create_encoder_remote_write_disabled_returns_feature_hint_error ... ok
[INFO] [stdout] test encoder::tests::encode_log_default_does_not_write_to_buffer ... ok
[INFO] [stdout] test encoder::tests::create_encoder_json_lines_succeeds ... ok
[INFO] [stdout] test encoder::syslog::tests::regression_anchor_info_severity_with_labels_exact_output ... ok
[INFO] [stdout] test encoder::tests::encoder_config_influx_lp_with_field_key_deserializes_with_type_field ... ok
[INFO] [stdout] test encoder::tests::encoder_config_influx_lp_without_field_key_deserializes_with_type_field ... ok
[INFO] [stdout] test encoder::tests::encoder_config_is_send_and_sync ... ok
[INFO] [stdout] test encoder::tests::encoder_config_json_lines_deserializes_with_type_field ... ok
[INFO] [stdout] test encoder::tests::encoder_config_json_lines_is_cloneable_and_debuggable ... ok
[INFO] [stdout] test encoder::tests::create_encoder_influx_lp_with_field_key_succeeds ... ok
[INFO] [stdout] test encoder::tests::encode_log_error_is_encoder_variant ... ok
[INFO] [stdout] test encoder::tests::encoder_config_prometheus_text_is_cloneable_and_debuggable ... ok
[INFO] [stdout] test encoder::tests::format_rfc3339_millis_century_leap_year_2000_feb_29 ... ok
[INFO] [stdout] test encoder::tests::format_rfc3339_millis_epoch_writes_correct_bytes ... ok
[INFO] [stdout] test encoder::tests::encoder_config_influx_lp_is_cloneable_and_debuggable ... ok
[INFO] [stdout] test encoder::tests::encoder_config_old_external_tag_format_is_rejected ... ok
[INFO] [stdout] test encoder::tests::encoder_config_unknown_type_returns_error ... ok
[INFO] [stdout] test encoder::tests::format_rfc3339_millis_appends_to_existing_buffer ... ok
[INFO] [stdout] test encoder::tests::format_rfc3339_millis_dec_31_to_jan_1_transition ... ok
[INFO] [stdout] test encoder::tests::format_rfc3339_millis_array_and_buf_produce_identical_output ... ok
[INFO] [stdout] test encoder::tests::format_rfc3339_millis_array_before_epoch_returns_error ... ok
[INFO] [stdout] test encoder::tests::format_rfc3339_millis_array_epoch ... ok
[INFO] [stdout] test encoder::tests::format_rfc3339_millis_leap_year_dec_31_to_jan_1 ... ok
[INFO] [stdout] test encoder::tests::format_rfc3339_millis_mid_day_with_millis ... ok
[INFO] [stdout] test encoder::tests::format_rfc3339_millis_array_returns_correct_bytes ... ok
[INFO] [stdout] test encoder::tests::format_rfc3339_millis_before_epoch_returns_error ... ok
[INFO] [stdout] test encoder::tests::format_rfc3339_millis_writes_to_buffer ... ok
[INFO] [stdout] test encoder::tests::format_rfc3339_millis_century_non_leap_year_2100_feb_28 ... ok
[INFO] [stdout] test encoder::tests::format_rfc3339_millis_century_non_leap_year_2100_mar_1 ... ok
[INFO] [stdout] test encoder::tests::format_rfc3339_millis_jan_1_midnight ... ok
[INFO] [stdout] test encoder::tests::format_rfc3339_millis_array_preserves_milliseconds ... ok
[INFO] [stdout] test encoder::tests::influx_encoder_encode_log_returns_not_supported_error ... ok
[INFO] [stdout] test encoder::tests::encoder_config_missing_type_field_returns_error ... ok
[INFO] [stdout] test encoder::tests::format_rfc3339_millis_leap_year_feb_29_2024 ... ok
[INFO] [stdout] test encoder::tests::format_rfc3339_millis_non_leap_year_mar_1_2023 ... ok
[INFO] [stdout] test encoder::tests::rfc3339_millis_len_constant_matches_output_size ... ok
[INFO] [stdout] test encoder::tests::influx_with_precision_and_field_key_deserializes ... ok
[INFO] [stdout] test encoder::tests::write_value_precision_4 ... ok
[INFO] [stdout] test encoder::tests::json_lines_encoder_encode_log_succeeds ... ok
[INFO] [stdout] test encoder::tests::json_lines_with_precision_deserializes ... ok
[INFO] [stdout] test encoder::tests::json_lines_without_precision_defaults_to_none ... ok
[INFO] [stdout] test encoder::tests::otlp_yaml_deserializes_into_disabled_variant_when_feature_is_off ... ok
[INFO] [stdout] test encoder::tests::prometheus_encoder_encode_log_returns_not_supported_error ... ok
[INFO] [stdout] test encoder::tests::prometheus_text_with_precision_deserializes ... ok
[INFO] [stdout] test encoder::tests::prometheus_text_without_precision_defaults_to_none ... ok
[INFO] [stdout] test encoder::tests::remote_write_yaml_deserializes_into_disabled_variant_when_feature_is_off ... ok
[INFO] [stdout] test encoder::tests::write_value_precision_with_negative ... ok
[INFO] [stdout] test generator::constant::tests::returns_constant_value ... ok
[INFO] [stdout] test encoder::tests::write_value_precision_2 ... ok
[INFO] [stdout] test generator::csv_header::tests::empty_header_returns_no_name_no_labels ... ok
[INFO] [stdout] test generator::csv_header::tests::format1_name_only_in_dunder ... ok
[INFO] [stdout] test generator::csv_header::tests::format2_name_with_empty_labels ... ok
[INFO] [stdout] test generator::csv_header::tests::format2_name_before_brace ... ok
[INFO] [stdout] test generator::csv_header::tests::format1_name_from_dunder_name_label ... ok
[INFO] [stdout] test generator::csv_header::tests::is_header_line_first_col_numeric_second_text ... ok
[INFO] [stdout] test generator::csv_header::tests::empty_braces ... ok
[INFO] [stdout] test generator::csv_header::tests::format4_plain_name ... ok
[INFO] [stdout] test encoder::tests::encoder_config_prometheus_text_deserializes_with_type_field ... ok
[INFO] [stdout] test generator::csv_header::tests::determinism_same_header_twice ... ok
[INFO] [stdout] test generator::csv_header::tests::empty_key_returns_error ... ok
[INFO] [stdout] test generator::csv_header::tests::is_header_line_detects_text_header ... ok
[INFO] [stdout] test encoder::tests::write_value_none_uses_default_display ... ok
[INFO] [stdout] test generator::csv_header::tests::format3_labels_only_no_name ... ok
[INFO] [stdout] test generator::csv_header::tests::is_header_line_rejects_all_numeric ... ok
[INFO] [stdout] test encoder::tests::write_value_precision_0 ... ok
[INFO] [stdout] test generator::csv_header::tests::is_header_line_single_column_numeric ... ok
[INFO] [stdout] test generator::csv_header::tests::is_header_line_empty_string_is_non_numeric ... ok
[INFO] [stdout] test generator::csv_header::tests::format5_simple_word ... ok
[INFO] [stdout] test generator::csv_header::tests::is_header_line_single_column_text ... ok
[INFO] [stdout] test generator::csv_header::tests::missing_equals_returns_error ... ok
[INFO] [stdout] test generator::csv_header::tests::parse_header_row_plain_columns ... ok
[INFO] [stdout] test generator::csv_header::tests::split_grafana_style_header ... ok
[INFO] [stdout] test generator::csv_header::tests::split_mixed_quoted_and_unquoted ... ok
[INFO] [stdout] test generator::csv_header::tests::parsed_column_header_is_send_and_sync ... ok
[INFO] [stdout] test generator::csv_header::tests::format2_name_with_single_label ... ok
[INFO] [stdout] test generator::csv_header::tests::plain_name_with_whitespace ... ok
[INFO] [stdout] test generator::csv_header::tests::spaces_around_label_pairs ... ok
[INFO] [stdout] test generator::csv_header::tests::split_empty_line ... ok
[INFO] [stdout] test generator::csv_header::tests::split_quoted_fields_strip_outer_quotes ... ok
[INFO] [stdout] test generator::csv_header::tests::split_rfc4180_escaped_quotes ... ok
[INFO] [stdout] test generator::csv_replay::tests::a_row_too_short_for_its_column_is_refused ... ok
[INFO] [stdout] test generator::csv_replay::tests::a_blank_cell_holds_its_slot_rather_than_shrinking_the_column ... ok
[INFO] [stdout] test generator::csv_replay::tests::a_literal_nan_cell_is_a_present_sample_not_a_gap ... ok
[INFO] [stdout] test generator::csv_header::tests::unterminated_quoted_value_returns_error ... ok
[INFO] [stdout] test generator::csv_header::tests::parse_header_row_format2_mixed ... ok
[INFO] [stdout] test generator::csv_header::tests::whitespace_only_header ... ok
[INFO] [stdout] test generator::csv_header::tests::label_value_with_escaped_quote ... ok
[INFO] [stdout] test generator::csv_replay::tests::auto_detect_skips_non_numeric_header ... ok
[INFO] [stdout] test generator::csv_header::tests::label_value_with_comma_inside_quotes ... ok
[INFO] [stdout] test generator::csv_header::tests::parse_header_row_grafana_export ... ok
[INFO] [stdout] test generator::csv_header::tests::split_simple_unquoted_fields ... ok
[INFO] [stdout] test generator::csv_replay::tests::auto_detect_header_after_comments_and_empty_lines ... ok
[INFO] [stdout] test generator::csv_header::tests::split_single_field ... ok
[INFO] [stdout] test generator::csv_header::tests::multiple_labels_three ... ok
[INFO] [stdout] test generator::csv_replay::tests::column_index_out_of_bounds_on_disk ... ok
[INFO] [stdout] test generator::csv_header::tests::unmatched_open_brace_returns_error ... ok
[INFO] [stdout] test generator::csv_replay::tests::a_window_end_that_lands_between_floats_does_not_hide_an_uncovered_tick ... ok
[INFO] [stdout] test generator::csv_replay::tests::auto_detect_multi_column_all_numeric_no_skip ... ok
[INFO] [stdout] test generator::csv_replay::tests::column_index_out_of_bounds_returns_error ... ok
[INFO] [stdout] test generator::csv_replay::tests::comment_with_leading_whitespace_is_skipped ... ok
[INFO] [stdout] test generator::csv_replay::tests::empty_file_returns_error ... ok
[INFO] [stdout] test generator::csv_replay::tests::factory_csv_replay_creates_working_generator ... ok
[INFO] [stdout] test generator::csv_replay::tests::auto_detect_includes_all_numeric_first_row ... ok
[INFO] [stdout] test generator::csv_header::tests::unquoted_label_value ... ok
[INFO] [stdout] test generator::csv_replay::tests::determinism_separate_instances_same_content ... ok
[INFO] [stdout] test generator::csv_replay::tests::factory_csv_replay_defaults ... ok
[INFO] [stdout] test generator::csv_replay::tests::empty_lines_are_skipped ... ok
[INFO] [stdout] test generator::csv_replay::tests::factory_csv_replay_missing_file_returns_error ... ok
[INFO] [stdout] test generator::csv_replay::tests::csv_replay_generator_is_send_and_sync ... ok
[INFO] [stdout] test generator::csv_replay::tests::empty_content_from_str_returns_error ... ok
[INFO] [stdout] test generator::csv_replay::tests::fields_with_whitespace_are_trimmed ... ok
[INFO] [stdout] test generator::csv_replay::tests::deserialize_csv_replay_config_minimal ... ok
[INFO] [stdout] test generator::csv_replay::tests::correct_number_of_values_loaded ... ok
[INFO] [stdout] test generator::csv_replay::tests::file_not_found_returns_generator_file_read_error ... ok
[INFO] [stdout] test generator::csv_replay::tests::file_with_header_and_unparseable_body_returns_error ... ok
[INFO] [stdout] test generator::csv_replay::tests::file_with_only_comments_returns_error ... ok
[INFO] [stdout] test generator::csv_replay::tests::first_uncovered_tick_cases::case_02_fully_covered ... ok
[INFO] [stdout] test generator::csv_replay::tests::first_uncovered_tick_cases::case_04_window_starts_later ... ok
[INFO] [stdout] test generator::csv_replay::tests::first_uncovered_tick_cases::case_06_hole_between ... ok
[INFO] [stdout] test generator::csv_replay::tests::file_with_only_header_returns_error ... ok
[INFO] [stdout] test generator::csv_replay::tests::first_uncovered_tick_cases::case_07_adjacent_chain ... ok
[INFO] [stdout] test generator::csv_replay::tests::first_uncovered_tick_cases::case_08_unsorted_input ... ok
[INFO] [stdout] test generator::csv_replay::tests::first_uncovered_tick_cases::case_10_empty_range ... ok
[INFO] [stdout] test generator::csv_replay::tests::deserialize_csv_replay_config_from_yaml ... ok
[INFO] [stdout] test generator::csv_replay::tests::determinism_same_tick_returns_same_value ... ok
[INFO] [stdout] test generator::csv_replay::tests::first_uncovered_tick_cases::case_01_no_windows ... ok
[INFO] [stdout] test generator::csv_replay::tests::mixed_content_loads_correctly ... ok
[INFO] [stdout] test generator::csv_replay::tests::multi_column_csv_reads_correct_column ... ok
[INFO] [stdout] test generator::csv_replay::tests::comment_lines_are_skipped ... ok
[INFO] [stdout] test generator::csv_replay::tests::no_repeat_tick_above_u32_max_clamps_correctly ... ok
[INFO] [stdout] test generator::csv_replay::tests::file_with_no_parseable_numbers_returns_error ... ok
[INFO] [stdout] test generator::csv_replay::tests::example_yaml_scenario_file_deserializes ... ok
[INFO] [stdout] test generator::csv_replay::tests::no_repeat_tick_at_u64_max_clamps_correctly ... ok
[INFO] [stdout] test generator::csv_replay::tests::multi_column_csv_reads_first_column ... ok
[INFO] [stdout] test generator::csv_replay::tests::one_column_file_loads_all_values ... ok
[INFO] [stdout] test generator::csv_replay::tests::first_uncovered_tick_cases::case_05_end_is_exclusive ... ok
[INFO] [stdout] test generator::csv_replay::tests::no_repeat_large_tick_does_not_panic ... ok
[INFO] [stdout] test generator::csv_replay::tests::first_uncovered_tick_cases::case_09_overlapping ... ok
[INFO] [stdout] test generator::csv_replay::tests::handles_negative_values ... ok
[INFO] [stdout] test generator::csv_replay::tests::handles_integer_values ... ok
[INFO] [stdout] test generator::csv_replay::tests::one_column_file_from_disk ... ok
[INFO] [stdout] test generator::csv_replay::tests::first_uncovered_tick_cases::case_03_covers_prefix ... ok
[INFO] [stdout] test generator::csv_replay::tests::repeat_defaults_to_true_via_factory ... ok
[INFO] [stdout] test generator::csv_replay::tests::multi_column_csv_reads_last_column ... ok
[INFO] [stdout] test generator::csv_replay::tests::first_uncovered_tick_agrees_with_a_brute_force_scan ... ok
[INFO] [stdout] test generator::csv_replay::tests::repeat_false_at_exact_boundary_returns_last ... ok
[INFO] [stdout] test generator::csv_replay::tests::repeat_large_tick_does_not_panic ... ok
[INFO] [stdout] test generator::csv_replay::tests::repeat_tick_above_u32_max_uses_u64_modulo ... ok
[INFO] [stdout] test generator::csv_replay::tests::repeat_tick_at_u64_max_does_not_panic ... ok
[INFO] [stdout] test generator::csv_replay::tests::repeat_false_clamps_to_last_value ... ok
[INFO] [stdout] test generator::csv_replay::tests::repeat_true_multiple_full_cycles ... ok
[INFO] [stdout] test generator::csv_replay::tests::sample_cpu_values_csv_from_disk ... ok
[INFO] [stdout] test generator::csv_replay::tests::whitespace_only_lines_are_skipped ... ok
[INFO] [stdout] test generator::csv_replay::tests::unparseable_rows_are_refused_naming_the_line ... ok
[INFO] [stdout] test generator::csv_replay::tests::single_value_repeat_true ... ok
[INFO] [stdout] test generator::histogram::tests::count_equals_observations_times_ticks ... ok
[INFO] [stdout] test generator::histogram::tests::default_buckets_are_sorted_and_positive ... ok
[INFO] [stdout] test generator::histogram::tests::different_seeds_produce_different_output ... ok
[INFO] [stdout] test generator::histogram::tests::histogram_generator_is_send ... ok
[INFO] [stdout] test generator::histogram::tests::bucket_counts_never_decrease_across_ticks ... ok
[INFO] [stdout] test generator::csv_replay::tests::single_value_repeat_false ... ok
[INFO] [stdout] test generator::histogram::tests::default_buckets_have_expected_count ... ok
[INFO] [stdout] test generator::jitter::tests::different_seeds_produce_different_sequences ... ok
[INFO] [stdout] test generator::jitter::tests::jitter_noise_differs_from_uniform_random_with_same_seed_and_tick ... ok
[INFO] [stdout] test generator::histogram::tests::mean_shift_increases_values_over_time ... ok
[INFO] [stdout] test generator::histogram::tests::single_bucket_works ... ok
[INFO] [stdout] test generator::histogram::tests::same_seed_produces_identical_output ... ok
[INFO] [stdout] test generator::histogram::tests::exponential_values_are_non_negative ... ok
[INFO] [stdout] test generator::histogram::tests::uniform_01_in_range ... ok
[INFO] [stdout] test generator::jitter::tests::all_values_within_bounds_for_10000_ticks ... ok
[INFO] [stdout] test generator::jitter::tests::jitter_wrapping_sine_stays_within_bounds ... ok
[INFO] [stdout] test generator::histogram::tests::sum_accumulates_across_ticks ... ok
[INFO] [stdout] test generator::jitter::tests::regression_anchor_known_output ... ok
[INFO] [stdout] test generator::jitter::tests::determinism_across_instances ... ok
[INFO] [stdout] test generator::histogram::tests::largest_bucket_captures_most_observations ... ok
[INFO] [stdout] test generator::jitter::tests::zero_half_range_returns_inner_value_exactly ... ok
[INFO] [stdout] test generator::histogram::tests::histogram_sample_is_send_and_sync ... ok
[INFO] [stdout] test generator::log_csv_replay::tests::empty_csv_returns_error ... ok
[INFO] [stdout] test generator::histogram::tests::uniform_distribution_within_range ... ok
[INFO] [stdout] test generator::log_csv_replay::tests::empty_field_cell_is_omitted_from_row_map ... ok
[INFO] [stdout] test generator::jitter::tests::at_least_some_values_differ_from_inner ... ok
[INFO] [stdout] test generator::log_csv_replay::tests::extra_columns_become_fields ... ok
[INFO] [stdout] test generator::histogram::tests::normal_distribution_centers_around_mean ... ok
[INFO] [stdout] test generator::log_csv_replay::tests::from_str_constructor_does_not_need_disk ... ok
[INFO] [stdout] test generator::jitter::tests::same_seed_and_tick_returns_same_value ... ok
[INFO] [stdout] test generator::log_csv_replay::tests::header_only_csv_returns_error ... ok
[INFO] [stdout] test generator::log_csv_replay::tests::auto_discovery_matches_case_insensitively ... ok
[INFO] [stdout] test generator::log_csv_replay::tests::comment_and_blank_lines_are_skipped ... ok
[INFO] [stdout] test generator::csv_replay::tests::repeat_true_cycles_at_boundary ... ok
[INFO] [stdout] test generator::log_csv_replay::tests::generate_at_stamps_each_event_with_the_caller_timestamp ... ok
[INFO] [stdout] test generator::log_csv_replay::tests::three_rows_produce_three_distinct_events ... ok
[INFO] [stdout] test generator::log_csv_replay::tests::log_csv_replay_generator_is_send_and_sync ... ok
[INFO] [stdout] test generator::log_csv_replay::tests::tick_clamps_to_last_when_repeat_false ... ok
[INFO] [stdout] test generator::log_csv_replay::tests::explicit_columns_override_auto_discovery ... ok
[INFO] [stdout] test generator::log_template::tests::fields_map_populated_even_if_placeholder_not_in_message ... ok
[INFO] [stdout] test generator::log_template::tests::generate_at_matches_generate_content_for_same_tick ... ok
[INFO] [stdout] test generator::log_template::tests::generate_at_stamps_exactly_the_provided_timestamp ... ok
[INFO] [stdout] test generator::log_template::tests::empty_severity_weights_defaults_to_info ... ok
[INFO] [stdout] test generator::log_template::tests::log_template_generator_is_send_and_sync ... ok
[INFO] [stdout] test generator::log_csv_replay::tests::unknown_severity_falls_back_to_default ... ok
[INFO] [stdout] test generator::log_template::tests::resolved_endpoint_value_comes_from_pool ... ok
[INFO] [stdout] test generator::log_template::tests::same_seed_and_tick_produce_identical_message ... ok
[INFO] [stdout] test generator::log_template::tests::template_mixed_known_and_unknown_placeholders ... ok
[INFO] [stdout] test generator::log_template::tests::template_empty_message_returns_empty_string ... ok
[INFO] [stdout] test generator::log_csv_replay::tests::tick_wraps_at_boundary_when_repeat_true ... ok
[INFO] [stdout] test generator::log_csv_replay::tests::empty_severity_falls_back_to_default ... ok
[INFO] [stdout] test generator::log_template::tests::resolved_message_contains_no_unresolved_placeholders ... ok
[INFO] [stdout] test generator::log_template::tests::same_seed_and_tick_produce_identical_fields ... ok
[INFO] [stdout] test generator::log_template::tests::resolved_message_contains_selected_field_value ... ok
[INFO] [stdout] test generator::log_template::tests::same_seed_and_tick_produce_identical_severity ... ok
[INFO] [stdout] test generator::log_template::tests::generate_at_on_empty_templates_uses_provided_timestamp ... ok
[INFO] [stdout] test generator::log_template::tests::template_with_placeholder_at_start_and_end ... ok
[INFO] [stdout] test generator::log_template::tests::template_with_adjacent_placeholders_resolves_both ... ok
[INFO] [stdout] test generator::log_template::tests::template_with_no_placeholders_returns_literal ... ok
[INFO] [stdout] test generator::log_template::tests::template_with_repeated_placeholder_resolves_all_occurrences ... ok
[INFO] [stdout] test generator::log_template::tests::empty_templates_returns_empty_info_event ... ok
[INFO] [stdout] test generator::log_template::tests::template_with_unknown_placeholder_preserves_literal_braces ... ok
[INFO] [stdout] test generator::sawtooth::tests::sawtooth_period_ticks_pre_computed_from_rate ... ok
[INFO] [stdout] test generator::sawtooth::tests::sawtooth_linear_ramp_between_ticks ... ok
[INFO] [stdout] test generator::log_template::tests::resolved_ip_value_comes_from_pool ... ok
[INFO] [stdout] test generator::sawtooth::tests::sawtooth_resets_at_second_period ... ok
[INFO] [stdout] test generator::sequence::tests::cpu_spike_pattern_produces_expected_values ... ok
[INFO] [stdout] test generator::log_template::tests::tick_at_u64_max_selects_correct_template ... ok
[INFO] [stdout] test generator::sequence::tests::determinism_same_tick_returns_same_value ... ok
[INFO] [stdout] test generator::log_template::tests::template_only_placeholder_no_literal_text ... ok
[INFO] [stdout] test generator::log_template::tests::template_with_empty_placeholder_name_preserved ... ok
[INFO] [stdout] test generator::sequence::tests::determinism_separate_instances_same_config ... ok
[INFO] [stdout] test generator::log_template::tests::severity_distribution_matches_weights_within_five_percent ... ok
[INFO] [stdout] test generator::log_template::tests::large_tick_does_not_panic ... ok
[INFO] [stdout] test generator::log_template::tests::different_seeds_produce_different_output_for_same_tick ... ok
[INFO] [stdout] test generator::sawtooth::tests::sawtooth_approaches_max_near_period_end ... ok
[INFO] [stdout] test generator::sawtooth::tests::sawtooth_at_period_boundary_resets_to_min ... ok
[INFO] [stdout] test generator::sawtooth::tests::sawtooth_at_tick_zero_returns_min ... ok
[INFO] [stdout] test generator::log_template::tests::template_with_unclosed_brace_copies_brace_literally ... ok
[INFO] [stdout] test generator::log_template::tests::tick_above_u32_max_selects_correct_template ... ok
[INFO] [stdout] test generator::log_template::tests::two_templates_selected_round_robin ... ok
[INFO] [stdout] test generator::sequence::tests::handles_negative_values ... ok
[INFO] [stdout] test generator::sequence::tests::handles_special_float_values ... ok
[INFO] [stdout] test generator::sequence::tests::new_with_empty_values_returns_config_error ... ok
[INFO] [stdout] test generator::sequence::tests::new_with_single_value_succeeds ... ok
[INFO] [stdout] test generator::sequence::tests::no_repeat_at_exact_boundary_clamps_to_last ... ok
[INFO] [stdout] test generator::sequence::tests::no_repeat_beyond_length_clamps_to_last ... ok
[INFO] [stdout] test generator::sequence::tests::no_repeat_tick_above_u32_max_clamps_correctly ... ok
[INFO] [stdout] test generator::sequence::tests::no_repeat_tick_one_returns_second_value ... ok
[INFO] [stdout] test generator::sequence::tests::repeat_large_tick_does_not_panic ... ok
[INFO] [stdout] test generator::sequence::tests::repeat_single_value_always_returns_that_value ... ok
[INFO] [stdout] test generator::sequence::tests::new_with_multiple_values_succeeds ... ok
[INFO] [stdout] test generator::sequence::tests::no_repeat_tick_at_u64_max_clamps_correctly ... ok
[INFO] [stdout] test generator::sequence::tests::new_with_empty_values_repeat_false_returns_config_error ... ok
[INFO] [stdout] test generator::sequence::tests::repeat_multiple_full_cycles ... ok
[INFO] [stdout] test generator::sequence::tests::no_repeat_tick_zero_returns_first_value ... ok
[INFO] [stdout] test generator::sequence::tests::repeat_tick_at_u64_max_does_not_panic ... ok
[INFO] [stdout] test generator::sine::tests::sine_period_ticks_pre_computed_from_rate ... ok
[INFO] [stdout] test generator::sine::tests::sine_symmetry_around_offset ... ok
[INFO] [stdout] test generator::spike::tests::determinism_same_tick_same_value ... ok
[INFO] [stdout] test generator::sequence::tests::no_repeat_large_tick_does_not_panic ... ok
[INFO] [stdout] test generator::sequence::tests::repeat_tick_two_returns_third_value ... ok
[INFO] [stdout] test generator::spike::tests::duration_ge_interval_always_spikes ... ok
[INFO] [stdout] test generator::sequence::tests::repeat_tick_zero_returns_first_value ... ok
[INFO] [stdout] test generator::spike::tests::duration_zero_always_baseline ... ok
[INFO] [stdout] test generator::spike::tests::duration_greater_than_interval_always_spikes ... ok
[INFO] [stdout] test generator::sequence::tests::repeat_tick_above_u32_max_uses_u64_modulo ... ok
[INFO] [stdout] test generator::sequence::tests::no_repeat_single_value_always_returns_that_value ... ok
[INFO] [stdout] test generator::spike::tests::exact_boundary_at_spike_start ... ok
[INFO] [stdout] test generator::sequence::tests::repeat_tick_one_returns_second_value ... ok
[INFO] [stdout] test generator::sequence::tests::repeat_wraps_at_sequence_boundary ... ok
[INFO] [stdout] test generator::sequence::tests::sequence_generator_is_send_and_sync ... ok
[INFO] [stdout] test generator::sine::tests::sine_at_full_period_returns_offset ... ok
[INFO] [stdout] test generator::spike::tests::rate_adjusts_period_ticks ... ok
[INFO] [stdout] test generator::sine::tests::sine_at_half_period_returns_offset ... ok
[INFO] [stdout] test generator::sine::tests::sine_at_quarter_period_returns_offset_plus_amplitude ... ok
[INFO] [stdout] test generator::sine::tests::sine_at_tick_zero_returns_offset ... ok
[INFO] [stdout] test generator::spike::tests::exact_boundary_at_second_interval ... ok
[INFO] [stdout] test generator::spike::tests::large_tick_values_do_not_panic ... ok
[INFO] [stdout] test generator::spike::tests::tick_during_spike_period_returns_baseline_plus_magnitude ... ok
[INFO] [stdout] test generator::spike::tests::different_rate_values_produce_different_tick_boundaries ... ok
[INFO] [stdout] test generator::spike::tests::tick_during_baseline_period_returns_baseline ... ok
[INFO] [stdout] test generator::step::tests::tick_zero_returns_start ... ok
[INFO] [stdout] test generator::sequence::tests::repeat_wraps_correctly_at_tick_5 ... ok
[INFO] [stdout] test generator::step::tests::large_tick_unbounded_does_not_panic ... ok
[INFO] [stdout] test generator::step::tests::determinism_same_tick_same_value ... ok
[INFO] [stdout] test generator::step::tests::fractional_step_with_wrap ... ok
[INFO] [stdout] test generator::step::tests::linear_increase_without_max ... ok
[INFO] [stdout] test generator::step::tests::linear_increase_with_nonzero_start ... ok
[INFO] [stdout] test generator::step::tests::fractional_step_size ... ok
[INFO] [stdout] test generator::step::tests::max_equal_to_start_acts_as_no_wrap ... ok
[INFO] [stdout] test generator::step::tests::large_tick_values_do_not_panic ... ok
[INFO] [stdout] test generator::step::tests::max_less_than_start_acts_as_no_wrap ... ok
[INFO] [stdout] test generator::step::tests::negative_step_size ... ok
[INFO] [stdout] test generator::step::tests::negative_step_with_wrap_stays_in_range ... ok
[INFO] [stdout] test generator::step::tests::max_none_is_unbounded ... ok
[INFO] [stdout] test generator::spike::tests::exact_boundary_at_spike_end ... ok
[INFO] [stdout] test generator::spike::tests::negative_magnitude_dips_below_baseline ... ok
[INFO] [stdout] test generator::step::tests::tick_zero_returns_start_with_max ... ok
[INFO] [stdout] test generator::step::tests::wrap_around_at_max_boundary ... ok
[INFO] [stdout] test generator::step::tests::wrap_around_with_nonzero_start ... ok
[INFO] [stdout] test generator::step::tests::zero_step_size_returns_start ... ok
[INFO] [stdout] test generator::summary::tests::count_and_sum_never_decrease ... ok
[INFO] [stdout] test generator::summary::tests::count_equals_observations_times_ticks ... ok
[INFO] [stdout] test generator::summary::tests::default_quantiles_are_valid ... ok
[INFO] [stdout] test generator::summary::tests::default_quantiles_have_expected_count ... ok
[INFO] [stdout] test generator::summary::tests::different_seeds_produce_different_output ... ok
[INFO] [stdout] test generator::summary::tests::same_seed_produces_identical_output ... ok
[INFO] [stdout] test generator::summary::tests::quantile_values_are_non_decreasing ... ok
[INFO] [stdout] test generator::summary::tests::normal_distribution_p50_near_mean ... ok
[INFO] [stdout] test generator::summary::tests::summary_sample_is_send_and_sync ... ok
[INFO] [stdout] test generator::tests::deserialize_constant_config ... ok
[INFO] [stdout] test generator::summary::tests::summary_generator_is_send ... ok
[INFO] [stdout] test generator::tests::deserialize_example_yaml_scenario_file ... ok
[INFO] [stdout] test generator::tests::deserialize_log_csv_replay_config_full ... ok
[INFO] [stdout] test generator::tests::deserialize_log_csv_replay_config_minimal ... ok
[INFO] [stdout] test generator::tests::deserialize_log_template_config_minimal ... ok
[INFO] [stdout] test generator::tests::deserialize_sawtooth_config ... ok
[INFO] [stdout] test generator::tests::deserialize_log_template_config_with_weights_and_seed ... ok
[INFO] [stdout] test generator::tests::deserialize_sequence_config_integer_values ... ok
[INFO] [stdout] test generator::tests::deserialize_sequence_config_repeat_false ... ok
[INFO] [stdout] test generator::tests::deserialize_sequence_config_with_repeat ... ok
[INFO] [stdout] test generator::tests::deserialize_sequence_config_without_repeat ... ok
[INFO] [stdout] test generator::tests::deserialize_sine_config ... ok
[INFO] [stdout] test generator::tests::deserialize_spike_config ... ok
[INFO] [stdout] test generator::tests::deserialize_step_config_full ... ok
[INFO] [stdout] test generator::tests::deserialize_spike_config_negative_magnitude ... ok
[INFO] [stdout] test generator::tests::deserialize_step_config_integer_values ... ok
[INFO] [stdout] test generator::tests::deserialize_step_config_minimal ... ok
[INFO] [stdout] test generator::tests::deserialize_uniform_config_with_seed ... ok
[INFO] [stdout] test generator::tests::deserialize_uniform_config_without_seed ... ok
[INFO] [stdout] test generator::tests::factory_constant_returns_configured_value ... ok
[INFO] [stdout] test generator::tests::factory_csv_replay_config_creates_working_generator ... ok
[INFO] [stdout] test generator::tests::factory_sawtooth_value_at_zero_equals_min ... ok
[INFO] [stdout] test generator::tests::factory_csv_replay_with_columns_returns_error ... ok
[INFO] [stdout] test generator::tests::factory_csv_replay_config_missing_file_returns_error ... ok
[INFO] [stdout] test generator::tests::factory_sequence_empty_values_returns_error ... ok
[INFO] [stdout] test generator::tests::factory_sequence_repeat_false_creates_working_generator ... ok
[INFO] [stdout] test generator::tests::factory_sequence_repeat_none_defaults_to_true ... ok
[INFO] [stdout] test generator::tests::factory_sequence_repeat_true_creates_working_generator ... ok
[INFO] [stdout] test generator::tests::factory_sine_value_at_zero_equals_offset ... ok
[INFO] [stdout] test generator::tests::factory_spike_negative_duration_returns_error ... ok
[INFO] [stdout] test generator::tests::factory_spike_negative_interval_returns_error ... ok
[INFO] [stdout] test generator::tests::factory_spike_returns_baseline_outside_window ... ok
[INFO] [stdout] test generator::tests::factory_spike_returns_spike_inside_window ... ok
[INFO] [stdout] test generator::tests::factory_spike_zero_duration_succeeds ... ok
[INFO] [stdout] test generator::tests::factory_spike_zero_interval_returns_error ... ok
[INFO] [stdout] test generator::tests::factory_step_linear_growth ... ok
[INFO] [stdout] test generator::tests::factory_step_start_none_defaults_to_zero ... ok
[INFO] [stdout] test generator::tests::factory_step_with_start ... ok
[INFO] [stdout] test generator::tests::factory_step_with_wrap ... ok
[INFO] [stdout] test generator::tests::factory_template_config_creates_working_generator ... ok
[INFO] [stdout] test generator::tests::factory_template_config_seed_none_defaults_correctly ... ok
[INFO] [stdout] test generator::tests::factory_template_invalid_severity_key_returns_error ... ok
[INFO] [stdout] test generator::tests::factory_uniform_seed_none_defaults_to_zero_seed ... ok
[INFO] [stdout] test generator::tests::factory_uniform_returns_values_in_range ... ok
[INFO] [stdout] test generator::tests::generators_are_send_and_sync ... ok
[INFO] [stdout] test generator::tests::wrap_with_jitter_none_returns_unchanged ... ok
[INFO] [stdout] test generator::tests::wrap_with_jitter_positive_produces_values_in_range ... ok
[INFO] [stdout] test generator::tests::wrap_with_jitter_seed_none_defaults_to_zero ... ok
[INFO] [stdout] test generator::tests::log_generators_are_send_and_sync ... ok
[INFO] [stdout] test generator::tests::wrap_with_jitter_zero_returns_unchanged ... ok
[INFO] [stdout] test generator::uniform::tests::all_values_within_range_for_10000_ticks ... ok
[INFO] [stdout] test generator::uniform::tests::determinism_across_instances ... ok
[INFO] [stdout] test generator::uniform::tests::different_seeds_produce_different_sequences ... ok
[INFO] [stdout] test generator::uniform::tests::different_ticks_produce_different_values ... ok
[INFO] [stdout] test generator::uniform::tests::same_seed_and_tick_returns_same_value ... ok
[INFO] [stdout] test generator::uniform::tests::zero_range_returns_min ... ok
[INFO] [stdout] test model::log::tests::log_event_clone_is_independent ... ok
[INFO] [stdout] test model::log::tests::log_event_clone_preserves_labels ... ok
[INFO] [stdout] test model::log::tests::log_event_is_send_and_sync ... ok
[INFO] [stdout] test model::log::tests::new_stores_labels_correctly ... ok
[INFO] [stdout] test model::log::tests::new_stores_severity_message_and_fields ... ok
[INFO] [stdout] test model::log::tests::fields_are_sorted_by_key ... ok
[INFO] [stdout] test model::log::tests::new_uses_current_timestamp ... ok
[INFO] [stdout] test model::log::tests::new_with_empty_fields_succeeds ... ok
[INFO] [stdout] test model::log::tests::new_with_empty_labels_has_no_labels ... ok
[INFO] [stdout] test model::log::tests::severity_debug_serializes_to_lowercase_json ... ok
[INFO] [stdout] test model::log::tests::severity_deserializes_from_lowercase_debug ... ok
[INFO] [stdout] test model::log::tests::severity_deserializes_from_lowercase_error ... ok
[INFO] [stdout] test model::log::tests::severity_deserializes_from_lowercase_fatal ... ok
[INFO] [stdout] test model::log::tests::severity_deserializes_from_lowercase_info ... ok
[INFO] [stdout] test model::log::tests::severity_deserializes_from_lowercase_trace ... ok
[INFO] [stdout] test model::log::tests::severity_deserializes_from_lowercase_warn ... ok
[INFO] [stdout] test model::log::tests::severity_equal_variants_compare_as_equal ... ok
[INFO] [stdout] test model::log::tests::severity_error_serializes_to_lowercase_json ... ok
[INFO] [stdout] test model::log::tests::severity_error_serializes_to_lowercase_yaml ... ok
[INFO] [stdout] test model::log::tests::severity_fatal_serializes_to_lowercase_json ... ok
[INFO] [stdout] test model::log::tests::severity_info_serializes_to_lowercase_json ... ok
[INFO] [stdout] test model::log::tests::severity_info_serializes_to_lowercase_yaml ... ok
[INFO] [stdout] test model::log::tests::severity_is_send_and_sync ... ok
[INFO] [stdout] test model::log::tests::severity_ordering_follows_severity_ladder ... ok
[INFO] [stdout] test model::log::tests::severity_partial_ord_consistent_with_ord ... ok
[INFO] [stdout] test model::log::tests::severity_rejects_unknown_variant ... ok
[INFO] [stdout] test model::log::tests::severity_rejects_uppercase_deserialization ... ok
[INFO] [stdout] test model::log::tests::severity_sort_produces_ascending_order ... ok
[INFO] [stdout] test model::log::tests::severity_trace_serializes_to_lowercase_json ... ok
[INFO] [stdout] test model::log::tests::severity_warn_serializes_to_lowercase_json ... ok
[INFO] [stdout] test model::log::tests::with_timestamp_at_unix_epoch_is_valid ... ok
[INFO] [stdout] test model::log::tests::with_timestamp_stores_all_fields_correctly ... ok
[INFO] [stdout] test model::log::tests::with_timestamp_stores_labels_correctly ... ok
[INFO] [stdout] test model::log::tests::with_timestamp_uses_exact_provided_timestamp ... ok
[INFO] [stdout] test model::metric::tests::from_pairs_duplicate_key_last_write_wins ... ok
[INFO] [stdout] test model::metric::tests::from_pairs_error_message_includes_invalid_key ... ok
[INFO] [stdout] test model::metric::tests::from_pairs_stores_correct_values ... ok
[INFO] [stdout] test model::metric::tests::from_pairs_with_digit_leading_key_returns_config_error ... ok
[INFO] [stdout] test model::metric::tests::from_pairs_with_empty_key_returns_config_error ... ok
[INFO] [stdout] test model::metric::tests::from_pairs_with_hyphen_in_key_returns_config_error ... ok
[INFO] [stdout] test model::metric::tests::from_pairs_with_mixed_alphanumeric_key_returns_ok ... ok
[INFO] [stdout] test model::metric::tests::from_pairs_with_multiple_valid_pairs_returns_ok ... ok
[INFO] [stdout] test model::metric::tests::from_pairs_with_single_valid_pair_returns_ok ... ok
[INFO] [stdout] test model::metric::tests::from_pairs_with_space_in_key_returns_config_error ... ok
[INFO] [stdout] test model::metric::tests::from_pairs_with_underscore_leading_key_returns_ok ... ok
[INFO] [stdout] test model::metric::tests::from_parts_constructs_event_with_given_fields ... ok
[INFO] [stdout] test model::metric::tests::from_parts_preserves_exact_timestamp ... ok
[INFO] [stdout] test model::metric::tests::from_parts_requires_validated_name ... ok
[INFO] [stdout] test model::metric::tests::is_empty_returns_false_for_nonempty_label_set ... ok
[INFO] [stdout] test model::metric::tests::insert_maintains_sorted_order ... ok
[INFO] [stdout] test model::metric::tests::insert_overwrites_existing_key ... ok
[INFO] [stdout] test model::metric::tests::insert_adds_new_key ... ok
[INFO] [stdout] test model::metric::tests::insert_into_empty_labels ... ok
[INFO] [stdout] test model::metric::tests::labels_arc_is_shared_across_cloned_events ... ok
[INFO] [stdout] test model::metric::tests::is_empty_returns_true_for_empty_label_set ... ok
[INFO] [stdout] test model::metric::tests::labels_arc_is_shared_between_from_parts_and_source ... ok
[INFO] [stdout] test model::metric::tests::labels_is_send_and_sync ... ok
[INFO] [stdout] test model::metric::tests::labels_iter_yields_keys_in_sorted_order ... ok
[INFO] [stdout] test model::metric::tests::metric_event_new_timestamp_is_after_unix_epoch ... ok
[INFO] [stdout] test model::metric::tests::metric_event_new_with_dash_in_name_returns_config_error ... ok
[INFO] [stdout] test model::metric::tests::metric_event_new_error_message_includes_invalid_name ... ok
[INFO] [stdout] test model::metric::tests::metric_event_new_with_digit_leading_name_returns_config_error ... ok
[INFO] [stdout] test model::metric::tests::metric_event_new_with_empty_name_returns_config_error ... ok
[INFO] [stdout] test model::metric::tests::metric_event_new_with_double_underscore_prefix_returns_ok ... ok
[INFO] [stdout] test model::metric::tests::metric_event_new_with_underscored_name_returns_ok ... ok
[INFO] [stdout] test model::metric::tests::metric_event_new_with_valid_name_returns_ok ... ok
[INFO] [stdout] test model::metric::tests::multiple_events_from_same_validated_name_share_allocation ... ok
[INFO] [stdout] test model::metric::tests::len_returns_count_of_unique_keys ... ok
[INFO] [stdout] test model::metric::tests::metric_event_is_send_and_sync ... ok
[INFO] [stdout] test model::metric::tests::metric_event_new_with_colon_in_name_returns_ok ... ok
[INFO] [stdout] test model::metric::tests::name_arc_is_shared_across_cloned_events ... ok
[INFO] [stdout] test model::metric::tests::new_wraps_name_in_validated_metric_name ... ok
[INFO] [stdout] test model::metric::tests::validated_name_accepts_colon_prefix ... ok
[INFO] [stdout] test model::metric::tests::validated_name_accepts_name_with_colons ... ok
[INFO] [stdout] test model::metric::tests::metric_event_new_with_colon_leading_name_returns_ok ... ok
[INFO] [stdout] test model::metric::tests::validated_name_accepts_simple_name ... ok
[INFO] [stdout] test model::metric::tests::validated_name_accepts_underscored_name ... ok
[INFO] [stdout] test model::metric::tests::validated_name_as_bytes_works_via_deref ... ok
[INFO] [stdout] test model::metric::tests::validated_name_as_ref_returns_str ... ok
[INFO] [stdout] test model::metric::tests::validated_name_clone_shares_arc_allocation ... ok
[INFO] [stdout] test model::metric::tests::validated_name_deref_returns_str ... ok
[INFO] [stdout] test model::metric::tests::validated_name_display_shows_name ... ok
[INFO] [stdout] test model::metric::tests::validated_name_eq_compares_by_value ... ok
[INFO] [stdout] test model::metric::tests::validated_name_is_send_and_sync ... ok
[INFO] [stdout] test model::metric::tests::validated_name_ne_for_different_values ... ok
[INFO] [stdout] test model::metric::tests::validated_name_rejects_dash_in_name ... ok
[INFO] [stdout] test model::metric::tests::validated_name_rejects_digit_leading ... ok
[INFO] [stdout] test model::metric::tests::validated_name_rejects_empty_string ... ok
[INFO] [stdout] test model::metric::tests::with_timestamp_stores_epoch_zero_timestamp ... ok
[INFO] [stdout] test model::metric::tests::with_timestamp_stores_exact_provided_timestamp ... ok
[INFO] [stdout] test model::metric::tests::with_timestamp_stores_name_and_value_correctly ... ok
[INFO] [stdout] test model::metric::tests::with_timestamp_validates_name_same_as_new ... ok
[INFO] [stdout] test model::metric::tests::with_timestamp_wraps_name_in_validated_metric_name ... ok
[INFO] [stdout] test model::metric::tests::with_timestamp_wraps_labels_in_arc ... ok
[INFO] [stdout] test packs::extend::tests::a_deviation_addresses_a_repeated_name_by_id ... ok
[INFO] [stdout] test model::metric::tests::name_arc_is_shared_between_from_parts_and_source ... ok
[INFO] [stdout] test model::metric::tests::new_wraps_labels_in_arc ... ok
[INFO] [stdout] test packs::extend::tests::a_deviation_must_give_exactly_one_action ... ok
[INFO] [stdout] test packs::extend::tests::a_deviation_selector_matching_nothing_is_an_error_not_a_no_op ... ok
[INFO] [stdout] test packs::extend::tests::a_misspelled_action_key_surfaces_as_naming_no_action ... ok
[INFO] [stdout] test packs::extend::tests::a_replace_naming_no_field_is_refused_like_naming_no_action ... ok
[INFO] [stdout] test packs::extend::tests::adding_a_metric_the_base_declares_is_an_error ... ok
[INFO] [stdout] test packs::extend::tests::a_removal_does_not_misaim_a_later_replacement ... ok
[INFO] [stdout] test packs::extend::tests::an_extension_adds_its_own_metrics_after_the_bases ... ok
[INFO] [stdout] test packs::extend::tests::not_supported_does_not_free_the_selector_for_re_adding ... ok
[INFO] [stdout] test packs::extend::tests::not_supported_removes_the_spec ... ok
[INFO] [stdout] test packs::extend::tests::replace_swaps_the_named_field_and_inherits_the_rest ... ok
[INFO] [stdout] test packs::extend::tests::the_extensions_shared_labels_win_over_the_bases ... ok
[INFO] [stdout] test packs::extend::tests::the_base_is_never_edited ... ok
[INFO] [stdout] test packs::extend::tests::two_deviations_on_one_spec_are_refused_rather_than_last_wins ... ok
[INFO] [stdout] test packs::extend::tests::two_deviations_reaching_one_spec_by_different_selectors_are_refused ... ok
[INFO] [stdout] test packs::tests::a_bare_name_against_a_repeated_name_is_ambiguous_not_a_fan_out ... ok
[INFO] [stdout] test packs::tests::a_conflict_names_the_same_pair_whichever_order_the_keys_arrive_in ... ok
[INFO] [stdout] test packs::tests::a_dotted_metric_name_does_not_load ... ok
[INFO] [stdout] test packs::tests::a_repeated_name_with_ids_on_all_of_them_loads ... ok
[INFO] [stdout] test packs::tests::a_repeated_name_without_ids_does_not_load ... ok
[INFO] [stdout] test packs::extend::tests::a_replace_naming_only_labels_is_still_an_action ... ok
[INFO] [stdout] test packs::tests::an_unknown_id_under_a_known_name_is_a_no_match ... ok
[INFO] [stdout] test packs::tests::a_unique_name_needs_no_id ... ok
[INFO] [stdout] test packs::tests::an_unknown_selector_names_what_the_pack_does_have ... ok
[INFO] [stdout] test packs::tests::expand_pack_errors_on_empty_metrics ... ok
[INFO] [stdout] test packs::tests::expand_pack_errors_on_unknown_override_key ... ok
[INFO] [stdout] test packs::tests::expand_pack_merges_labels_in_correct_order ... ok
[INFO] [stdout] test packs::tests::expand_pack_override_labels_merge_on_top ... ok
[INFO] [stdout] test packs::tests::expand_pack_propagates_rate_and_duration ... ok
[INFO] [stdout] test packs::tests::expand_pack_refuses_a_bare_key_against_a_repeated_name ... ok
[INFO] [stdout] test packs::tests::expand_pack_refuses_an_unaddressable_pack ... ok
[INFO] [stdout] test packs::tests::expand_pack_uses_default_generator_when_none ... ok
[INFO] [stdout] test packs::tests::metric_pack_def_is_send_and_sync ... ok
[INFO] [stdout] test packs::tests::expand_pack_propagates_sink_and_encoder ... ok
[INFO] [stdout] test packs::tests::pack_scenario_config_deserializes_from_yaml ... ok
[INFO] [stdout] test packs::tests::pack_scenario_config_with_overrides_deserializes ... ok
[INFO] [stdout] test packs::tests::selector_parse_splits_on_the_first_dot_so_an_id_may_contain_dots ... ok
[INFO] [stdout] test packs::tests::selector_resolves_a_bare_unique_name ... ok
[INFO] [stdout] test packs::tests::selector_resolves_a_name_dot_id ... ok
[INFO] [stdout] test packs::tests::spec_selector_round_trips_through_resolve ... ok
[INFO] [stdout] test packs::tests::the_same_id_under_two_different_names_is_fine ... ok
[INFO] [stdout] test packs::tests::two_override_keys_reaching_one_spec_are_refused ... ok
[INFO] [stdout] test packs::tests::two_specs_sharing_a_name_may_not_share_an_id ... ok
[INFO] [stdout] test schedule::core_loop::tests::apply_flush_policy_fail_propagates_sink_error ... ok
[INFO] [stdout] test packs::tests::expand_pack_produces_one_entry_per_metric ... ok
[INFO] [stdout] test schedule::core_loop::tests::apply_flush_policy_propagates_non_sink_errors ... ok
[INFO] [stdout] test schedule::core_loop::tests::apply_flush_policy_warn_swallows_sink_error ... ok
[INFO] [stdout] test schedule::core_loop::tests::close_target_state_paused_when_holds_on_but_no_samples ... ok
[INFO] [stdout] test packs::tests::expand_pack_applies_generator_override ... ok
[INFO] [stdout] test schedule::core_loop::tests::drain_writes_short_circuits_on_sink_error ... ok
[INFO] [stdout] test schedule::core_loop::tests::drain_writes_preserves_command_order ... ok
[INFO] [stdout] test schedule::core_loop::tests::loop_exit_variants_are_exhaustive_for_clean_exits ... ok
[INFO] [stdout] test schedule::core_loop::tests::gate_context_with_holds_on_close_setter_round_trip ... ok
[INFO] [stdout] test schedule::core_loop::tests::close_target_state_held_when_holds_on_and_samples_present ... ok
[INFO] [stdout] test schedule::core_loop::tests::close_target_state_paused_when_holds_off ... ok
[INFO] [stdout] test schedule::core_loop::tests::loop_propagates_sink_error_under_fail_policy ... ok
[INFO] [stdout] test schedule::core_loop::tests::loop_propagates_encoder_error_under_warn_policy ... ok
[INFO] [stdout] test schedule::core_loop::tests::fail_policy_records_stats_before_propagating ... ok
[INFO] [stdout] test schedule::core_loop::tests::drain_writes_panic_in_sink_propagates - should panic ... ok
[INFO] [stdout] test schedule::core_loop::tests::finalize_sink_panic_in_flush_propagates - should panic ... ok
[INFO] [stdout] test schedule::core_loop::tests::policy_matrix::case_4_fail_encoder_propagates ... ok
[INFO] [stdout] test schedule::core_loop::tests::policy_matrix::case_3_warn_encoder_propagates ... ok
[INFO] [stdout] test schedule::core_loop::tests::policy_matrix::case_6_fail_config_propagates ... ok
[INFO] [stdout] test schedule::core_loop::tests::policy_matrix::case_5_warn_config_propagates ... ok
[INFO] [stdout] test schedule::core_loop::tests::rate_limiter_suppresses_subsequent_errors_within_interval ... ok
[INFO] [stdout] test schedule::core_loop::tests::rate_limiter_emits_first_error_immediately ... ok
[INFO] [stdout] test schedule::core_loop::tests::policy_matrix::case_2_fail_sink_propagates ... ok
[INFO] [stdout] test schedule::core_loop::tests::tick_result_carries_all_fields ... ok
[INFO] [stdout] test schedule::core_loop::tests::loop_passes_spike_windows_to_tick_fn ... ok
[INFO] [stdout] test schedule::gate_bus::tests::after_fires_immediately_when_threshold_already_crossed_at_subscription ... ok
[INFO] [stdout] test schedule::gate_bus::tests::after_fires_once_then_stays_silent ... ok
[INFO] [stdout] test schedule::gate_bus::tests::broadcast_then_consume_then_poll_returns_none_indefinitely ... ok
[INFO] [stdout] test schedule::gate_bus::tests::broadcast_upstream_gone_delivers_to_all_subscribers ... ok
[INFO] [stdout] test schedule::gate_bus::tests::drained_after_close_latch_drains_pending_then_returns_none ... ok
[INFO] [stdout] test schedule::gate_bus::tests::drained_after_close_latch_returns_close_then_none_when_sender_drops_after_close ... ok
[INFO] [stdout] test schedule::gate_bus::tests::drained_after_close_latch_synthesises_upstream_gone_when_sender_drops_silent ... ok
[INFO] [stdout] test schedule::gate_bus::tests::edge_receiver_is_send_and_sync ... ok
[INFO] [stdout] test schedule::gate_bus::tests::gate_bus_is_send_and_sync ... ok
[INFO] [stdout] test schedule::gate_bus::tests::gate_bus_resolver_is_object_safe ... ok
[INFO] [stdout] test schedule::gate_bus::tests::gate_edge_sender_is_send_and_sync ... ok
[INFO] [stdout] test schedule::gate_bus::tests::gate_edge_upstream_gone_variant_exists ... ok
[INFO] [stdout] test schedule::gate_bus::tests::gate_receiver_is_send_and_sync ... ok
[INFO] [stdout] test schedule::gate_bus::tests::many_subscribers_receive_independently ... ok
[INFO] [stdout] test schedule::gate_bus::tests::mixed_after_and_while_use_separate_slots ... ok
[INFO] [stdout] test schedule::gate_bus::tests::nan_tick_does_not_open_gate ... ok
[INFO] [stdout] test schedule::core_loop::tests::policy_matrix::case_1_warn_sink_continues ... ok
[INFO] [stdout] test schedule::gate_bus::tests::recv_edge_timeout_returns_edge_when_published_before_deadline ... ok
[INFO] [stdout] test schedule::gate_bus::tests::replace_on_full_keeps_only_latest_edge ... ok
[INFO] [stdout] test schedule::core_loop::tests::run_schedule_loop_with_initial_tick_reports_last_tick ... ok
[INFO] [stdout] test schedule::gate_bus::tests::strict_eval_lt_and_gt ... ok
[INFO] [stdout] test schedule::gate_bus::tests::strict_eval_nan_fails_closed ... ok
[INFO] [stdout] test schedule::gate_bus::tests::subscribe_before_tick_yields_nan_initial ... ok
[INFO] [stdout] test schedule::gate_bus::tests::unchanged_value_short_circuits ... ok
[INFO] [stdout] test schedule::gate_bus::tests::while_gate_emits_open_then_close_edges ... ok
[INFO] [stdout] test schedule::gate_bus::tests::subscribe_after_publish_observes_cached_value ... ok
[INFO] [stdout] test schedule::core_loop::tests::run_schedule_loop_with_initial_tick_seeds_first_tick_value ... ok
[INFO] [stdout] test schedule::core_loop::tests::warn_policy_updates_sink_failure_stats ... ok
[INFO] [stdout] test schedule::handle::tests::attach_permit_holds_permit_until_drop ... ok
[INFO] [stdout] test schedule::handle::tests::elapsed_returns_positive_duration ... ok
[INFO] [stdout] test schedule::handle::tests::is_running_returns_false_after_stop_and_join ... ok
[INFO] [stdout] test schedule::gate_bus::tests::recv_edge_timeout_returns_none_when_no_edge_arrives ... ok
[INFO] [stdout] test schedule::core_loop::tests::buffered_write_does_not_update_delivery_health_stats ... ok
[INFO] [stdout] test schedule::core_loop::tests::delivered_write_updates_delivery_health_stats ... ok
[INFO] [stdout] test schedule::core_loop::tests::loop_pushes_metric_events_to_stats_buffer ... ok
[INFO] [stdout] test schedule::core_loop::tests::loop_swallows_sink_error_under_warn_policy_and_continues ... ok
[INFO] [stdout] test schedule::core_loop::tests::loop_updates_stats ... ok
[INFO] [stdout] test schedule::handle::tests::is_running_returns_true_for_live_task ... ok
[INFO] [stdout] test schedule::handle::tests::join_is_idempotent_after_first_call ... ok
[INFO] [stdout] test schedule::core_loop::tests::loop_stops_on_cancel ... ok
[INFO] [stdout] test schedule::handle::tests::join_timeout_is_idempotent_when_task_already_consumed ... ok
[INFO] [stdout] test schedule::handle::tests::recent_metrics_snapshot_returns_current_values_not_history ... ok
[INFO] [stdout] test schedule::handle::tests::scenario_handle_is_send ... ok
[INFO] [stdout] test schedule::handle::tests::recent_metrics_snapshot_on_fresh_handle_returns_empty ... ok
[INFO] [stdout] test schedule::handle::tests::recent_metrics_snapshot_is_idempotent ... ok
[INFO] [stdout] test schedule::handle::tests::recent_metrics_snapshot_recovers_from_poisoned_lock ... ok
[INFO] [stdout] test schedule::handle::tests::stats_snapshot_on_fresh_handle_returns_zeros ... ok
[INFO] [stdout] test schedule::handle::tests::sink_type_defaults_to_unknown ... ok
[INFO] [stdout] test schedule::handle::tests::stats_snapshot_recovers_from_poisoned_lock ... ok
[INFO] [stdout] test schedule::handle::tests::stop_cancels_token ... ok
[INFO] [stdout] test schedule::handle::tests::with_sink_type_overrides_default ... ok
[INFO] [stdout] test schedule::handle::tests::is_running_returns_false_when_task_is_none ... ok
[INFO] [stdout] test schedule::handle::tests::join_none_timeout_waits_for_task_and_returns_ok ... ok
[INFO] [stdout] test schedule::histogram_runner::tests::format_le_fractional_value ... ok
[INFO] [stdout] test schedule::histogram_runner::tests::format_le_integer_value ... ok
[INFO] [stdout] test schedule::handle::tests::join_from_current_thread_runtime_returns_task_aborted_err ... ok
[INFO] [stdout] test schedule::handle::tests::take_permit_releases_slot_without_dropping_handle ... ok
[INFO] [stdout] test schedule::handle::tests::join_timeout_returns_ok_when_handle_exits_within_window ... ok
[INFO] [stdout] test schedule::launch::tests::alive_guard_clears_flag_on_clean_exit ... ok
[INFO] [stdout] test schedule::handle::tests::join_with_short_timeout_returns_ok_without_consuming_task ... ok
[INFO] [stdout] test schedule::launch::tests::alive_guard_clears_flag_on_panic ... ok
[INFO] [stdout] test schedule::handle::tests::join_timeout_returns_err_when_task_still_running ... ok
[INFO] [stdout] test schedule::handle::tests::elapsed_grows_monotonically_after_sleep ... ok
[INFO] [stdout] test schedule::launch::tests::elapsed_is_positive_after_launch ... ok
[INFO] [stdout] test schedule::core_loop::tests::alternating_ok_err_resets_consecutive_failures ... ok
[INFO] [stdout] test schedule::launch::tests::launch_log_scenario_has_no_prometheus_meta ... ok
[INFO] [stdout] test schedule::histogram_runner::tests::bucket_events_have_le_label ... ok
[INFO] [stdout] test schedule::histogram_runner::tests::config_labels_appear_in_output ... ok
[INFO] [stdout] test schedule::histogram_runner::tests::custom_buckets_appear_in_output ... ok
[INFO] [stdout] test schedule::launch::tests::launch_metrics_scenario_with_no_type_defaults_to_gauge ... ok
[INFO] [stdout] test schedule::launch::tests::launch_metrics_scenario_with_step_generator_defaults_to_counter ... ok
[INFO] [stdout] test schedule::launch::tests::launch_scenario_explicit_metric_type_overrides_default ... ok
[INFO] [stdout] test schedule::launch::tests::launch_scenario_logs_returns_running_handle ... ok
[INFO] [stdout] test schedule::launch::tests::launch_scenario_metrics_returns_running_handle ... ok
[INFO] [stdout] test schedule::launch::tests::cancel_during_gap_sleep_exits_within_200ms ... ok
[INFO] [stdout] test schedule::handle::tests::stats_snapshot_returns_nonzero_total_events_after_running ... ok
[INFO] [stdout] test schedule::histogram_runner::tests::output_contains_bucket_count_sum_series ... ok
[INFO] [stdout] test schedule::launch::tests::prepare_entries_empty_list_returns_empty ... ok
[INFO] [stdout] test schedule::launch::tests::prepare_entries_error_index_refers_to_original_input_index ... ok
[INFO] [stdout] test schedule::launch::tests::prepare_entries_mixed_signal_types ... ok
[INFO] [stdout] test schedule::histogram_runner::tests::run_completes_for_short_duration ... ok
[INFO] [stdout] test schedule::launch::tests::prepare_entries_rejects_invalid_entry ... ok
[INFO] [stdout] test schedule::launch::tests::prepare_entries_phase_offset_error_references_original_index ... ok
[INFO] [stdout] test schedule::launch::tests::prepare_entries_resolves_phase_offset ... ok
[INFO] [stdout] test schedule::launch::tests::prepare_entries_rejects_invalid_phase_offset ... ok
[INFO] [stdout] test schedule::launch::tests::prepare_entries_zero_phase_offset_is_none ... ok
[INFO] [stdout] test schedule::launch::tests::prepared_entry_is_debuggable ... ok
[INFO] [stdout] test schedule::launch::tests::prepare_entries_single_valid_entry ... ok
[INFO] [stdout] test schedule::launch::tests::state_guard_writes_finished_on_drop ... ok
[INFO] [stdout] natural_exit 1 1792344820687
[INFO] [stdout] natural_exit 1 1792344820707
[INFO] [stdout] natural_exit 1 1792344820727
[INFO] [stdout] natural_exit 1 1792344820747
[INFO] [stdout] natural_exit 1 1792344820767
[INFO] [stdout] natural_exit 1 1792344820787
[INFO] [stdout] natural_exit 1 1792344820807
[INFO] [stdout] natural_exit 1 1792344820827
[INFO] [stdout] natural_exit 1 1792344820847
[INFO] [stdout] natural_exit 1 1792344820867
[INFO] [stdout] test schedule::launch::tests::state_guard_writes_finished_on_thread_panic ... ok
[INFO] [stdout] test schedule::launch::tests::finite_duration_scenario_exits_naturally_and_join_returns_ok ... ok
[INFO] [stdout] test schedule::core_loop::tests::loop_emits_events_for_duration ... ok
[INFO] [stdout] launch_histogram_bucket{le="0.005"} 2 1792344820709
[INFO] [stdout] launch_histogram_bucket{le="0.01"} 5 1792344820709
[INFO] [stdout] launch_histogram_bucket{le="0.025"} 9 1792344820709
[INFO] [stdout] launch_histogram_bucket{le="0.05"} 18 1792344820709
[INFO] [stdout] launch_histogram_bucket{le="0.1"} 30 1792344820709
[INFO] [stdout] launch_histogram_bucket{le="0.25"} 45 1792344820709
[INFO] [stdout] launch_histogram_bucket{le="0.5"} 50 1792344820709
[INFO] [stdout] launch_histogram_bucket{le="1"} 50 1792344820709
[INFO] [stdout] launch_histogram_bucket{le="2.5"} 50 1792344820709
[INFO] [stdout] launch_histogram_bucket{le="5"} 50 1792344820709
[INFO] [stdout] launch_histogram_bucket{le="10"} 50 1792344820709
[INFO] [stdout] launch_histogram_bucket{le="+Inf"} 50 1792344820709
[INFO] [stdout] launch_histogram_sum 5.1933677371398215 1792344820709
[INFO] [stdout] launch_histogram_count 50 1792344820709
[INFO] [stdout] launch_histogram_bucket{le="0.005"} 4 1792344820729
[INFO] [stdout] launch_histogram_bucket{le="0.01"} 9 1792344820729
[INFO] [stdout] launch_histogram_bucket{le="0.025"} 20 1792344820729
[INFO] [stdout] launch_histogram_bucket{le="0.05"} 37 1792344820729
[INFO] [stdout] launch_histogram_bucket{le="0.1"} 56 1792344820729
[INFO] [stdout] launch_histogram_bucket{le="0.25"} 89 1792344820729
[INFO] [stdout] launch_histogram_bucket{le="0.5"} 100 1792344820729
[INFO] [stdout] launch_histogram_bucket{le="1"} 100 1792344820729
[INFO] [stdout] launch_histogram_bucket{le="2.5"} 100 1792344820729
[INFO] [stdout] launch_histogram_bucket{le="5"} 100 1792344820729
[INFO] [stdout] launch_histogram_bucket{le="10"} 100 1792344820729
[INFO] [stdout] launch_histogram_bucket{le="+Inf"} 100 1792344820729
[INFO] [stdout] launch_histogram_sum 10.801200722807684 1792344820729
[INFO] [stdout] launch_histogram_count 100 1792344820729
[INFO] [stdout] launch_histogram_bucket{le="0.005"} 6 1792344820749
[INFO] [stdout] launch_histogram_bucket{le="0.01"} 17 1792344820749
[INFO] [stdout] launch_histogram_bucket{le="0.025"} 32 1792344820749
[INFO] [stdout] launch_histogram_bucket{le="0.05"} 56 1792344820749
[INFO] [stdout] launch_histogram_bucket{le="0.1"} 86 1792344820749
[INFO] [stdout] launch_histogram_bucket{le="0.25"} 133 1792344820749
[INFO] [stdout] launch_histogram_bucket{le="0.5"} 150 1792344820749
[INFO] [stdout] launch_histogram_bucket{le="1"} 150 1792344820749
[INFO] [stdout] launch_histogram_bucket{le="2.5"} 150 1792344820749
[INFO] [stdout] launch_histogram_bucket{le="5"} 150 1792344820749
[INFO] [stdout] launch_histogram_bucket{le="10"} 150 1792344820749
[INFO] [stdout] launch_histogram_bucket{le="+Inf"} 150 1792344820749
[INFO] [stdout] launch_histogram_sum 16.23392453676642 1792344820749
[INFO] [stdout] launch_histogram_count 150 1792344820749
[INFO] [stdout] launch_histogram_bucket{le="0.005"} 10 1792344820769
[INFO] [stdout] launch_histogram_bucket{le="0.01"} 23 1792344820769
[INFO] [stdout] launch_histogram_bucket{le="0.025"} 44 1792344820769
[INFO] [stdout] launch_histogram_bucket{le="0.05"} 72 1792344820769
[INFO] [stdout] launch_histogram_bucket{le="0.1"} 118 1792344820769
[INFO] [stdout] launch_histogram_bucket{le="0.25"} 179 1792344820769
[INFO] [stdout] launch_histogram_bucket{le="0.5"} 199 1792344820769
[INFO] [stdout] launch_histogram_bucket{le="1"} 200 1792344820769
[INFO] [stdout] launch_histogram_bucket{le="2.5"} 200 1792344820769
[INFO] [stdout] launch_histogram_bucket{le="5"} 200 1792344820769
[INFO] [stdout] launch_histogram_bucket{le="10"} 200 1792344820769
[INFO] [stdout] launch_histogram_bucket{le="+Inf"} 200 1792344820769
[INFO] [stdout] launch_histogram_sum 21.585516015112656 1792344820769
[INFO] [stdout] launch_histogram_count 200 1792344820769
[INFO] [stdout] launch_histogram_bucket{le="0.005"} 11 1792344820789
[INFO] [stdout] launch_histogram_bucket{le="0.01"} 27 1792344820789
[INFO] [stdout] launch_histogram_bucket{le="0.025"} 51 1792344820789
[INFO] [stdout] launch_histogram_bucket{le="0.05"} 88 1792344820789
[INFO] [stdout] launch_histogram_bucket{le="0.1"} 153 1792344820789
[INFO] [stdout] launch_histogram_bucket{le="0.25"} 224 1792344820789
[INFO] [stdout] launch_histogram_bucket{le="0.5"} 249 1792344820789
[INFO] [stdout] launch_histogram_bucket{le="1"} 250 1792344820789
[INFO] [stdout] launch_histogram_bucket{le="2.5"} 250 1792344820789
[INFO] [stdout] launch_histogram_bucket{le="5"} 250 1792344820789
[INFO] [stdout] launch_histogram_bucket{le="10"} 250 1792344820789
[INFO] [stdout] launch_histogram_bucket{le="+Inf"} 250 1792344820789
[INFO] [stdout] launch_histogram_sum 26.588298225290494 1792344820789
[INFO] [stdout] launch_histogram_count 250 1792344820789
[INFO] [stdout] launch_histogram_bucket{le="0.005"} 12 1792344820809
[INFO] [stdout] launch_histogram_bucket{le="0.01"} 33 1792344820809
[INFO] [stdout] launch_histogram_bucket{le="0.025"} 62 1792344820809
[INFO] [stdout] launch_histogram_bucket{le="0.05"} 108 1792344820809
[INFO] [stdout] launch_histogram_bucket{le="0.1"} 186 1792344820809
[INFO] [stdout] launch_histogram_bucket{le="0.25"} 268 1792344820809
[INFO] [stdout] launch_histogram_bucket{le="0.5"} 299 1792344820809
[INFO] [stdout] launch_histogram_bucket{le="1"} 300 1792344820809
[INFO] [stdout] launch_histogram_bucket{le="2.5"} 300 1792344820809
[INFO] [stdout] launch_histogram_bucket{le="5"} 300 1792344820809
[INFO] [stdout] launch_histogram_bucket{le="10"} 300 1792344820809
[INFO] [stdout] launch_histogram_bucket{le="+Inf"} 300 1792344820809
[INFO] [stdout] launch_histogram_sum 31.72928527314738 1792344820809
[INFO] [stdout] launch_histogram_count 300 1792344820809
[INFO] [stdout] launch_histogram_bucket{le="0.005"} 18 1792344820829
[INFO] [stdout] launch_histogram_bucket{le="0.01"} 41 1792344820829
[INFO] [stdout] launch_histogram_bucket{le="0.025"} 76 1792344820829
[INFO] [stdout] launch_histogram_bucket{le="0.05"} 129 1792344820829
[INFO] [stdout] launch_histogram_bucket{le="0.1"} 220 1792344820829
[INFO] [stdout] launch_histogram_bucket{le="0.25"} 317 1792344820829
[INFO] [stdout] launch_histogram_bucket{le="0.5"} 349 1792344820829
[INFO] [stdout] launch_histogram_bucket{le="1"} 350 1792344820829
[INFO] [stdout] launch_histogram_bucket{le="2.5"} 350 1792344820829
[INFO] [stdout] launch_histogram_bucket{le="5"} 350 1792344820829
[INFO] [stdout] launch_histogram_bucket{le="10"} 350 1792344820829
[INFO] [stdout] launch_histogram_bucket{le="+Inf"} 350 1792344820829
[INFO] [stdout] launch_histogram_sum 35.67054956209154 1792344820829
[INFO] [stdout] launch_histogram_count 350 1792344820829
[INFO] [stdout] launch_histogram_bucket{le="0.005"} 19 1792344820849
[INFO] [stdout] launch_histogram_bucket{le="0.01"} 45 1792344820849
[INFO] [stdout] launch_histogram_bucket{le="0.025"} 84 1792344820849
[INFO] [stdout] launch_histogram_bucket{le="0.05"} 142 1792344820849
[INFO] [stdout] launch_histogram_bucket{le="0.1"} 246 1792344820849
[INFO] [stdout] launch_histogram_bucket{le="0.25"} 365 1792344820849
[INFO] [stdout] launch_histogram_bucket{le="0.5"} 399 1792344820849
[INFO] [stdout] launch_histogram_bucket{le="1"} 400 1792344820849
[INFO] [stdout] launch_histogram_bucket{le="2.5"} 400 1792344820849
[INFO] [stdout] launch_histogram_bucket{le="5"} 400 1792344820849
[INFO] [stdout] launch_histogram_bucket{le="10"} 400 1792344820849
[INFO] [stdout] launch_histogram_bucket{le="+Inf"} 400 1792344820849
[INFO] [stdout] launch_histogram_sum 40.933766940406336 1792344820849
[INFO] [stdout] launch_histogram_count 400 1792344820849
[INFO] [stdout] launch_histogram_bucket{le="0.005"} 21 1792344820869
[INFO] [stdout] launch_histogram_bucket{le="0.01"} 48 1792344820869
[INFO] [stdout] launch_histogram_bucket{le="0.025"} 91 1792344820869
[INFO] [stdout] launch_histogram_bucket{le="0.05"} 161 1792344820869
[INFO] [stdout] launch_histogram_bucket{le="0.1"} 276 1792344820869
[INFO] [stdout] launch_histogram_bucket{le="0.25"} 412 1792344820869
[INFO] [stdout] launch_histogram_bucket{le="0.5"} 449 1792344820869
[INFO] [stdout] launch_histogram_bucket{le="1"} 450 1792344820869
[INFO] [stdout] launch_histogram_bucket{le="2.5"} 450 1792344820869
[INFO] [stdout] launch_histogram_bucket{le="5"} 450 1792344820869
[INFO] [stdout] launch_histogram_bucket{le="10"} 450 1792344820869
[INFO] [stdout] launch_histogram_bucket{le="+Inf"} 450 1792344820869
[INFO] [stdout] launch_histogram_sum 45.611123634938906 1792344820869
[INFO] [stdout] launch_histogram_count 450 1792344820869
[INFO] [stdout] launch_histogram_bucket{le="0.005"} 25 1792344820889
[INFO] [stdout] launch_histogram_bucket{le="0.01"} 57 1792344820889
[INFO] [stdout] launch_histogram_bucket{le="0.025"} 104 1792344820889
[INFO] [stdout] launch_histogram_bucket{le="0.05"} 181 1792344820889
[INFO] [stdout] launch_histogram_bucket{le="0.1"} 308 1792344820889
[INFO] [stdout] launch_histogram_bucket{le="0.25"} 457 1792344820889
[INFO] [stdout] launch_histogram_bucket{le="0.5"} 499 1792344820889
[INFO] [stdout] launch_histogram_bucket{le="1"} 500 1792344820889
[INFO] [stdout] launch_histogram_bucket{le="2.5"} 500 1792344820889
[INFO] [stdout] launch_histogram_bucket{le="5"} 500 1792344820889
[INFO] [stdout] launch_histogram_bucket{le="10"} 500 1792344820889
[INFO] [stdout] launch_histogram_bucket{le="+Inf"} 500 1792344820889
[INFO] [stdout] launch_histogram_sum 50.47970137799065 1792344820889
[INFO] [stdout] launch_histogram_count 500 1792344820889
[INFO] [stdout] hist_default_bucket{le="0.005"} 2 1792344820710
[INFO] [stdout] hist_default_bucket{le="0.01"} 5 1792344820710
[INFO] [stdout] hist_default_bucket{le="0.025"} 9 1792344820710
[INFO] [stdout] hist_default_bucket{le="0.05"} 18 1792344820710
[INFO] [stdout] hist_default_bucket{le="0.1"} 30 1792344820710
[INFO] [stdout] hist_default_bucket{le="0.25"} 45 1792344820710
[INFO] [stdout] hist_default_bucket{le="0.5"} 50 1792344820710
[INFO] [stdout] hist_default_bucket{le="1"} 50 1792344820710
[INFO] [stdout] hist_default_bucket{le="2.5"} 50 1792344820710
[INFO] [stdout] hist_default_bucket{le="5"} 50 1792344820710
[INFO] [stdout] hist_default_bucket{le="10"} 50 1792344820710
[INFO] [stdout] hist_default_bucket{le="+Inf"} 50 1792344820710
[INFO] [stdout] hist_default_sum 5.1933677371398215 1792344820710
[INFO] [stdout] hist_default_count 50 1792344820710
[INFO] [stdout] hist_default_bucket{le="0.005"} 4 1792344820730
[INFO] [stdout] hist_default_bucket{le="0.01"} 9 1792344820730
[INFO] [stdout] hist_default_bucket{le="0.025"} 20 1792344820730
[INFO] [stdout] hist_default_bucket{le="0.05"} 37 1792344820730
[INFO] [stdout] hist_default_bucket{le="0.1"} 56 1792344820730
[INFO] [stdout] hist_default_bucket{le="0.25"} 89 1792344820730
[INFO] [stdout] hist_default_bucket{le="0.5"} 100 1792344820730
[INFO] [stdout] hist_default_bucket{le="1"} 100 1792344820730
[INFO] [stdout] hist_default_bucket{le="2.5"} 100 1792344820730
[INFO] [stdout] hist_default_bucket{le="5"} 100 1792344820730
[INFO] [stdout] hist_default_bucket{le="10"} 100 1792344820730
[INFO] [stdout] hist_default_bucket{le="+Inf"} 100 1792344820730
[INFO] [stdout] hist_default_sum 10.801200722807684 1792344820730
[INFO] [stdout] hist_default_count 100 1792344820730
[INFO] [stdout] hist_default_bucket{le="0.005"} 6 1792344820750
[INFO] [stdout] hist_default_bucket{le="0.01"} 17 1792344820750
[INFO] [stdout] hist_default_bucket{le="0.025"} 32 1792344820750
[INFO] [stdout] hist_default_bucket{le="0.05"} 56 1792344820750
[INFO] [stdout] hist_default_bucket{le="0.1"} 86 1792344820750
[INFO] [stdout] hist_default_bucket{le="0.25"} 133 1792344820750
[INFO] [stdout] hist_default_bucket{le="0.5"} 150 1792344820750
[INFO] [stdout] hist_default_bucket{le="1"} 150 1792344820750
[INFO] [stdout] hist_default_bucket{le="2.5"} 150 1792344820750
[INFO] [stdout] hist_default_bucket{le="5"} 150 1792344820750
[INFO] [stdout] hist_default_bucket{le="10"} 150 1792344820750
[INFO] [stdout] hist_default_bucket{le="+Inf"} 150 1792344820750
[INFO] [stdout] hist_default_sum 16.23392453676642 1792344820750
[INFO] [stdout] hist_default_count 150 1792344820750
[INFO] [stdout] hist_default_bucket{le="0.005"} 10 1792344820770
[INFO] [stdout] hist_default_bucket{le="0.01"} 23 1792344820770
[INFO] [stdout] hist_default_bucket{le="0.025"} 44 1792344820770
[INFO] [stdout] hist_default_bucket{le="0.05"} 72 1792344820770
[INFO] [stdout] hist_default_bucket{le="0.1"} 118 1792344820770
[INFO] [stdout] hist_default_bucket{le="0.25"} 179 1792344820770
[INFO] [stdout] hist_default_bucket{le="0.5"} 199 1792344820770
[INFO] [stdout] hist_default_bucket{le="1"} 200 1792344820770
[INFO] [stdout] hist_default_bucket{le="2.5"} 200 1792344820770
[INFO] [stdout] hist_default_bucket{le="5"} 200 1792344820770
[INFO] [stdout] hist_default_bucket{le="10"} 200 1792344820770
[INFO] [stdout] hist_default_bucket{le="+Inf"} 200 1792344820770
[INFO] [stdout] hist_default_sum 21.585516015112656 1792344820770
[INFO] [stdout] hist_default_count 200 1792344820770
[INFO] [stdout] hist_default_bucket{le="0.005"} 11 1792344820790
[INFO] [stdout] hist_default_bucket{le="0.01"} 27 1792344820790
[INFO] [stdout] hist_default_bucket{le="0.025"} 51 1792344820790
[INFO] [stdout] hist_default_bucket{le="0.05"} 88 1792344820790
[INFO] [stdout] hist_default_bucket{le="0.1"} 153 1792344820790
[INFO] [stdout] hist_default_bucket{le="0.25"} 224 1792344820790
[INFO] [stdout] hist_default_bucket{le="0.5"} 249 1792344820790
[INFO] [stdout] hist_default_bucket{le="1"} 250 1792344820790
[INFO] [stdout] hist_default_bucket{le="2.5"} 250 1792344820790
[INFO] [stdout] hist_default_bucket{le="5"} 250 1792344820790
[INFO] [stdout] hist_default_bucket{le="10"} 250 1792344820790
[INFO] [stdout] hist_default_bucket{le="+Inf"} 250 1792344820790
[INFO] [stdout] hist_default_sum 26.588298225290494 1792344820790
[INFO] [stdout] hist_default_count 250 1792344820790
[INFO] [stdout] hist_default_bucket{le="0.005"} 12 1792344820810
[INFO] [stdout] hist_default_bucket{le="0.01"} 33 1792344820810
[INFO] [stdout] hist_default_bucket{le="0.025"} 62 1792344820810
[INFO] [stdout] hist_default_bucket{le="0.05"} 108 1792344820810
[INFO] [stdout] hist_default_bucket{le="0.1"} 186 1792344820810
[INFO] [stdout] hist_default_bucket{le="0.25"} 268 1792344820810
[INFO] [stdout] hist_default_bucket{le="0.5"} 299 1792344820810
[INFO] [stdout] hist_default_bucket{le="1"} 300 1792344820810
[INFO] [stdout] hist_default_bucket{le="2.5"} 300 1792344820810
[INFO] [stdout] hist_default_bucket{le="5"} 300 1792344820810
[INFO] [stdout] hist_default_bucket{le="10"} 300 1792344820810
[INFO] [stdout] hist_default_bucket{le="+Inf"} 300 1792344820810
[INFO] [stdout] hist_default_sum 31.72928527314738 1792344820810
[INFO] [stdout] hist_default_count 300 1792344820810
[INFO] [stdout] hist_default_bucket{le="0.005"} 18 1792344820830
[INFO] [stdout] hist_default_bucket{le="0.01"} 41 1792344820830
[INFO] [stdout] hist_default_bucket{le="0.025"} 76 1792344820830
[INFO] [stdout] hist_default_bucket{le="0.05"} 129 1792344820830
[INFO] [stdout] hist_default_bucket{le="0.1"} 220 1792344820830
[INFO] [stdout] hist_default_bucket{le="0.25"} 317 1792344820830
[INFO] [stdout] hist_default_bucket{le="0.5"} 349 1792344820830
[INFO] [stdout] hist_default_bucket{le="1"} 350 1792344820830
[INFO] [stdout] hist_default_bucket{le="2.5"} 350 1792344820830
[INFO] [stdout] hist_default_bucket{le="5"} 350 1792344820830
[INFO] [stdout] hist_default_bucket{le="10"} 350 1792344820830
[INFO] [stdout] hist_default_bucket{le="+Inf"} 350 1792344820830
[INFO] [stdout] hist_default_sum 35.67054956209154 1792344820830
[INFO] [stdout] hist_default_count 350 1792344820830
[INFO] [stdout] hist_default_bucket{le="0.005"} 19 1792344820850
[INFO] [stdout] hist_default_bucket{le="0.01"} 45 1792344820850
[INFO] [stdout] hist_default_bucket{le="0.025"} 84 1792344820850
[INFO] [stdout] hist_default_bucket{le="0.05"} 142 1792344820850
[INFO] [stdout] hist_default_bucket{le="0.1"} 246 1792344820850
[INFO] [stdout] hist_default_bucket{le="0.25"} 365 1792344820850
[INFO] [stdout] hist_default_bucket{le="0.5"} 399 1792344820850
[INFO] [stdout] hist_default_bucket{le="1"} 400 1792344820850
[INFO] [stdout] hist_default_bucket{le="2.5"} 400 1792344820850
[INFO] [stdout] hist_default_bucket{le="5"} 400 1792344820850
[INFO] [stdout] hist_default_bucket{le="10"} 400 1792344820850
[INFO] [stdout] hist_default_bucket{le="+Inf"} 400 1792344820850
[INFO] [stdout] hist_default_sum 40.933766940406336 1792344820850
[INFO] [stdout] hist_default_count 400 1792344820850
[INFO] [stdout] hist_default_bucket{le="0.005"} 21 1792344820870
[INFO] [stdout] hist_default_bucket{le="0.01"} 48 1792344820870
[INFO] [stdout] hist_default_bucket{le="0.025"} 91 1792344820870
[INFO] [stdout] hist_default_bucket{le="0.05"} 161 1792344820870
[INFO] [stdout] hist_default_bucket{le="0.1"} 276 1792344820870
[INFO] [stdout] hist_default_bucket{le="0.25"} 412 1792344820870
[INFO] [stdout] hist_default_bucket{le="0.5"} 449 1792344820870
[INFO] [stdout] hist_default_bucket{le="1"} 450 1792344820870
[INFO] [stdout] hist_default_bucket{le="2.5"} 450 1792344820870
[INFO] [stdout] hist_default_bucket{le="5"} 450 1792344820870
[INFO] [stdout] hist_default_bucket{le="10"} 450 1792344820870
[INFO] [stdout] hist_default_bucket{le="+Inf"} 450 1792344820870
[INFO] [stdout] hist_default_sum 45.611123634938906 1792344820870
[INFO] [stdout] hist_default_count 450 1792344820870
[INFO] [stdout] hist_default_bucket{le="0.005"} 25 1792344820890
[INFO] [stdout] hist_default_bucket{le="0.01"} 57 1792344820890
[INFO] [stdout] hist_default_bucket{le="0.025"} 104 1792344820890
[INFO] [stdout] hist_default_bucket{le="0.05"} 181 1792344820890
[INFO] [stdout] hist_default_bucket{le="0.1"} 308 1792344820890
[INFO] [stdout] hist_default_bucket{le="0.25"} 457 1792344820890
[INFO] [stdout] hist_default_bucket{le="0.5"} 499 1792344820890
[INFO] [stdout] hist_default_bucket{le="1"} 500 1792344820890
[INFO] [stdout] hist_default_bucket{le="2.5"} 500 1792344820890
[INFO] [stdout] hist_default_bucket{le="5"} 500 1792344820890
[INFO] [stdout] hist_default_bucket{le="10"} 500 1792344820890
[INFO] [stdout] hist_default_bucket{le="+Inf"} 500 1792344820890
[INFO] [stdout] hist_default_sum 50.47970137799065 1792344820890
[INFO] [stdout] hist_default_count 500 1792344820890
[INFO] [stdout] test schedule::launch::tests::launch_histogram_scenario_runs_to_completion ... ok
[INFO] [stdout] test schedule::launch::tests::launch_histogram_scenario_defaults_to_histogram ... ok
[INFO] [stdout] test schedule::core_loop::tests::events_buf_capacity_does_not_grow_under_metrics_workload ... ok
[INFO] [stdout] test schedule::launch::tests::validate_entry_accepts_valid_histogram_entry ... ok
[INFO] [stdout] test schedule::launch::tests::stop_then_join_logs_scenario_returns_ok ... ok
[INFO] [stdout] test schedule::launch::tests::validate_entry_accepts_valid_logs_entry ... ok
[INFO] [stdout] test schedule::launch::tests::validate_entry_accepts_valid_metrics_entry ... ok
[INFO] [stdout] test schedule::launch::tests::validate_entry_rejects_logs_entry_with_zero_rate ... ok
[INFO] [stdout] test schedule::launch::tests::validate_entry_accepts_valid_summary_entry ... ok
[INFO] [stdout] test schedule::launch::tests::validate_entry_rejects_metrics_entry_with_negative_rate ... ok
[INFO] [stdout] test schedule::launch::tests::stop_then_join_metrics_scenario_returns_ok ... ok
[INFO] [stdout] test schedule::launch::tests::validate_entry_rejects_metrics_entry_with_bad_duration ... ok
[INFO] [stdout] test schedule::log_runner::tests::log_scenario_config_default_encoder_is_json_lines ... ok
[INFO] [stdout] test schedule::launch::tests::validate_entry_rejects_metrics_entry_with_zero_rate ... ok
[INFO] [stdout] test schedule::log_runner::tests::log_scenario_config_default_sink_is_stdout ... ok
[INFO] [stdout] test schedule::log_runner::tests::log_scenario_config_is_clone_and_debug ... ok
[INFO] [stdout] test schedule::log_runner::tests::log_scenario_config_with_gaps_and_bursts_deserializes ... ok
[INFO] [stdout] test schedule::log_runner::tests::log_scenario_config_deserializes_csv_replay_yaml ... ok
[INFO] [stdout] test schedule::log_runner::tests::log_scenario_config_deserializes_template_yaml ... ok
[INFO] [stdout] state_lifecycle 1 1792344820743
[INFO] [stdout] state_lifecycle 1 1792344820763
[INFO] [stdout] state_lifecycle 1 1792344820783
[INFO] [stdout] state_lifecycle 1 1792344820803
[INFO] [stdout] state_lifecycle 1 1792344820823
[INFO] [stdout] state_lifecycle 1 1792344820843
[INFO] [stdout] state_lifecycle 1 1792344820863
[INFO] [stdout] state_lifecycle 1 1792344820883
[INFO] [stdout] state_lifecycle 1 1792344820903
[INFO] [stdout] state_lifecycle 1 1792344820923
[INFO] [stdout] test schedule::launch::tests::launch_non_gated_scenario_state_transitions_through_running_to_finished ... ok
[INFO] [stdout] summary_default{quantile="0.5"} 0.09841175164242912 1792344820762
[INFO] [stdout] summary_default{quantile="0.9"} 0.11710086165412449 1792344820762
[INFO] [stdout] summary_default{quantile="0.95"} 0.13667066120461982 1792344820762
[INFO] [stdout] summary_default{quantile="0.99"} 0.1484522785729533 1792344820762
[INFO] [stdout] summary_default_sum 4.870909134566461 1792344820762
[INFO] [stdout] summary_default_count 50 1792344820762
[INFO] [stdout] summary_default{quantile="0.5"} 0.09624363780211248 1792344820782
[INFO] [stdout] summary_default{quantile="0.9"} 0.11159670693236098 1792344820782
[INFO] [stdout] summary_default{quantile="0.95"} 0.12310119496624224 1792344820782
[INFO] [stdout] summary_default{quantile="0.99"} 0.12711526003018447 1792344820782
[INFO] [stdout] summary_default_sum 9.575199992825452 1792344820782
[INFO] [stdout] summary_default_count 100 1792344820782
[INFO] [stdout] summary_default{quantile="0.5"} 0.09925048553126276 1792344820802
[INFO] [stdout] summary_default{quantile="0.9"} 0.1277767102315812 1792344820802
[INFO] [stdout] summary_default{quantile="0.95"} 0.13400536983183764 1792344820802
[INFO] [stdout] summary_default{quantile="0.99"} 0.14364384985767467 1792344820802
[INFO] [stdout] summary_default_sum 14.584036916824473 1792344820802
[INFO] [stdout] summary_default_count 150 1792344820802
[INFO] [stdout] summary_default{quantile="0.5"} 0.10072871506156929 1792344820822
[INFO] [stdout] summary_default{quantile="0.9"} 0.12084462471143154 1792344820822
[INFO] [stdout] summary_default{quantile="0.95"} 0.12304673490302986 1792344820822
[INFO] [stdout] summary_default{quantile="0.99"} 0.15395292211324813 1792344820822
[INFO] [stdout] summary_default_sum 19.625065995975657 1792344820822
[INFO] [stdout] summary_default_count 200 1792344820822
[INFO] [stdout] summary_default{quantile="0.5"} 0.09946360503036909 1792344820842
[INFO] [stdout] summary_default{quantile="0.9"} 0.12338470702142926 1792344820842
[INFO] [stdout] summary_default{quantile="0.95"} 0.1322658418711261 1792344820842
[INFO] [stdout] summary_default{quantile="0.99"} 0.13486638961774144 1792344820842
[INFO] [stdout] summary_default_sum 24.62808021086662 1792344820842
[INFO] [stdout] summary_default_count 250 1792344820842
[INFO] [stdout] summary_default{quantile="0.5"} 0.10462471888042003 1792344820862
[INFO] [stdout] summary_default{quantile="0.9"} 0.1279909313272704 1792344820862
[INFO] [stdout] summary_default{quantile="0.95"} 0.1345662155145832 1792344820862
[INFO] [stdout] summary_default{quantile="0.99"} 0.14022149530352757 1792344820862
[INFO] [stdout] summary_default_sum 29.88337214657162 1792344820862
[INFO] [stdout] summary_default_count 300 1792344820862
[INFO] [stdout] summary_default{quantile="0.5"} 0.09802189808632175 1792344820882
[INFO] [stdout] summary_default{quantile="0.9"} 0.12892553514080807 1792344820882
[INFO] [stdout] summary_default{quantile="0.95"} 0.1390699818731617 1792344820882
[INFO] [stdout] summary_default{quantile="0.99"} 0.16664182709778774 1792344820882
[INFO] [stdout] summary_default_sum 34.935136947473595 1792344820882
[INFO] [stdout] summary_default_count 350 1792344820882
[INFO] [stdout] summary_default{quantile="0.5"} 0.09656718615001322 1792344820902
[INFO] [stdout] summary_default{quantile="0.9"} 0.12060888737820927 1792344820902
[INFO] [stdout] summary_default{quantile="0.95"} 0.12756269856628186 1792344820902
[INFO] [stdout] summary_default{quantile="0.99"} 0.14054471430159418 1792344820902
[INFO] [stdout] summary_default_sum 39.81371329053099 1792344820902
[INFO] [stdout] summary_default_count 400 1792344820902
[INFO] [stdout] summary_default{quantile="0.5"} 0.10566307598748581 1792344820922
[INFO] [stdout] summary_default{quantile="0.9"} 0.12611975192467734 1792344820922
[INFO] [stdout] summary_default{quantile="0.95"} 0.13107211113659578 1792344820922
[INFO] [stdout] summary_default{quantile="0.99"} 0.13155530200591778 1792344820922
[INFO] [stdout] summary_default_sum 44.967870239221504 1792344820922
[INFO] [stdout] summary_default_count 450 1792344820922
[INFO] [stdout] summary_default{quantile="0.5"} 0.09953719771472015 1792344820942
[INFO] [stdout] summary_default{quantile="0.9"} 0.12704228091368275 1792344820942
[INFO] [stdout] summary_default{quantile="0.95"} 0.1290986256938146 1792344820942
[INFO] [stdout] summary_default{quantile="0.99"} 0.1379225952468997 1792344820942
[INFO] [stdout] summary_default_sum 49.97532019882878 1792344820942
[INFO] [stdout] summary_default_count 500 1792344820942
[INFO] [stdout] test schedule::launch::tests::launch_summary_scenario_defaults_to_summary ... ok
[INFO] [stdout] launch_summary{quantile="0.5"} 0.09841175164242912 1792344820777
[INFO] [stdout] launch_summary{quantile="0.9"} 0.11710086165412449 1792344820777
[INFO] [stdout] launch_summary{quantile="0.95"} 0.13667066120461982 1792344820777
[INFO] [stdout] launch_summary{quantile="0.99"} 0.1484522785729533 1792344820777
[INFO] [stdout] launch_summary_sum 4.870909134566461 1792344820777
[INFO] [stdout] launch_summary_count 50 1792344820777
[INFO] [stdout] launch_summary{quantile="0.5"} 0.09624363780211248 1792344820797
[INFO] [stdout] launch_summary{quantile="0.9"} 0.11159670693236098 1792344820797
[INFO] [stdout] launch_summary{quantile="0.95"} 0.12310119496624224 1792344820797
[INFO] [stdout] launch_summary{quantile="0.99"} 0.12711526003018447 1792344820797
[INFO] [stdout] launch_summary_sum 9.575199992825452 1792344820797
[INFO] [stdout] launch_summary_count 100 1792344820797
[INFO] [stdout] launch_summary{quantile="0.5"} 0.09925048553126276 1792344820817
[INFO] [stdout] launch_summary{quantile="0.9"} 0.1277767102315812 1792344820817
[INFO] [stdout] launch_summary{quantile="0.95"} 0.13400536983183764 1792344820817
[INFO] [stdout] launch_summary{quantile="0.99"} 0.14364384985767467 1792344820817
[INFO] [stdout] launch_summary_sum 14.584036916824473 1792344820817
[INFO] [stdout] launch_summary_count 150 1792344820817
[INFO] [stdout] launch_summary{quantile="0.5"} 0.10072871506156929 1792344820837
[INFO] [stdout] launch_summary{quantile="0.9"} 0.12084462471143154 1792344820837
[INFO] [stdout] launch_summary{quantile="0.95"} 0.12304673490302986 1792344820837
[INFO] [stdout] launch_summary{quantile="0.99"} 0.15395292211324813 1792344820837
[INFO] [stdout] launch_summary_sum 19.625065995975657 1792344820837
[INFO] [stdout] launch_summary_count 200 1792344820837
[INFO] [stdout] launch_summary{quantile="0.5"} 0.09946360503036909 1792344820857
[INFO] [stdout] launch_summary{quantile="0.9"} 0.12338470702142926 1792344820857
[INFO] [stdout] launch_summary{quantile="0.95"} 0.1322658418711261 1792344820857
[INFO] [stdout] launch_summary{quantile="0.99"} 0.13486638961774144 1792344820857
[INFO] [stdout] launch_summary_sum 24.62808021086662 1792344820857
[INFO] [stdout] launch_summary_count 250 1792344820857
[INFO] [stdout] launch_summary{quantile="0.5"} 0.10462471888042003 1792344820877
[INFO] [stdout] launch_summary{quantile="0.9"} 0.1279909313272704 1792344820877
[INFO] [stdout] launch_summary{quantile="0.95"} 0.1345662155145832 1792344820877
[INFO] [stdout] launch_summary{quantile="0.99"} 0.14022149530352757 1792344820877
[INFO] [stdout] launch_summary_sum 29.88337214657162 1792344820877
[INFO] [stdout] launch_summary_count 300 1792344820877
[INFO] [stdout] launch_summary{quantile="0.5"} 0.09802189808632175 1792344820897
[INFO] [stdout] launch_summary{quantile="0.9"} 0.12892553514080807 1792344820897
[INFO] [stdout] launch_summary{quantile="0.95"} 0.1390699818731617 1792344820897
[INFO] [stdout] launch_summary{quantile="0.99"} 0.16664182709778774 1792344820897
[INFO] [stdout] launch_summary_sum 34.935136947473595 1792344820897
[INFO] [stdout] launch_summary_count 350 1792344820897
[INFO] [stdout] launch_summary{quantile="0.5"} 0.09656718615001322 1792344820917
[INFO] [stdout] launch_summary{quantile="0.9"} 0.12060888737820927 1792344820917
[INFO] [stdout] launch_summary{quantile="0.95"} 0.12756269856628186 1792344820917
[INFO] [stdout] launch_summary{quantile="0.99"} 0.14054471430159418 1792344820917
[INFO] [stdout] launch_summary_sum 39.81371329053099 1792344820917
[INFO] [stdout] launch_summary_count 400 1792344820917
[INFO] [stdout] launch_summary{quantile="0.5"} 0.10566307598748581 1792344820937
[INFO] [stdout] launch_summary{quantile="0.9"} 0.12611975192467734 1792344820937
[INFO] [stdout] launch_summary{quantile="0.95"} 0.13107211113659578 1792344820937
[INFO] [stdout] launch_summary{quantile="0.99"} 0.13155530200591778 1792344820937
[INFO] [stdout] launch_summary_sum 44.967870239221504 1792344820937
[INFO] [stdout] launch_summary_count 450 1792344820937
[INFO] [stdout] launch_summary{quantile="0.5"} 0.09953719771472015 1792344820957
[INFO] [stdout] launch_summary{quantile="0.9"} 0.12704228091368275 1792344820957
[INFO] [stdout] launch_summary{quantile="0.95"} 0.1290986256938146 1792344820957
[INFO] [stdout] launch_summary{quantile="0.99"} 0.1379225952468997 1792344820957
[INFO] [stdout] launch_summary_sum 49.97532019882878 1792344820957
[INFO] [stdout] launch_summary_count 500 1792344820957
[INFO] [stdout] test schedule::launch::tests::launch_summary_scenario_runs_to_completion ... ok
[INFO] [stdout] test schedule::launch::tests::shutdown_during_start_delay_exits_cleanly ... ok
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.884Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.886Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.888Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.890Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.892Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.894Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.896Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.898Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.900Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.902Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.904Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.906Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.908Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.910Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.912Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.914Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.916Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.918Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.920Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.922Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.924Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.926Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.928Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.930Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.932Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.934Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.936Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.938Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.940Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.942Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.944Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.946Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.948Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.950Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.952Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.954Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.956Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.958Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.960Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.962Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.964Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.966Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.968Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.970Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.972Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.974Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.976Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.978Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.980Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.982Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.984Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.986Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.988Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.990Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.992Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.994Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.996Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:40.998Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.000Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.002Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.004Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.006Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.008Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.010Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.012Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.014Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.016Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.018Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.020Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.022Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.024Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.026Z","severity":"info","message":"stat tracking log","labels":{},"fields":{}}
[INFO] [stdout] test schedule::launch::tests::launch_with_no_start_delay_emits_events_immediately ... ok
[INFO] [stdout] test schedule::launch::tests::stats_snapshot_shows_nonzero_events_after_brief_run ... ok
[INFO] [stdout] test schedule::launch::tests::stats_snapshot_shows_nonzero_events_for_logs_scenario ... ok
[INFO] [stdout] test schedule::launch::tests::state_remains_pending_during_start_delay_then_transitions_to_running ... ok
[INFO] [stdout] test schedule::log_runner::tests::run_logs_dynamic_label_wins_on_key_collision ... ok
[INFO] [stdout] test schedule::log_runner::tests::run_logs_with_sink_cancel_stops_runner ... ok
[INFO] [stdout] test schedule::log_runner::tests::run_logs_with_sink_duration_500ms_exits_promptly ... ok
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.227Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.229Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.231Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.233Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.235Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.237Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.239Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.241Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.243Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.246Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.247Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.249Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.251Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.253Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.255Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.257Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.259Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.261Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.263Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.265Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.267Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.269Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.271Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.273Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.275Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.277Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.279Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.281Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.283Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.285Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.287Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.289Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.291Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.293Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.295Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.298Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.299Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.303Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.303Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.305Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.309Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.309Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.311Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.313Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.315Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.318Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.319Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.321Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.323Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.327Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.327Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.329Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.331Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.333Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.335Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.337Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.339Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.341Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.343Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.345Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.347Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.349Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.351Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.353Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.355Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.357Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.359Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.361Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.363Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.365Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.367Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.369Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.371Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.373Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.375Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.377Z","severity":"info","message":"delayed log","labels":{},"fields":{}}
[INFO] [stdout] test schedule::core_loop::tests::loop_increases_rate_during_burst ... ok
[INFO] [stdout] test schedule::launch::tests::launch_logs_with_start_delay_does_not_emit_during_delay ... ok
[INFO] [stdout] test schedule::launch::tests::launch_with_start_delay_does_not_emit_during_delay ... ok
[INFO] [stdout] test schedule::log_runner::tests::run_logs_with_sink_labels_appear_in_syslog_output ... ok
[INFO] [stdout] test schedule::multi_runner::tests::cross_post::t10_unregister_drives_downstream_back_to_unresolved ... ok
[INFO] [stdout] shortlived 1 1792344821450
[INFO] [stdout] shortlived 1 1792344821470
[INFO] [stdout] shortlived 1 1792344821490
[INFO] [stdout] shortlived 1 1792344821510
[INFO] [stdout] shortlived 1 1792344821530
[INFO] [stdout] shortlived 1 1792344821550
[INFO] [stdout] shortlived 1 1792344821570
[INFO] [stdout] shortlived 1 1792344821590
[INFO] [stdout] shortlived 1 1792344821610
[INFO] [stdout] shortlived 1 1792344821630
[INFO] [stdout] shortlived 1 1792344821650
[INFO] [stdout] shortlived 1 1792344821670
[INFO] [stdout] shortlived 1 1792344821690
[INFO] [stdout] shortlived 1 1792344821710
[INFO] [stdout] shortlived 1 1792344821730
[INFO] [stdout] test schedule::log_runner::tests::run_logs_with_sink_no_labels_produces_empty_labels_object ... ok
[INFO] [stdout] test schedule::multi_runner::tests::cross_post::a_finished_entry_retires_only_its_own_bus_leaving_its_siblings_registered ... ok
[INFO] [stdout] test schedule::log_runner::tests::run_logs_with_sink_no_spike_config_produces_no_spike_labels ... ok
[INFO] [stdout] test schedule::log_runner::tests::run_logs_dynamic_labels_and_static_labels_coexist ... ok
[INFO] [stdout] test schedule::log_runner::tests::run_logs_dynamic_labels_counter_appear_in_output ... ok
[INFO] [stdout] shortlived 1 1792344821567
[INFO] [stdout] shortlived 1 1792344821587
[INFO] [stdout] shortlived 1 1792344821607
[INFO] [stdout] shortlived 1 1792344821627
[INFO] [stdout] shortlived 1 1792344821647
[INFO] [stdout] shortlived 1 1792344821667
[INFO] [stdout] shortlived 1 1792344821687
[INFO] [stdout] shortlived 1 1792344821707
[INFO] [stdout] shortlived 1 1792344821727
[INFO] [stdout] shortlived 1 1792344821747
[INFO] [stdout] shortlived 1 1792344821767
[INFO] [stdout] shortlived 1 1792344821787
[INFO] [stdout] shortlived 1 1792344821807
[INFO] [stdout] shortlived 1 1792344821827
[INFO] [stdout] shortlived 1 1792344821847
[INFO] [stdout] test schedule::log_runner::tests::run_logs_dynamic_labels_values_list_cycle_in_output ... ok
[INFO] [stdout] test schedule::multi_runner::tests::cross_post::t8_downstream_enters_unresolved_then_promoted_on_register_and_sweep ... ok
[INFO] [stdout] test schedule::multi_runner::tests::cross_post::t9_downstream_first_then_upstream_post_promotes_via_sweep ... ok
[INFO] [stdout] test schedule::multi_runner::tests::launch_multi_compiled_gives_each_handle_an_independent_cancel_token ... ok
[INFO] [stdout] test schedule::multi_runner::tests::launch_multi_compiled_partial_cleanup_stops_already_launched_handles ... ok
[INFO] [stdout] test schedule::log_runner::tests::run_logs_dynamic_labels_respects_cardinality_ceiling ... ok
[INFO] [stdout] test schedule::multi_runner::tests::run_multi_collects_all_thread_errors ... ok
[INFO] [stdout] test schedule::multi_runner::tests::run_multi_rejects_invalid_phase_offset ... ok
[INFO] [stdout] first_immediate 1 1792344821929
[INFO] [stdout] test schedule::multi_runner::tests::run_multi_parent_cancel_stops_all_tasks_within_two_seconds ... ok
[INFO] [stdout] test schedule::log_runner::tests::run_logs_with_sink_each_line_is_valid_json ... ok
[INFO] [stdout] test schedule::multi_runner::tests::run_multi_thread_errors_produce_runtime_not_config_variant ... ok
[INFO] [stdout] m1 1 1792344821991
[INFO] [stdout] m2 1 1792344821991
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:41.991Z","severity":"info","message":"test log event","labels":{},"fields":{}}
[INFO] [stdout] test schedule::multi_runner::tests::run_multi_three_concurrent_scenarios_all_complete ... ok
[INFO] [stdout] grouped_a 1 1792344821998
[INFO] [stdout] test schedule::log_runner::tests::run_logs_with_sink_labels_appear_in_json_output ... ok
[INFO] [stdout] test schedule::multi_runner::tests::run_multi_with_empty_scenarios_returns_ok ... ok
[INFO] [stdout] test schedule::multi_runner::tests::run_multi_with_invalid_sink_config_returns_err ... ok
[INFO] [stdout] concurrent_metrics 1 1792344822009
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:42.009Z","severity":"info","message":"test log event","labels":{},"fields":{}}
[INFO] [stdout] test schedule::multi_runner::tests::run_multi_with_metrics_and_logs_both_complete ... ok
[INFO] [stdout] zero_offset 1 1792344821916
[INFO] [stdout] zero_offset 1 1792344822016
[INFO] [stdout] test schedule::multi_runner::tests::run_multi_accepts_zero_phase_offset ... ok
[INFO] [stdout] no_offset 1 1792344822024
[INFO] [stdout] test schedule::multi_runner::tests::run_multi_with_no_phase_offset_preserves_behavior ... ok
[INFO] [stdout] {"timestamp":"2026-10-18T17:33:42.032Z","severity":"info","message":"test log event","labels":{},"fields":{}}
[INFO] [stdout] test schedule::multi_runner::tests::run_multi_with_single_logs_scenario_returns_ok ... ok
[INFO] [stdout] single_metric 1 1792344822037
[INFO] [stdout] test schedule::multi_runner::tests::run_multi_with_single_metrics_scenario_returns_ok ... ok
[INFO] [stdout] upstream 1 1792344821862
[INFO] [stdout] upstream 1 1792344821882
[INFO] [stdout] upstream 1 1792344821902
[INFO] [stdout] upstream 1 1792344821922
[INFO] [stdout] upstream 1 1792344821942
[INFO] [stdout] upstream 1 1792344821962
[INFO] [stdout] upstream 1 1792344821982
[INFO] [stdout] upstream 1 1792344822002
[INFO] [stdout] upstream 1 1792344822022
[INFO] [stdout] upstream 1 1792344822042
[INFO] [stdout] test schedule::multi_runner::tests::while_upstream_ids_returns_only_entries_referenced_by_a_while_clause ... ok
[INFO] [stdout] dependent 1 1792344821862
[INFO] [stdout] dependent 1 1792344821882
[INFO] [stdout] dependent 1 1792344821902
[INFO] [stdout] dependent 1 1792344821922
[INFO] [stdout] dependent 1 1792344821942
[INFO] [stdout] dependent 1 1792344821962
[INFO] [stdout] dependent 1 1792344821982
[INFO] [stdout] dependent 1 1792344822002
[INFO] [stdout] dependent 1 1792344822022
[INFO] [stdout] dependent 1 1792344822042
[INFO] [stdout] test schedule::runner::tests::build_close_emit_enables_series_tracking_on_stats ... ok
[INFO] [stdout] test schedule::multi_runner::tests::cross_post::t_regress_2_local_only_while_path_unchanged ... ok
[INFO] [stdout] test schedule::runner::tests::close_emit_dedups_repeated_series_to_one_marker ... ok
[INFO] [stdout] test schedule::runner::tests::close_emit_emits_every_distinct_series_regardless_of_count ... ok
[INFO] [stdout] test schedule::runner::tests::close_emit_timestamp_strictly_after_recent_active_emissions ... ok
[INFO] [stdout] test schedule::runner::tests::close_emitter_is_idempotent_after_draining_series ... ok
[INFO] [stdout] test schedule::multi_runner::tests::run_multi_shutdown_during_phase_offset_exits_cleanly ... ok
[INFO] [stdout] minimal_offset 1 1792344822021
[INFO] [stdout] minimal_offset 1 1792344822121
[INFO] [stdout] test schedule::multi_runner::tests::run_multi_with_minimal_phase_offset_emits_almost_immediately ... ok
[INFO] [stdout] test schedule::multi_runner::tests::cross_post::t11_if_unresolved_open_ticks_at_full_rate ... ok
[INFO] [stdout] test schedule::runner::tests::current_values_holds_one_entry_for_single_series_scenario ... ok
[INFO] [stdout] downstream 1 1792344821567
[INFO] [stdout] downstream 1 1792344821587
[INFO] [stdout] downstream 1 1792344821607
[INFO] [stdout] downstream 1 1792344821627
[INFO] [stdout] downstream 1 1792344821647
[INFO] [stdout] downstream 1 1792344821667
[INFO] [stdout] downstream 1 1792344821687
[INFO] [stdout] downstream 1 1792344821707
[INFO] [stdout] downstream 1 1792344821727
[INFO] [stdout] downstream 1 1792344821747
[INFO] [stdout] downstream 1 1792344821767
[INFO] [stdout] downstream 1 1792344821787
[INFO] [stdout] downstream 1 1792344821807
[INFO] [stdout] downstream 1 1792344821827
[INFO] [stdout] downstream 1 1792344821847
[INFO] [stdout] downstream 1 1792344821867
[INFO] [stdout] downstream 1 1792344821887
[INFO] [stdout] downstream 1 1792344821907
[INFO] [stdout] downstream 1 1792344821927
[INFO] [stdout] downstream 1 1792344821947
[INFO] [stdout] downstream 1 1792344821967
[INFO] [stdout] downstream 1 1792344821987
[INFO] [stdout] downstream 1 1792344822007
[INFO] [stdout] downstream 1 1792344822027
[INFO] [stdout] downstream 1 1792344822047
[INFO] [stdout] downstream 1 1792344822067
[INFO] [stdout] downstream 1 1792344822087
[INFO] [stdout] downstream 1 1792344822107
[INFO] [stdout] downstream 1 1792344822127
[INFO] [stdout] downstream 1 1792344822147
[INFO] [stdout] downstream 1 1792344822167
[INFO] [stdout] test schedule::multi_runner::tests::cross_post::a_gated_entry_survives_a_sibling_finishing_and_stops_only_with_its_upstream ... ok
[INFO] [stdout] test schedule::multi_runner::tests::cross_post::t12_if_unresolved_closed_does_not_emit ... ok
[INFO] [stdout] test schedule::multi_runner::tests::cross_post::t11b_if_unresolved_open_transitions_to_running_on_upstream_register ... ok
[INFO] [stdout] grouped_b 2 1792344822199
[INFO] [stdout] test schedule::multi_runner::tests::run_multi_with_clock_group_and_offsets ... ok
[INFO] [stdout] test schedule::multi_runner::tests::cross_post::t13_if_unresolved_pending_does_not_emit_and_holds_state ... ok
[INFO] [stdout] test schedule::runner::tests::cancel_stops_run_during_burst ... ok
[INFO] [stdout] test schedule::log_runner::tests::run_logs_with_sink_rate_10_duration_1s_produces_approx_10_lines ... ok
[INFO] [stdout] test schedule::log_runner::tests::run_logs_with_sink_spike_labels_appear_during_spike_window ... ok
[INFO] [stdout] test schedule::runner::tests::integration_labels_appear_in_output ... ok
[INFO] [stdout] second_delayed 2 1792344822430
[INFO] [stdout] test schedule::multi_runner::tests::run_multi_respects_phase_offset_between_scenarios ... ok
[INFO] [stdout] test schedule::runner::tests::dynamic_label_wins_on_key_collision_with_static ... ok
[INFO] [stdout] test schedule::runner::tests::integration_no_spike_config_produces_no_spike_labels ... ok
[INFO] [stdout] test schedule::runner::tests::integration_output_ends_with_newline ... ok
[INFO] [stdout] test schedule::runner::tests::integration_output_lines_start_with_metric_name ... ok
[INFO] [stdout] test schedule::histogram_runner::tests::gap_suppresses_histogram_output ... ok
[INFO] [stdout] test schedule::runner::tests::invalid_metric_name_returns_config_error_before_loop ... ok
[INFO] [stdout] up 1 1792344822669
[INFO] [stdout] up 1 1792344822679
[INFO] [stdout] up 1 1792344822689
[INFO] [stdout] up 1 1792344822699
[INFO] [stdout] up 1 1792344822709
[INFO] [stdout] up 1 1792344822719
[INFO] [stdout] up 1 1792344822729
[INFO] [stdout] up 1 1792344822739
[INFO] [stdout] up 1 1792344822749
[INFO] [stdout] up 1 1792344822759
[INFO] [stdout] test schedule::runner::tests::run_completes_without_error_for_short_duration ... ok
[INFO] [stdout] test schedule::runner::tests::run_with_invalid_duration_returns_err ... ok
[INFO] [stdout] test schedule::runner::tests::run_with_invalid_gap_every_returns_err ... ok
[INFO] [stdout] test schedule::runner::tests::integration_spike_stats_reports_in_cardinality_spike ... ok
[INFO] [stdout] test schedule::runner::tests::runner_stats_current_values_have_correct_metric_name ... ok
[INFO] [stdout] test schedule::runner::tests::runner_pushes_metric_events_to_stats_current_values ... ok
[INFO] [stdout] test schedule::stats::tests::as_label_maps_every_variant_to_lowercase_text ... ok
[INFO] [stdout] test schedule::stats::tests::as_label_matches_serde_lowercase_rename ... ok
[INFO] [stdout] test schedule::stats::tests::clone_produces_independent_copy ... ok
[INFO] [stdout] test schedule::stats::tests::close_emit_fields_are_not_serialized_to_json ... ok
[INFO] [stdout] test schedule::stats::tests::current_values_grows_with_distinct_series_no_cap ... ok
[INFO] [stdout] test schedule::stats::tests::current_values_is_not_serialized_to_json ... ok
[INFO] [stdout] test schedule::stats::tests::current_values_snapshot_is_deterministic_across_calls ... ok
[INFO] [stdout] test schedule::stats::tests::current_values_snapshot_on_empty_stats_returns_empty_vec ... ok
[INFO] [stdout] test schedule::stats::tests::current_values_snapshot_returns_one_event_per_series ... ok
[INFO] [stdout] test schedule::stats::tests::debug_format_contains_struct_name ... ok
[INFO] [stdout] test schedule::stats::tests::default_stats_has_empty_current_values_map ... ok
[INFO] [stdout] test schedule::stats::tests::default_stats_has_zero_counters_and_false_flags ... ok
[INFO] [stdout] test schedule::stats::tests::drain_close_emit_series_empties_set_and_resets_watermark ... ok
[INFO] [stdout] test schedule::stats::tests::drain_then_push_starts_a_fresh_window ... ok
[INFO] [stdout] test schedule::stats::tests::held_state_is_distinct_from_paused ... ok
[INFO] [stdout] test schedule::stats::tests::held_state_serializes_as_lowercase_held ... ok
[INFO] [stdout] test schedule::stats::tests::is_degraded_false_under_clock_skew ... ok
[INFO] [stdout] test schedule::stats::tests::is_degraded_false_when_no_sink_failures ... ok
[INFO] [stdout] test schedule::stats::tests::is_degraded_false_with_failures_but_recent_delivery ... ok
[INFO] [stdout] test schedule::stats::tests::is_degraded_true_with_failures_and_no_delivery_ever ... ok
[INFO] [stdout] test schedule::stats::tests::is_degraded_true_with_failures_and_stale_delivery ... ok
[INFO] [stdout] test schedule::runner::tests::runner_without_stats_does_not_push_metrics ... ok
[INFO] [stdout] test schedule::stats::tests::last_emit_ts_tracks_the_most_recent_push ... ok
[INFO] [stdout] test schedule::stats::tests::last_sink_error_serializes_as_null_when_none ... ok
[INFO] [stdout] test schedule::stats::tests::operational_states_excludes_finished ... ok
[INFO] [stdout] test schedule::stats::tests::operational_states_returns_five_states_in_documented_order ... ok
[INFO] [stdout] test schedule::stats::tests::push_metric_distinguishes_different_label_sets ... ok
[INFO] [stdout] test schedule::stats::tests::push_metric_dedups_repeated_series_in_set ... ok
[INFO] [stdout] test schedule::stats::tests::push_metric_inserts_new_series_into_current_values ... ok
[INFO] [stdout] test schedule::stats::tests::push_metric_does_not_track_series_when_flag_off ... ok
[INFO] [stdout] test schedule::stats::tests::push_metric_overwrites_existing_series_with_latest_value ... ok
[INFO] [stdout] test schedule::stats::tests::scenario_stats_is_send_and_sync ... ok
[INFO] [stdout] test schedule::stats::tests::push_metric_tracks_series_when_flag_on ... ok
[INFO] [stdout] test schedule::stats::tests::serializes_to_json_with_all_fields_present ... ok
[INFO] [stdout] test schedule::stats::tests::sink_failure_fields_serialize_to_json ... ok
[INFO] [stdout] test schedule::stats::tests::series_set_grows_with_distinct_series_uncapped ... ok
[INFO] [stdout] test schedule::runner::tests::integration_spike_counter_strategy_produces_bounded_values ... ok
[INFO] [stdout] test schedule::runner::tests::integration_spike_labels_appear_during_spike_window ... ok
[INFO] [stdout] test schedule::runner::tests::dynamic_labels_and_static_labels_coexist_in_output ... ok
[INFO] [stdout] test schedule::runner::tests::dynamic_labels_counter_appear_in_metric_output ... ok
[INFO] [stdout] test schedule::tests::burst_window_is_cloneable ... ok
[INFO] [stdout] test schedule::tests::burst_window_is_debuggable ... ok
[INFO] [stdout] test schedule::tests::dynamic_label_counter_cardinality_one ... ok
[INFO] [stdout] test schedule::tests::dynamic_label_counter_empty_prefix ... ok
[INFO] [stdout] test schedule::tests::dynamic_label_counter_is_deterministic ... ok
[INFO] [stdout] test schedule::tests::dynamic_label_counter_large_tick ... ok
[INFO] [stdout] test schedule::tests::dynamic_label_counter_respects_cardinality_ceiling ... ok
[INFO] [stdout] test schedule::tests::dynamic_label_counter_tick_zero_returns_first_value ... ok
[INFO] [stdout] test schedule::tests::dynamic_label_counter_wraps_at_cardinality ... ok
[INFO] [stdout] test schedule::tests::dynamic_label_is_cloneable ... ok
[INFO] [stdout] test schedule::tests::dynamic_label_is_debuggable ... ok
[INFO] [stdout] test schedule::tests::dynamic_label_values_respects_cardinality_ceiling ... ok
[INFO] [stdout] test schedule::summary_runner::tests::config_labels_appear_in_output ... ok
[INFO] [stdout] test schedule::tests::dynamic_label_values_tick_zero_returns_first_value ... ok
[INFO] [stdout] test schedule::tests::dynamic_label_values_single_element ... ok
[INFO] [stdout] test schedule::tests::gap_window_is_cloneable ... ok
[INFO] [stdout] test schedule::tests::dynamic_label_values_wraps_at_list_length ... ok
[INFO] [stdout] test schedule::tests::is_in_burst_at_0_5s_returns_some_multiplier ... ok
[INFO] [stdout] test schedule::tests::gap_window_is_debuggable ... ok
[INFO] [stdout] test schedule::tests::is_in_burst_at_10_5s_second_cycle_is_some ... ok
[INFO] [stdout] test schedule::tests::is_in_burst_at_10s_second_cycle_start_is_some ... ok
[INFO] [stdout] test schedule::tests::is_in_burst_at_2_5s_returns_none ... ok
[INFO] [stdout] test schedule::tests::is_in_burst_at_5s_is_none ... ok
[INFO] [stdout] test schedule::tests::is_in_burst_at_12_5s_second_cycle_is_none ... ok
[INFO] [stdout] test schedule::tests::is_in_burst_at_burst_end_boundary_returns_none ... ok
[INFO] [stdout] test schedule::tests::is_in_burst_at_9_5s_is_none ... ok
[INFO] [stdout] test schedule::tests::is_in_burst_at_zero_is_some_multiplier ... ok
[INFO] [stdout] test schedule::tests::is_in_burst_returns_correct_multiplier_value ... ok
[INFO] [stdout] test schedule::tests::is_in_gap_at_10s_new_cycle_is_false ... ok
[INFO] [stdout] test schedule::tests::is_in_burst_with_multiplier_one_returns_some ... ok
[INFO] [stdout] test schedule::runner::tests::dynamic_labels_values_list_cycle_in_metric_output ... ok
[INFO] [stdout] test schedule::tests::is_in_gap_at_5s_is_false ... ok
[INFO] [stdout] test schedule::tests::is_in_gap_at_18_5s_second_cycle_is_true ... ok
[INFO] [stdout] test schedule::tests::is_in_gap_at_20s_third_cycle_start_is_false ... ok
[INFO] [stdout] test schedule::tests::is_in_gap_at_8_5s_is_true ... ok
[INFO] [stdout] test schedule::tests::is_in_gap_at_exact_gap_start_is_true ... ok
[INFO] [stdout] test schedule::tests::is_in_gap_at_zero_is_false ... ok
[INFO] [stdout] test schedule::tests::is_in_gap_minute_scale_cycle ... ok
[INFO] [stdout] test schedule::tests::is_in_gap_window_boundaries::case_01_at_zero ... ok
[INFO] [stdout] test schedule::tests::is_in_gap_window_boundaries::case_02_just_before_first ... ok
[INFO] [stdout] test schedule::tests::is_in_gap_sub_millisecond_gap_duration ... ok
[INFO] [stdout] test schedule::tests::is_in_gap_window_boundaries::case_04_inside_first ... ok
[INFO] [stdout] test schedule::tests::is_in_gap_window_boundaries::case_05_just_before_first_end ... ok
[INFO] [stdout] test schedule::tests::is_in_gap_window_boundaries::case_06_exact_end ... ok
[INFO] [stdout] test schedule::tests::is_in_gap_window_boundaries::case_03_exact_start ... ok
[INFO] [stdout] test schedule::tests::is_in_gap_window_boundaries::case_08_second_start ... ok
[INFO] [stdout] test schedule::tests::is_in_gap_window_boundaries::case_07_between ... ok
[INFO] [stdout] test schedule::tests::is_in_gap_window_boundaries::case_09_second_end ... ok
[INFO] [stdout] test schedule::tests::is_in_gap_window_boundaries::case_10_after_all ... ok
[INFO] [stdout] test schedule::tests::is_in_gap_window_empty_list_is_never_in_a_gap ... ok
[INFO] [stdout] test schedule::tests::is_in_gap_window_zero_length_window_suppresses_nothing ... ok
[INFO] [stdout] test schedule::tests::is_in_spike_at_0_5s_is_true ... ok
[INFO] [stdout] test schedule::tests::is_in_spike_at_10s_second_cycle_start_is_true ... ok
[INFO] [stdout] test schedule::tests::is_in_spike_at_spike_end_boundary_is_false ... ok
[INFO] [stdout] test schedule::tests::is_in_spike_at_zero_is_true ... ok
[INFO] [stdout] test schedule::tests::is_in_spike_at_12_5s_second_cycle_is_false ... ok
[INFO] [stdout] test schedule::tests::is_in_spike_at_5s_is_false ... ok
[INFO] [stdout] test schedule::tests::label_value_counter_at_tick_zero ... ok
[INFO] [stdout] test schedule::tests::label_value_counter_wraps_at_cardinality ... ok
[INFO] [stdout] test schedule::tests::label_value_random_cardinality_one ... ok
[INFO] [stdout] test schedule::tests::label_value_random_is_deterministic ... ok
[INFO] [stdout] test schedule::tests::label_value_counter_cardinality_one ... ok
[INFO] [stdout] test schedule::tests::label_value_random_starts_with_prefix ... ok
[INFO] [stdout] test schedule::tests::label_value_random_differs_across_ticks ... ok
[INFO] [stdout] test schedule::tests::parsed_schedule_accepts_a_window_at_zero ... ok
[INFO] [stdout] test schedule::tests::parsed_schedule_empty_spikes_vec ... ok
[INFO] [stdout] test schedule::tests::parsed_schedule_invalid_duration_returns_error ... ok
[INFO] [stdout] test schedule::tests::label_value_random_respects_cardinality ... ok
[INFO] [stdout] test schedule::tests::parsed_schedule_counter_default_prefix ... ok
[INFO] [stdout] test schedule::tests::parsed_schedule_no_dynamic_labels_produces_empty_vec ... ok
[INFO] [stdout] test schedule::tests::parsed_schedule_parses_dynamic_labels_counter ... ok
[INFO] [stdout] test schedule::tests::parsed_schedule_parses_dynamic_labels_values_list ... ok
[INFO] [stdout] test schedule::tests::parsed_schedule_no_optionals ... ok
[INFO] [stdout] test schedule::tests::parsed_schedule_spike_custom_prefix_and_seed ... ok
[INFO] [stdout] test schedule::tests::parsed_schedule_rejects_a_zero_length_window ... ok
[INFO] [stdout] test schedule::tests::parsed_schedule_sorts_windows_by_offset ... ok
[INFO] [stdout] test schedule::tests::parsed_schedule_with_bursts ... ok
[INFO] [stdout] test schedule::tests::parsed_schedule_with_duration ... ok
[INFO] [stdout] test schedule::tests::parsed_schedule_with_gaps ... ok
[INFO] [stdout] test schedule::tests::parsed_schedule_spike_defaults_prefix_and_seed ... ok
[INFO] [stdout] test schedule::tests::rate_1000_yields_1ms_interval ... ok
[INFO] [stdout] test schedule::tests::rate_1_yields_1s_interval ... ok
[INFO] [stdout] test schedule::tests::spike_window_is_cloneable ... ok
[INFO] [stdout] test schedule::tests::rate_0_5_yields_2s_interval ... ok
[INFO] [stdout] test schedule::tests::splitmix64_produces_known_output ... ok
[INFO] [stdout] test schedule::tests::time_until_burst_end_at_0_5s_returns_1_5s ... ok
[INFO] [stdout] test schedule::tests::time_until_burst_end_at_exact_boundary_is_non_negative ... ok
[INFO] [stdout] test schedule::tests::time_until_burst_end_at_1_9s_returns_0_1s ... ok
[INFO] [stdout] test schedule::summary_runner::tests::quantile_events_have_quantile_label ... ok
[INFO] [stdout] test schedule::tests::time_until_gap_end_at_9s_returns_1s ... ok
[INFO] [stdout] test schedule::tests::time_until_gap_end_at_gap_start_returns_gap_duration ... ok
[INFO] [stdout] test schedule::tests::time_until_burst_end_at_zero_returns_burst_duration ... ok
[INFO] [stdout] test schedule::tests::time_until_gap_end_near_cycle_boundary_is_non_negative ... ok
[INFO] [stdout] test schedule::tests::time_until_gap_end_second_cycle_at_18s ... ok
[INFO] [stdout] test schedule::tests::time_until_gap_window_end_chains_overlapping_windows ... ok
[INFO] [stdout] test schedule::tests::time_until_gap_window_end_chains_adjacent_windows ... ok
[INFO] [stdout] test schedule::tests::time_until_gap_window_end_inside_returns_remaining ... ok
[INFO] [stdout] test schedule::tests::time_until_burst_end_second_cycle_at_10_5s_returns_1_5s ... ok
[INFO] [stdout] test schedule::tests::time_until_gap_window_end_outside_returns_zero ... ok
[INFO] [stdout] test sink::channel::tests::channel_sink_is_send ... ok
[INFO] [stdout] test schedule::tests::time_until_gap_window_end_with_no_windows_is_zero ... ok
[INFO] [stdout] test sink::channel::tests::channel_sink_usable_as_boxed_sink_trait_object ... ok
[INFO] [stdout] test sink::channel::tests::channel_sink_is_sync ... ok
[INFO] [stdout] test sink::channel::tests::channel_sink_write_count_matches_receive_count ... ok
[INFO] [stdout] test sink::channel::tests::flush_always_returns_ok ... ok
[INFO] [stdout] test sink::channel::tests::flush_does_not_affect_channel_contents ... ok
[INFO] [stdout] test sink::channel::tests::write_after_receiver_dropped_returns_err ... ok
[INFO] [stdout] test sink::channel::tests::multiple_writes_send_in_order ... ok
[INFO] [stdout] test sink::channel::tests::write_empty_slice_sends_empty_vec ... ok
[INFO] [stdout] test sink::channel::tests::write_sends_exact_bytes_to_receiver ... ok
[INFO] [stdout] test sink::file::tests::file_sink_is_send_and_sync ... ok
[INFO] [stdout] test sink::file::tests::flush_then_drop_persists_data ... ok
[INFO] [stdout] test sink::file::tests::create_sink_file_config_creates_file_at_path ... ok
[INFO] [stdout] test sink::file::tests::multiple_writes_accumulate_in_file ... ok
[INFO] [stdout] test sink::file::tests::parent_dir_creation_matches_spec_path_pattern ... ok
[INFO] [stdout] test sink::file::tests::sink_config_file_deserializes_from_inline_yaml ... ok
[INFO] [stdout] test sink::file::tests::sink_config_file_deserializes_from_yaml ... ok
[INFO] [stdout] test sink::file::tests::sink_config_file_is_cloneable_and_debuggable ... ok
[INFO] [stdout] test schedule::tests::spike_window_is_debuggable ... ok
[INFO] [stdout] test sink::file::tests::write_empty_slice_succeeds_and_file_is_empty ... ok
[INFO] [stdout] test sink::file::tests::parent_dirs_created_automatically_for_nested_path ... ok
[INFO] [stdout] test sink::file::tests::write_to_readonly_dir_returns_sink_error_with_path_in_message ... FAILED
[INFO] [stdout] test sink::file::tests::write_to_path_under_nonexistent_root_with_no_create_perm_returns_err ... ok
[INFO] [stdout] test sink::memory::tests::buffer_remains_populated_alongside_capture ... ok
[INFO] [stdout] test sink::memory::tests::capture_handle_observes_writes_across_clones ... ok
[INFO] [stdout] test sink::memory::tests::buffer_field_is_publicly_accessible ... ok
[INFO] [stdout] test sink::memory::tests::captured_ring_capacity_minimum_is_one ... ok
[INFO] [stdout] test sink::memory::tests::captured_ring_len_and_is_empty_track_state ... ok
[INFO] [stdout] test sink::memory::tests::default_creates_empty_sink ... ok
[INFO] [stdout] test sink::memory::tests::capture_ring_evicts_oldest_when_full ... ok
[INFO] [stdout] test sink::file::tests::write_to_temp_file_and_read_back_matches ... ok
[INFO] [stdout] test sink::memory::tests::flush_on_empty_sink_returns_ok ... ok
[INFO] [stdout] test sink::memory::tests::memory_sink_is_send_and_sync ... ok
[INFO] [stdout] test sink::memory::tests::multiple_writes_accumulate_in_order ... ok
[INFO] [stdout] test sink::memory::tests::memory_sink_usable_as_boxed_sink_trait_object ... ok
[INFO] [stdout] test sink::memory::tests::flush_is_noop_and_returns_ok ... ok
[INFO] [stdout] test schedule::runner::tests::dynamic_labels_counter_respects_cardinality_ceiling_in_output ... ok
[INFO] [stdout] test sink::memory::tests::with_capture_records_timestamped_writes ... ok
[INFO] [stdout] test sink::memory::tests::new_disables_capture ... ok
[INFO] [stdout] test sink::memory::tests::with_shared_capture_writes_through_external_handle ... ok
[INFO] [stdout] test sink::memory::tests::write_empty_slice_appends_nothing ... ok
[INFO] [stdout] test sink::memory::tests::write_stores_exact_bytes_in_buffer ... ok
[INFO] [stdout] test sink::retry::tests::execute_classifier_distinguishes_retryable_from_permanent ... ok
[INFO] [stdout] test sink::retry::tests::execute_exhausts_retries_returns_last_error ... ok
[INFO] [stdout] test sink::retry::tests::from_config_invalid_initial_backoff_returns_error ... ok
[INFO] [stdout] test sink::retry::tests::execute_retries_transient_error_then_succeeds ... ok
[INFO] [stdout] test sink::retry::tests::from_config_invalid_max_backoff_returns_error ... ok
[INFO] [stdout] test sink::retry::tests::execute_non_retryable_error_returns_immediately ... ok
[INFO] [stdout] test sink::retry::tests::execute_succeeds_on_first_attempt ... ok
[INFO] [stdout] test sink::retry::tests::from_config_max_less_than_initial_returns_error ... ok
[INFO] [stdout] test sink::retry::tests::from_config_with_valid_values_succeeds ... ok
[INFO] [stdout] test sink::retry::tests::from_config_zero_attempts_returns_error ... ok
[INFO] [stdout] test sink::retry::tests::jittered_backoff_is_at_most_initial_for_attempt_zero ... ok
[INFO] [stdout] test sink::retry::tests::jittered_backoff_capped_at_max_backoff ... ok
[INFO] [stdout] test sink::retry::tests::retry_config_is_cloneable ... ok
[INFO] [stdout] test sink::retry::tests::retry_config_is_send_and_sync ... ok
[INFO] [stdout] test sink::retry::tests::from_config_with_equal_backoffs_succeeds ... ok
[INFO] [stdout] test sink::retry::tests::retry_config_round_trip_through_policy ... ok
[INFO] [stdout] test sink::retry::tests::retry_policy_is_debuggable ... ok
[INFO] [stdout] test sink::stdout::tests::stdout_sink_constructs_without_panicking ... ok
[INFO] [stdout] test sink::stdout::tests::stdout_sink_default_constructs_without_panicking ... ok
[INFO] [stdout] test sink::stdout::tests::stdout_sink_is_send_and_sync ... ok
[INFO] [stdout] test sink::stdout::tests::write_and_flush_do_not_error ... ok
[INFO] [stdout] test sink::retry::tests::jittered_backoff_with_zero_duration_returns_zero ... ok
[INFO] [stdout] up{} 1 1700000000000
[INFO] [stdout] test sink::tcp::tests::create_sink_tcp_config_connects_and_delivers_data ... ok
[INFO] [stdout] test sink::tcp::tests::sink_config_tcp_deserializes_from_yaml ... ok
[INFO] [stdout] test sink::stdout::tests::write_non_empty_data_does_not_error ... ok
[INFO] [stdout] test sink::retry::tests::retry_policy_is_send_and_sync ... ok
[INFO] [stdout] test sink::tcp::tests::sink_config_tcp_is_cloneable_and_debuggable ... ok
[INFO] [stdout] test sink::tcp::tests::tcp_connect_to_unused_port_returns_sink_error ... ok
[INFO] [stdout] test sink::tcp::tests::tcp_invalid_address_string_returns_sink_error ... ok
[INFO] [stdout] test sink::tcp::tests::tcp_multiple_writes_arrive_in_order ... ok
[INFO] [stdout] test sink::tcp::tests::tcp_sink_is_send_and_sync ... ok
[INFO] [stdout] test sink::tcp::tests::tcp_connect_refused_error_message_contains_address ... ok
[INFO] [stdout] test sink::retry::tests::retry_config_deserializes_from_yaml ... ok
[INFO] [stdout] test sink::tests::create_sink_http_push_disabled_returns_feature_hint_error ... ok
[INFO] [stdout] test sink::tcp::tests::tcp_valid_address_connects_successfully ... ok
[INFO] [stdout] test sink::tests::create_sink_kafka_disabled_returns_feature_hint_error ... ok
[INFO] [stdout] test sink::tests::create_sink_memory_capture_handle_takes_precedence_over_capture_flag ... ok
[INFO] [stdout] test sink::tcp::tests::tcp_write_empty_slice_succeeds ... ok
[INFO] [stdout] test sink::tests::create_sink_memory_with_shared_capture_handle_mirrors_writes ... ok
[INFO] [stdout] test sink::tests::create_sink_loki_disabled_returns_feature_hint_error ... ok
[INFO] [stdout] test sink::tests::create_sink_memory_with_capture_returns_usable_sink ... ok
[INFO] [stdout] test sink::tests::create_sink_memory_without_capture_returns_ok ... ok
[INFO] [stdout] test sink::tests::create_sink_remote_write_disabled_returns_feature_hint_error ... ok
[INFO] [stdout] test sink::tests::create_sink_stdout_write_and_flush_succeed ... ok
[INFO] [stdout] test sink::tests::create_sink_otlp_grpc_disabled_returns_feature_hint_error ... ok
[INFO] [stdout] test sink::tcp::tests::tcp_write_and_flush_data_arrives_at_listener ... ok
[INFO] [stdout] test sink::tests::default_write_log_event_forwards_encoded_bytes_to_write ... ok
[INFO] [stdout] test sink::tests::http_push_yaml_deserializes_into_disabled_variant_when_feature_is_off ... ok
[INFO] [stdout] test sink::tests::kafka_yaml_deserializes_into_disabled_variant_when_feature_is_off ... ok
[INFO] [stdout] test sink::tests::otlp_grpc_yaml_deserializes_into_disabled_variant_when_feature_is_off ... ok
[INFO] [stdout] test sink::tests::remote_write_yaml_deserializes_into_disabled_variant_when_feature_is_off ... ok
[INFO] [stdout] test sink::tests::loki_yaml_deserializes_into_disabled_variant_when_feature_is_off ... ok
[INFO] [stdout] test sink::tests::scenario_yaml_with_file_sink_and_json_encoder_deserializes_correctly ... ok
[INFO] [stdout] test sink::tests::scenario_yaml_with_tcp_sink_deserializes_correctly ... ok
[INFO] [stdout] test sink::tests::scenario_yaml_with_udp_sink_and_influx_encoder_deserializes_correctly ... ok
[INFO] [stdout] test sink::tests::create_sink_stdout_returns_ok ... ok
[INFO] [stdout] test sink::tests::non_http_sinks_available_without_http_feature ... ok
[INFO] [stdout] test sink::tests::sink_config_file_deserializes_with_type_field ... ok
[INFO] [stdout] test sink::tests::sink_config_file_is_cloneable_and_debuggable ... ok
[INFO] [stdout] test sink::tests::sink_config_file_requires_path_field ... ok
[INFO] [stdout] test sink::tests::sink_config_is_cloneable ... ok
[INFO] [stdout] test sink::tests::sink_config_is_debuggable ... ok
[INFO] [stdout] test sink::tests::sink_config_is_send_and_sync ... ok
[INFO] [stdout] test sink::tests::sink_config_memory_is_cloneable_and_debuggable ... ok
[INFO] [stdout] test sink::tests::sink_config_memory_with_handle_is_cloneable_and_shares_ring ... ok
[INFO] [stdout] test sink::tests::sink_config_memory_capture_handle_is_skipped_in_yaml ... ok
[INFO] [stdout] test sink::tests::sink_config_memory_defaults_when_fields_omitted ... ok
[INFO] [stdout] test sink::tests::sink_config_memory_deserializes_with_type_field ... ok
[INFO] [stdout] test sink::tests::sink_config_old_external_tag_format_is_rejected ... ok
[INFO] [stdout] test sink::tests::sink_config_tcp_deserializes_with_type_field ... ok
[INFO] [stdout] test sink::tests::sink_config_tcp_is_cloneable_and_debuggable ... ok
[INFO] [stdout] test sink::tests::sink_config_missing_type_field_returns_error ... ok
[INFO] [stdout] test sink::tests::sink_config_stdout_deserializes_from_yaml ... ok
[INFO] [stdout] test sink::tests::sink_config_tcp_requires_address_field ... ok
[INFO] [stdout] test sink::tests::sink_config_udp_is_cloneable_and_debuggable ... ok
[INFO] [stdout] test sink::tests::sink_config_udp_requires_address_field ... ok
[INFO] [stdout] test sink::tests::sink_config_tcp_with_retry_deserializes ... ok
[INFO] [stdout] test sink::tests::sink_config_tcp_without_retry_has_none ... ok
[INFO] [stdout] test schedule::runner::tests::integration_burst_increases_event_count ... ok
[INFO] [stdout] test sink::udp::tests::sink_config_udp_is_cloneable_and_debuggable ... ok
[INFO] [stdout] test sink::tests::sink_config_udp_deserializes_with_type_field ... ok
[INFO] [stdout] test sink::tests::sink_config_unknown_type_returns_error ... ok
[INFO] [stdout] test sink::udp::tests::create_sink_udp_config_delivers_datagram ... ok
[INFO] [stdout] test sink::udp::tests::udp_invalid_address_error_message_contains_address ... ok
[INFO] [stdout] test sink::udp::tests::udp_invalid_address_string_returns_sink_error ... ok
[INFO] [stdout] test sink::udp::tests::udp_oversized_payload_error_message_mentions_sizes ... ok
[INFO] [stdout] test sink::udp::tests::udp_multiple_writes_each_arrive_as_separate_datagram ... ok
[INFO] [stdout] test sink::udp::tests::udp_exactly_max_payload_succeeds ... ok
[INFO] [stdout] test sink::udp::tests::udp_flush_is_noop_and_always_succeeds ... ok
[INFO] [stdout] test sink::udp::tests::udp_oversized_payload_returns_sink_error ... ok
[INFO] [stdout] test sink::udp::tests::udp_sink_is_send_and_sync ... ok
[INFO] [stdout] test sink::udp::tests::udp_write_empty_datagram_succeeds ... ok
[INFO] [stdout] test sink::udp::tests::udp_valid_address_creates_sink_successfully ... ok
[INFO] [stdout] test tests::config_error_converts_to_sonda_error_via_from ... ok
[INFO] [stdout] test sink::udp::tests::udp_write_datagram_arrives_at_receiver ... ok
[INFO] [stdout] test tests::config_feature_enables_yaml_deserialization ... ok
[INFO] [stdout] test tests::config_types_constructible_without_yaml_parsing ... ok
[INFO] [stdout] test tests::encoder_timestamp_preserves_system_time_source ... ok
[INFO] [stdout] test tests::encoder_serialization_preserves_serde_json_source ... ok
[INFO] [stdout] test schedule::summary_runner::tests::output_contains_quantile_count_sum_series ... ok
[INFO] [stdout] test tests::encoder_error_converts_to_sonda_error_via_from ... ok
[INFO] [stdout] test tests::error_types_are_send_and_sync ... ok
[INFO] [stdout] test tests::factory_functions_work_without_deserialization ... ok
[INFO] [stdout] test tests::generator_file_read_preserves_io_error_source ... ok
[INFO] [stdout] test tests::generator_file_read_io_error_kind_is_inspectable ... ok
[INFO] [stdout] test tests::generator_error_converts_to_sonda_error_via_from ... ok
[INFO] [stdout] test tests::runtime_error_converts_to_sonda_error_via_from ... ok
[INFO] [stdout] test tests::log_csv_replay_factory_missing_file_produces_generator_error ... ok
[INFO] [stdout] test tests::missing_csv_file_produces_generator_error_not_sink ... ok
[INFO] [stdout] test tests::io_error_does_not_auto_convert_to_sonda_error ... ok
[INFO] [stdout] test tests::scenarios_failed_is_runtime_not_config ... ok
[INFO] [stdout] test tests::runtime_error_display_is_descriptive ... ok
[INFO] [stdout] test tests::scenarios_failed_converts_to_sonda_error_via_from ... ok
[INFO] [stdout] test tests::sonda_error_display_includes_context ... ok
[INFO] [stdout] test tests::sonda_error_sink_display_includes_io_context ... ok
[INFO] [stdout] test tests::spawn_failed_is_runtime_not_config ... ok
[INFO] [stdout] test sink::udp::tests::sink_config_udp_deserializes_from_yaml ... ok
[INFO] [stdout] test tests::spawn_failed_preserves_io_error_source ... ok
[INFO] [stdout] test tests::sink_file_error_produces_sink_variant ... FAILED
[INFO] [stdout] test tests::thread_panicked_is_runtime_not_config ... ok
[INFO] [stdout] test util::tests::known_output_regression_anchor ... ok
[INFO] [stdout] test util::tests::same_input_produces_same_output ... ok
[INFO] [stdout] test util::tests::max_input_does_not_panic ... ok
[INFO] [stdout] test util::tests::output_covers_full_bit_width ... ok
[INFO] [stdout] test util::tests::zero_input_does_not_produce_zero ... ok
[INFO] [stdout] test tests::spawn_failed_source_chain_traverses_through_sonda_error ... ok
[INFO] [stdout] test util::tests::different_inputs_produce_different_outputs ... ok
[INFO] [stdout] test verify::evaluator::tests::empty_timeline_is_undecided ... ok
[INFO] [stdout] test verify::evaluator::tests::errors_after_deadline_do_not_explain_a_miss ... ok
[INFO] [stdout] test verify::evaluator::tests::errors_inside_window_do_not_count_as_late_evidence ... ok
[INFO] [stdout] test verify::evaluator::tests::evidence_exactly_at_deadline_supports_late ... ok
[INFO] [stdout] test verify::evaluator::tests::firing_after_deadline_is_late_not_pass ... ok
[INFO] [stdout] test verify::evaluator::tests::firing_exactly_at_deadline_passes ... ok
[INFO] [stdout] test verify::evaluator::tests::firing_on_time_passes ... ok
[INFO] [stdout] test verify::evaluator::tests::no_firing_with_coverage_is_missed ... ok
[INFO] [stdout] test verify::evaluator::tests::missed_carries_last_error_before_deadline ... ok
[INFO] [stdout] test verify::evaluator::tests::late_success_without_window_coverage_is_undecided_not_late ... ok
[INFO] [stdout] test verify::evaluator::tests::lone_late_resolution_without_coverage_is_undecided ... ok
[INFO] [stdout] test verify::evaluator::tests::query_errors_never_count_as_resolution ... ok
[INFO] [stdout] test verify::evaluator::tests::pending_counts_as_resolved ... ok
[INFO] [stdout] test verify::provenance_tests::any_emitted_value_for_the_key_matches ... ok
[INFO] [stdout] test verify::provenance_tests::keys_the_scenario_never_sets_are_ignored ... ok
[INFO] [stdout] test verify::provenance_tests::matching_values_produce_no_warnings ... ok
[INFO] [stdout] test verify::evaluator::tests::resolution_on_time_passes ... ok
[INFO] [stdout] test verify::tests::absent_block_is_none ... ok
[INFO] [stdout] test verify::tests::empty_alert_list_is_rejected ... ok
[INFO] [stdout] test verify::evaluator::tests::polling_that_stops_early_is_undecided ... ok
[INFO] [stdout] test verify::evaluator::tests::resolution_after_deadline_is_late ... ok
[INFO] [stdout] test verify::tests::unknown_expectation_field_is_rejected ... ok
[INFO] [stdout] test verify::tests::invalid_duration_is_rejected ... ok
[INFO] [stdout] test verify::tests::parses_full_expect_block ... ok
[INFO] [stdout] test verify::provenance_tests::differing_value_on_an_emitted_key_is_foreign ... ok
[INFO] [stdout] test schedule::summary_runner::tests::run_completes_for_short_duration ... ok
[INFO] [stdout] test sink::channel::tests::bounded_channel_provides_backpressure_without_oom ... ok
[INFO] [stdout] test schedule::runner::tests::integration_rate_100_duration_1s_emits_approximately_100_events ... ok
[INFO] [stdout] test schedule::runner::tests::integration_gap_covering_full_window_produces_zero_events_even_with_burst ... ok
[INFO] [stdout] test schedule::runner::tests::integration_burst_then_normal_produces_mixed_rate ... ok
[INFO] [stdout] test schedule::summary_runner::tests::gap_suppresses_summary_output ... ok
[INFO] [stdout] test schedule::runner::tests::integration_gap_wins_over_burst_suppresses_events ... ok
[INFO] [stdout] test schedule::runner::tests::integration_gap_suppresses_events ... ok
[INFO] [stdout] test schedule::core_loop::tests::loop_suppresses_events_during_gap ... ok
[INFO] [stdout] test schedule::log_runner::tests::run_logs_with_sink_gap_suppresses_output ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- sink::file::tests::write_to_readonly_dir_returns_sink_error_with_path_in_message stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'sink::file::tests::write_to_readonly_dir_returns_sink_error_with_path_in_message' (6563) panicked at src/sink/file.rs:184:9:
[INFO] [stdout] should fail on read-only dir
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x58e718380b51 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x58e718398d7a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x58e7183857ec - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x58e718358b06 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x58e7183771e9 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x58e7182e5550 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x58e718377512 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x58e718358be4 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x58e718351339 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x58e718359c8d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x58e71839955c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x58e717f1389a - sonda_core[2bafb6e5797627e5]::sink::file::tests::write_to_readonly_dir_returns_sink_error_with_path_in_message::{closure#0}
[INFO] [stdout]   12:     0x58e71816f69a - <tokio[493bf20bc3c31694]::runtime::context::scoped::Scoped<tokio[493bf20bc3c31694]::runtime::scheduler::Context>>::set::<<tokio[493bf20bc3c31694]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[493bf20bc3c31694]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[a373ad73a504971]::pin::Pin<&mut core[a373ad73a504971]::pin::Pin<&mut dyn core[a373ad73a504971]::future::future::Future<Output = ()>>>>::{closure#0}, core[a373ad73a504971]::option::Option<()>>::{closure#0}, (alloc[2e1b2a31b91974c5]::boxed::Box<tokio[493bf20bc3c31694]::runtime::scheduler::current_thread::Core>, core[a373ad73a504971]::option::Option<()>)>
[INFO] [stdout]   13:     0x58e71816be5a - <tokio[493bf20bc3c31694]::runtime::runtime::Runtime>::block_on::<core[a373ad73a504971]::pin::Pin<&mut dyn core[a373ad73a504971]::future::future::Future<Output = ()>>>
[INFO] [stdout]   14:     0x58e717f3275e - <sonda_core[2bafb6e5797627e5]::sink::file::tests::write_to_readonly_dir_returns_sink_error_with_path_in_message::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   15:     0x58e7182d899b - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   16:     0x58e7182e5b75 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   17:     0x58e7182df464 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   18:     0x58e7182e8c02 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   19:     0x58e71837f3ef - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   20:     0x79dd9e68ddfa - <unknown>
[INFO] [stdout]   21:     0x79dd9e7213d4 - clone
[INFO] [stdout]   22:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tests::sink_file_error_produces_sink_variant stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'tests::sink_file_error_produces_sink_variant' (6704) panicked at src/lib.rs:382:22:
[INFO] [stdout] invalid file path must return Err
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x58e718380b51 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x58e718398d7a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x58e7183857ec - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x58e718358b06 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x58e7183771e9 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x58e7182e5550 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x58e718377512 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x58e718358be4 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x58e718351339 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x58e718359c8d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x58e71839955c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x58e717fa5bc1 - sonda_core[2bafb6e5797627e5]::tests::sink_file_error_produces_sink_variant::{closure#0}
[INFO] [stdout]   12:     0x58e71816f69a - <tokio[493bf20bc3c31694]::runtime::context::scoped::Scoped<tokio[493bf20bc3c31694]::runtime::scheduler::Context>>::set::<<tokio[493bf20bc3c31694]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[493bf20bc3c31694]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[a373ad73a504971]::pin::Pin<&mut core[a373ad73a504971]::pin::Pin<&mut dyn core[a373ad73a504971]::future::future::Future<Output = ()>>>>::{closure#0}, core[a373ad73a504971]::option::Option<()>>::{closure#0}, (alloc[2e1b2a31b91974c5]::boxed::Box<tokio[493bf20bc3c31694]::runtime::scheduler::current_thread::Core>, core[a373ad73a504971]::option::Option<()>)>
[INFO] [stdout]   13:     0x58e71816be5a - <tokio[493bf20bc3c31694]::runtime::runtime::Runtime>::block_on::<core[a373ad73a504971]::pin::Pin<&mut dyn core[a373ad73a504971]::future::future::Future<Output = ()>>>
[INFO] [stdout]   14:     0x58e717fbeef0 - <sonda_core[2bafb6e5797627e5]::tests::sink_file_error_produces_sink_variant::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   15:     0x58e7182d899b - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   16:     0x58e7182e5b75 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   17:     0x58e7182df464 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   18:     0x58e7182e8c02 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   19:     0x58e71837f3ef - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   20:     0x79dd9e68ddfa - <unknown>
[INFO] [stdout]   21:     0x79dd9e7213d4 - clone
[INFO] [stdout]   22:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     sink::file::tests::write_to_readonly_dir_returns_sink_error_with_path_in_message
[INFO] [stdout]     tests::sink_file_error_produces_sink_variant
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 2082 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in 11.00s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "5a64e70496d181c9a4ba309af13e8032a3e1df37fa94686a3c677e5464f28bbf", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5a64e70496d181c9a4ba309af13e8032a3e1df37fa94686a3c677e5464f28bbf", kill_on_drop: false }`
[INFO] [stdout] 5a64e70496d181c9a4ba309af13e8032a3e1df37fa94686a3c677e5464f28bbf
