[INFO] cloning repository https://github.com/shiguri-01/preview-pdf
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/shiguri-01/preview-pdf" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fshiguri-01%2Fpreview-pdf", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fshiguri-01%2Fpreview-pdf'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 8631b5ecc842e13fa0658dc0de9fd34a1c6add11
[INFO] testing shiguri-01/preview-pdf 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%2Fshiguri-01%2Fpreview-pdf" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/shiguri-01/preview-pdf
[INFO] finished tweaking git repo https://github.com/shiguri-01/preview-pdf
[INFO] tweaked toml for git repo https://github.com/shiguri-01/preview-pdf written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/shiguri-01/preview-pdf 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/shiguri-01/preview-pdf 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 lru v0.18.0
[INFO] [stderr]   Downloaded wasm-bindgen-shared v0.2.123
[INFO] [stderr]   Downloaded ratatui-termwiz v0.1.1
[INFO] [stderr]   Downloaded wasm-bindgen-macro v0.2.123
[INFO] [stderr]   Downloaded tui-input v0.15.3
[INFO] [stderr]   Downloaded ratatui-macros v0.7.1
[INFO] [stderr]   Downloaded ratatui-crossterm v0.1.1
[INFO] [stderr]   Downloaded ratatui v0.30.1
[INFO] [stderr]   Downloaded wasm-bindgen v0.2.123
[INFO] [stderr]   Downloaded ratatui-widgets v0.3.1
[INFO] [stderr]   Downloaded wasm-bindgen-macro-support v0.2.123
[INFO] [stderr]   Downloaded js-sys v0.3.100
[INFO] [stderr]   Downloaded ratatui-core v0.1.1
[INFO] [stderr]   Downloaded guillotiere v0.7.0
[INFO] [stderr]   Downloaded hayro-ccitt v0.3.0
[INFO] [stderr]   Downloaded hayro v0.7.1
[INFO] [stderr]   Downloaded peniko v0.6.1
[INFO] [stderr]   Downloaded hayro-postscript v0.1.0
[INFO] [stderr]   Downloaded safe_arch v0.9.3
[INFO] [stderr]   Downloaded quantette v0.5.1
[INFO] [stderr]   Downloaded glifo v0.1.1
[INFO] [stderr]   Downloaded color v0.3.3
[INFO] [stderr]   Downloaded hayro-jpeg2000 v0.3.5
[INFO] [stderr]   Downloaded hayro-jbig2 v0.3.0
[INFO] [stderr]   Downloaded vello_cpu v0.0.8
[INFO] [stderr]   Downloaded wide v0.8.3
[INFO] [stderr]   Downloaded hayro-syntax v0.7.2
[INFO] [stderr]   Downloaded vello_common v0.0.8
[INFO] [stderr]   Downloaded vello_common v0.0.9
[INFO] [stderr]   Downloaded fast_image_resize v6.0.0
[INFO] [stderr]   Downloaded pic-scale v0.7.9
[INFO] [stderr]   Downloaded brotli-decompressor v5.0.1
[INFO] [stderr]   Downloaded fearless_simd v0.4.1
[INFO] [stderr]   Downloaded hayro-cmap v0.1.0
[INFO] [stderr]   Downloaded hayro-interpret v0.7.0
[INFO] [stderr]   Downloaded brotli v8.0.3
[INFO] [stderr]   Downloaded icy_sixel v0.5.0
[INFO] [stderr]   Downloaded ratatui-image v11.0.4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] c5e76934df4c04f2e1894ea4ddbff79bbc1f4f9a5c9d6a676f59ba5d3612561f
[INFO] running `Command { std: "docker" "start" "c5e76934df4c04f2e1894ea4ddbff79bbc1f4f9a5c9d6a676f59ba5d3612561f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c5e76934df4c04f2e1894ea4ddbff79bbc1f4f9a5c9d6a676f59ba5d3612561f", 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" "c5e76934df4c04f2e1894ea4ddbff79bbc1f4f9a5c9d6a676f59ba5d3612561f" "/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" "c5e76934df4c04f2e1894ea4ddbff79bbc1f4f9a5c9d6a676f59ba5d3612561f", 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" "c5e76934df4c04f2e1894ea4ddbff79bbc1f4f9a5c9d6a676f59ba5d3612561f" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling autocfg v1.5.1
[INFO] [stderr]    Compiling bitflags v2.13.0
[INFO] [stderr]    Compiling either v1.16.0
[INFO] [stderr]    Compiling log v0.4.32
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling simd-adler32 v0.3.9
[INFO] [stderr]    Compiling memchr v2.8.1
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling zerocopy v0.8.52
[INFO] [stderr]    Compiling unicode-segmentation v1.13.3
[INFO] [stderr]    Compiling crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling hashbrown v0.17.1
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling as-slice v0.2.1
[INFO] [stderr]    Compiling zune-core v0.5.1
[INFO] [stderr]    Compiling av-scenechange v0.14.1
[INFO] [stderr]    Compiling built v0.8.1
[INFO] [stderr]    Compiling zune-jpeg v0.5.15
[INFO] [stderr]    Compiling aligned v0.4.3
[INFO] [stderr]    Compiling nom v8.0.0
[INFO] [stderr]    Compiling no_std_io2 v0.9.4
[INFO] [stderr]    Compiling fdeflate v0.3.7
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling rav1e v0.8.1
[INFO] [stderr]    Compiling pxfm v0.1.29
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]    Compiling instability v0.3.12
[INFO] [stderr]    Compiling quick-error v2.0.1
[INFO] [stderr]    Compiling y4m v0.8.0
[INFO] [stderr]    Compiling pastey v0.1.1
[INFO] [stderr]    Compiling compact_str v0.9.1
[INFO] [stderr]    Compiling png v0.18.1
[INFO] [stderr]    Compiling unicode-truncate v2.0.1
[INFO] [stderr]    Compiling bitstream-io v4.10.0
[INFO] [stderr]    Compiling lru v0.18.0
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling num-rational v0.4.2
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling simd_helpers v0.1.0
[INFO] [stderr]    Compiling maybe-rayon v0.1.1
[INFO] [stderr]    Compiling imgref v1.12.2
[INFO] [stderr]    Compiling critical-section v1.2.0
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling new_debug_unreachable v1.0.6
[INFO] [stderr]    Compiling noop_proc_macro v0.3.0
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling weezl v0.1.12
[INFO] [stderr]    Compiling fearless_simd v0.4.1
[INFO] [stderr]    Compiling loop9 v0.1.5
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling mio v1.2.1
[INFO] [stderr]    Compiling zune-inflate v0.2.54
[INFO] [stderr]    Compiling moxcms v0.8.1
[INFO] [stderr]    Compiling avif-serialize v0.8.9
[INFO] [stderr]    Compiling polycool v0.4.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling bytemuck_derive v1.10.2
[INFO] [stderr]    Compiling equator-macro v0.4.2
[INFO] [stderr]    Compiling zerocopy-derive v0.8.52
[INFO] [stderr]    Compiling equator v0.4.2
[INFO] [stderr]    Compiling aligned-vec v0.6.4
[INFO] [stderr]    Compiling v_frame v0.3.9
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling arg_enum_proc_macro v0.3.4
[INFO] [stderr]    Compiling bytemuck v1.25.0
[INFO] [stderr]    Compiling profiling-procmacros v1.0.18
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling strum_macros v0.28.0
[INFO] [stderr]    Compiling profiling v1.0.18
[INFO] [stderr]    Compiling av1-grain v0.2.5
[INFO] [stderr]    Compiling kasuari v0.4.12
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling color_quant v1.1.0
[INFO] [stderr]    Compiling num-conv v0.2.2
[INFO] [stderr]    Compiling fax v0.2.7
[INFO] [stderr]    Compiling siphasher v1.0.3
[INFO] [stderr]    Compiling bit_field v0.10.3
[INFO] [stderr]    Compiling radium v0.7.0
[INFO] [stderr]    Compiling rgb v0.8.53
[INFO] [stderr]    Compiling lebe v0.5.3
[INFO] [stderr]    Compiling time v0.3.47
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling phf_shared v0.13.1
[INFO] [stderr]    Compiling strum v0.28.0
[INFO] [stderr]    Compiling gif v0.14.2
[INFO] [stderr]    Compiling ratatui-core v0.1.1
[INFO] [stderr]    Compiling image-webp v0.2.4
[INFO] [stderr]    Compiling qoi v0.4.1
[INFO] [stderr]    Compiling kurbo v0.13.1
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling line-clipping v0.3.7
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling palette v0.7.6
[INFO] [stderr]    Compiling by_address v1.2.1
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling tap v1.0.1
[INFO] [stderr]    Compiling ref-cast v1.0.25
[INFO] [stderr]    Compiling wyz v0.5.1
[INFO] [stderr]    Compiling palette_derive v0.7.6
[INFO] [stderr]    Compiling phf_generator v0.13.1
[INFO] [stderr]    Compiling ratatui-widgets v0.3.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling brotli-decompressor v5.0.1
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling font-types v0.11.3
[INFO] [stderr]    Compiling safe_arch v0.9.3
[INFO] [stderr]    Compiling tiff v0.11.3
[INFO] [stderr]    Compiling exr v1.74.0
[INFO] [stderr]    Compiling color v0.3.3
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling ref-cast-impl v1.0.25
[INFO] [stderr]    Compiling euclid v0.22.14
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling funty v2.0.0
[INFO] [stderr]    Compiling hayro-ccitt v0.3.0
[INFO] [stderr]    Compiling fast-srgb8 v1.0.0
[INFO] [stderr]    Compiling linebender_resource_handle v0.1.1
[INFO] [stderr]    Compiling peniko v0.6.1
[INFO] [stderr]    Compiling bitvec v1.0.1
[INFO] [stderr]    Compiling ravif v0.13.0
[INFO] [stderr]    Compiling guillotiere v0.7.0
[INFO] [stderr]    Compiling hayro-jbig2 v0.3.0
[INFO] [stderr]    Compiling zerofrom v0.1.8
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling ratatui-macros v0.7.1
[INFO] [stderr]    Compiling wide v0.8.3
[INFO] [stderr]    Compiling brotli v8.0.3
[INFO] [stderr]    Compiling image v0.25.10
[INFO] [stderr]    Compiling read-fonts v0.39.2
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.1
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling phf_macros v0.13.1
[INFO] [stderr]    Compiling rand_xoshiro v0.7.0
[INFO] [stderr]    Compiling rand v0.9.4
[INFO] [stderr]    Compiling hayro-jpeg2000 v0.3.5
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling ordered-float v5.3.0
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling rustc-hash v2.1.2
[INFO] [stderr]    Compiling hayro-postscript v0.1.0
[INFO] [stderr]    Compiling yoke v0.8.3
[INFO] [stderr]    Compiling hayro-cmap v0.1.0
[INFO] [stderr]    Compiling hayro-syntax v0.7.2
[INFO] [stderr]    Compiling phf v0.13.1
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling ratatui v0.30.1
[INFO] [stderr]    Compiling vello_common v0.0.8
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling ratatui-image v11.0.4
[INFO] [stderr]    Compiling vsimd v0.8.0
[INFO] [stderr]    Compiling winnow v1.0.3
[INFO] [stderr]    Compiling outref v0.5.2
[INFO] [stderr]    Compiling quantette v0.5.1
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling vello_cpu v0.0.8
[INFO] [stderr]    Compiling base64-simd v0.8.0
[INFO] [stderr]    Compiling rand v0.8.6
[INFO] [stderr]    Compiling icy_sixel v0.5.0
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling serde_spanned v1.1.1
[INFO] [stderr]    Compiling skrifa v0.42.1
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling pic-scale v0.7.9
[INFO] [stderr]    Compiling spin v0.9.8
[INFO] [stderr]    Compiling self_cell v1.2.2
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling toml_writer v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling hayro-interpret v0.7.0
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling toml v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling flume v0.12.0
[INFO] [stderr]    Compiling tokio v1.52.3
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling tui-input v0.15.3
[INFO] [stderr]    Compiling hayro v0.7.1
[INFO] [stderr]    Compiling fast_image_resize v6.0.0
[INFO] [stderr]    Compiling preview-pdf v0.2.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 5m 02s
[INFO] running `Command { std: "docker" "inspect" "c5e76934df4c04f2e1894ea4ddbff79bbc1f4f9a5c9d6a676f59ba5d3612561f", 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" "c5e76934df4c04f2e1894ea4ddbff79bbc1f4f9a5c9d6a676f59ba5d3612561f" "/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 preview-pdf v0.2.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 40.95s
[INFO] running `Command { std: "docker" "inspect" "c5e76934df4c04f2e1894ea4ddbff79bbc1f4f9a5c9d6a676f59ba5d3612561f", 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" "c5e76934df4c04f2e1894ea4ddbff79bbc1f4f9a5c9d6a676f59ba5d3612561f" "/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.69s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/pvf-338d8f5d6bb4a575)
[INFO] [stdout] 
[INFO] [stdout] running 605 tests
[INFO] [stdout] test app::actors::tests::ui_actor_redraw_flag_roundtrip ... ok
[INFO] [stdout] test app::actors::tests::ui_actor_waits_for_pending_redraw_only_while_busy_without_cached_frame ... ok
[INFO] [stdout] test app::actors::tests::render_actor_prefetch_due_is_consumed_once ... ok
[INFO] [stdout] test app::event_bus::tests::spawn_interactive_creates_runtime_with_tasks ... ok
[INFO] [stdout] test app::event_bus::tests::spawn_headless_creates_runtime_without_tasks ... ok
[INFO] [stdout] test app::event_bus::tests::starting_task_prunes_finished_handles ... ok
[INFO] [stdout] test app::core::tests::new_with_config_applies_l1_cache_limits ... ok
[INFO] [stdout] test app::core::tests::app_builder_applies_multiple_option_patches ... ok
[INFO] [stdout] test app::core::tests::new_with_options_applies_l1_cache_limits_without_file_config ... ok
[INFO] [stdout] test app::core::tests::new_with_options_threads_runtime_policies_to_owners ... ok
[INFO] [stdout] test app::core::tests::set_watch_overrides_configured_watch_enabled ... ok
[INFO] [stdout] test app::event_loop::tests::command_error_becomes_notice_and_loop_continues ... ok
[INFO] [stdout] test app::event_loop::tests::document_reload_success_replaces_active_document_and_clamps_page ... ok
[INFO] [stdout] test app::event_loop::tests::command_event_returns_break_when_effect_channel_is_closed ... ok
[INFO] [stdout] test app::event_loop::tests::file_reload_failure_after_retry_budget_shows_warning ... ok
[INFO] [stdout] test app::event_loop::tests::document_reload_success_clears_previous_reload_notice ... ok
[INFO] [stdout] test app::event_loop::tests::document_reload_success_applies_even_when_doc_id_matches ... ok
[INFO] [stdout] test app::event_loop::tests::focus_changing_timeout_drops_waited_input ... ok
[INFO] [stdout] test app::event_loop::tests::encode_complete_without_redraw_request_does_not_redraw ... ok
[INFO] [stdout] test app::event_loop::tests::non_current_render_complete_does_not_redraw ... ok
[INFO] [stdout] test app::event_loop::tests::manual_document_reload_failure_keeps_previous_document ... ok
[INFO] [stdout] test app::event_loop::tests::noop_command_redraws_when_it_changes_visible_notice ... ok
[INFO] [stdout] test app::event_loop::tests::noop_navigation_command_without_state_change_does_not_redraw ... ok
[INFO] [stdout] test app::event_loop::tests::input_outcome_applies_expired_command_before_latest_command ... ok
[INFO] [stdout] test app::event_loop::tests::file_reload_success_after_retries_replaces_document_and_resets_retry_count ... ok
[INFO] [stdout] test app::event_loop::tests::old_delayed_retry_after_newer_reload_is_ignored ... ok
[INFO] [stdout] test app::event_loop::tests::palette_close_from_input_applies_before_queued_input ... ok
[INFO] [stdout] test app::event_loop::tests::resolve_command_clamps_default_pan_step_to_at_least_one_cell ... ok
[INFO] [stdout] test app::event_loop::tests::reload_document_command_starts_reload_without_blocking_loop ... ok
[INFO] [stdout] test app::event_loop::tests::resolve_command_uses_short_edge_fifth_for_default_pan_step ... ok
[INFO] [stdout] test app::event_loop::tests::prefetch_tick_only_marks_prefetch_due ... ok
[INFO] [stdout] test app::event_loop::tests::resolve_command_request_preserves_explicit_pan_amounts ... ok
[INFO] [stdout] test app::event_loop::tests::wait_next_event_does_not_let_closed_extension_channel_mask_loop_events ... ok
[INFO] [stdout] test app::event_loop::tests::run_loop_restores_session_when_pdf_has_no_pages ... ok
[INFO] [stdout] test app::event_loop::tests::stale_file_reload_failure_yields_to_pending_fresh_reload ... ok
[INFO] [stdout] test app::event_loop::tests::unavailable_search_navigation_without_notice_change_does_not_redraw ... ok
[INFO] [stdout] test app::frame_ops::tests::crop_frame_for_viewport_applies_pan_offset ... ok
[INFO] [stdout] test app::frame_ops::tests::apply_highlight_overlay_without_visible_span_reuses_pixel_buffer ... ok
[INFO] [stdout] test app::event_loop::tests::stale_file_reload_success_yields_to_pending_fresh_reload ... ok
[INFO] [stdout] test app::event_loop::tests::wait_next_event_drains_buffered_extension_events_after_sender_closes ... ok
[INFO] [stdout] test app::event_loop::tests::wait_next_event_maps_presenter_event_then_eof_to_wake ... ok
[INFO] [stdout] test app::frame_ops::tests::crop_frame_for_viewport_normalizes_negative_and_overflow_pan ... ok
[INFO] [stdout] test app::frame_ops::tests::crop_frame_region_extracts_requested_pixels ... ok
[INFO] [stdout] test app::frame_ops::tests::prepare_presenter_frame_without_crop_reuses_pixel_buffer ... ok
[INFO] [stdout] test app::input_ops::tests::batched_palette_open_and_close_preserves_enabled_pending_sequences ... ok
[INFO] [stdout] test app::frame_ops::tests::crop_frame_for_viewport_clamps_when_target_exceeds_source ... ok
[INFO] [stdout] test app::input_ops::tests::help_key_requests_open_help_command ... ok
[INFO] [stdout] test app::input_ops::tests::help_mode_ignores_modified_scroll_keys ... ok
[INFO] [stdout] test app::input_ops::tests::help_mode_ignores_question_mark_key ... ok
[INFO] [stdout] test app::input_ops::tests::help_mode_scroll_keys_request_help_scroll_commands ... ok
[INFO] [stdout] test app::input_ops::tests::command_palette_up_requests_palette_input_history_command ... ok
[INFO] [stdout] test app::input_ops::tests::non_history_palette_up_requests_selection_command ... ok
[INFO] [stdout] test app::input_ops::tests::dispatch_command_preserves_pending_sequences_that_remain_enabled ... ok
[INFO] [stdout] test app::input_ops::tests::help_escape_requests_close_help_command ... ok
[INFO] [stdout] test app::input_ops::tests::opening_palette_preserves_pending_sequences_that_remain_enabled ... ok
[INFO] [stdout] test app::input_ops::tests::palette_escape_requests_close_palette_command ... ok
[INFO] [stdout] test app::input_ops::tests::palette_enter_requests_palette_submit_command ... ok
[INFO] [stdout] test app::input_ops::tests::pending_exact_mismatch_does_not_reprocess_after_mode_change ... ok
[INFO] [stdout] test app::input_ops::tests::pending_sequence_reprocesses_followup_key_after_mismatch ... ok
[INFO] [stdout] test app::input_ops::tests::pending_sequence_redraws_when_reprocessed_followup_dispatches ... ok
[INFO] [stdout] test app::input_ops::tests::pending_exact_mismatch_requests_redraw_even_when_commands_do_not ... ok
[INFO] [stdout] test app::input_ops::tests::pending_sequence_reprocesses_enter_after_mismatch ... ok
[INFO] [stdout] test app::event_loop::tests::wake_timeout_applies_expired_sequence_command ... ok
[INFO] [stdout] test app::input_ops::tests::pending_sequence_requests_redraw_when_unbound_followup_clears_it ... ok
[INFO] [stdout] test app::input_ops::tests::timed_out_sequence_returns_expired_command_before_processing_new_key ... ok
[INFO] [stdout] test app::input_ops::tests::timeout_flush_uses_current_conditions_outside_normal_mode ... ok
[INFO] [stdout] test app::input_ops::tests::timed_out_sequence_followed_by_quit_dispatches_expired_command_then_quit ... ok
[INFO] [stdout] test app::input_ops::tests::wake_flushes_timed_out_sequence ... ok
[INFO] [stdout] test app::input_ops::tests::quit_key_dispatches_quit_command ... ok
[INFO] [stdout] test app::nav::tests::nav_tracker_treats_two_page_spread_steps_as_continuous ... ok
[INFO] [stdout] test app::render_ops::tests::cold_start_initial_preview_plan_is_available_before_first_image ... ok
[INFO] [stdout] test app::render_ops::tests::cold_start_initial_preview_plan_is_disabled_after_first_image ... ok
[INFO] [stdout] test app::render_ops::tests::cold_start_initial_preview_plan_stays_available_until_current_frame_is_cached ... ok
[INFO] [stdout] test app::nav::tests::nav_tracker_bumps_generation_for_each_page_step ... ok
[INFO] [stdout] test app::render_ops::tests::cold_start_initial_preview_plan_is_disabled_after_navigation_begins ... ok
[INFO] [stdout] test app::render_ops::tests::process_render_result_ignores_prefetch_render_failure_notice ... ok
[INFO] [stdout] test app::render_ops::tests::process_render_result_surfaces_visible_render_failure ... ok
[INFO] [stdout] test app::runtime::spread_canvas::tests::clamps_pan_for_oversized_canvas_without_signed_overflow ... ok
[INFO] [stdout] test app::runtime::spread_canvas::tests::centers_shorter_page_vertically ... ok
[INFO] [stdout] test app::runtime::spread_canvas::tests::crops_from_shared_pan_coordinate_space ... ok
[INFO] [stdout] test app::runtime::spread_canvas::tests::preserves_slot_identity_when_left_page_is_offscreen ... ok
[INFO] [stdout] test app::runtime::spread_canvas::tests::uses_partner_dimensions_for_missing_page ... ok
[INFO] [stdout] test app::runtime::tests::page_slots_return_miss_when_all_requested_pages_miss_l1 ... ok
[INFO] [stdout] test app::runtime::tests::page_slots_keep_cached_slot_when_partner_page_misses ... ok
[INFO] [stdout] test app::runtime::tests::page_slots_keep_requested_negative_pan_while_presenting_effective_pan ... ok
[INFO] [stdout] test app::runtime::tests::spread_canvas_slots_keep_slot_identity_when_left_page_is_offscreen ... ok
[INFO] [stdout] test app::runtime::tests::spread_canvas_slots_miss_when_no_visible_cached_slots_exist ... ok
[INFO] [stdout] test app::runtime::tests::page_slots_prepare_clamped_pan_once_per_cached_slot ... ok
[INFO] [stdout] test app::scale::tests::input_poll_timeout_is_busy_when_prefetch_is_pending ... ok
[INFO] [stdout] test app::runtime::tests::spread_canvas_slots_keep_pending_slot_when_partner_page_misses ... ok
[INFO] [stdout] test app::runtime::tests::spread_canvas_slots_crop_from_centered_page_y_origin ... ok
[INFO] [stdout] test app::scale::tests::input_poll_timeout_is_idle_without_pending_work ... ok
[INFO] [stdout] test app::scale::tests::render_scale_falls_back_when_cell_size_missing ... ok
[INFO] [stdout] test app::scale::tests::render_scale_is_capped_by_preferred_max ... ok
[INFO] [stdout] test app::runtime::tests::spread_canvas_slots_crop_from_shared_pan_coordinate_space ... ok
[INFO] [stdout] test app::scale::tests::render_scale_upsamples_when_viewport_is_smaller_than_page ... ok
[INFO] [stdout] test app::scale::tests::render_scale_uses_viewport_and_page_dimensions ... ok
[INFO] [stdout] test app::state::tests::cover_spread_presents_first_page_as_single_page ... ok
[INFO] [stdout] test app::state::tests::notice_action_for_invalid_argument_is_warning ... ok
[INFO] [stdout] test app::state::tests::paired_spread_normalizes_to_even_anchor_pages ... ok
[INFO] [stdout] test app::state::tests::notice_action_for_io_error_is_error ... ok
[INFO] [stdout] test app::tests::runtime_worker::prefetch_encode_from_cache_invokes_presenter ... ok
[INFO] [stdout] test app::state::tests::cover_spread_keeps_first_page_solo_and_pairs_from_second_page ... ok
[INFO] [stdout] test app::scale::tests::zoom_steps_move_to_the_next_or_previous_ladder_entry ... ok
[INFO] [stdout] test app::scale::tests::input_poll_timeout_is_busy_when_render_or_encode_is_pending ... ok
[INFO] [stdout] test app::tests::runtime_worker::prefetch_encode_from_cache_skips_when_overlay_active ... ok
[INFO] [stdout] test app::tests::runtime_worker::prepare_current_page_uses_zero_overlay_stamp_when_decoration_falls_back ... ok
[INFO] [stdout] test app::view_ops::spread::tests::loading_target_formats_single_page_with_p_prefix ... ok
[INFO] [stdout] test app::view_ops::spread::tests::loading_target_formats_spread_with_pp_prefix ... ok
[INFO] [stdout] test app::view_ops::spread::tests::render_areas_to_slots_preserves_offscreen_spread_slot_positions ... ok
[INFO] [stdout] test app::view_ops::spread::tests::render_target_uses_error_label_convention ... ok
[INFO] [stdout] test app::tests::runtime_worker::schedule_navigation_updates_queue_and_cancellation_metrics ... ok
[INFO] [stdout] test app::view_ops::spread::tests::split_spread_slot_areas_preserves_gap_and_stable_widths ... ok
[INFO] [stdout] test app::view_ops::tests::compute_initial_preview_plan_handles_tail_spread ... ok
[INFO] [stdout] test app::view_ops::tests::compute_initial_preview_plan_uses_lower_scale_on_cold_start ... ok
[INFO] [stdout] test app::view_ops::tests::resolve_layout_dimensions_uses_blank_partner_width_for_tail_spread ... ok
[INFO] [stdout] test app::view_ops::tests::resolve_layout_dimensions_uses_both_pages_when_trailing_exists ... ok
[INFO] [stdout] test app::view_ops::viewer_outcome::tests::display_decision_clears_and_error_for_failed_without_image ... ok
[INFO] [stdout] test app::view_ops::viewer_outcome::tests::display_decision_clears_and_loading_for_pending_without_image ... ok
[INFO] [stdout] test app::view_ops::viewer_outcome::tests::display_decision_clears_when_no_image_drawn ... ok
[INFO] [stdout] test app::view_ops::viewer_outcome::tests::display_decision_overlays_error_on_failed_image ... ok
[INFO] [stdout] test app::view_ops::viewer_outcome::tests::display_decision_overlays_loading_on_pending_fresh_image ... ok
[INFO] [stdout] test app::view_ops::viewer_outcome::tests::display_decision_overlays_loading_on_pending_stale_fallback ... ok
[INFO] [stdout] test app::view_ops::viewer_outcome::tests::display_decision_overlays_loading_when_pending_without_drawn_image ... ok
[INFO] [stdout] test app::view_ops::tests::compute_initial_preview_plan_includes_both_spread_pages ... ok
[INFO] [stdout] test app::view_ops::viewer_outcome::tests::normalize_render_outcome_keeps_full_feedback_unchanged ... ok
[INFO] [stdout] test app::view_ops::viewer_outcome::tests::normalize_render_outcome_keeps_loading_feedback_for_initial_preview ... ok
[INFO] [stdout] test app::view_ops::viewer_outcome::tests::pending_spread_outcome_uses_slot_loading_areas_from_first_pending_frame ... ok
[INFO] [stdout] test app::view_ops::viewer_outcome::tests::presenter_render_options_derive_stale_fallback_from_viewer_image_state ... ok
[INFO] [stdout] test app::view_ops::viewer_outcome::tests::presenter_render_options_force_redraw_after_occlusion ... ok
[INFO] [stdout] test app::view_ops::viewer_outcome::tests::render_failure_message_falls_back_to_current_page ... ok
[INFO] [stdout] test app::view_ops::viewer_outcome::tests::render_failure_message_uses_single_page_label ... ok
[INFO] [stdout] test app::view_ops::viewer_outcome::tests::spread_loading_overlays_ignores_fresh_ready_slots ... ok
[INFO] [stdout] test app::view_ops::viewer_outcome::tests::spread_loading_overlays_ignores_inactive_tail_slot ... ok
[INFO] [stdout] test app::view_ops::viewer_outcome::tests::spread_loading_overlays_selects_pending_slots_with_page_labels ... ok
[INFO] [stdout] test app::view_ops::viewer_outcome::tests::sync_render_notice_clears_stale_render_error_after_success ... ok
[INFO] [stdout] test app::view_ops::viewer_outcome::tests::sync_render_notice_clears_stale_render_error_while_pending ... ok
[INFO] [stdout] test app::view_ops::viewer_outcome::tests::sync_render_notice_preserves_non_render_notice ... ok
[INFO] [stdout] test app::view_ops::viewer_outcome::tests::render_failure_message_uses_spread_label ... ok
[INFO] [stdout] test backend::hayro::tests::decode_pdf_text_string_decodes_pdfdoc_encoding_control_byte_0x16 ... ok
[INFO] [stdout] test backend::hayro::tests::decode_pdf_text_string_decodes_utf16be_bom ... ok
[INFO] [stdout] test backend::hayro::tests::decode_pdf_text_string_falls_back_to_utf8_lossy_without_bom ... ok
[INFO] [stdout] test backend::hayro::tests::decode_pdf_text_string_uses_pdfdoc_encoding_without_bom ... ok
[INFO] [stdout] test backend::hayro::tests::doc_id_is_stable_for_same_path_and_content ... ok
[INFO] [stdout] test backend::hayro::tests::extract_outline_handles_cyclic_named_destination_tree ... ok
[INFO] [stdout] test backend::hayro::tests::doc_id_changes_when_same_path_same_size_pdf_content_changes ... ok
[INFO] [stdout] test backend::hayro::tests::extract_outline_resolves_named_destinations_from_name_tree ... ok
[INFO] [stdout] test backend::hayro::tests::extract_outline_handles_named_destination_alias_cycles ... ok
[INFO] [stdout] test backend::hayro::tests::extract_text_page_does_not_insert_false_space_from_tj_position_gap ... ok
[INFO] [stdout] test backend::hayro::tests::open_accepts_valid_pdf_with_page_count ... ok
[INFO] [stdout] test backend::hayro::tests::open_rejects_directory_path ... ok
[INFO] [stdout] test backend::hayro::tests::page_render_dimensions_read_page_size ... ok
[INFO] [stdout] test backend::hayro::tests::pixel_buffer_from_pixmap_matches_slice_copy_bytes ... ok
[INFO] [stdout] test backend::hayro::tests::extract_text_page_returns_page_bucket_text ... ok
[INFO] [stdout] test backend::hayro::tests::render_page_rejects_out_of_range_page ... ok
[INFO] [stdout] test backend::hayro::tests::render_page_uses_hayro_pixmap_output ... ok
[INFO] [stdout] test app::event_bus::tests::file_watch_emits_reload_after_changed_file_settles ... ok
[INFO] [stdout] test backend::hayro::text::tests::dropped_glyph_count_matches_emitted_unbounded_glyphs ... ok
[INFO] [stdout] test backend::traits::tests::into_pixels_vec_clones_pooled_storage_and_recycles_original ... ok
[INFO] [stdout] test backend::hayro::text::tests::duplicate_filter_preserves_repeated_chars_in_same_glyph_token ... ok
[INFO] [stdout] test backend::traits::tests::into_pixels_vec_reuses_unique_allocation ... ok
[INFO] [stdout] test backend::traits::tests::pixel_buffer_ptr_eq_tracks_shared_storage ... ok
[INFO] [stdout] test backend::traits::tests::pooled_pixel_buffer_returns_storage_after_drop ... ok
[INFO] [stdout] test backend::traits::tests::text_page_plain_text_does_not_infer_line_breaks_from_geometry ... ok
[INFO] [stdout] test backend::traits::tests::text_page_plain_text_preserves_glyph_stream_text ... ok
[INFO] [stdout] test backend::traits::tests::with_mut_bytes_recycles_pooled_storage_after_use ... ok
[INFO] [stdout] test cache::tests::clear_returns_removed_entries_and_resets_memory ... ok
[INFO] [stdout] test cache::tests::get_tracks_hit_rate_and_promotes_lru_order ... ok
[INFO] [stdout] test cache::tests::insert_evicts_lru_over_capacity_and_returns_removed_entry ... ok
[INFO] [stdout] test cache::tests::insert_evicts_until_memory_budget_is_satisfied ... ok
[INFO] [stdout] test cache::tests::oversize_admit_keeps_inserted_entry_and_evicts_unprotected_entries ... ok
[INFO] [stdout] test cache::tests::oversize_admit_without_eviction_keeps_existing_entries ... ok
[INFO] [stdout] test cache::tests::oversize_reject_leaves_existing_entries_untouched ... ok
[INFO] [stdout] test cache::tests::protected_insert_rejects_when_only_inserted_entry_could_be_evicted ... ok
[INFO] [stdout] test app::tests::runtime_worker::render_worker_rejects_duplicate_key_while_inflight ... ok
[INFO] [stdout] test cache::tests::peek_does_not_track_hits_or_promote_lru_order ... ok
[INFO] [stdout] test cache::tests::reinserting_existing_key_replaces_cost_without_double_counting ... ok
[INFO] [stdout] test command::catalog::tests::command_ids_resolve_to_matching_specs ... ok
[INFO] [stdout] test command::catalog::tests::command_registry_entries_have_matching_ids ... ok
[INFO] [stdout] test cache::tests::protected_keys_are_not_evicted_when_an_unprotected_candidate_exists ... ok
[INFO] [stdout] test cache::tests::reject_if_eviction_required_rejects_capacity_or_memory_eviction ... ok
[INFO] [stdout] test command::catalog::tests::parser_rejects_unknown_registered_command_id ... ok
[INFO] [stdout] test command::core::tests::reset_zoom_reports_noop_only_when_zoom_and_pan_are_already_reset ... ok
[INFO] [stdout] test command::core::tests::set_zoom_accepts_exact_bounds_without_warning ... ok
[INFO] [stdout] test command::core::tests::set_zoom_clamps_out_of_range_values_with_warnings ... ok
[INFO] [stdout] test command::dispatch::tests::collect_transition_events_emits_outline_reason ... ok
[INFO] [stdout] test command::dispatch::tests::collect_transition_events_emits_outline_reason_when_page_is_unchanged ... ok
[INFO] [stdout] test backend::hayro::tests::render_context_renders_multiple_pages_with_reused_cache ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_close_help_returns_to_normal_mode ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_help_scroll_commands_require_help_mode ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_help_scroll_commands_update_help_scroll ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_next_page_emits_page_changed_and_command_executed ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_open_help_changes_mode_and_emits_mode_event ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_open_palette_emits_command_executed_only ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_page_layout_spread_cover_keeps_cover_policy ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_page_layout_spread_uses_view_policy_for_omitted_spread_args ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_page_layout_spread_without_cover_policy_resets_to_paired ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_palette_submit_closes_palette_and_returns_completed_command ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_pan_applies_explicit_cell_amount ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_quit_requests_quit_and_emits_command_executed ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_cancel_clears_active_search ... ok
[INFO] [stdout] test command::dispatch::tests::collect_transition_events_emits_search_when_page_is_unchanged ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_rejects_internal_command_from_binding ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_rejects_palette_command_without_active_palette ... ok
[INFO] [stdout] test app::tests::runtime_worker::run_next_prefetch_reduces_queue_depth ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_rejects_unavailable_command_from_binding ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_search_palette_submit_returns_internal_follow_up ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_set_zoom_warns_when_input_is_below_minimum ... ok
[INFO] [stdout] test app::tests::runtime_worker::prepare_current_page_updates_l1_and_presenter_metrics ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_set_page_layout_emits_layout_normalize_when_anchor_changes ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_set_zoom_warns_when_input_is_clamped ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_set_zoom_warns_when_input_is_slightly_below_minimum ... ok
[INFO] [stdout] test app::tests::runtime_worker::render_worker_accepts_up_to_three_inflight_tasks ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_set_zoom_warns_when_input_is_slightly_above_maximum ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_zoom_in_at_maximum_keeps_the_boundary_warning ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_zoom_in_near_maximum_advances_without_boundary_warning ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_zoom_in_and_out_follow_the_zoom_ladder ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_zoom_out_at_minimum_keeps_the_boundary_warning ... ok
[INFO] [stdout] test command::parse::tests::enum_argument_hints_are_accepted_by_parser ... ok
[INFO] [stdout] test command::parse::tests::no_arg_public_command_specs_parse_by_id ... ok
[INFO] [stdout] test command::parse::tests::first_token_ignores_leading_whitespace ... ok
[INFO] [stdout] test command::parse::tests::parse_outline_goto_accepts_page_and_title ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_zoom_out_near_minimum_advances_without_boundary_warning ... ok
[INFO] [stdout] test command::parse::tests::parse_page_layout_commands_support_mode_and_direction ... ok
[INFO] [stdout] test command::parse::tests::parse_outline_without_args_opens_outline_palette ... ok
[INFO] [stdout] test command::parse::tests::parse_pan_allows_i32_min_for_right_and_down ... ok
[INFO] [stdout] test command::parse::tests::parse_pan_clamps_i32_min_for_left_and_up ... ok
[INFO] [stdout] test command::parse::tests::parse_pan_rejects_non_integer_amounts ... ok
[INFO] [stdout] test command::parse::tests::parse_pan_supports_directional_form_only ... ok
[INFO] [stdout] test command::parse::tests::parse_pan_clamps_out_of_i32_range_values ... ok
[INFO] [stdout] test command::parse::tests::parse_search_without_args_opens_search_palette ... ok
[INFO] [stdout] test command::parse::tests::parse_search_goto_accepts_page ... ok
[INFO] [stdout] test command::parse::tests::parse_submit_search_accepts_optional_matcher ... ok
[INFO] [stdout] test command::parse::tests::parses_basic_commands ... ok
[INFO] [stdout] test command::parse::tests::specs_with_required_args_reject_missing_args ... ok
[INFO] [stdout] test command::spec::tests::binding_only_commands_reject_direct_command_input ... ok
[INFO] [stdout] test command::spec::tests::binding_only_close_help_is_hidden_from_palette ... ok
[INFO] [stdout] test command::spec::tests::command_validation_rejects_search_navigation_when_search_is_inactive ... ok
[INFO] [stdout] test command::dispatch::tests::dispatch_zoom_reset_restores_default_zoom_and_pan ... ok
[INFO] [stdout] test command::spec::tests::find_command_spec_returns_metadata_for_internal_command ... ok
[INFO] [stdout] test command::spec::tests::command_specs_have_unique_ids ... ok
[INFO] [stdout] test command::spec::tests::help_scroll_commands_are_only_available_in_help_mode ... ok
[INFO] [stdout] test command::spec::tests::palette_visibility_requires_command_target ... ok
[INFO] [stdout] test command::spec::tests::binding_only_command_is_allowed_from_binding_but_not_palette_input ... ok
[INFO] [stdout] test command::spec::tests::palette_visibility_hides_internal_commands ... ok
[INFO] [stdout] test command::spec::tests::internal_commands_reject_binding_invocation ... ok
[INFO] [stdout] test command::spec::tests::palette_input_history_commands_require_history_capable_palette ... ok
[INFO] [stdout] test command::tests::command_registry_metadata_has_reviewable_public_surface ... ok
[INFO] [stdout] test command::types::tests::enum_command_arguments_round_trip_through_strings ... ok
[INFO] [stdout] test command::types::tests::enum_value_lists_are_derived_from_variant_strings ... ok
[INFO] [stdout] test condition::tests::binding_condition_priority_counts_distinct_normalized_constraints ... ok
[INFO] [stdout] test condition::tests::binding_conditions_are_normalized_idempotently ... ok
[INFO] [stdout] test condition::tests::palette_input_conditions_require_an_active_palette ... ok
[INFO] [stdout] test condition::tests::palette_kind_condition_requires_an_open_matching_palette ... ok
[INFO] [stdout] test condition::tests::palette_input_history_requires_a_history_capable_palette ... ok
[INFO] [stdout] test condition::tests::single_alternative_conditions_have_the_same_normalized_form ... ok
[INFO] [stdout] test config::file::tests::default_lookup_falls_through_missing_implicit_locations ... ok
[INFO] [stdout] test config::file::tests::default_lookup_keeps_explicit_path_even_when_missing ... ok
[INFO] [stdout] test command::tests::default_registry_bindings_reference_commands_invocable_when_enabled ... ok
[INFO] [stdout] test config::file::tests::explicit_config_preserves_unspecified_fields_as_absent_options ... ok
[INFO] [stdout] test config::file::tests::explicit_config_reads_auto_graphics_protocol ... ok
[INFO] [stdout] test config::file::tests::config_file_partial_sections_merge_with_sanitized_defaults ... ok
[INFO] [stdout] test config::file::tests::explicit_config_reads_keymap_entries ... ok
[INFO] [stdout] test config::file::tests::explicit_config_reads_graphics_protocol ... ok
[INFO] [stdout] test config::file::tests::explicit_config_reads_view_input_and_watch_sections ... ok
[INFO] [stdout] test config::file::tests::file_selection_path_requires_existing_file ... ok
[INFO] [stdout] test config::file::tests::explicit_config_rejects_missing_path ... ok
[INFO] [stdout] test config::file::tests::explicit_config_rejects_unknown_view_enum_values ... ok
[INFO] [stdout] test config::file::tests::keymap_config_accepts_enter_bindings ... ok
[INFO] [stdout] test config::file::tests::keymap_config_accepts_palette_input_state_bindings ... ok
[INFO] [stdout] test config::file::tests::keymap_config_accepts_single_escape_bindings ... ok
[INFO] [stdout] test config::file::tests::explicit_config_rejects_unknown_graphics_protocol ... ok
[INFO] [stdout] test config::file::tests::keymap_config_rejects_internal_only_commands ... ok
[INFO] [stdout] test config::file::tests::keymap_config_allows_literal_less_than_binding ... ok
[INFO] [stdout] test config::file::tests::keymap_config_rejects_surface_commands_with_non_app_targets ... ok
[INFO] [stdout] test config::file::tests::keymap_config_rejects_legacy_table_shape ... ok
[INFO] [stdout] test config::file::tests::file_selection_disabled_returns_empty_options ... ok
[INFO] [stdout] test config::file::tests::keymap_config_rejects_unknown_preset ... ok
[INFO] [stdout] test config::file::tests::keymap_config_rejects_true_command_value ... ok
[INFO] [stdout] test config::file::tests::keymap_config_rejects_unknown_when ... ok
[INFO] [stdout] test config::keymap::presets::tests::defaults_accept_ctrl_shift_letter_as_ctrl_shortcut ... ok
[INFO] [stdout] test config::file::tests::optional_config_file_missing_uses_defaults ... ok
[INFO] [stdout] test config::file::tests::keymap_config_requires_command ... ok
[INFO] [stdout] test config::file::tests::keymap_config_resolves_to_runtime_sequence_registry ... ok
[INFO] [stdout] test config::file::tests::keymap_preset_none_starts_from_empty_keymap ... ok
[INFO] [stdout] test config::keymap::presets::tests::defaults_include_pan_keys ... ok
[INFO] [stdout] test config::keymap::presets::tests::defaults_accept_shift_modified_char_events_for_uppercase_commands ... ok
[INFO] [stdout] test config::keymap::presets::tests::defaults_map_equal_to_zoom_reset ... ok
[INFO] [stdout] test config::keymap::presets::tests::none_preset_builds_empty_registry ... ok
[INFO] [stdout] test config::keymap::presets::tests::defaults_require_double_g_for_first_page ... ok
[INFO] [stdout] test config::keymap::presets::tests::defaults_support_numeric_goto_prefix ... ok
[INFO] [stdout] test config::keymap::presets::tests::defaults_preserve_existing_single_key_bindings ... ok
[INFO] [stdout] test config::keymap::tests::configured_palette_input_empty_binding_overrides_default_palette_backspace ... ok
[INFO] [stdout] test config::keymap::tests::palette_input_empty_condition_can_override_broad_palette_binding ... ok
[INFO] [stdout] test config::keymap::tests::configured_bindings_resolve_against_their_when_condition ... ok
[INFO] [stdout] test config::keymap::tests::unbind_ignores_missing_bindings ... ok
[INFO] [stdout] test error::tests::page_out_of_range_uses_human_friendly_range ... ok
[INFO] [stdout] test error::tests::pdf_render_error_wraps_page_and_source ... ok
[INFO] [stdout] test config::policy::tests::resolver_merges_later_options_over_earlier_options ... ok
[INFO] [stdout] test config::policy::tests::resolver_applies_defaults_and_sanitizes_without_file_source ... ok
[INFO] [stdout] test config::keymap::tests::palette_input_history_conditions_select_distinct_bindings ... ok
[INFO] [stdout] test config::keymap::presets::tests::palette_bindings_accept_meta_as_alt_for_word_editing ... ok
[INFO] [stdout] test config::keymap::presets::tests::palette_bindings_map_common_line_editing_shortcuts ... ok
[INFO] [stdout] test highlight::geometry::tests::merges_same_line_with_spaces ... ok
[INFO] [stdout] test highlight::geometry::tests::merges_vertical_column ... ok
[INFO] [stdout] test extension::host::tests::cancel_search_clears_active_query ... ok
[INFO] [stdout] test extension::host::tests::document_reload_preserves_active_search ... ok
[INFO] [stdout] test extension::host::tests::status_bar_segments_includes_search_when_query_is_active ... ok
[INFO] [stdout] test highlight::geometry::tests::splits_wrapped_vertical_columns ... ok
[INFO] [stdout] test highlight::geometry::tests::splits_wrapped_horizontal_lines ... ok
[INFO] [stdout] test history::palette::tests::list_matches_unicode_case_in_reasons ... ok
[INFO] [stdout] test history::palette::tests::list_orders_matches_by_index_then_reason_then_page ... ok
[INFO] [stdout] test history::palette::tests::list_uses_snapshot_order_and_p_prefixed_page_labels ... ok
[INFO] [stdout] test history::state::tests::back_and_forward_preserve_destination_reasons ... ok
[INFO] [stdout] test history::palette::tests::reason_display_text_matches_visible_labeling ... ok
[INFO] [stdout] test history::palette::tests::initial_selection_uses_current_entry ... ok
[INFO] [stdout] test history::palette::tests::match_bucket_prefers_index_before_reason_before_page ... ok
[INFO] [stdout] test extension::host::tests::document_reload_resets_history_navigation ... ok
[INFO] [stdout] test history::state::tests::destination_reason_is_stored_on_the_destination_page ... ok
[INFO] [stdout] test history::state::tests::back_without_movement_does_not_suppress_next_real_page_change ... ok
[INFO] [stdout] test history::state::tests::outline_navigation_is_recorded ... ok
[INFO] [stdout] test history::state::tests::record_policy_dedupes_origin_page_index ... ok
[INFO] [stdout] test history::state::tests::same_page_search_refreshes_reason_on_deduped_page ... ok
[INFO] [stdout] test history::state::tests::same_page_search_records_current_reason_without_duplicate_origin ... ok
[INFO] [stdout] test extension::host::tests::status_bar_segments_is_empty_without_active_extensions ... ok
[INFO] [stdout] test input::history::tests::command_history_is_mru_deduplicated ... ok
[INFO] [stdout] test input::history::tests::empty_entries_are_ignored ... ok
[INFO] [stdout] test history::state::tests::ui_snapshot_preserves_outline_titles_without_encoding ... ok
[INFO] [stdout] test input::history::tests::palette_snapshots_only_exist_for_command_and_search ... ok
[INFO] [stdout] test input::sequence::tests::conditional_bindings_resolve_only_when_enabled ... ok
[INFO] [stdout] test input::sequence::tests::ambiguous_exact_waits_for_timeout ... ok
[INFO] [stdout] test input::sequence::tests::enter_after_pending_exact_match_reprocesses_as_next_key ... ok
[INFO] [stdout] test input::sequence::tests::enter_can_be_part_of_a_multi_key_binding ... ok
[INFO] [stdout] test input::sequence::tests::enter_dispatches_as_a_regular_exact_binding ... ok
[INFO] [stdout] test input::sequence::tests::equal_priority_bindings_use_later_registration ... ok
[INFO] [stdout] test input::sequence::tests::generated_printable_binding_accepts_ctrl_alt_text ... ok
[INFO] [stdout] test input::sequence::tests::flush_timeout_uses_current_runtime_context ... ok
[INFO] [stdout] test input::sequence::tests::generated_printable_binding_does_not_override_exact_binding ... ok
[INFO] [stdout] test input::sequence::tests::generated_printable_binding_does_not_override_lower_priority_exact_binding ... ok
[INFO] [stdout] test input::sequence::tests::generated_printable_binding_ignores_alt_without_ctrl ... ok
[INFO] [stdout] test input::sequence::tests::generated_printable_binding_ignores_ctrl_without_alt ... ok
[INFO] [stdout] test input::sequence::tests::exact_single_key_dispatches_immediately ... ok
[INFO] [stdout] test input::sequence::tests::mismatch_after_pending_exact_match_reprocesses_latest_key ... ok
[INFO] [stdout] test input::sequence::tests::expired_pending_mode_change_does_not_reprocess_next_key ... ok
[INFO] [stdout] test input::sequence::tests::mismatch_after_pending_prefix_reports_clear_when_latest_key_is_unbound ... ok
[INFO] [stdout] test input::sequence::tests::more_specific_binding_wins_over_later_broad_binding ... ok
[INFO] [stdout] test input::sequence::tests::mismatch_after_pending_prefix_reprocesses_latest_key ... ok
[INFO] [stdout] test input::sequence::tests::expired_pending_sequence_dispatches_before_consuming_next_key ... ok
[INFO] [stdout] test input::sequence::tests::next_key_timeout_confirmation_uses_current_runtime_context ... ok
[INFO] [stdout] test input::sequence::tests::non_digit_exact_binding_dispatches_immediately_alongside_numeric_prefix ... ok
[INFO] [stdout] test input::sequence::tests::generated_printable_binding_builds_text_insert_command ... ok
[INFO] [stdout] test input::sequence::tests::numeric_prefix_dispatches_and_formats_pending_digits ... ok
[INFO] [stdout] test input::sequence::tests::pending_sequence_continuation_uses_current_runtime_context ... ok
[INFO] [stdout] test input::sequence::tests::registry_rejects_digit_numeric_suffixes ... ok
[INFO] [stdout] test input::sequence::tests::registry_canonicalizes_ctrl_shift_letters_to_ctrl_letters ... ok
[INFO] [stdout] test input::sequence::tests::registry_rejects_escape_in_multikey_sequences ... ok
[INFO] [stdout] test input::sequence::tests::reconcile_clears_pending_sequence_disabled_by_current_context ... ok
[INFO] [stdout] test input::sequence::tests::snapshot_includes_exact_and_numeric_bindings ... ok
[INFO] [stdout] test input::sequence::tests::unregister_exact_removes_exact_binding ... ok
[INFO] [stdout] test input::sequence::tests::unregister_numeric_prefix_removes_count_binding ... ok
[INFO] [stdout] test input::sequence::tests::unsupported_modifier_input_is_ignored ... ok
[INFO] [stdout] test input::shortcut::tests::formats_regular_and_modified_keys ... ok
[INFO] [stdout] test input::shortcut::tests::formats_tight_shortcut_alternatives ... ok
[INFO] [stdout] test input::shortcut::tests::parses_printable_and_angle_key_sequences ... ok
[INFO] [stdout] test input::shortcut::tests::formats_shortcut_sequences ... ok
[INFO] [stdout] test input::shortcut::tests::rejects_invalid_shortcut_sequence_text ... ok
[INFO] [stdout] test input::shortcut::tests::formats_shortcut_alternatives ... ok
[INFO] [stdout] test input::shortcut::tests::try_new_rejects_unsupported_modifiers ... ok
[INFO] [stdout] test outline::palette::tests::list_matches_unicode_titles_case_insensitively ... ok
[INFO] [stdout] test outline::palette::tests::list_treats_p_prefixed_queries_as_text ... ok
[INFO] [stdout] test outline::palette::tests::list_uses_p_prefixed_page_detail ... ok
[INFO] [stdout] test outline::palette::tests::list_uses_text_matches_before_page_label_matches ... ok
[INFO] [stdout] test outline::palette::tests::page_detail_uses_loading_overlay_format ... ok
[INFO] [stdout] test input::sequence::tests::registry_rejects_shift_modified_printable_char_bindings ... ok
[INFO] [stdout] test outline::state::tests::palette_entries_flatten_outline_depth_first ... ok
[INFO] [stdout] test outline::state::tests::palette_entries_reuse_cached_arc_for_same_document ... ok
[INFO] [stdout] test outline::state::tests::palette_entries_preserve_depth_first_sibling_order ... ok
[INFO] [stdout] test palette::matcher::tests::contains_matcher_prioritizes_prefix_hits ... ok
[INFO] [stdout] test palette::providers::command::tests::assistive_text_shows_title_when_all_arguments_are_complete ... ok
[INFO] [stdout] test palette::matcher::tests::contains_matcher_uses_structured_match_texts ... ok
[INFO] [stdout] test palette::providers::command::tests::assistive_text_uses_integer_label_for_integer_arguments ... ok
[INFO] [stdout] test palette::providers::command::tests::assistive_text_shows_title_for_complete_no_argument_command ... ok
[INFO] [stdout] test palette::providers::command::tests::assistive_text_uses_enum_values_for_enum_arguments ... ok
[INFO] [stdout] test palette::providers::command::tests::assistive_text_uses_number_label_for_float_arguments ... ok
[INFO] [stdout] test palette::providers::command::tests::enum_argument_candidates_fall_back_to_full_list_when_no_match ... ok
[INFO] [stdout] test palette::providers::command::tests::enum_argument_candidates_keep_definition_order ... ok
[INFO] [stdout] test palette::providers::command::tests::command_policy_uses_post_submit_normal_context ... ok
[INFO] [stdout] test palette::providers::command::tests::enum_argument_phase_filters_values ... ok
[INFO] [stdout] test palette::providers::command::tests::enum_argument_phase_lists_values ... ok
[INFO] [stdout] test palette::providers::command::tests::list_shows_search_hit_navigation_when_search_is_active ... ok
[INFO] [stdout] test palette::providers::command::tests::list_hides_search_hit_navigation_when_search_is_inactive ... ok
[INFO] [stdout] test palette::providers::command::tests::non_enum_argument_phase_hides_candidates ... ok
[INFO] [stdout] test palette::providers::command::tests::enum_argument_candidates_filter_without_reordering ... ok
[INFO] [stdout] test palette::providers::command::tests::scoring_prioritizes_exact_id_match ... ok
[INFO] [stdout] test palette::providers::command::tests::scoring_supports_hyphen_acronym_query ... ok
[INFO] [stdout] test palette::providers::command::tests::scoring_tie_breaks_by_shorter_id_then_lexicographic ... ok
[INFO] [stdout] test palette::providers::command::tests::session_selection_resets_when_command_input_filters_candidates ... ok
[INFO] [stdout] test palette::providers::command::tests::submit_dispatches_optional_only_page_layout_without_reopen ... ok
[INFO] [stdout] test palette::providers::command::tests::scoring_prioritizes_id_prefix_over_contains ... ok
[INFO] [stdout] test palette::providers::command::tests::submit_dispatches_selected_spread_cover_policy_when_result_is_complete ... ok
[INFO] [stdout] test palette::providers::command::tests::submit_dispatches_search_to_open_search_palette ... ok
[INFO] [stdout] test palette::providers::command::tests::submit_dispatches_selected_enum_argument_when_result_is_complete ... ok
[INFO] [stdout] test palette::providers::command::tests::submit_dispatches_typed_command_with_history_record ... ok
[INFO] [stdout] test palette::providers::command::tests::session_recalls_command_input_history_and_restores_draft ... ok
[INFO] [stdout] test palette::providers::command::tests::tab_completion_appends_trailing_space_for_no_argument_commands ... ok
[INFO] [stdout] test palette::providers::command::tests::submit_dispatches_typed_optional_enum_command_without_argument ... ok
[INFO] [stdout] test palette::providers::command::tests::tab_completion_appends_trailing_space_for_required_argument_commands ... ok
[INFO] [stdout] test palette::providers::command::tests::tab_completion_replaces_enum_argument_and_appends_space ... ok
[INFO] [stdout] test palette::providers::command::tests::trailing_non_enum_argument_phase_hides_enum_candidates ... ok
[INFO] [stdout] test palette::registry::tests::get_returns_provider_for_all_palette_kinds ... ok
[INFO] [stdout] test palette::row::tests::match_text_comes_from_matchable_cells ... ok
[INFO] [stdout] test palette::row::tests::match_text_trims_render_only_cell_spacing ... ok
[INFO] [stdout] test palette::row::tests::plain_text_joins_label_and_detail_segments ... ok
[INFO] [stdout] test palette::row::tests::plain_text_preserves_internal_spacing_in_parts ... ok
[INFO] [stdout] test palette::providers::command::tests::submit_errors_when_explicit_input_has_invalid_arguments ... ok
[INFO] [stdout] test palette::row::tests::plain_text_uses_rendered_page_label ... ok
[INFO] [stdout] test palette::session_controller::tests::common_selection_operations_report_noop_at_boundaries ... ok
[INFO] [stdout] test palette::providers::command::tests::submit_reopens_for_required_argument_commands ... ok
[INFO] [stdout] test palette::providers::command::tests::tab_completion_resets_command_history_navigation_state ... ok
[INFO] [stdout] test palette::session_controller::tests::operations_without_active_session_report_noop ... ok
[INFO] [stdout] test palette::session_controller::tests::view_reports_no_selection_when_provider_has_no_candidates ... ok
[INFO] [stdout] test palette::text::tests::constructors_set_expected_tones ... ok
[INFO] [stdout] test perf::driver::tests::non_cold_scenario_starts_measured_window_after_initial_idle ... ok
[INFO] [stdout] test palette::providers::command::tests::submit_reopens_when_input_targets_internal_command ... ok
[INFO] [stdout] test perf::driver::tests::steady_prev_starts_measured_window_after_last_page_positioning ... ok
[INFO] [stdout] test perf::summary::tests::aggregates_wall_phase_redraw_queue_and_cache_metrics ... ok
[INFO] [stdout] test perf::summary::tests::merge_stats_averages_cache_hit_rates ... ok
[INFO] [stdout] test perf::summary::tests::summarizes_metrics_and_scalars ... ok
[INFO] [stdout] test perf::tests::absorbs_presenter_metrics_without_overwriting_render_path ... ok
[INFO] [stdout] test perf::tests::parses_perf_scenarios ... ok
[INFO] [stdout] test perf::tests::records_milliseconds_and_clamped_rates ... ok
[INFO] [stdout] test perf::driver::tests::headless_terminal_session_supports_terminal_surface_contract ... ok
[INFO] [stdout] test perf::tests::allows_zero_page_steps_when_selected_scenarios_do_not_use_them ... ok
[INFO] [stdout] test perf::tests::clear_blit_metrics_drops_samples_and_current_value ... ok
[INFO] [stdout] test perf::tests::does_not_retain_samples_unless_enabled ... ok
[INFO] [stdout] test perf::tests::iteration_report_includes_wall_time_and_navigation_state ... ok
[INFO] [stdout] test perf::tests::rejects_zero_measured_iterations ... ok
[INFO] [stdout] test presenter::encode::tests::current_lane_drops_older_generations ... ok
[INFO] [stdout] test perf::tests::rejects_zero_page_steps_when_selected_scenarios_use_them ... ok
[INFO] [stdout] test perf::tests::rejects_iteration_count_overflow ... ok
[INFO] [stdout] test perf::tests::reset_clears_counters_and_samples ... ok
[INFO] [stdout] test presenter::encode::tests::enqueue_with_notifications_emits_canceled_stale_events ... ok
[INFO] [stdout] test perf::tests::resolves_page_step_policy_per_scenario ... ok
[INFO] [stdout] test presenter::encode::tests::enqueue_with_notifications_keeps_newer_same_key_when_older_request_arrives_late ... ok
[INFO] [stdout] test presenter::encode::tests::current_lane_keeps_newer_same_key_when_older_request_arrives_late ... ok
[INFO] [stdout] test presenter::image_ops::tests::fit_downscale_dimensions_preserves_aspect_ratio ... ok
[INFO] [stdout] test presenter::image_ops::tests::fit_resize_dimensions_skips_upscale_when_disallowed ... ok
[INFO] [stdout] test presenter::image_ops::tests::fit_downscale_dimensions_returns_none_when_source_fits ... ok
[INFO] [stdout] test presenter::image_ops::tests::fit_resize_dimensions_upscales_when_allowed ... ok
[INFO] [stdout] test presenter::l2_cache::tests::insert_keeps_pending_frame_buffer_shared ... ok
[INFO] [stdout] test presenter::image_ops::tests::resize_frame_for_area_downscales_shared_frame_without_touching_source ... ok
[INFO] [stdout] test presenter::l2_cache::tests::insert_at_capacity_keeps_memory_accounting_consistent ... ok
[INFO] [stdout] test presenter::l2_cache::tests::non_oversize_insert_does_not_evict_single_oversize_entry ... ok
[INFO] [stdout] test presenter::l2_cache::tests::oversize_insert_with_override_keeps_single_entry ... ok
[INFO] [stdout] test presenter::l2_cache::tests::cached_mut_does_not_touch_lru_order ... ok
[INFO] [stdout] test presenter::l2_cache::tests::oversize_insert_with_protected_key_keeps_visible_entry ... ok
[INFO] [stdout] test presenter::l2_cache::tests::oversize_insert_with_protected_key_respects_single_entry_limit ... ok
[INFO] [stdout] test presenter::l2_cache::tests::pending_work_tracks_eviction_and_clear ... ok
[INFO] [stdout] test presenter::l2_cache::tests::pending_work_tracks_state_transitions ... ok
[INFO] [stdout] test presenter::ratatui::geometry::tests::align_rect_within_can_pin_to_horizontal_edges ... ok
[INFO] [stdout] test presenter::ratatui::geometry::tests::center_rect_within_places_rect_in_the_middle ... ok
[INFO] [stdout] test presenter::l2_cache::tests::oversize_insert_with_protected_keys_keeps_visible_entries ... ok
[INFO] [stdout] test presenter::l2_cache::tests::oversize_insert_without_override_preserves_existing_entries ... ok
[INFO] [stdout] test presenter::ratatui::geometry::tests::centered_fit_area_keeps_aspect_and_centers ... ok
[INFO] [stdout] test presenter::ratatui::tests::auto_graphics_protocol_uses_detected_protocol_when_query_succeeds ... ok
[INFO] [stdout] test presenter::ratatui::tests::auto_graphics_protocol_uses_halfblocks_when_query_fails ... ok
[INFO] [stdout] test presenter::ratatui::tests::forced_graphics_protocol_does_not_query_terminal_protocol ... ok
[INFO] [stdout] test app::event_loop::tests::file_reload_failure_keeps_previous_document_and_retries_quietly ... ok
[INFO] [stdout] test presenter::ratatui::tests::presenter_prepare_slots_tracks_independent_current_keys ... ok
[INFO] [stdout] test presenter::ratatui::tests::presenter_prepare_slots_preserves_empty_slot_positions ... ok
[INFO] [stdout] test command::catalog::tests::no_arg_commands_parse_to_matching_ids_and_execute ... ok
[INFO] [stdout] test presenter::ratatui::tests::render_slots_aggregates_failed_and_pending_feedback ... ok
[INFO] [stdout] test presenter::ratatui::tests::render_slots_ignores_inactive_slots_for_feedback ... ok
[INFO] [stdout] test presenter::tests::cell_size_from_window_metrics_divides_pixels_by_cells ... ok
[INFO] [stdout] test presenter::tests::cell_size_from_window_metrics_rejects_invalid_inputs ... ok
[INFO] [stdout] test presenter::ratatui::tests::presenter_preserves_stable_ready_image_without_reblitting ... ok
[INFO] [stdout] test presenter::ratatui::tests::inactive_spread_slot_forgets_last_drawn_area ... ok
[INFO] [stdout] test presenter::tests::current_encode_queue_cancels_stale_generation ... ok
[INFO] [stdout] test presenter::ratatui::tests::presenter_tracks_last_drawn_area_for_stable_redraws ... ok
[INFO] [stdout] test presenter::tests::encode_queue_prioritizes_current_over_prefetch ... ok
[INFO] [stdout] test presenter::ratatui::tests::render_pending_uses_stale_fallback_when_allowed ... ok
[INFO] [stdout] test presenter::tests::prefetch_encode_advances_entry_to_ready ... ok
[INFO] [stdout] test presenter::tests::prefetch_encode_does_not_change_current_key ... ok
[INFO] [stdout] test presenter::tests::presenter_cache_key_distinguishes_pages_even_with_same_pixels ... ok
[INFO] [stdout] test presenter::tests::presenter_cache_key_distinguishes_overlay_stamps ... ok
[INFO] [stdout] test presenter::ratatui::tests::render_slots_reports_stale_fallback_per_slot ... ok
[INFO] [stdout] test presenter::tests::presenter_runtime_info_exposes_graphics_protocol_when_available ... ok
[INFO] [stdout] test presenter::tests::presenter_renders_after_prepare ... ok
[INFO] [stdout] test presenter::tests::presenter_with_cache_limits_applies_l2_cache_limits ... ok
[INFO] [stdout] test presenter::tests::recv_background_event_requests_redraw_for_current_encode_completion ... ok
[INFO] [stdout] test presenter::tests::presenter_uses_l2_cache_between_same_frames ... ok
[INFO] [stdout] test presenter::tests::render_reports_failed_feedback_when_encode_worker_is_disconnected ... ok
[INFO] [stdout] test presenter::tests::presenter_has_pending_work_tracks_encode_progress ... ok
[INFO] [stdout] test presenter::traits::tests::pan_pixel_bounds_cap_cells_before_signed_overflow ... ok
[INFO] [stdout] test presenter::traits::tests::pan_pixel_bounds_clamp_negative_cells_to_zero ... ok
[INFO] [stdout] test presenter::traits::tests::pan_pixel_origin_saturates_before_unsigned_overflow ... ok
[INFO] [stdout] test render::cache::tests::cache_evicts_when_over_budget ... ok
[INFO] [stdout] test render::cache::tests::cache_reinsert_updates_memory_without_double_counting ... ok
[INFO] [stdout] test render::cache::tests::cache_tracks_hit_rate ... ok
[INFO] [stdout] test presenter::tests::render_failed_does_not_use_stale_fallback_when_disallowed ... ok
[INFO] [stdout] test render::cache::tests::get_cloned_shares_pixel_buffer ... ok
[INFO] [stdout] test render::cache::tests::insert_at_capacity_keeps_memory_accounting_consistent ... ok
[INFO] [stdout] test presenter::tests::select_ratatui_presenter ... ok
[INFO] [stdout] test render::cache::tests::layout_tag_partitions_cache_entries ... ok
[INFO] [stdout] test render::cache::tests::non_oversize_insert_does_not_evict_single_oversize_entry ... ok
[INFO] [stdout] test render::cache::tests::oversize_insert_with_override_keeps_single_entry ... ok
[INFO] [stdout] test render::cache::tests::oversize_insert_without_override_does_not_clear_existing_entries ... ok
[INFO] [stdout] test render::prefetch::tests::dedupe_by_key_skips_duplicate_tasks ... ok
[INFO] [stdout] test render::cache::tests::remove_doc_reduces_memory_and_counts_evictions ... ok
[INFO] [stdout] test render::prefetch::tests::cancel_stale_prefetch_removes_only_lead_and_background ... ok
[INFO] [stdout] test presenter::tests::render_pending_does_not_use_stale_fallback_when_disallowed ... ok
[INFO] [stdout] test render::prefetch::tests::fifo_within_same_class_and_generation ... ok
[INFO] [stdout] test render::prefetch::tests::retain_rebuilds_dedupe_index_after_filtering ... ok
[INFO] [stdout] test render::prefetch::tests::pop_order_follows_priority_and_generation ... ok
[INFO] [stdout] test render::scheduler::tests::can_override_prefetch_policy ... ok
[INFO] [stdout] test render::scheduler::tests::cancel_obsolete_counts_removed_tasks ... ok
[INFO] [stdout] test render::prefetch::tests::guard_reverse_depth_config_supports_0_1_2 ... ok
[INFO] [stdout] test render::scheduler::tests::guard_reverse_depth_supports_multiple_pages ... ok
[INFO] [stdout] test render::scheduler::tests::prefetch_depth_changes_with_streak ... ok
[INFO] [stdout] test render::scheduler::tests::prefetch_forward_order_matches_rule ... ok
[INFO] [stdout] test render::scheduler::tests::scheduler_pops_highest_priority_first ... ok
[INFO] [stdout] test render::scheduler::tests::should_cancel_respects_generation_and_scale ... ok
[INFO] [stdout] test search::matcher::tests::locate_occurrences_maps_multibyte_byte_offsets_to_char_positions ... ok
[INFO] [stdout] test search::matcher::tests::locate_occurrences_skips_whitespace_insensitive_fallback_after_direct_match ... ok
[INFO] [stdout] test search::matcher::tests::locate_occurrences_uses_whitespace_insensitive_fallback_without_direct_match ... ok
[INFO] [stdout] test search::matcher::tests::normalize_text_for_search_preserves_search_semantics ... ok
[INFO] [stdout] test search::palette::tests::results_assistive_text_shows_zero_hits ... ok
[INFO] [stdout] test search::palette::tests::results_initial_selection_accepts_right_page_of_visible_spread ... ok
[INFO] [stdout] test search::matcher::tests::apply_hit_snippet_uses_original_glyph_boundaries_after_case_fold_expansion ... ok
[INFO] [stdout] test presenter::tests::render_pending_keeps_stale_fallback_when_new_oversize_entry_arrives ... ok
[INFO] [stdout] test search::palette::tests::results_list_shows_index_snippet_and_page ... ok
[INFO] [stdout] test search::palette::tests::search_session_keeps_selected_matcher_when_typing_query ... ok
[INFO] [stdout] test search::palette::tests::results_initial_selection_does_not_treat_cover_solo_as_spread ... ok
[INFO] [stdout] test search::state::tests::goto_result_keeps_right_page_hit_selected_in_spread_layout ... ok
[INFO] [stdout] test search::state::tests::goto_result_moves_to_selected_page ... ok
[INFO] [stdout] test search::state::tests::next_hit_keeps_active_error_notice_when_no_hits_exist ... ok
[INFO] [stdout] test search::state::tests::next_hit_keeps_progress_notice_while_search_is_still_running ... ok
[INFO] [stdout] test search::state::tests::next_hit_shows_progress_notice_when_search_is_running_without_notice ... ok
[INFO] [stdout] test search::state::tests::next_hit_stays_silent_when_no_search_is_active ... ok
[INFO] [stdout] test search::state::tests::open_palette_includes_query_and_matcher_in_options ... ok
[INFO] [stdout] test search::state::tests::open_results_palette_is_available_with_zero_hits_when_search_is_active ... ok
[INFO] [stdout] test search::state::tests::open_results_palette_requires_active_search ... ok
[INFO] [stdout] test presenter::tests::render_returns_failed_feedback_for_failed_current_entry ... ok
[INFO] [stdout] test search::state::tests::status_bar_segment_only_shows_position_after_hit_selection ... ok
[INFO] [stdout] test render::worker::tests::enqueue_current_with_preemption_does_not_exceed_inflight_limit ... ok
[INFO] [stdout] test search::state::tests::submit_search_marks_search_active ... ok
[INFO] [stdout] test search::state::tests::worker_completion_warns_when_highlight_is_unavailable ... ok
[INFO] [stdout] test search::state::tests::worker_event_with_stale_epoch_is_ignored ... ok
[INFO] [stdout] test search::worker::tests::interrupted_prewarm_can_resume_after_priority_work ... ok
[INFO] [stdout] test search::worker::tests::search_continues_after_page_text_extraction_failure ... ok
[INFO] [stdout] test search::worker::tests::prewarm_does_not_retry_after_memory_budget_is_reached ... ok
[INFO] [stdout] test search::state::tests::cancel_clears_active_search_state ... ok
[INFO] [stdout] test search::worker::tests::search_page_cache_evicts_least_recently_used_over_max_entries ... ok
[INFO] [stdout] test search::state::tests::submit_empty_query_clears_search_active ... ok
[INFO] [stdout] test search::worker::tests::search_page_cache_evicts_over_memory_budget ... ok
[INFO] [stdout] test search::worker::tests::search_page_cache_hits_after_insert ... ok
[INFO] [stdout] test search::worker::tests::search_page_cache_insert_without_eviction_allows_replacing_existing_entry_within_budget ... ok
[INFO] [stdout] test search::state::tests::worker_event_after_cancel_does_not_change_state_or_notice ... ok
[INFO] [stdout] test search::worker::tests::search_page_cache_reinsertion_does_not_trigger_budget_eviction ... ok
[INFO] [stdout] test search::worker::tests::search_page_cache_reinsertion_replaces_memory_accounting ... ok
[INFO] [stdout] test search::worker::tests::search_page_cache_insert_without_eviction_stops_at_memory_budget ... ok
[INFO] [stdout] test search::worker::tests::search_page_cache_separates_documents ... ok
[INFO] [stdout] test ui::chrome::tests::build_presenter_path_text_formats_presenter_with_proto ... ok
[INFO] [stdout] test ui::chrome::tests::build_presenter_path_text_uses_placeholder_for_unknown_proto ... ok
[INFO] [stdout] test ui::chrome::tests::build_status_text_drops_filename_before_extension ... ok
[INFO] [stdout] test ui::chrome::tests::build_status_text_elides_filename_in_middle_on_tight_width ... ok
[INFO] [stdout] test ui::chrome::tests::build_status_text_handles_very_narrow_width ... ok
[INFO] [stdout] test ui::chrome::tests::build_status_text_includes_page_zoom_and_file ... ok
[INFO] [stdout] test ui::chrome::tests::build_status_text_keeps_page_segment_width_constant ... ok
[INFO] [stdout] test ui::chrome::tests::build_status_text_skips_empty_elided_filename_segment ... ok
[INFO] [stdout] test ui::chrome::tests::build_status_text_uses_single_page_segment_for_cover_solo_page ... ok
[INFO] [stdout] test ui::chrome::tests::build_status_text_uses_last_non_empty_extension_segment ... ok
[INFO] [stdout] test ui::chrome::tests::build_status_text_uses_spread_page_segment ... ok
[INFO] [stdout] test ui::chrome::tests::format_filename_segment_drops_long_name_below_elision_threshold ... ok
[INFO] [stdout] test ui::chrome::tests::format_filename_segment_elides_long_name_at_threshold ... ok
[INFO] [stdout] test ui::chrome::tests::format_filename_segment_keeps_short_name_when_it_fits_under_threshold ... ok
[INFO] [stdout] test ui::help::tests::help_lines_reflect_runtime_registry_changes ... ok
[INFO] [stdout] test ui::layout::tests::centered_rect_stays_within_area ... ok
[INFO] [stdout] test ui::help::tests::help_lines_include_runtime_bindings ... ok
[INFO] [stdout] test ui::help::tests::help_scroll_limit_accounts_for_wrapping ... ok
[INFO] [stdout] test ui::chrome::tests::stylize_notice_line_prefixes_severity ... ok
[INFO] [stdout] test ui::overlay::tests::error_overlay_uses_friendly_title_and_message ... ok
[INFO] [stdout] test ui::layout::tests::split_layout_reserves_status_bar ... ok
[INFO] [stdout] test ui::layout::tests::split_layout_with_debug_reserves_two_status_rows ... ok
[INFO] [stdout] test ui::overlay::tests::draw_palette_overlay_sets_terminal_cursor_position ... ok
[INFO] [stdout] test ui::overlay::tests::loading_overlay_keeps_message_centered_with_vertical_padding ... ok
[INFO] [stdout] test ui::overlay::tests::loading_overlay_uses_fixed_width_for_short_and_long_labels ... ok
[INFO] [stdout] test ui::overlay::tests::palette_item_line_fills_full_row_width_when_wide_text_truncates_in_split_layout ... ok
[INFO] [stdout] test ui::overlay::tests::palette_item_line_hides_right_fragment_when_space_is_tight ... ok
[INFO] [stdout] test ui::overlay::tests::palette_item_line_fills_full_row_width ... ok
[INFO] [stdout] test ui::overlay::tests::palette_item_line_keeps_right_fragment_when_left_is_long ... ok
[INFO] [stdout] test ui::overlay::tests::palette_item_line_reserves_trailing_padding ... ok
[INFO] [stdout] test ui::overlay::tests::palette_item_line_preserves_column_gap_when_left_and_right_exactly_fill_text_width ... ok
[INFO] [stdout] test ui::overlay::tests::palette_item_line_selected_uses_uniform_style ... ok
[INFO] [stdout] test ui::overlay::tests::palette_item_line_uses_single_space_before_detail ... ok
[INFO] [stdout] test ui::overlay::tests::palette_overlay_positions_cursor_at_wide_char_boundary ... ok
[INFO] [stdout] test ui::overlay::tests::palette_overlay_keeps_zwj_emoji_sequence ... ok
[INFO] [stdout] test ui::overlay::tests::palette_overlay_scrolls_cursor_with_long_input ... ok
[INFO] [stdout] test ui::overlay::tests::palette_overlay_positions_cursor_at_end_of_input ... ok
[INFO] [stdout] test ui::overlay::tests::palette_overlay_positions_cursor_on_character ... ok
[INFO] [stdout] test ui::overlay::tests::palette_overlay_handles_multibyte_input_without_panic ... ok
[INFO] [stdout] test ui::overlay::tests::palette_overlay_keeps_combining_sequence ... ok
[INFO] [stdout] test render::worker::tests::cancel_stale_prefetch_drops_results_for_old_generation_prefetch ... ok
[INFO] [stdout] test render::worker::tests::current_enqueue_preempts_prefetch_when_worker_is_full ... ok
[INFO] [stdout] test perf::tests::runtime_smoke_returns_all_scenarios ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 605 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.86s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/pvf-22928d6316e13d47)
[INFO] [stdout] 
[INFO] [stdout] running 12 tests
[INFO] [stdout] test cli::tests::parse_cli_accepts_graphics_protocol_override ... ok
[INFO] [stdout] test cli::tests::parse_cli_accepts_plain_pdf_path ... ok
[INFO] [stdout] test cli::tests::parse_cli_accepts_no_config ... ok
[INFO] [stdout] test cli::tests::parse_cli_accepts_short_config_path ... ok
[INFO] [stdout] test cli::tests::parse_cli_accepts_explicit_config_path ... ok
[INFO] [stdout] test cli::tests::parse_cli_accepts_no_watch_override ... ok
[INFO] [stdout] test cli::tests::parse_cli_accepts_watch_flag ... ok
[INFO] [stdout] test cli::tests::parse_cli_accepts_short_watch_flag ... ok
[INFO] [stdout] test cli::tests::parse_cli_accepts_short_initial_view_overrides ... ok
[INFO] [stdout] test cli::tests::parse_cli_accepts_initial_view_overrides ... ok
[INFO] [stderr]    Doc-tests pvf
[INFO] [stdout] test cli::tests::parse_cli_uses_lowercase_v_for_version ... ok
[INFO] [stdout] test cli::tests::parse_cli_rejects_invalid_combinations ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[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" "c5e76934df4c04f2e1894ea4ddbff79bbc1f4f9a5c9d6a676f59ba5d3612561f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c5e76934df4c04f2e1894ea4ddbff79bbc1f4f9a5c9d6a676f59ba5d3612561f", kill_on_drop: false }`
[INFO] [stdout] c5e76934df4c04f2e1894ea4ddbff79bbc1f4f9a5c9d6a676f59ba5d3612561f
