[INFO] cloning repository https://github.com/sksat/bambu-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/sksat/bambu-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsksat%2Fbambu-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsksat%2Fbambu-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] c1ee4e88ccaa475b10746a14836a38a83872679a
[INFO] testing sksat/bambu-rs against 1.97.0-beta.6 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsksat%2Fbambu-rs" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-3-tc1/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/sksat/bambu-rs
[INFO] finished tweaking git repo https://github.com/sksat/bambu-rs
[INFO] tweaked toml for git repo https://github.com/sksat/bambu-rs written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/sksat/bambu-rs on toolchain 1.97.0-beta.6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/sksat/bambu-rs already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded async-compression v0.4.42
[INFO] [stderr]   Downloaded compression-core v0.4.32
[INFO] [stderr]   Downloaded ts-rs-macros v12.0.1
[INFO] [stderr]   Downloaded compression-codecs v0.4.38
[INFO] [stderr]   Downloaded ts-rs v12.0.1
[INFO] [stderr]   Downloaded zip v7.2.0
[INFO] [stderr]   Downloaded suppaftp v8.0.4
[INFO] [stderr]   Downloaded lazy-regex v3.6.0
[INFO] [stderr]   Downloaded lazy-regex-proc_macros v3.6.0
[INFO] [stderr]   Downloaded rust-embed-utils v8.11.0
[INFO] [stderr]   Downloaded cc v1.2.64
[INFO] [stderr]   Downloaded rumqttc v0.25.1
[INFO] [stderr]   Downloaded rust-embed-impl v8.11.0
[INFO] [stderr]   Downloaded notalawyer-clap v0.3.0
[INFO] [stderr]   Downloaded notalawyer-build v0.3.0
[INFO] [stderr]   Downloaded rust-embed v8.11.0
[INFO] [stderr]   Downloaded toml-span v0.7.1
[INFO] [stderr]   Downloaded krates v0.21.2
[INFO] [stderr]   Downloaded camino v1.2.3
[INFO] [stderr]   Downloaded cargo-about v0.9.0
[INFO] [stderr]   Downloaded codespan v0.13.1
[INFO] [stderr]   Downloaded md-5 v0.11.0
[INFO] [stderr]   Downloaded hybrid-array v0.4.12
[INFO] [stderr]   Downloaded ignore v0.4.26
[INFO] [stderr]   Downloaded tokio-tungstenite v0.29.0
[INFO] [stderr]   Downloaded rust-multipart-rfc7578_2 v0.9.0
[INFO] [stderr]   Downloaded reserve-port v2.4.0
[INFO] [stderr]   Downloaded uuid v1.23.3
[INFO] [stderr]   Downloaded tungstenite v0.29.0
[INFO] [stderr]   Downloaded expect-json-macros v1.11.0
[INFO] [stderr]   Downloaded typetag-impl v0.2.22
[INFO] [stderr]   Downloaded expect-json v1.11.0
[INFO] [stderr]   Downloaded typetag v0.2.22
[INFO] [stderr]   Downloaded petgraph v0.8.1
[INFO] [stderr]   Downloaded email_address v0.2.9
[INFO] [stderr]   Downloaded bytesize v2.4.0
[INFO] [stderr]   Downloaded assert_cmd v2.2.2
[INFO] [stderr]   Downloaded axum-extra v0.12.6
[INFO] [stderr]   Downloaded axum-test v20.1.0
[INFO] [stderr]   Downloaded headers v0.4.1
[INFO] [stderr]   Downloaded spdx v0.13.4
[INFO] [stderr]   Downloaded notalawyer v0.3.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 16befa31a72d7c62ae3594c4e92bebcf0366a6474d646f6ebe8ee2d1c7e13b85
[INFO] running `Command { std: "docker" "start" "16befa31a72d7c62ae3594c4e92bebcf0366a6474d646f6ebe8ee2d1c7e13b85", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "16befa31a72d7c62ae3594c4e92bebcf0366a6474d646f6ebe8ee2d1c7e13b85", 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" "16befa31a72d7c62ae3594c4e92bebcf0366a6474d646f6ebe8ee2d1c7e13b85" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "16befa31a72d7c62ae3594c4e92bebcf0366a6474d646f6ebe8ee2d1c7e13b85", 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" "16befa31a72d7c62ae3594c4e92bebcf0366a6474d646f6ebe8ee2d1c7e13b85" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling shlex v2.0.1
[INFO] [stderr]    Compiling typenum v1.20.1
[INFO] [stderr]    Compiling log v0.4.32
[INFO] [stderr]    Compiling http v1.4.2
[INFO] [stderr]    Compiling memchr v2.8.2
[INFO] [stderr]    Compiling dunce v1.0.5
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling fs_extra v1.3.0
[INFO] [stderr]    Compiling zeroize v1.9.0
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling zerocopy v0.8.52
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling zerofrom v0.1.8
[INFO] [stderr]    Compiling displaydoc v0.2.6
[INFO] [stderr]    Compiling yoke v0.8.3
[INFO] [stderr]    Compiling aws-lc-rs v1.17.0
[INFO] [stderr]    Compiling rustls-pki-types v1.14.1
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling simd-adler32 v0.3.9
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling autocfg v1.5.1
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling cc v1.2.64
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling zlib-rs v0.6.3
[INFO] [stderr]    Compiling bitflags v2.13.0
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling rustls v0.23.40
[INFO] [stderr]    Compiling hybrid-array v0.4.12
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling data-encoding v2.11.0
[INFO] [stderr]    Compiling nix v0.31.3
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling compression-core v0.4.32
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling axum-core v0.5.6
[INFO] [stderr]    Compiling crypto-common v0.2.2
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling block-buffer v0.12.1
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling mio v1.2.1
[INFO] [stderr]    Compiling socket2 v0.6.4
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling tokio v1.52.3
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling aws-lc-sys v0.41.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling spin v0.9.8
[INFO] [stderr]    Compiling headers-core v0.3.0
[INFO] [stderr]    Compiling const-oid v0.10.2
[INFO] [stderr]    Compiling bumpalo v3.20.3
[INFO] [stderr]    Compiling winnow v1.0.3
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling flume v0.11.1
[INFO] [stderr]    Compiling zopfli v0.8.3
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling rustls-native-certs v0.8.4
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling futures-lite v2.6.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling digest v0.11.3
[INFO] [stderr]    Compiling headers v0.4.1
[INFO] [stderr]    Compiling serde_spanned v1.1.1
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling rustls-pemfile v2.2.0
[INFO] [stderr]    Compiling regex v1.12.4
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling bambu-rs v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling toml_writer v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling typed-path v0.12.3
[INFO] [stderr]    Compiling ctrlc v3.5.2
[INFO] [stderr]    Compiling toml v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling rand v0.9.4
[INFO] [stderr]    Compiling compression-codecs v0.4.38
[INFO] [stderr]    Compiling ureq v2.12.1
[INFO] [stderr]    Compiling md-5 v0.11.0
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling tungstenite v0.29.0
[INFO] [stderr]    Compiling lazy-regex-proc_macros v3.6.0
[INFO] [stderr]    Compiling zip v7.2.0
[INFO] [stderr]    Compiling lazy-regex v3.6.0
[INFO] [stderr]    Compiling hyper v1.10.1
[INFO] [stderr]    Compiling tokio-tungstenite v0.29.0
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling async-compression v0.4.42
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling rustls-webpki v0.102.8
[INFO] [stderr]    Compiling axum v0.8.9
[INFO] [stderr]    Compiling tower-http v0.6.11
[INFO] [stderr]    Compiling axum-extra v0.12.6
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling suppaftp v8.0.4
[INFO] [stderr]    Compiling rumqttc v0.25.1
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 49s
[INFO] running `Command { std: "docker" "inspect" "16befa31a72d7c62ae3594c4e92bebcf0366a6474d646f6ebe8ee2d1c7e13b85", 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" "16befa31a72d7c62ae3594c4e92bebcf0366a6474d646f6ebe8ee2d1c7e13b85" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling rand_core v0.10.1
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling tokio v1.52.3
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling erased-serde v0.4.10
[INFO] [stderr]    Compiling typetag v0.2.22
[INFO] [stderr]    Compiling time-core v0.1.9
[INFO] [stderr]    Compiling num-conv v0.2.2
[INFO] [stderr]    Compiling cpufeatures v0.3.0
[INFO] [stderr]    Compiling cookie v0.18.1
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling typetag-impl v0.2.22
[INFO] [stderr]    Compiling chacha20 v0.10.0
[INFO] [stderr]    Compiling predicates-core v1.0.10
[INFO] [stderr]    Compiling deranged v0.5.8
[INFO] [stderr]    Compiling time-macros v0.2.29
[INFO] [stderr]    Compiling inventory v0.3.24
[INFO] [stderr]    Compiling expect-json-macros v1.11.0
[INFO] [stderr]    Compiling yansi v1.0.1
[INFO] [stderr]    Compiling diff v0.1.13
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling uuid v1.23.3
[INFO] [stderr]    Compiling rand v0.10.1
[INFO] [stderr]    Compiling assert_cmd v2.2.2
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling email_address v0.2.9
[INFO] [stderr]    Compiling predicates-tree v1.0.13
[INFO] [stderr]    Compiling pretty_assertions v1.4.1
[INFO] [stderr]    Compiling reserve-port v2.4.0
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling bytesize v2.4.0
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling num-complex v0.4.6
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling proptest v1.11.0
[INFO] [stderr]    Compiling time v0.3.49
[INFO] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]    Compiling num-iter v0.1.45
[INFO] [stderr]    Compiling regex v1.12.4
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling predicates v3.1.4
[INFO] [stderr]    Compiling lazy-regex-proc_macros v3.6.0
[INFO] [stderr]    Compiling num-rational v0.4.2
[INFO] [stderr]    Compiling rust-multipart-rfc7578_2 v0.9.0
[INFO] [stderr]    Compiling num v0.4.3
[INFO] [stderr]    Compiling expect-json v1.11.0
[INFO] [stderr]    Compiling lazy-regex v3.6.0
[INFO] [stderr]    Compiling suppaftp v8.0.4
[INFO] [stderr]    Compiling hyper v1.10.1
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-tungstenite v0.29.0
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling async-compression v0.4.42
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling tower-http v0.6.11
[INFO] [stderr]    Compiling rumqttc v0.25.1
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling axum v0.8.9
[INFO] [stderr]    Compiling axum-extra v0.12.6
[INFO] [stderr]    Compiling axum-test v20.1.0
[INFO] [stderr]    Compiling bambu-rs v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 11s
[INFO] running `Command { std: "docker" "inspect" "16befa31a72d7c62ae3594c4e92bebcf0366a6474d646f6ebe8ee2d1c7e13b85", 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" "16befa31a72d7c62ae3594c4e92bebcf0366a6474d646f6ebe8ee2d1c7e13b85" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.54s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/bambu_rs-2380964811e8f982)
[INFO] [stdout] 
[INFO] [stdout] running 394 tests
[INFO] [stdout] test captures::tests::assemble_args_match_the_kind ... ok
[INFO] [stdout] test captures::tests::classify_detects_each_kind ... ok
[INFO] [stdout] test captures::tests::old_single_dir_layout_surfaces_as_one_camera ... ok
[INFO] [stdout] test captures::tests::parse_smooth_frame_pulls_layer_and_offset ... ok
[INFO] [stdout] test captures::tests::smooth_decode_args_glob_to_gray_rawvideo ... ok
[INFO] [stdout] test captures::tests::transcode_args_wrap_an_mjpeg_input ... ok
[INFO] [stdout] test captures::tests::video_thumb_args_grab_one_downscaled_still ... ok
[INFO] [stdout] test cli::tests::ams_map_length_must_match_filament_count_when_known ... ok
[INFO] [stdout] test captures::tests::lists_runs_newest_first_with_cameras ... ok
[INFO] [stdout] test cli::tests::ams_map_range_is_always_checked ... ok
[INFO] [stdout] test cli::tests::ams_preview_pairs_filaments_with_trays ... ok
[INFO] [stdout] test cli::tests::capture_tokens_substitute_per_argv_element ... ok
[INFO] [stdout] test cli::tests::default_mp4_out_swaps_the_suffix ... ok
[INFO] [stdout] test cli::tests::encode_args_for_an_image_sequence_dir ... ok
[INFO] [stdout] test cli::tests::eta_formats_minutes_and_hours ... ok
[INFO] [stdout] test config::tests::debug_redacts_the_access_code ... ok
[INFO] [stdout] test cli::tests::encode_rejects_a_non_dir_non_mjpeg_input ... ok
[INFO] [stdout] test cli::tests::serve_status_url_joins_and_trims_trailing_slash ... ok
[INFO] [stdout] test config::tests::config_toml_round_trips ... ok
[INFO] [stdout] test config::tests::missing_field_is_an_error ... ok
[INFO] [stdout] test config::tests::load_or_default_is_empty_when_absent ... ok
[INFO] [stdout] test cli::tests::watch_key_rounds_temps_so_subdegree_jitter_is_one_line ... ok
[INFO] [stdout] test config::tests::overrides_over_applies_flags_above_env ... ok
[INFO] [stdout] test client::tests::client_ids_are_unique_per_connection ... ok
[INFO] [stdout] test config::tests::overrides_win_over_profile ... ok
[INFO] [stdout] test cli::tests::encode_args_for_an_mjpeg_stream ... ok
[INFO] [stdout] test config::tests::parse_dotenv_reads_bambu_keys_only_with_quotes_and_export ... ok
[INFO] [stdout] test captures::tests::missing_root_is_empty_not_an_error ... ok
[INFO] [stdout] test config::tests::resolve_uses_profile_when_no_overrides ... ok
[INFO] [stdout] test core::capability::tests::control_assessment_degrades_newer_firmware_to_a_warning_not_a_wall ... ok
[INFO] [stdout] test core::capability::tests::a1mini_real_firmware_is_supported_not_newer_than_known ... ok
[INFO] [stdout] test core::capability::tests::developer_mode_threshold_and_control_below_it ... ok
[INFO] [stdout] test config::tests::save_then_load_round_trips_and_is_owner_only ... ok
[INFO] [stdout] test captures::tests::thumb_frame_picks_the_last_frame_of_a_sequence ... ok
[INFO] [stdout] test cli::tests::watch_line_formats_state_progress_and_temps ... ok
[INFO] [stdout] test client::tests::topics_are_formatted_per_serial ... ok
[INFO] [stdout] test client::tests::tls_config_builds ... ok
[INFO] [stdout] test core::capability::tests::unknown_model_refuses_control ... ok
[INFO] [stdout] test core::capability::tests::firmware_newer_than_known_refuses_control ... ok
[INFO] [stdout] test core::capability::tests::observed_a1mini_descriptive_facts ... ok
[INFO] [stdout] test core::capability::tests::inferred_h2d_keeps_descriptive_info_but_refuses_control ... ok
[INFO] [stdout] test core::command::tests::ams_filament_setting_payload_matches_spec ... ok
[INFO] [stdout] test core::command::tests::ams_user_setting_payload_matches_spec ... ok
[INFO] [stdout] test core::command::tests::calibration_option_is_a_bitmask ... ok
[INFO] [stdout] test cli::tests::ams_map_warns_on_multiple_external_spools ... ok
[INFO] [stdout] test core::command::tests::gcode_file_payload ... ok
[INFO] [stdout] test core::command::tests::ams_change_filament_payload_matches_spec ... ok
[INFO] [stdout] test core::command::tests::get_version_is_an_info_read ... ok
[INFO] [stdout] test core::command::tests::ams_control_payload_matches_spec ... ok
[INFO] [stdout] test core::command::tests::categories_match_the_envelope_key ... ok
[INFO] [stdout] test core::command::tests::pause_resume_stop_payloads ... ok
[INFO] [stdout] test core::command::tests::clean_print_error_payload ... ok
[INFO] [stdout] test core::command::tests::print_speed_renders_the_level_as_a_print_param ... ok
[INFO] [stdout] test core::command::tests::pushall_payload ... ok
[INFO] [stdout] test core::command::tests::project_file_payload_has_plate_and_lan_ids ... ok
[INFO] [stdout] test core::command::tests::gcode_line_payload_carries_the_line_in_param ... ok
[INFO] [stdout] test core::capability::tests::x1_carbon_is_full_push_rtsp_and_has_lidar ... ok
[INFO] [stdout] test cli::tests::capture_tokens_do_not_interpret_shell_metacharacters ... ok
[INFO] [stdout] test captures::tests::parse_run_id_splits_epoch_and_label ... ok
[INFO] [stdout] test core::command::tests::ipcam_timelapse_is_a_camera_command ... ok
[INFO] [stdout] test core::command::tests::ledctrl_on_and_off_payloads_carry_the_node ... ok
[INFO] [stdout] test core::command::tests::reboot_is_a_system_command ... ok
[INFO] [stdout] test core::command::tests::rendering_does_not_consume_or_mutate_the_command ... ok
[INFO] [stdout] test core::firmware::tests::developer_mode_threshold_comparison ... ok
[INFO] [stdout] test core::firmware::tests::display_round_trips_original_string ... ok
[INFO] [stdout] test core::firmware::tests::orders_by_numeric_component ... ok
[INFO] [stdout] test core::firmware::tests::rejects_non_numeric ... ok
[INFO] [stdout] test core::firmware::tests::parses_four_component_version ... ok
[INFO] [stdout] test core::hms::tests::decode_skips_zero_padding_entries ... ok
[INFO] [stdout] test core::hms::tests::module_is_decoded_from_the_attr_high_byte ... ok
[INFO] [stdout] test core::hms::tests::worked_example_decodes_like_the_official_wiki ... ok
[INFO] [stdout] test core::hms::tests::xcam_codes_are_flagged_as_lidar ... ok
[INFO] [stdout] test core::firmware::tests::trailing_zero_components_are_equal ... ok
[INFO] [stdout] test core::model::tests::config_parsing_is_lenient_about_case_and_separators ... ok
[INFO] [stdout] test core::model::tests::config_names_round_trip_for_all_known_models ... ok
[INFO] [stdout] test core::model::tests::device_codes_round_trip_for_all_known_models ... ok
[INFO] [stdout] test core::model::tests::legacy_ssdp_strings_normalise_to_modern_models ... ok
[INFO] [stdout] test core::model::tests::parses_canonical_config_names ... ok
[INFO] [stdout] test core::hms::tests::missing_hms_field_decodes_to_empty ... ok
[INFO] [stdout] test core::model::tests::x1_and_x1_carbon_are_distinct_codes ... ok
[INFO] [stdout] test core::park::select_tests::park_before_burst_is_skipped ... ok
[INFO] [stdout] test core::model::tests::unknown_model_is_kept_verbatim ... ok
[INFO] [stdout] test core::model::tests::unrecognised_device_code_is_unknown ... ok
[INFO] [stdout] test core::park::select_tests::all_over_print_is_skipped ... ok
[INFO] [stdout] test core::park::segment_tests::too_coarse_sampling_misses_the_brief_park ... ok
[INFO] [stdout] test core::park::select_tests::panned_camera_still_resolves_the_park ... ok
[INFO] [stdout] test core::park::select_tests::selects_far_left_parked ... ok
[INFO] [stdout] test core::park::select_tests::selects_a_bright_head_park ... ok
[INFO] [stdout] test core::park::tests::ema_alpha_is_bounded_and_grows_with_the_window ... ok
[INFO] [stdout] test core::park::select_tests::prefers_sharp_park_over_blurred_more_left ... ok
[INFO] [stdout] test core::park::select_tests::static_dark_object_is_not_mistaken_for_head ... ok
[INFO] [stdout] test core::park::tests::flat_stream_emits_nothing ... ok
[INFO] [stdout] test core::park::tests::dwell_emits_once_and_picks_sharpest ... ok
[INFO] [stdout] test core::park::tests::a_stronger_close_park_supersedes_the_weaker ... ok
[INFO] [stdout] test core::park::tests::the_example_config_parses_and_ignores_extra_keys ... ok
[INFO] [stdout] test core::park::tests::long_left_event_is_rejected_as_a_wipe ... ok
[INFO] [stdout] test core::park::tests::tuning_missing_a_knob_is_a_hard_error ... ok
[INFO] [stdout] test core::project::tests::absent_sidecar_and_json_are_not_fatal ... ok
[INFO] [stdout] test core::park::tests::single_park_emits_once_after_the_island_closes ... ok
[INFO] [stdout] test core::park::tests::two_close_parks_collapse_to_one ... ok
[INFO] [stdout] test core::project::tests::md5_is_lowercase_hex_of_the_bytes ... ok
[INFO] [stdout] test core::project::tests::malformed_sidecar_is_rejected ... ok
[INFO] [stdout] test core::project::tests::missing_plate_is_an_error ... ok
[INFO] [stdout] test core::project::tests::not_a_zip_is_an_error ... ok
[INFO] [stdout] test core::project::tests::verify_expectations_matches_case_insensitively ... ok
[INFO] [stdout] test core::project::tests::verify_expectations_rejects_an_inspection_of_the_wrong_plate ... ok
[INFO] [stdout] test core::report::tests::a_new_print_that_brings_its_own_percent_keeps_it ... ok
[INFO] [stdout] test core::report::tests::a_new_print_zeroes_progress_carried_over_from_the_last_job ... ok
[INFO] [stdout] test core::report::tests::arrays_are_replaced_wholesale_not_element_merged ... ok
[INFO] [stdout] test core::report::tests::a_progress_delta_within_the_same_print_is_kept ... ok
[INFO] [stdout] test core::project::tests::mismatched_sidecar_is_flagged_not_fatal_and_computed_value_wins ... ok
[INFO] [stdout] test core::report::tests::finishing_a_print_keeps_its_final_progress ... ok
[INFO] [stdout] test core::park::tests::two_parks_far_apart_emit_twice ... ok
[INFO] [stdout] test core::report::tests::full_snapshot_is_msg_zero_not_just_push_status ... ok
[INFO] [stdout] test core::report::tests::last_writer_wins_so_a_stale_delta_reverts_overlapping_fields ... ok
[INFO] [stdout] test core::report::tests::new_keys_are_added ... ok
[INFO] [stdout] test core::report::tests::null_replaces_value_but_keeps_the_key ... ok
[INFO] [stdout] test core::report::tests::objects_merge_recursively_keeping_unmentioned_keys ... ok
[INFO] [stdout] test core::command::tests::sequence_id_is_serialised_as_a_string_not_a_number ... ok
[INFO] [stdout] test core::command::tests::sequence_ids_are_monotonic_strings_from_zero ... ok
[INFO] [stdout] test core::command::tests::speed_level_maps_to_and_from_its_number ... ok
[INFO] [stdout] test core::firmware::tests::accepts_optional_v_prefix ... ok
[INFO] [stdout] test core::report::tests::report_state_seeds_then_merges_deltas ... ok
[INFO] [stdout] test core::hms::tests::observed_a1mini_fixture_has_no_active_alerts ... ok
[INFO] [stdout] test core::model::tests::resolves_vendor_canonical_device_codes ... ok
[INFO] [stdout] test core::safety::tests::embedded_newline_cannot_smuggle_a_second_command ... ok
[INFO] [stdout] test core::safety::tests::cold_extrusion_is_blocked ... ok
[INFO] [stdout] test core::safety::tests::extrude_cold_is_blocked ... ok
[INFO] [stdout] test core::report::tests::scalars_are_replaced ... ok
[INFO] [stdout] test core::safety::tests::extrude_non_finite_is_blocked ... ok
[INFO] [stdout] test core::safety::tests::extrude_when_hot_enough_is_allowed ... ok
[INFO] [stdout] test core::safety::tests::jog_in_range_is_allowed ... ok
[INFO] [stdout] test core::safety::tests::jog_non_finite_is_blocked ... ok
[INFO] [stdout] test core::safety::tests::jog_over_bound_is_blocked ... ok
[INFO] [stdout] test core::safety::tests::extrude_over_bound_is_blocked ... ok
[INFO] [stdout] test core::safety::tests::extrude_zero_is_blocked ... ok
[INFO] [stdout] test core::safety::tests::extrude_distance_checked_before_temperature ... ok
[INFO] [stdout] test core::safety::tests::jog_zero_is_blocked ... ok
[INFO] [stdout] test core::safety::tests::temp_parsing_is_case_insensitive_and_handles_no_setpoint ... ok
[INFO] [stdout] test core::safety::tests::ordinary_gcode_is_allowed ... ok
[INFO] [stdout] test core::session::tests::effect_verified_via_spd_lvl_for_print_speed ... ok
[INFO] [stdout] test core::session::tests::new_print_error_after_command_is_rejected ... ok
[INFO] [stdout] test core::session::tests::preexisting_error_is_not_blamed_on_the_command ... ok
[INFO] [stdout] test core::session::tests::print_start_acked_and_running_is_verified ... ok
[INFO] [stdout] test core::session::tests::rejected_ack_is_rejected_with_reason ... ok
[INFO] [stdout] test core::stage::tests::names_other_spec_stages ... ok
[INFO] [stdout] test core::stage::tests::names_the_stages_observed_during_calibration ... ok
[INFO] [stdout] test core::stage::tests::no_stage_markers_are_recognised ... ok
[INFO] [stdout] test core::stage::tests::stage_zero_is_the_no_special_stage_default ... ok
[INFO] [stdout] test core::stage::tests::the_0xff_sentinel_is_the_cleared_no_stage_value ... ok
[INFO] [stdout] test core::stage::tests::unknown_and_sentinel_stages_have_no_name_but_keep_their_id ... ok
[INFO] [stdout] test core::start::tests::an_inspection_stamps_the_plate_gcode_md5 ... ok
[INFO] [stdout] test core::session::tests::ack_only_command_is_verified_on_ack_without_effect ... ok
[INFO] [stdout] test core::session::tests::acked_but_no_effect_times_out_as_unverified_effect ... ok
[INFO] [stdout] test core::safety::tests::over_limit_bed_temp_is_blocked ... ok
[INFO] [stdout] test core::safety::tests::parser_is_not_bypassed_by_formatting_variants ... ok
[INFO] [stdout] test core::session::tests::never_acked_times_out_as_unverified_ack ... ok
[INFO] [stdout] test core::safety::tests::over_limit_nozzle_temp_is_blocked ... ok
[INFO] [stdout] test core::status::tests::ams_derives_active_and_target_during_a_swap ... ok
[INFO] [stdout] test core::status::tests::ams_is_none_without_ams_or_vt_tray ... ok
[INFO] [stdout] test core::status::tests::filament_none_when_nothing_loaded ... ok
[INFO] [stdout] test core::status::tests::filament_resolves_external_spool ... ok
[INFO] [stdout] test core::status::tests::filament_resolves_from_ams_tray_now ... ok
[INFO] [stdout] test core::status::tests::gcode_state_parses_and_classifies_terminality ... ok
[INFO] [stdout] test core::status::tests::hms_alerts_are_decoded_into_the_status ... ok
[INFO] [stdout] test core::status::tests::hms_unknown_module_keeps_its_hex ... ok
[INFO] [stdout] test core::status::tests::ipcam_node_parses_timelapse_and_record ... ok
[INFO] [stdout] test core::status::tests::lights_report_parses_and_is_looked_up_by_node ... ok
[INFO] [stdout] test core::start::tests::raw_gcode_builds_a_gcode_file_and_ignores_inspection ... ok
[INFO] [stdout] test core::status::tests::device_error_attaches_a_message_only_for_device_verified_codes ... ok
[INFO] [stdout] test core::status::tests::enriched_fields_are_elided_from_an_idle_payload ... ok
[INFO] [stdout] test core::status::tests::missing_fields_become_none ... ok
[INFO] [stdout] test core::status::tests::numeric_strings_and_numbers_both_parse ... ok
[INFO] [stdout] test core::start::tests::three_mf_builds_a_project_file_with_ftp_url ... ok
[INFO] [stdout] test core::status::tests::device_error_decodes_nonzero_print_error_to_hex ... ok
[INFO] [stdout] test core::status::tests::parses_the_real_a1mini_idle_pushall_fixture ... ok
[INFO] [stdout] test core::status::tests::printer_status_exposes_typed_state ... ok
[INFO] [stdout] test core::status::tests::real_chamber_temperature_respects_hardware ... ok
[INFO] [stdout] test core::status::tests::status_surfaces_a_nonzero_print_error_as_a_typed_error ... ok
[INFO] [stdout] test core::timelapse::tests::a_new_print_identity_resets_layer_tracking ... ok
[INFO] [stdout] test core::timelapse::tests::after_active_a_terminal_or_error_stops ... ok
[INFO] [stdout] test core::status::tests::round_trips_through_json ... ok
[INFO] [stdout] test core::timelapse::tests::idle_does_not_capture_a_stale_layer ... ok
[INFO] [stdout] test core::status::tests::wifi_signal_real_value_passes_through_but_sentinel_is_dropped ... ok
[INFO] [stdout] test core::status::tests::status_reflects_merged_deltas ... ok
[INFO] [stdout] test core::timelapse::tests::first_active_layer_captures_once_then_no_recapture_on_same_layer ... ok
[INFO] [stdout] test core::timelapse::tests::plain_stops_on_a_device_error ... ok
[INFO] [stdout] test core::timelapse::tests::negative_or_missing_layer_does_nothing ... ok
[INFO] [stdout] test core::timelapse::tests::plain_stops_when_the_print_finishes ... ok
[INFO] [stdout] test core::timelapse::tests::pause_counts_as_active ... ok
[INFO] [stdout] test core::timelapse::tests::plain_waits_through_idle_then_captures_while_active ... ok
[INFO] [stdout] test core::timelapse::tests::plain_without_wait_stops_if_never_active ... ok
[INFO] [stdout] test core::timelapse::tests::every_n_filters_layers_including_layer_zero ... ok
[INFO] [stdout] test core::timelapse::tests::with_wait_sits_through_idle_finish_and_stale_error_until_active ... ok
[INFO] [stdout] test core::verify::tests::ipcam_timelapse_effect_reads_the_ipcam_node_not_the_ack ... ok
[INFO] [stdout] test core::verify::tests::chamber_light_effect_reads_lights_report_not_the_ack ... ok
[INFO] [stdout] test core::timelapse::tests::without_wait_idle_or_finish_stops_immediately ... ok
[INFO] [stdout] test core::verify::tests::a_new_error_beats_an_otherwise_observed_effect ... ok
[INFO] [stdout] test core::verify::tests::pause_resume_stop_effects ... ok
[INFO] [stdout] test core::verify::tests::print_speed_effect_reads_spd_lvl ... ok
[INFO] [stdout] test core::verify::tests::preexisting_error_is_not_blamed_on_this_command ... ok
[INFO] [stdout] test core::verify::tests::project_file_idle_with_no_error_is_pending_not_observed ... ok
[INFO] [stdout] test core::verify::tests::project_file_running_is_observed ... ok
[INFO] [stdout] test core::verify::tests::stop_tolerates_a_transient_abort_error ... ok
[INFO] [stdout] test core::verify::tests::which_commands_have_an_observable_effect ... ok
[INFO] [stdout] test core::version::tests::module_carries_hw_and_product_name ... ok
[INFO] [stdout] test core::version::tests::parses_all_modules_in_order ... ok
[INFO] [stdout] test core::version::tests::empty_or_absent_module_array_is_empty_inventory ... ok
[INFO] [stdout] test core::version::tests::missing_ota_module_yields_no_firmware ... ok
[INFO] [stdout] test ftp::tests::part_path_is_a_sibling_with_a_part_suffix ... ok
[INFO] [stdout] test core::version::tests::parses_firmware_from_the_ota_module ... ok
[INFO] [stdout] test park::tests::detect_stream_stops_promptly_on_cancel ... ok
[INFO] [stdout] test park::tests::a_replace_park_overwrites_the_previous_index ... ok
[INFO] [stdout] test park::tests::live_park_args_tees_synced_gray_and_full_outputs ... ok
[INFO] [stdout] test core::status::tests::loose_float_parsing_accepts_string_and_number ... ok
[INFO] [stdout] test core::verify::tests::new_print_error_after_send_is_reported ... ok
[INFO] [stdout] test park::tests::detect_stream_counts_a_replacement_as_replaced_not_a_new_park ... ok
[INFO] [stdout] test park::tests::detect_stream_writes_one_park_and_maps_the_ring_index ... ok
[INFO] [stdout] test ftp::tests::parses_unix_list_lines_into_entries ... ok
[INFO] [stdout] test park::tests::prune_ring_keeps_only_the_newest_jpegs ... ok
[INFO] [stdout] test park::tests::writer_writes_latest_and_indexed_and_jsonl ... ok
[INFO] [stdout] test park::tests::segmented_stream_drops_a_pick_whose_ring_jpeg_never_arrived ... ok
[INFO] [stdout] test core::park::segment_tests::an_over_print_only_layer_is_skipped ... ok
[INFO] [stdout] test server::api::tests::ams_change_needs_confirm ... ok
[INFO] [stdout] test server::api::tests::ams_change_on_busy_printer_is_409 ... ok
[INFO] [stdout] test server::api::tests::ams_change_dry_run_previews_without_confirm_or_idle ... ok
[INFO] [stdout] test server::api::tests::ams_change_curr_temp_is_also_clamped ... ok
[INFO] [stdout] test server::api::tests::ams_change_confirmed_on_idle_runs ... ok
[INFO] [stdout] test server::api::tests::ams_reset_on_busy_printer_is_409 ... ok
[INFO] [stdout] test server::api::tests::ams_resume_is_allowed_without_confirm_even_when_busy ... ok
[INFO] [stdout] test server::api::tests::ams_unknown_action_is_400 ... ok
[INFO] [stdout] test server::api::tests::ams_reset_needs_confirm ... ok
[INFO] [stdout] test server::api::tests::ams_unload_target_255_confirmed_runs ... ok
[INFO] [stdout] test server::api::tests::ams_change_over_limit_temp_is_400 ... ok
[INFO] [stdout] test server::api::tests::ams_change_unknown_target_is_400 ... ok
[INFO] [stdout] test server::api::tests::calibrate_confirmed_on_idle_runs ... ok
[INFO] [stdout] test server::api::tests::calibrate_with_no_flags_is_400 ... ok
[INFO] [stdout] test server::api::tests::camera_config_is_gated_by_password ... ok
[INFO] [stdout] test server::api::tests::calibrate_needs_confirm ... ok
[INFO] [stdout] test server::api::tests::calibrate_on_busy_printer_is_409 ... ok
[INFO] [stdout] test camera::tests::auth_packet_layout ... ok
[INFO] [stdout] test server::api::tests::ams_reset_confirmed_on_idle_runs ... ok
[INFO] [stdout] test server::api::tests::camera_config_rejects_a_partial_park_tuning ... ok
[INFO] [stdout] test server::api::tests::camera_stream_relays_the_upstream_multipart_body ... ok
[INFO] [stdout] test server::api::tests::camera_config_rejects_non_http_url ... ok
[INFO] [stdout] test server::api::tests::camera_config_rejects_non_http_stream_url ... ok
[INFO] [stdout] test server::api::tests::camera_snapshot_is_404_for_unknown_id ... ok
[INFO] [stdout] test server::api::tests::cameras_list_is_empty_without_built_in_or_external ... ok
[INFO] [stdout] test server::api::tests::external_camera_stream_url_round_trips_and_flags_the_list ... ok
[INFO] [stdout] test server::api::tests::captures_list_is_open_and_returns_an_array ... ok
[INFO] [stdout] test server::api::tests::external_cameras_can_be_set_then_listed_and_cleared ... ok
[INFO] [stdout] test server::api::tests::capture_thumb_rejects_unsafe_and_unknown ... ok
[INFO] [stdout] test server::api::tests::capture_video_rejects_unsafe_and_unknown ... ok
[INFO] [stdout] test server::api::tests::extrude_cold_guard_has_no_force_bypass ... ok
[INFO] [stdout] test server::api::tests::extrude_zero_delta_is_400 ... ok
[INFO] [stdout] test server::api::tests::extrude_over_bound_is_400 ... ok
[INFO] [stdout] test server::api::tests::extrude_on_cold_nozzle_is_400 ... ok
[INFO] [stdout] test server::api::tests::extrude_on_hot_idle_nozzle_runs ... ok
[INFO] [stdout] test core::project::tests::detects_per_layer_timelapse_block_injection ... ok
[INFO] [stdout] test core::project::tests::inspects_a_plate_with_sidecar_and_json ... ok
[INFO] [stdout] test core::status::tests::empty_or_unrelated_state_is_all_none ... ok
[INFO] [stdout] test server::api::tests::file_inspect_reports_timelapse_capability_open ... ok
[INFO] [stdout] test server::api::tests::home_on_busy_printer_is_409 ... ok
[INFO] [stdout] test server::api::tests::gcode_file_rejects_non_3mf ... ok
[INFO] [stdout] test server::api::tests::home_all_on_idle_runs ... ok
[INFO] [stdout] test server::api::tests::gcode_needs_confirmation ... ok
[INFO] [stdout] test server::api::tests::gcode_file_serves_plate_toolpath ... ok
[INFO] [stdout] test server::api::tests::is_safe_segment_blocks_traversal ... ok
[INFO] [stdout] test server::api::tests::job_clear_error_confirmed_returns_verified ... ok
[INFO] [stdout] test server::api::tests::file_inspect_degrades_to_not_inspected ... ok
[INFO] [stdout] test server::api::tests::job_start_dry_run_timelapse_blocks_null_when_uninspectable ... ok
[INFO] [stdout] test server::api::tests::home_unknown_axes_is_400 ... ok
[INFO] [stdout] test server::api::tests::job_clear_error_needs_confirmation ... ok
[INFO] [stdout] test server::api::tests::job_stop_needs_confirmation ... ok
[INFO] [stdout] test server::api::tests::move_in_range_on_idle_runs_without_confirm ... ok
[INFO] [stdout] test server::api::tests::gcode_safe_line_runs ... ok
[INFO] [stdout] test server::api::tests::move_on_busy_printer_is_409 ... ok
[INFO] [stdout] test server::api::tests::gcode_unsafe_line_is_blocked_unless_forced ... ok
[INFO] [stdout] test server::api::tests::job_pause_confirmed_returns_verified ... ok
[INFO] [stdout] test server::api::tests::move_unknown_axis_is_400 ... ok
[INFO] [stdout] test server::api::tests::job_start_dry_run_reports_timelapse_block_capability ... ok
[INFO] [stdout] test server::api::tests::move_zero_delta_is_400 ... ok
[INFO] [stdout] test server::api::tests::move_over_bound_is_400 ... ok
[INFO] [stdout] test server::api::tests::mesh_file_rejects_non_3mf ... ok
[INFO] [stdout] test server::api::tests::list_files_is_open ... ok
[INFO] [stdout] test server::api::tests::mesh_file_serves_object_models ... ok
[INFO] [stdout] test server::api::tests::parks_index_and_frame_are_404_without_a_run ... ok
[INFO] [stdout] test server::api::tests::parse_parks_index_dedupes_by_n_keeps_the_replace_and_sorts ... ok
[INFO] [stdout] test server::api::tests::park_tuning_round_trips_and_flags_capability ... ok
[INFO] [stdout] test park::tests::segmented_stream_skips_an_over_print_only_layer ... ok
[INFO] [stdout] test server::api::tests::resolve_stream_url_only_for_ext_with_a_stream ... ok
[INFO] [stdout] test server::api::tests::move_out_of_range_feedrate_is_400 ... ok
[INFO] [stdout] test server::api::tests::run_dir_epoch_orders_runs_by_recency ... ok
[INFO] [stdout] test server::api::tests::home_does_not_require_confirm ... ok
[INFO] [stdout] test server::api::tests::raw_rejects_other_extensions ... ok
[INFO] [stdout] test server::api::tests::raw_serves_3mf_bytes ... ok
[INFO] [stdout] test server::api::tests::reboot_on_busy_printer_is_409 ... ok
[INFO] [stdout] test server::api::tests::reboot_needs_confirm ... ok
[INFO] [stdout] test core::park::segment_tests::dense_stream_catches_the_jittery_park_each_layer ... ok
[INFO] [stdout] test server::api::tests::reboot_confirmed_on_idle_is_202 ... ok
[INFO] [stdout] test server::api::tests::start_needs_confirmation ... ok
[INFO] [stdout] test server::api::tests::rejected_outcome_maps_to_409 ... ok
[INFO] [stdout] test server::api::tests::start_rejects_out_of_range_ams_map ... ok
[INFO] [stdout] test server::api::tests::start_on_busy_printer_is_409 ... ok
[INFO] [stdout] test park::tests::segmented_stream_writes_one_park_per_layer_mapping_the_ring_index ... ok
[INFO] [stdout] test server::api::tests::start_dry_run_returns_plan_without_confirm ... ok
[INFO] [stdout] test server::api::tests::start_rejects_relative_path ... ok
[INFO] [stdout] test server::api::tests::start_rejects_bad_filetype_and_traversal ... ok
[INFO] [stdout] test server::api::tests::parks_index_and_indexed_frames_serve_during_and_after_a_run ... ok
[INFO] [stdout] test server::api::tests::start_confirmed_on_idle_printer_verifies ... ok
[INFO] [stdout] test server::api::tests::steppers_needs_confirm ... ok
[INFO] [stdout] test server::api::tests::select_tuning_round_trips_and_flags_segment_capability ... ok
[INFO] [stdout] test server::api::tests::steppers_on_busy_printer_is_409 ... ok
[INFO] [stdout] test server::api::tests::thumbnail_rejects_non_3mf ... ok
[INFO] [stdout] test server::api::tests::temp_unknown_part_is_400 ... ok
[INFO] [stdout] test server::api::tests::speed_level_sets_ok ... ok
[INFO] [stdout] test server::api::tests::temp_is_not_idle_gated_for_a_setpoint ... ok
[INFO] [stdout] test server::api::tests::temp_setpoint_needs_confirm ... ok
[INFO] [stdout] test server::api::tests::temp_setpoint_confirmed_runs ... ok
[INFO] [stdout] test server::api::tests::temp_over_limit_is_400_unless_forced ... ok
[INFO] [stdout] test server::api::tests::timelapse_smooth_rejects_an_out_of_range_burst_offset ... ok
[INFO] [stdout] test server::api::tests::timelapse_start_rejects_every_zero ... ok
[INFO] [stdout] test server::api::tests::thumbnail_returns_png ... ok
[INFO] [stdout] test server::api::tests::timelapse_plain_rejects_too_fast_interval ... ok
[INFO] [stdout] test server::api::tests::timelapse_smooth_rejects_an_empty_burst ... ok
[INFO] [stdout] test server::api::tests::timelapse_start_park_rejects_without_a_capable_camera ... ok
[INFO] [stdout] test server::api::tests::timelapse_start_rejects_unknown_camera ... ok
[INFO] [stdout] test server::api::tests::timelapse_start_segment_rejects_a_bad_window ... ok
[INFO] [stdout] test server::api::tests::timelapse_status_is_open_and_initially_idle ... ok
[INFO] [stdout] test server::api::tests::timelapse_stop_rejects_unknown_mode ... ok
[INFO] [stdout] test server::api::tests::unknown_api_path_404s_as_json ... ok
[INFO] [stdout] test server::api::tests::timelapse_stop_without_a_mode_is_ok ... ok
[INFO] [stdout] test server::api::tests::transport_failure_maps_to_502 ... ok
[INFO] [stdout] test server::api::tests::steppers_confirmed_on_idle_runs ... ok
[INFO] [stdout] test server::api::tests::upload_needs_password_when_set ... ok
[INFO] [stdout] test server::api::tests::upload_rejects_traversal_dir ... ok
[INFO] [stdout] test server::api::tests::timelapse_start_segment_rejects_without_a_capable_camera ... ok
[INFO] [stdout] test server::api::tests::temp_cooldown_is_allowed_without_confirm ... ok
[INFO] [stdout] test server::api::tests::upload_start_is_gated_by_password ... ok
[INFO] [stdout] test server::api::tests::timelapse_start_stop_are_gated_by_password ... ok
[INFO] [stdout] test server::api::tests::upload_start_confirmed_uploads_then_starts ... ok
[INFO] [stdout] test server::api::tests::status_is_open_and_returns_printer_status_json ... ok
[INFO] [stdout] test server::api::tests::upload_start_rejects_a_traversal_name ... ok
[INFO] [stdout] test server::api::tests::timelapse_start_rejects_unknown_mode ... ok
[INFO] [stdout] test server::api::tests::unknown_light_node_is_400 ... ok
[INFO] [stdout] test server::api::tests::upload_open_when_no_password ... ok
[INFO] [stdout] test server::api::tests::upload_start_dry_run_plans_without_starting ... ok
[INFO] [stdout] test server::api::tests::upload_rejects_path_traversal ... ok
[INFO] [stdout] test server::api::tests::unverified_outcome_maps_to_202 ... ok
[INFO] [stdout] test server::api::tests::status_is_open_even_when_a_password_is_set ... ok
[INFO] [stdout] test server::files::tests::extracts_plate_gcode_from_a_3mf_zip ... ok
[INFO] [stdout] test server::start::tests::three_mf_builds_a_project_file_with_ftp_url_and_ams ... ok
[INFO] [stdout] test server::start::tests::timelapse_flag_flows_into_the_project_file ... ok
[INFO] [stdout] test server::start::tests::raw_gcode_builds_a_gcode_file ... ok
[INFO] [stdout] test server::stream_record::tests::copy_until_never_writes_past_the_cap ... ok
[INFO] [stdout] test server::stream_record::tests::copy_until_stops_on_cancel_without_reading ... ok
[INFO] [stdout] test server::stream_record::tests::copy_until_writes_everything_then_reports_eof ... ok
[INFO] [stdout] test server::api::tests::upload_start_needs_confirmation ... ok
[INFO] [stdout] test server::stream_record::tests::record_loop_counts_a_failed_open_and_retries ... ok
[INFO] [stdout] test server::stream_record::tests::record_loop_honours_the_byte_cap ... ok
[INFO] [stdout] test server::files::tests::fake_cube_model_is_a_valid_mesh ... ok
[INFO] [stdout] test server::stream_record::tests::record_loop_reconnects_after_each_eof ... ok
[INFO] [stdout] test server::files::tests::fake_gcode_is_parseable_extruding_toolpath ... ok
[INFO] [stdout] test server::stream_record::tests::copy_until_keeps_bytes_written_before_a_read_error ... ok
[INFO] [stdout] test server::timelapse::tests::a_cancelled_burst_enqueues_nothing ... ok
[INFO] [stdout] test server::timelapse::tests::burst_enqueues_one_grab_per_offset_at_its_due_time ... ok
[INFO] [stdout] test server::timelapse::tests::burst_frame_name_tags_frame_layer_and_offset ... ok
[INFO] [stdout] test server::api::tests::write_with_correct_password_is_allowed ... ok
[INFO] [stdout] test server::stream_record::tests::record_loop_stops_immediately_when_cancelled_up_front ... ok
[INFO] [stdout] test server::timelapse::tests::live_mp4_args_pipe_mpjpeg_stdin_to_h264 ... ok
[INFO] [stdout] test server::timelapse::tests::park_with_no_cameras_is_rejected ... ok
[INFO] [stdout] test server::files::tests::extracts_only_mesh_bearing_models_from_a_3mf_zip ... ok
[INFO] [stdout] test server::api::tests::write_without_password_is_401_when_one_is_set ... ok
[INFO] [stdout] test server::live::tests::bridges_published_status_to_current_and_subscribers ... ok
[INFO] [stdout] test server::timelapse::tests::segment_with_no_cameras_is_rejected ... ok
[INFO] [stdout] test server::timelapse::tests::normalize_burst_offsets_sorts_dedups_and_defaults_empty ... ok
[INFO] [stdout] test server::files::tests::extracts_plate_thumbnail_from_a_3mf_zip ... ok
[INFO] [stdout] test server::timelapse::tests::start_twice_is_rejected_until_stopped ... ok
[INFO] [stdout] test server::timelapse::tests::start_with_no_cameras_is_rejected ... ok
[INFO] [stdout] test tls::tests::config_builds ... ok
[INFO] [stdout] test server::api::tests::ws_is_open_and_pushes_initial_status ... ok
[INFO] [stdout] test server::api::tests::ws_streams_subsequent_updates_from_a_ramping_source ... ok
[INFO] [stdout] test server::timelapse::tests::smooth_and_plain_run_concurrently_and_stop_independently ... ok
[INFO] [stdout] test core::park::segment_tests::full_layer_window_catches_a_park_at_the_layer_change ... ok
[INFO] [stdout] test server::timelapse::tests::a_failing_grab_counts_failures_and_keeps_going ... ok
[INFO] [stdout] test server::timelapse::tests::captures_every_camera_once_per_layer_into_per_camera_subdirs ... ok
[INFO] [stdout] test server::timelapse::tests::runs_a_capture_from_a_watch_feed_writing_one_frame_per_layer ... ok
[INFO] [stdout] test server::timelapse::tests::park_spawns_one_worker_per_camera_on_active_and_stops_at_finish ... ok
[INFO] [stdout] test server::timelapse::tests::plain_samples_frames_on_an_interval_while_printing ... ok
[INFO] [stdout] test server::timelapse::tests::segment_spawns_per_camera_and_feeds_the_live_layer ... ok
[INFO] [stdout] test core::report::tests::base_keys_absent_from_delta_are_retained ... ok
[INFO] [stdout] test server::timelapse::tests::plain_stream_recorder_starts_and_stops_with_the_print ... ok
[INFO] [stdout] test core::report::tests::merge_is_idempotent ... ok
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/bambu-1d14ab194ea5134b)
[INFO] [stdout] test core::report::tests::disjoint_deltas_commute ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 394 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.95s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli.rs (/opt/rustwide/target/debug/deps/cli-ab4f794c1f7a60a0)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 16 tests
[INFO] [stdout] test help_succeeds ... ok
[INFO] [stdout] test config_add_requires_a_printer_name ... ok
[INFO] [stdout] test unknown_explicit_printer_errors_instead_of_falling_back_to_env ... ok
[INFO] [stdout] test upload_missing_local_file_is_validation_error ... ok
[INFO] [stdout] test status_without_config_or_env_is_validation_error ... ok
[INFO] [stdout] test upload_dest_must_keep_the_file_type ... ok
[INFO] [stdout] test upload_rejects_expect_guards ... ok
[INFO] [stdout] test job_start_dry_run_shows_payload_without_a_target ... ok
[INFO] [stdout] test expect_guards_reject_raw_gcode_offline ... ok
[INFO] [stdout] test via_serve_unreachable_is_a_transport_error ... ok
[INFO] [stdout] test config_add_list_show_roundtrip_redacts_access_code ... ok
[INFO] [stdout] test file_ls_without_config_is_validation_error ... ok
[INFO] [stdout] test gcode_without_confirm_is_refused ... ok
[INFO] [stdout] test calibrate_flags_dry_run_and_confirm_gate ... ok
[INFO] [stdout] test ams_map_out_of_range_fails_fast_offline ... ok
[INFO] [stdout] test job_start_and_pause_need_confirm ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests bambu_rs
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "16befa31a72d7c62ae3594c4e92bebcf0366a6474d646f6ebe8ee2d1c7e13b85", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "16befa31a72d7c62ae3594c4e92bebcf0366a6474d646f6ebe8ee2d1c7e13b85", kill_on_drop: false }`
[INFO] [stdout] 16befa31a72d7c62ae3594c4e92bebcf0366a6474d646f6ebe8ee2d1c7e13b85
