[INFO] fetching crate drip-cli 0.1.1... [INFO] testing drip-cli-0.1.1 against 1.97.0-beta.6+cargoflags=--release for beta-1.98-release-3 [INFO] extracting crate drip-cli 0.1.1 into /workspace/builds/worker-3-tc1/source [INFO] started tweaking crates.io crate drip-cli 0.1.1 [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate drip-cli 0.1.1 [INFO] tweaked toml for crates.io crate drip-cli 0.1.1 written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate drip-cli 0.1.1 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 crates.io crate drip-cli 0.1.1 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded similar v2.7.0 [INFO] [stderr] Downloaded rusqlite v0.31.0 [INFO] [stderr] Downloaded kqueue-sys v1.1.0 [INFO] [stderr] Downloaded cargo-husky v1.5.0 [INFO] [stderr] Downloaded hashlink v0.9.1 [INFO] [stderr] Downloaded kqueue v1.1.1 [INFO] [stderr] Downloaded filetime v0.2.27 [INFO] [stderr] Downloaded redox_syscall v0.7.5 [INFO] [stderr] Downloaded globset v0.4.18 [INFO] [stderr] Downloaded notify v6.1.1 [INFO] [stderr] Downloaded clap_complete v4.6.3 [INFO] [stderr] Downloaded cc v1.2.61 [INFO] [stderr] Downloaded libsqlite3-sys v0.28.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:00c5645b54fe3ce5dae1417175e3c7fb6a6646c021d554ecd63a097b8b9f3602" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] a76208644b454ab56882168aa70f4530e2bef90e4df06c14188e69038d9d00c0 [INFO] running `Command { std: "docker" "start" "a76208644b454ab56882168aa70f4530e2bef90e4df06c14188e69038d9d00c0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "a76208644b454ab56882168aa70f4530e2bef90e4df06c14188e69038d9d00c0", 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" "a76208644b454ab56882168aa70f4530e2bef90e4df06c14188e69038d9d00c0" "/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" "a76208644b454ab56882168aa70f4530e2bef90e4df06c14188e69038d9d00c0", 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" "a76208644b454ab56882168aa70f4530e2bef90e4df06c14188e69038d9d00c0" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }` [INFO] [stderr] Compiling version_check v0.9.5 [INFO] [stderr] Compiling libc v0.2.186 [INFO] [stderr] Compiling cfg-if v1.0.4 [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling quote v1.0.45 [INFO] [stderr] Compiling unicode-ident v1.0.24 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling zerocopy v0.8.48 [INFO] [stderr] Compiling find-msvc-tools v0.1.9 [INFO] [stderr] Compiling utf8parse v0.2.2 [INFO] [stderr] Compiling shlex v1.3.0 [INFO] [stderr] Compiling typenum v1.20.0 [INFO] [stderr] Compiling anstyle-parse v1.0.0 [INFO] [stderr] Compiling cc v1.2.61 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Compiling pkg-config v0.3.33 [INFO] [stderr] Compiling vcpkg v0.2.15 [INFO] [stderr] Compiling is_terminal_polyfill v1.70.2 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling colorchoice v1.0.5 [INFO] [stderr] Compiling anstyle v1.0.14 [INFO] [stderr] Compiling once_cell v1.21.4 [INFO] [stderr] Compiling anstyle-query v1.1.5 [INFO] [stderr] Compiling crossbeam-utils v0.8.21 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling anstream v1.0.0 [INFO] [stderr] Compiling crc32fast v1.5.0 [INFO] [stderr] Compiling log v0.4.29 [INFO] [stderr] Compiling strsim v0.11.1 [INFO] [stderr] Compiling zmij v1.0.21 [INFO] [stderr] Compiling heck v0.5.0 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling clap_lex v1.1.0 [INFO] [stderr] Compiling block-buffer v0.10.4 [INFO] [stderr] Compiling crypto-common v0.1.7 [INFO] [stderr] Compiling clap_builder v4.6.0 [INFO] [stderr] Compiling libsqlite3-sys v0.28.0 [INFO] [stderr] Compiling inotify-sys v0.1.5 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling hashbrown v0.17.0 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling anyhow v1.0.102 [INFO] [stderr] Compiling adler2 v2.0.1 [INFO] [stderr] Compiling same-file v1.0.6 [INFO] [stderr] Compiling bitflags v1.3.2 [INFO] [stderr] Compiling simd-adler32 v0.3.9 [INFO] [stderr] Compiling option-ext v0.2.0 [INFO] [stderr] Compiling equivalent v1.0.2 [INFO] [stderr] Compiling indexmap v2.14.0 [INFO] [stderr] Compiling clap_derive v4.6.1 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling hashbrown v0.14.5 [INFO] [stderr] Compiling miniz_oxide v0.8.9 [INFO] [stderr] Compiling dirs-sys v0.4.1 [INFO] [stderr] Compiling hashlink v0.9.1 [INFO] [stderr] Compiling inotify v0.9.6 [INFO] [stderr] Compiling walkdir v2.5.0 [INFO] [stderr] Compiling crossbeam-channel v0.5.15 [INFO] [stderr] Compiling clap v4.6.1 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling mio v0.8.11 [INFO] [stderr] Compiling filetime v0.2.27 [INFO] [stderr] Compiling bstr v1.12.1 [INFO] [stderr] Compiling bitflags v2.11.1 [INFO] [stderr] Compiling fallible-iterator v0.3.0 [INFO] [stderr] Compiling fallible-streaming-iterator v0.1.9 [INFO] [stderr] Compiling cpufeatures v0.2.17 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling itoa v1.0.18 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling notify v6.1.1 [INFO] [stderr] Compiling globset v0.4.18 [INFO] [stderr] Compiling clap_complete v4.6.3 [INFO] [stderr] Compiling flate2 v1.1.9 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling dirs v5.0.1 [INFO] [stderr] Compiling similar v2.7.0 [INFO] [stderr] Compiling rusqlite v0.31.0 [INFO] [stderr] Compiling drip-cli v0.1.1 (/opt/rustwide/workdir) [INFO] [stderr] Finished `release` profile [optimized] target(s) in 3m 42s [INFO] running `Command { std: "docker" "inspect" "a76208644b454ab56882168aa70f4530e2bef90e4df06c14188e69038d9d00c0", 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" "a76208644b454ab56882168aa70f4530e2bef90e4df06c14188e69038d9d00c0" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }` [INFO] [stderr] Compiling once_cell v1.21.4 [INFO] [stderr] Compiling bitflags v2.11.1 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling getrandom v0.4.2 [INFO] [stderr] Compiling linux-raw-sys v0.12.1 [INFO] [stderr] Compiling cargo-husky v1.5.0 [INFO] [stderr] Compiling fastrand v2.4.1 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Compiling hashbrown v0.14.5 [INFO] [stderr] Compiling hashlink v0.9.1 [INFO] [stderr] Compiling rusqlite v0.31.0 [INFO] [stderr] Compiling tempfile v3.27.0 [INFO] [stderr] Compiling drip-cli v0.1.1 (/opt/rustwide/workdir) [INFO] [stderr] Finished `release` profile [optimized] target(s) in 2m 30s [INFO] running `Command { std: "docker" "inspect" "a76208644b454ab56882168aa70f4530e2bef90e4df06c14188e69038d9d00c0", 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" "a76208644b454ab56882168aa70f4530e2bef90e4df06c14188e69038d9d00c0" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--release", kill_on_drop: false }` [INFO] [stderr] Finished `release` profile [optimized] target(s) in 0.21s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/release/deps/drip-7e8ae260acf3cdc9) [INFO] [stdout] [INFO] [stdout] running 172 tests [INFO] [stdout] test commands::completions::tests::parse_known_shells ... ok [INFO] [stdout] test commands::completions::tests::from_shell_var_strips_path ... ok [INFO] [stdout] test commands::doctor::tests::hook_present_matches_drip_subcommand ... ok [INFO] [stdout] test commands::doctor::tests::section_worst_picks_most_severe ... ok [INFO] [stdout] test commands::completions::tests::fingerprints_distinguish_auto_installable_shells ... ok [INFO] [stdout] test commands::completions::tests::shell_var_only_matches_auto_installable_shells ... ok [INFO] [stdout] test commands::init::tests::encode_toml_string_escapes_basic_string_special_chars ... ok [INFO] [stdout] test commands::init::tests::encode_toml_string_falls_back_to_basic_for_apostrophe_paths ... ok [INFO] [stdout] test commands::init::tests::encode_toml_string_picks_literal_for_safe_paths ... ok [INFO] [stdout] test commands::init::tests::is_owned_drip_hook_command_identifies_drip_hooks ... ok [INFO] [stdout] test commands::doctor::tests::fmt_bytes_thresholds ... ok [INFO] [stdout] test commands::init::tests::shell_quote_handles_spaces_in_path ... ok [INFO] [stdout] test commands::init::tests::shell_quote_passthrough_for_safe_paths ... ok [INFO] [stdout] test commands::init::tests::shell_quote_quotes_other_shell_metacharacters ... ok [INFO] [stdout] test commands::read::tests::render_with_session_delta_no_summary_matches_helper ... ok [INFO] [stdout] test commands::completions::tests::powershell_and_elvish_generate_nonempty_scripts ... ok [INFO] [stdout] test commands::read::tests::render_with_session_unchanged_empty_file_matches_helper ... ok [INFO] [stdout] test commands::read::tests::render_with_session_edit_certificate_matches_helper ... ok [INFO] [stdout] test commands::read::tests::render_with_session_unchanged_carries_ttl_warning ... ok [INFO] [stdout] test commands::read::tests::render_with_session_delta_matches_helper ... ok [INFO] [stdout] test commands::read::tests::render_with_session_window_unchanged_matches_helper ... ok [INFO] [stdout] test commands::init::tests::shell_quote_handles_path_with_single_quote ... ok [INFO] [stdout] test commands::read::tests::render_with_session_unchanged_matches_helper ... ok [INFO] [stdout] test commands::update::tests::detect_install_script ... ok [INFO] [stdout] test commands::doctor::tests::fmt_thousands_basic ... ok [INFO] [stdout] test commands::update::tests::detect_cargo_install ... ok [INFO] [stdout] test commands::update::tests::detect_unknown ... ok [INFO] [stdout] test commands::update::tests::fake_latest_env_var_short_circuits_network ... ok [INFO] [stdout] test commands::update::tests::detect_homebrew_macos_arm ... ok [INFO] [stdout] test commands::update::tests::detect_homebrew_macos_intel ... ok [INFO] [stdout] test commands::update::tests::semver_handles_prerelease_suffix ... ok [INFO] [stdout] test commands::update::tests::semver_strict_ordering ... ok [INFO] [stdout] test commands::update::tests::short_stderr_handles_empty_input ... ok [INFO] [stdout] test commands::update::tests::short_stderr_returns_first_line ... ok [INFO] [stdout] test core::cache::tests::cache_dir_is_created_with_strict_perms_atomically ... ok [INFO] [stdout] test core::cache::tests::inline_default_is_32k ... ok [INFO] [stdout] test core::cache::tests::missing_blob_returns_none_not_err ... ok [INFO] [stdout] test core::cache::tests::pick_storage_at_boundary ... ok [INFO] [stdout] test core::cache::tests::read_blob_refuses_to_follow_symlink ... ok [INFO] [stdout] test core::cache::tests::rejects_path_traversal_via_absolute_hash ... ok [INFO] [stdout] test commands::update::tests::fake_latest_strips_leading_v ... ok [INFO] [stdout] test core::cache::tests::rejects_path_traversal_via_dotdot_hash ... ok [INFO] [stdout] test commands::update::tests::semver_handles_garbage_components ... ok [INFO] [stdout] test core::cache::tests::rejects_short_or_non_hex_hash ... ok [INFO] [stdout] test core::cache::tests::write_and_read_roundtrip ... ok [INFO] [stdout] test commands::update::tests::http_get_surfaces_both_diagnostics_when_neither_tool_is_in_path ... ok [INFO] [stdout] test core::cache::tests::write_blob_replaces_planted_symlink ... ok [INFO] [stdout] test core::compress::tests::brace_inside_string_does_not_break_balancing ... ok [INFO] [stdout] test core::cache::tests::write_is_idempotent_on_existing_blob ... ok [INFO] [stdout] test commands::read::tests::render_with_session_window_delta_matches_helper ... ok [INFO] [stdout] test commands::registry::tests::parse_duration_handles_common_formats ... ok [INFO] [stdout] test commands::update::tests::detect_homebrew_linuxbrew ... ok [INFO] [stdout] test commands::update::tests::short_stderr_truncates_overly_long_first_line ... ok [INFO] [stdout] test core::compress::tests::c_function_compresses ... ok [INFO] [stdout] test core::compress::tests::c_function_pointer_assignment_is_not_elided ... ok [INFO] [stdout] test core::compress::tests::cpp_allman_method_compresses ... ok [INFO] [stdout] test core::compress::tests::control_flow_blocks_are_never_elided ... ok [INFO] [stdout] test core::compress::tests::cpp_template_method_compresses ... ok [INFO] [stdout] test core::compress::tests::csharp_allman_attributes_stay_with_signature ... ok [INFO] [stdout] test core::compress::tests::csharp_method_compresses ... ok [INFO] [stdout] test core::compress::tests::csharp_allman_method_compresses ... ok [INFO] [stdout] test core::compress::tests::brace_source_map_covers_body_range ... ok [INFO] [stdout] test core::compress::tests::csharp_allman_with_generic_constraints_compresses ... ok [INFO] [stdout] test core::compress::tests::detect_language_by_extension ... ok [INFO] [stdout] test core::compress::tests::csharp_record_with_semicolon_is_left_alone ... ok [INFO] [stdout] test core::compress::tests::go_interface_methods_stay_visible ... ok [INFO] [stdout] test core::compress::tests::go_multi_line_signature_compresses ... ok [INFO] [stdout] test core::compress::tests::go_method_receiver_compresses ... ok [INFO] [stdout] test core::compress::tests::go_top_level_function_compresses ... ok [INFO] [stdout] test core::compress::tests::java_compresses_methods_but_keeps_class_signatures_visible ... ok [INFO] [stdout] test core::compress::tests::cpp_constructor_with_member_init_list_compresses ... ok [INFO] [stdout] test core::compress::tests::java_annotated_method_with_throws_compresses ... ok [INFO] [stdout] test core::compress::tests::java_long_javadoc_is_compressed ... ok [INFO] [stdout] test core::compress::tests::java_multi_line_signature_compresses ... ok [INFO] [stdout] test core::compress::tests::csharp_primary_constructor_class_is_not_elided_as_method ... ok [INFO] [stdout] test core::compress::tests::cpp_compresses_function_with_namespace_qualified_name ... ok [INFO] [stdout] test core::compress::tests::c_multi_line_function_signature_compresses ... ok [INFO] [stdout] test core::compress::tests::javadoc_compression_can_be_disabled_via_env ... ok [INFO] [stdout] test core::compress::tests::js_generator_function_compresses ... ok [INFO] [stdout] test core::compress::tests::kotlin_anonymous_object_override_fun_compresses ... ok [INFO] [stdout] test core::compress::tests::js_async_function_declaration_compresses ... ok [INFO] [stdout] test core::compress::tests::java_record_with_body_keeps_inner_methods_visible ... ok [INFO] [stdout] test core::compress::tests::kotlin_data_class_is_not_elided_as_method ... ok [INFO] [stdout] test core::compress::tests::java_short_javadoc_is_kept_full ... ok [INFO] [stdout] test core::compress::tests::kotlin_companion_object_fun_compresses ... ok [INFO] [stdout] test core::compress::tests::javadoc_collapse_records_elided_range_in_source_map ... ok [INFO] [stdout] test core::compress::tests::kotlin_fun_interface_is_not_elided_as_method ... ok [INFO] [stdout] test core::compress::tests::kotlin_extension_fun_with_generics_compresses ... ok [INFO] [stdout] test core::compress::tests::kotlin_func_keyword_compresses ... ok [INFO] [stdout] test core::compress::tests::kotlin_multi_line_signature_compresses ... ok [INFO] [stdout] test core::compress::tests::kotlin_value_class_is_not_elided_as_method ... ok [INFO] [stdout] test core::compress::tests::kotlin_open_class_is_not_elided_as_method ... ok [INFO] [stdout] test core::compress::tests::php_class_method_compresses ... ok [INFO] [stdout] test core::compress::tests::kotlin_inline_reified_fun_compresses ... ok [INFO] [stdout] test core::compress::tests::php_function_compresses ... ok [INFO] [stdout] test core::compress::tests::python_async_method_inside_class_elided ... ok [INFO] [stdout] test core::compress::tests::php_static_method_compresses ... ok [INFO] [stdout] test core::compress::tests::kotlin_value_initializer_with_trailing_lambda_is_not_elided ... ok [INFO] [stdout] test core::compress::tests::kotlin_visibility_modifier_fun_compresses ... ok [INFO] [stdout] test core::compress::tests::no_compression_when_disabled ... ok [INFO] [stdout] test core::compress::tests::python_class_methods_elided_individually_pricing_engine ... ok [INFO] [stdout] test core::compress::tests::python_class_with_only_short_methods_returns_none ... ok [INFO] [stdout] test core::compress::tests::python_compresses_long_function ... ok [INFO] [stdout] test core::compress::tests::js_arrow_function_compresses ... ok [INFO] [stdout] test core::compress::tests::python_multiline_method_signature_preserved ... ok [INFO] [stdout] test core::compress::tests::python_nested_class_methods_visible ... ok [INFO] [stdout] test core::compress::tests::python_source_map_records_function_signature_visible_and_body_elided ... ok [INFO] [stdout] test core::compress::tests::python_short_body_kept_inline ... ok [INFO] [stdout] test core::compress::tests::rust_async_fn_compresses ... ok [INFO] [stdout] test core::compress::tests::rust_impl_block_methods_elided_individually ... ok [INFO] [stdout] test core::compress::tests::python_top_level_function_alongside_class ... ok [INFO] [stdout] test core::compress::tests::rust_compresses_function_bodies ... ok [INFO] [stdout] test core::compress::tests::rust_struct_literal_is_not_a_function_open ... ok [INFO] [stdout] test core::compress::tests::rust_trait_with_default_body_compresses ... ok [INFO] [stdout] test core::compress::tests::scala_case_class_is_not_elided ... ok [INFO] [stdout] test core::compress::tests::scala_def_method_compresses ... ok [INFO] [stdout] test core::compress::tests::source_map_has_one_entry_per_compressed_line ... ok [INFO] [stdout] test core::compress::tests::scala_object_methods_compress ... ok [INFO] [stdout] test core::compress::tests::swift_extension_methods_compress ... ok [INFO] [stdout] test core::compress::tests::swift_func_compresses ... ok [INFO] [stdout] test core::compress::tests::swift_method_with_throws_compresses ... ok [INFO] [stdout] test core::compress::tests::swift_init_compresses ... ok [INFO] [stdout] test core::compress::tests::ts_class_methods_with_modifiers_compress ... ok [INFO] [stdout] test core::compress::tests::ts_export_class_is_not_elided ... ok [INFO] [stdout] test core::compress::tests::ts_type_guard_signature_compresses ... ok [INFO] [stdout] test core::differ::tests::binary_detected_via_nul ... ok [INFO] [stdout] test core::differ::tests::changed_pct_env_accepts_fraction_or_percent ... ok [INFO] [stdout] test core::differ::tests::changed_pct_env_ignores_invalid_numbers ... ok [INFO] [stdout] test core::differ::tests::classify_routes_correctly ... ok [INFO] [stdout] test core::differ::tests::diff_marks_added_and_removed_lines ... ok [INFO] [stdout] test core::differ::tests::equal_inputs_yield_no_diff ... ok [INFO] [stdout] test core::differ::tests::invalid_utf8_is_binary ... ok [INFO] [stdout] test core::compress::tests::rust_multi_line_signature_compresses ... ok [INFO] [stdout] test core::differ::tests::truncation_threshold ... ok [INFO] [stdout] test core::differ::tests::pure_ascii_not_binary ... ok [INFO] [stdout] test core::git::tests::detached_head_returns_short_sha ... ok [INFO] [stdout] test core::git::tests::gitlink_pointing_to_missing_dir_bails ... ok [INFO] [stdout] test core::git::tests::empty_head_bails ... ok [INFO] [stdout] test core::git::tests::missing_head_bails ... ok [INFO] [stdout] test core::git::tests::slash_in_branch_name_kept_verbatim ... ok [INFO] [stdout] test core::ignore::tests::comments_and_blanks_skipped ... ok [INFO] [stdout] test core::ignore::tests::defaults_match_lock_files ... ok [INFO] [stdout] test core::git::tests::garbage_head_bails_silently ... ok [INFO] [stdout] test core::ignore::tests::defaults_match_node_modules ... ok [INFO] [stdout] test core::git::tests::nested_dir_walks_up_to_repo_root ... ok [INFO] [stdout] test core::git::tests::worktree_resolves_to_secondary_gitdir ... ok [INFO] [stdout] test core::ignore::tests::canonicalize_dir_pattern_helper ... ok [INFO] [stdout] test core::git::tests::no_repo_returns_none ... ok [INFO] [stdout] test core::ignore::tests::explicit_double_star_still_works_unchanged ... ok [INFO] [stdout] test core::ignore::tests::trailing_slash_does_not_leak_to_siblings ... ok [INFO] [stdout] test core::ignore::tests::trailing_slash_matches_immediate_children ... ok [INFO] [stdout] test core::ignore::tests::trailing_slash_matches_arbitrary_depth ... ok [INFO] [stdout] test core::ignore::tests::negation_re_includes ... ok [INFO] [stdout] test core::session::seen_ranges_tests::cover_empty_ranges_never_matches ... ok [INFO] [stdout] test core::session::seen_ranges_tests::merge_coalesces_adjacency ... ok [INFO] [stdout] test core::session::seen_ranges_tests::cover_requires_inclusion ... ok [INFO] [stdout] test core::session::seen_ranges_tests::merge_coalesces_overlap ... ok [INFO] [stdout] test core::ignore::tests::malformed_pattern_does_not_panic ... ok [INFO] [stdout] test core::session::seen_ranges_tests::merge_drops_invalid_ranges ... ok [INFO] [stdout] test core::session::seen_ranges_tests::merge_keeps_disjoint_intervals_sorted ... ok [INFO] [stdout] test core::session::seen_ranges_tests::parse_handles_null_and_empty ... ok [INFO] [stdout] test hooks::claude_post_edit::parse_diff_hunks_tests::contiguous_two_line_change_merges_into_one_range ... ok [INFO] [stdout] test hooks::claude_post_edit::parse_diff_hunks_tests::one_line_modification_collapses_to_that_line_only ... ok [INFO] [stdout] test hooks::claude_post_edit::parse_diff_hunks_tests::pure_deletion_anchors_at_hunk_start_with_zero_width ... ok [INFO] [stdout] test core::git::tests::primary_repo_main_branch ... ok [INFO] [stdout] test core::ignore::tests::trailing_slash_negation_re_includes_descendants ... ok [INFO] [stdout] test core::session::seen_ranges_tests::parse_tolerates_garbage ... ok [INFO] [stdout] test hooks::claude_post_edit::parse_diff_hunks_tests::pure_insertion_reports_only_the_new_lines ... ok [INFO] [stdout] test core::session::seen_ranges_tests::serialize_round_trips ... ok [INFO] [stdout] test core::ignore::tests::user_pattern_adds_to_defaults ... ok [INFO] [stdout] test hooks::claude_post_edit::parse_diff_hunks_tests::replace_block_reports_only_the_new_block ... ok [INFO] [stdout] test hooks::claude_post_edit::parse_diff_hunks_tests::two_distant_hunks_yield_two_separate_ranges ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 172 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s [INFO] [stdout] [INFO] [stderr] Running tests/integration.rs (/opt/rustwide/target/release/deps/integration-f8cd7733de5bd536) [INFO] [stdout] [INFO] [stdout] running 263 tests [INFO] [stdout] test agent_ux::compress_first_read_disabled_by_default_keeps_native_passthrough ... ok [INFO] [stdout] test agent_ux::compress_first_read_opt_in_falls_back_to_native_when_no_savings ... ok [INFO] [stdout] test accounting_audit::audit_tiny_partial_window_passes_through_when_marker_costs_more ... ok [INFO] [stdout] test accounting_audit::audit_placeholder_fallbacks_are_conservative ... ok [INFO] [stdout] test accounting_audit::audit_claude_full_read_then_unchanged_accounts_actual_payload ... ok [INFO] [stdout] test accounting_audit::audit_edit_certificate_counts_rendered_certificate_not_full_file ... ok [INFO] [stdout] test agent_ux::p3_honest_typos_still_error ... ok [INFO] [stdout] test accounting_audit::audit_delta_counts_current_file_and_rendered_diff_payload ... ok [INFO] [stdout] test accounting_audit::audit_partial_read_uses_window_as_counterfactual ... ok [INFO] [stdout] test agent_ux::compress_first_read_opt_in_substitutes_when_savings_are_meaningful ... ok [INFO] [stdout] test agent_ux::p3_hook_known_subcommand_still_works ... ok [INFO] [stdout] test agent_ux::p3_hook_unknown_subcommand_returns_empty_object ... ok [INFO] [stdout] test agent_ux::p1_meter_omits_oob_line_when_no_refreshes_yet ... ok [INFO] [stdout] test agents_install::codex_init_refreshes_stale_block_with_old_args ... ok [INFO] [stdout] test agents_install::codex_uninstall_is_idempotent ... ok [INFO] [stdout] test agents_install::codex_uninstall_removes_mcp_and_agents_blocks ... ok [INFO] [stdout] test agent_ux::p2_meter_session_keeps_derived_when_it_has_reads ... ok [INFO] [stdout] test agent_ux::p2_meter_session_auto_picks_active_session_in_cwd ... ok [INFO] [stdout] test agents_install::drip_mcp_agent_flag_sets_env_var_for_session ... ok [INFO] [stdout] test agent_ux::sessions_list_and_ls_are_no_op_aliases_of_sessions ... ok [INFO] [stdout] test agents_install::gemini_init_writes_agent_flag_in_args ... ok [INFO] [stdout] test agents_install::gemini_init_preserves_user_settings ... ok [INFO] [stdout] test agents_install::gemini_init_writes_settings_and_gemini_md ... ok [INFO] [stdout] test agents_install::gemini_uninstall_removes_drip_only ... ok [INFO] [stdout] test agents_install::malformed_mcp_json_fails_loudly_rather_than_clobbering ... ok [INFO] [stdout] test agent_ux::source_map_auto_picks_agent_session_in_cwd ... ok [INFO] [stdout] test agents_install::drip_agent_unknown_value_falls_back_to_heuristic ... ok [INFO] [stdout] test claude_init::claude_md_append_idempotent ... ok [INFO] [stdout] test agents_install::drip_agent_env_persists_to_session_row ... ok [INFO] [stdout] test claude_init::drip_md_created_on_init ... ok [INFO] [stdout] test claude_init::claude_md_created_if_missing ... ok [INFO] [stdout] test claude_init::claude_md_append_preserves_existing_content ... ok [INFO] [stdout] test agent_ux::p1_meter_counts_oob_refresh_after_external_change ... ok [INFO] [stdout] test claude_init::global_install_targets_home_claude_dir ... ok [INFO] [stdout] test codex_init::codex_init_preserves_existing_user_config ... ok [INFO] [stdout] test claude_init::init_registers_session_start_compact_clear_hook ... ok [INFO] [stdout] test agent_ux::refresh_clears_baselines_across_every_session ... ok [INFO] [stdout] test codex_init::codex_init_writes_mcp_config_and_agents_md ... ok [INFO] [stdout] test completions::completions_elvish_nonempty ... ok [INFO] [stdout] test completions::completions_bash_nonempty ... ok [INFO] [stdout] test completions::completions_zsh_nonempty ... ok [INFO] [stdout] test completions::completions_unknown_shell_error ... ok [INFO] [stdout] test agent_ux::replay_auto_picks_agent_session_in_cwd ... ok [INFO] [stdout] test completions::completions_fish_nonempty ... ok [INFO] [stdout] test completions::completions_contain_subcommands ... ok [INFO] [stdout] test completions::completions_powershell_nonempty ... ok [INFO] [stdout] test claude_init::uninstall_removes_reference_only ... ok [INFO] [stdout] test completions::init_installs_fish_completion_file ... ok [INFO] [stdout] test completions::init_skips_powershell_auto_install ... ok [INFO] [stdout] test codex_init::codex_init_is_idempotent ... ok [INFO] [stdout] test completions::init_installs_zsh_completion_file ... ok [INFO] [stdout] test completions::init_unknown_shell_skips_silently ... ok [INFO] [stdout] test completions::uninstall_preserves_user_authored_completion ... ok [INFO] [stdout] test completions::uninstall_removes_zsh_completion ... ok [INFO] [stdout] test completions::init_installs_bash_completion_file ... ok [INFO] [stdout] test compression::complex_diff_falls_back_to_full_read ... ok [INFO] [stdout] test compression::baseline_kept_uncompressed_so_diffs_still_work ... ok [INFO] [stdout] test compression::compressed_read_persists_source_map_in_db ... ok [INFO] [stdout] test cross_platform::binary_has_no_exe_extension_on_unix ... ok [INFO] [stdout] test compression::rust_first_read_compresses_long_functions ... ok [INFO] [stdout] test compression::small_files_skip_compression ... ok [INFO] [stdout] test compression::compression_disabled_via_env ... ok [INFO] [stdout] test compression::first_read_python_is_semantically_compressed ... ok [INFO] [stdout] test compression::uncompressed_read_leaves_source_map_null ... ok [INFO] [stdout] test diff_accuracy::binary_file_is_never_diffed ... ok [INFO] [stdout] test concurrency::three_concurrent_agents_no_deadlock ... ok [INFO] [stdout] test cross_platform::data_dir_under_drip_data_dir_override ... ok [INFO] [stdout] test diff_accuracy::nonexistent_file_returns_error_first_time ... ok [INFO] [stdout] test cross_platform::read_roundtrip_works_on_this_platform ... ok [INFO] [stdout] test diff_accuracy::modified_file_returns_unified_diff_no_information_loss ... ok [INFO] [stdout] test diff_accuracy::first_read_returns_full_content ... ok [INFO] [stdout] test concurrency::parallel_writers_to_same_file_serialize_cleanly ... ok [INFO] [stdout] test diff_perf::diff_under_budget_50kb ... ok [INFO] [stdout] test diff_accuracy::second_identical_read_is_unchanged ... ok [INFO] [stdout] test doctor::doctor_does_not_error_on_project_claude_md_when_global_covers ... ok [INFO] [stdout] test doctor::doctor_detects_missing_hooks ... ok [INFO] [stdout] test doctor::doctor_exit_code_nonzero_on_error ... ok [INFO] [stdout] test diff_perf::diff_under_budget_99kb ... ok [INFO] [stdout] test doctor::doctor_flags_missing_session_start_hook_as_error_with_recovery_hint ... ok [INFO] [stdout] test doctor::doctor_detects_drip_md_without_marker ... ok [INFO] [stdout] test dripignore::drip_disable_bypasses_dripignore_for_glob ... ok [INFO] [stdout] test doctor::doctor_exit_code_zero_when_clean ... ok [INFO] [stdout] test doctor::doctor_handles_missing_db_gracefully ... ok [INFO] [stdout] test doctor::doctor_quiet_output ... ok [INFO] [stdout] test doctor::doctor_json_output_valid ... ok [INFO] [stdout] test dripignore::glob_hook_filters_out_node_modules ... ok [INFO] [stdout] test diff_perf::unchanged_path_is_fast ... ok [INFO] [stdout] test doctor::doctor_session_start_check_accepts_compact_clear_matcher_only ... ok [INFO] [stdout] test dripignore::user_dripignore_extends_defaults ... ok [INFO] [stdout] test dry_run::dry_run_after_real_read_predicts_unchanged ... ok [INFO] [stdout] test edge_cases::large_file_skips_diff ... ok [INFO] [stdout] test edge_cases::deleted_file_after_first_read_reports_deletion ... ok [INFO] [stdout] test edge_cases::truncation_falls_back_to_full_read ... ok [INFO] [stdout] test dripignore::read_of_lock_file_is_substituted_with_placeholder ... ok [INFO] [stdout] test gemini_compress_hook::init_gemini_is_idempotent_on_hook_block ... ok [INFO] [stdout] test mcp_server::mcp_initialize_lists_read_file_tool ... ok [INFO] [stdout] test gemini_compress_hook::init_gemini_global_writes_mcp_and_compress_hook ... ok [INFO] [stdout] test gemini_compress_hook::gemini_compress_hook_tolerates_empty_payload ... ok [INFO] [stdout] test mcp_server::mcp_rejects_oversized_request_line ... ok [INFO] [stdout] test dripignore::trailing_slash_pattern_matches_descendants_like_gitignore ... ok [INFO] [stdout] test gemini_compress_hook::doctor_warns_when_mcp_present_but_hook_missing ... ok [INFO] [stdout] test doctor::doctor_reports_clean_after_init ... ok [INFO] [stdout] test dry_run::dry_run_does_not_persist_baseline ... ok [INFO] [stdout] test gemini_compress_hook::gemini_compress_hook_bumps_ledger_and_wipes_reads ... ok [INFO] [stdout] test meter_output::meter_human_output_is_terse_when_no_color ... ok [INFO] [stdout] test meter_output::meter_no_ghost_hint_on_clean_install ... ok [INFO] [stdout] test meter_output::lifetime_stats_self_heal_on_drift ... ok [INFO] [stdout] test meter_output::meter_json_has_expected_schema ... ok [INFO] [stdout] test post_edit_hook::cert_disabled_falls_back_to_passthrough ... ok [INFO] [stdout] test post_edit_hook::post_edit_does_not_persist_dripignored_secrets ... ok [INFO] [stdout] test mcp_server::mcp_tools_call_returns_full_then_delta ... ok [INFO] [stdout] test post_edit_hook::cert_requires_existing_baseline ... ok [INFO] [stdout] test post_edit_hook::cert_contains_hash_and_changed_ranges ... ok [INFO] [stdout] test post_edit_hook::no_warning_when_edited_function_body_was_visible ... ok [INFO] [stdout] test meter_output::meter_warns_when_lifetime_polluted_by_ghost_files ... ok [INFO] [stdout] test post_edit_hook::unrelated_tools_dont_touch_baseline ... ok [INFO] [stdout] test post_edit_hook::warns_when_edit_targets_an_elided_function_body ... ok [INFO] [stdout] test post_edit_hook::cert_is_one_shot_then_unchanged ... ok [INFO] [stdout] test pre_edit_hook::drip_disable_bypasses_the_guard ... ok [INFO] [stdout] test post_edit_hook::edit_then_read_returns_unchanged ... ok [INFO] [stdout] test pre_edit_hook::unknown_tool_passes_through ... ok [INFO] [stdout] test pre_edit_hook::edit_on_signature_line_passes_through ... ok [INFO] [stdout] test pre_edit_hook::drip_pre_edit_warn_zero_bypasses_the_guard ... ok [INFO] [stdout] test pre_edit_hook::edit_inside_elided_body_is_denied_with_symbol_and_range ... ok [INFO] [stdout] test pre_edit_hook::no_source_map_means_no_block ... ok [INFO] [stdout] test pre_edit_hook::multiedit_with_one_elided_target_is_denied_for_that_target ... ok [INFO] [stdout] test pre_edit_hook::untracked_file_means_no_block ... ok [INFO] [stdout] test pre_edit_hook::edit_outside_elided_region_passes_through ... ok [INFO] [stdout] test read_offset_limit::first_read_over_claude_limit_substitutes_compressed_view ... ok [INFO] [stdout] test post_edit_hook::write_tool_also_refreshes_baseline ... ok [INFO] [stdout] test pre_edit_hook::very_short_old_string_does_not_trigger_spurious_block ... ok [INFO] [stdout] test pre_edit_hook::write_tool_warns_on_any_compressed_file ... ok [INFO] [stdout] test read_offset_limit::first_read_past_large_file_cap_still_compresses ... ok [INFO] [stdout] test read_offset_limit::first_read_over_limit_falls_back_to_allow_when_compression_unavailable ... ok [INFO] [stdout] test read_offset_limit::deleted_file_with_baseline_under_symlinked_parent_returns_deleted ... ok [INFO] [stdout] test read_offset_limit::first_read_under_limit_still_passes_native ... ok [INFO] [stdout] test read_offset_limit::partial_read_delta_bigger_than_window_passes_through_native ... ok [INFO] [stdout] test read_offset_limit::partial_read_on_unchanged_baseline_returns_window_unchanged ... ok [INFO] [stdout] test read_offset_limit::partial_read_after_external_change_outside_window_still_passes_through ... ok [INFO] [stdout] test read_offset_limit::full_read_after_partial_read_delivers_full_then_collapses ... ok [INFO] [stdout] test read_offset_limit::full_read_after_external_change_passes_through_not_delta ... ok [INFO] [stdout] test read_offset_limit::partial_read_after_external_change_passes_through_to_refresh_harness ... ok [INFO] [stdout] test read_offset_limit::partial_read_on_visible_region_after_compression_returns_window_unchanged ... ok [INFO] [stdout] test read_offset_limit::partial_read_passthrough_accounts_window_tokens_not_file_size ... ok [INFO] [stdout] test read_offset_limit::read_with_offset_passes_through ... ok [INFO] [stdout] test read_offset_limit::partial_read_on_elided_region_passes_through_native ... ok [INFO] [stdout] test read_offset_limit::partial_read_without_baseline_passes_through_native ... ok [INFO] [stdout] test read_offset_limit::partial_read_does_not_mutate_baseline ... ok [INFO] [stdout] test registry::registry_disabled_env_var_skips_lookup ... ok [INFO] [stdout] test registry::registry_changed_trailer_counts_as_sent_tokens ... ok [INFO] [stdout] test registry::registry_full_content_always_sent_on_first_read ... ok [INFO] [stdout] test read_offset_limit::read_with_only_limit_also_passes_through ... ok [INFO] [stdout] test read_offset_limit::partial_read_savings_appear_in_session_meter ... ok [INFO] [stdout] test registry::registry_gc_default_is_30_days ... ok [INFO] [stdout] test regressions::drip_disable_env_makes_read_hook_passthrough ... ok [INFO] [stdout] test read_offset_limit::partial_reads_track_per_window_coverage ... ok [INFO] [stdout] test registry::registry_unknown_file_uses_existing_first_read_header ... ok [INFO] [stdout] test registry::registry_known_changed_emits_diff_trailer ... ok [INFO] [stdout] test regressions::init_writes_absolute_path_for_hooks ... ok [INFO] [stdout] test read_offset_limit::unchanged_reread_of_oversized_file_collapses_to_sentinel ... ok [INFO] [stdout] test regressions::mcp_workspace_root_refuses_unresolvable_paths ... ok [INFO] [stdout] test regressions::explicit_session_id_creates_real_sessions_row ... ok [INFO] [stdout] test regressions::huge_file_short_circuits_via_metadata ... ok [INFO] [stdout] test registry::registry_known_unchanged_emits_unchanged_header ... ok [INFO] [stdout] test registry::registry_gc_drops_old_entries ... ok [INFO] [stdout] test regressions::mcp_workspace_root_blocks_outside_paths ... ok [INFO] [stdout] test regressions::post_edit_hook_skips_oversized_files ... ok [INFO] [stdout] test registry::registry_stats_reports_known_files_count ... ok [INFO] [stdout] test regressions::drip_reject_symlinks_falls_back ... ok [INFO] [stdout] test regressions::post_edit_increments_lifetime_edit_counters ... ok [INFO] [stdout] test regressions::meter_lifetime_aggregates_across_sessions ... ok [INFO] [stdout] test regressions::meter_json_uses_real_session_started_at ... ok [INFO] [stdout] test regressions::meter_session_accepts_explicit_id ... ok [INFO] [stdout] test regressions::post_edit_then_read_passes_through ... ok [INFO] [stdout] test regressions::meter_includes_dollars_and_co2 ... ok [INFO] [stdout] test regressions::readonly_commands_do_not_create_session_rows ... ok [INFO] [stdout] test regressions::refresh_clears_one_file_baseline ... ok [INFO] [stdout] test regressions::refresh_clears_passthrough_marker ... ok [INFO] [stdout] test replay::replay_filters_by_file_substring ... ok [INFO] [stdout] test regressions::tiny_file_diff_falls_back_to_full ... ok [INFO] [stdout] test replay::replay_full_includes_rendered_output ... ok [INFO] [stdout] test reset_modes::reset_all_and_stats_together_is_a_clear_error ... ok [INFO] [stdout] test regressions::meter_handles_bad_pricing_env ... ok [INFO] [stdout] test replay::replay_log_disabled_via_env ... ok [INFO] [stdout] test reset_modes::reset_all_without_force_prompts_and_no_answer_aborts ... ok [INFO] [stdout] test regressions::reset_clears_all_session_scoped_tables ... ok [INFO] [stdout] test replay::replay_records_every_intercepted_read ... ok [INFO] [stdout] test session_keying::detached_head_uses_short_sha_as_context ... ok [INFO] [stdout] test session_keying::drip_meter_lifetime_does_not_pollute_with_strategy_fields ... ok [INFO] [stdout] test reset_modes::meter_flips_to_since_reset_label_after_reset_all ... ok [INFO] [stdout] test replay::replay_keep_caps_event_count ... ok [INFO] [stdout] test reset_modes::reset_all_force_wipes_every_table_and_reports_counts ... ok [INFO] [stdout] test reset_modes::reset_stats_zeros_lifetime_but_preserves_session_baselines ... ok [INFO] [stdout] test session_keying::env_id_takes_priority_over_everything ... ok [INFO] [stdout] test session_keying::drip_sessions_shows_strategy_column ... ok [INFO] [stdout] test reset_modes::meter_flips_to_since_reset_label_after_reset_stats ... ok [INFO] [stdout] test session_keying::git_session_changes_when_branch_switches ... ok [INFO] [stdout] test session_keying::malformed_git_falls_back_to_pid ... ok [INFO] [stdout] test session_keying::git_strategy_when_in_a_repo ... ok [INFO] [stdout] test session_keying::git_worktrees_get_distinct_ids ... ok [INFO] [stdout] test session_keying::pid_strategy_outside_a_repo ... ok [INFO] [stdout] test session_keying::git_session_stable_across_simulated_ppid_change ... ok [INFO] [stdout] test session_keying::pid_strategy_changes_with_simulated_ppid ... ok [INFO] [stdout] test session_keying::crash_recovery_resumes_unchanged_reads ... ok [INFO] [stdout] test session_keying::strategy_pid_override_ignores_git ... ok [INFO] [stdout] test session_start_hook::claude_first_read_passthrough_records_native_full_tokens_not_compressed ... ok [INFO] [stdout] test session_keying::strategy_cwd_is_permanent_per_directory ... ok [INFO] [stdout] test session_persistence::distinct_sessions_do_not_share_state ... ok [INFO] [stdout] test session_start_hook::claude_binary_fallback_is_substituted_not_native_passthrough ... ok [INFO] [stdout] test session_persistence::expired_session_announces_fresh_baseline_on_first_read ... ok [INFO] [stdout] test session_persistence::reset_clears_session ... ok [INFO] [stdout] test session_start_hook::claude_first_read_passthrough_replay_does_not_count_registry_trailer ... ok [INFO] [stdout] test session_start_hook::clear_source_also_drops_baselines ... ok [INFO] [stdout] test session_start_hook::read_without_compaction_has_no_compaction_header ... ok [INFO] [stdout] test session_persistence::session_persists_state_between_invocations ... ok [INFO] [stdout] test session_start_hook::compact_drops_baseline_so_next_read_passes_through_to_native ... ok [INFO] [stdout] test session_start_hook::doctor_reports_compaction_count_when_session_was_compacted ... ok [INFO] [stdout] test session_start_hook::meter_json_includes_compaction_block_after_compact ... ok [INFO] [stdout] test session_start_hook::schema_v9_columns_present_after_open ... ok [INFO] [stdout] test session_start_hook::session_start_emits_empty_json_object ... ok [INFO] [stdout] test session_start_hook::resume_source_drops_baselines_too ... ok [INFO] [stdout] test session_start_hook::session_start_compact_bumps_context_epoch_and_count ... ok [INFO] [stdout] test session_start_hook::session_start_compact_emits_additional_context_for_agent ... ok [INFO] [stdout] test source_map::source_map_accepts_l_prefixed_line_argument ... ok [INFO] [stdout] test session_start_hook::session_start_with_inert_source_does_not_emit_additional_context ... ok [INFO] [stdout] test source_map::source_map_for_untracked_file_distinguishes_from_uncompressed ... ok [INFO] [stdout] test session_start_hook::session_start_handler_tolerates_unknown_source_values ... ok [INFO] [stdout] test source_map::source_map_full_table_lists_every_compressed_line ... ok [INFO] [stdout] test source_map::source_map_internal_lookup_is_strictly_session_scoped ... ok [INFO] [stdout] test source_map::source_map_json_round_trips_through_serde ... ok [INFO] [stdout] test session_start_hook::startup_source_is_a_noop ... ok [INFO] [stdout] test source_map::source_map_line_lookup_handles_out_of_range_compressed_line ... ok [INFO] [stdout] test source_map::drip_refresh_then_reread_regenerates_source_map ... ok [INFO] [stdout] test source_map::source_map_without_compression_emits_clear_no_map_message ... ok [INFO] [stdout] test source_map::source_map_rejects_zero_and_garbage_line_args ... ok [INFO] [stdout] test source_map::source_map_resolves_a_single_compressed_line_to_original_range ... ok [INFO] [stdout] test storage::cache_stats_hints_when_inline_bloat_detected ... ok [INFO] [stdout] test storage::cache_compact_hoists_oversized_inline_rows_to_file_cache ... ok [INFO] [stdout] test storage::cache_gc_on_empty_dir_is_a_noop ... ok [INFO] [stdout] test storage::cache_compact_is_idempotent_when_no_oversize_inline_rows ... ok [INFO] [stdout] test storage::cache_compact_reads_baseline_correctly_after_hoisting ... ok [INFO] [stdout] test storage::env_override_zero_pushes_everything_to_cache ... ok [INFO] [stdout] test storage::cache_gc_removes_orphans_and_keeps_active ... ok [INFO] [stdout] test source_map::source_map_cli_auto_picks_sibling_session_in_cwd ... ok [INFO] [stdout] test storage::drip_meter_json_exposes_storage_block ... ok [INFO] [stdout] test storage::large_file_creates_a_cache_blob ... ok [INFO] [stdout] test storage::cache_stats_reports_inline_and_file_breakdown ... ok [INFO] [stdout] test storage::small_file_stays_inline_no_cache_file_created ... ok [INFO] [stdout] test storage::diff_works_identically_when_content_is_in_cache_file ... ok [INFO] [stdout] test storage::identical_content_two_files_share_one_cache_blob ... ok [INFO] [stdout] test storage::missing_cache_file_falls_back_to_full_read ... ok [INFO] [stdout] test storage::legacy_v1_db_is_migrated_in_place ... ok [INFO] [stdout] test storage::purge_drops_cache_blobs_of_expired_sessions ... ok [INFO] [stdout] test storage::unchanged_works_identically_when_baseline_is_in_cache ... ok [INFO] [stdout] test token_savings::meter_reports_aggregate_stats ... ok [INFO] [stdout] test token_savings::delta_read_reports_significant_savings ... ok [INFO] [stdout] test storage::refresh_drops_orphan_blob ... ok [INFO] [stdout] test watch::baseline_change_invalidates_precomputed_cache ... ok [INFO] [stdout] test watch::watcher_skips_dripignore_matched_files ... ok [INFO] [stdout] test watch::watcher_ignores_paths_outside_watch_root ... ok [INFO] [stdout] test watch::watcher_precomputes_diff_after_file_change ... ok [INFO] [stdout] test watch::watcher_refuses_fifo_at_watched_path ... ok [INFO] [stdout] test storage::upsert_drops_old_blob_when_file_content_changes ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 263 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 13.23s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "a76208644b454ab56882168aa70f4530e2bef90e4df06c14188e69038d9d00c0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a76208644b454ab56882168aa70f4530e2bef90e4df06c14188e69038d9d00c0", kill_on_drop: false }` [INFO] [stdout] a76208644b454ab56882168aa70f4530e2bef90e4df06c14188e69038d9d00c0