[INFO] fetching crate whetstone-cli 3.16.0...
[INFO] testing whetstone-cli-3.16.0 against 1.100.0-beta.1 for beta-1.100-2
[INFO] extracting crate whetstone-cli 3.16.0 into /workspace/builds/worker-4-tc2/source
[INFO] removed /workspace/builds/worker-4-tc2/source/rust-toolchain.toml
[INFO] started tweaking crates.io crate whetstone-cli 3.16.0
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate whetstone-cli 3.16.0
[INFO] tweaked toml for crates.io crate whetstone-cli 3.16.0 written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate whetstone-cli 3.16.0 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate whetstone-cli 3.16.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 40b5cb25253108ed782a44af9ed4dc86c6ef9dea04864149222b13d6d26b49fc
[INFO] running `Command { std: "docker" "start" "40b5cb25253108ed782a44af9ed4dc86c6ef9dea04864149222b13d6d26b49fc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "40b5cb25253108ed782a44af9ed4dc86c6ef9dea04864149222b13d6d26b49fc", 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" "40b5cb25253108ed782a44af9ed4dc86c6ef9dea04864149222b13d6d26b49fc" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "40b5cb25253108ed782a44af9ed4dc86c6ef9dea04864149222b13d6d26b49fc", 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" "40b5cb25253108ed782a44af9ed4dc86c6ef9dea04864149222b13d6d26b49fc" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling shlex v1.3.0
[INFO] [stderr]    Compiling bitflags v2.13.1
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]    Compiling allocator-api2 v0.2.21
[INFO] [stderr]    Compiling unicode-segmentation v1.13.2
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling syn v3.0.4
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling cc v1.2.61
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling hashbrown v0.17.1
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling unicode-width v0.2.2
[INFO] [stderr]    Compiling instability v0.3.12
[INFO] [stderr]    Compiling static_assertions v1.1.0
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]    Compiling rustls-pki-types v1.14.1
[INFO] [stderr]    Compiling untrusted v0.9.0
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]    Compiling pkg-config v0.3.33
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling adler2 v2.0.1
[INFO] [stderr]    Compiling simd-adler32 v0.3.9
[INFO] [stderr]    Compiling rustls v0.23.39
[INFO] [stderr]    Compiling bytes v1.12.1
[INFO] [stderr]    Compiling miniz_oxide v0.9.1
[INFO] [stderr]    Compiling line-clipping v0.3.7
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling compact_str v0.9.0
[INFO] [stderr]    Compiling lru v0.18.4
[INFO] [stderr]    Compiling base64 v0.23.1
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling option-ext v0.2.0
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling anyhow v1.0.104
[INFO] [stderr]    Compiling clap_builder v4.6.7
[INFO] [stderr]    Compiling hashlink v0.12.1
[INFO] [stderr]    Compiling webpki-roots v1.0.7
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling http v1.5.0
[INFO] [stderr]    Compiling flate2 v1.1.10
[INFO] [stderr]    Compiling utf8-zero v0.8.1
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling whetstone-cli v3.16.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling semver v1.0.28
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling libsqlite3-sys v0.38.2
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling filetime v0.2.27
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling dirs v7.0.0
[INFO] [stderr]    Compiling which v8.0.6
[INFO] [stderr]    Compiling unicode-truncate v2.0.1
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling ureq-proto v0.6.4
[INFO] [stderr]    Compiling xattr v1.6.1
[INFO] [stderr]    Compiling tar v0.4.46
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling clap_derive v4.6.7
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling strum_macros v0.28.0
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling clap v4.6.7
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling kasuari v0.4.12
[INFO] [stderr]    Compiling strum v0.28.0
[INFO] [stderr]    Compiling ratatui-core v0.1.2
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.2
[INFO] [stderr]    Compiling ratatui-widgets v0.3.2
[INFO] [stderr]    Compiling ratatui v0.30.2
[INFO] [stderr]    Compiling ureq v3.4.2
[INFO] [stderr]    Compiling rusqlite v0.40.2
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 48.40s
[INFO] running `Command { std: "docker" "inspect" "40b5cb25253108ed782a44af9ed4dc86c6ef9dea04864149222b13d6d26b49fc", 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" "40b5cb25253108ed782a44af9ed4dc86c6ef9dea04864149222b13d6d26b49fc" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling xattr v1.6.1
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling tar v0.4.46
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.2
[INFO] [stderr]    Compiling ratatui v0.30.2
[INFO] [stderr]    Compiling whetstone-cli v3.16.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 14.69s
[INFO] running `Command { std: "docker" "inspect" "40b5cb25253108ed782a44af9ed4dc86c6ef9dea04864149222b13d6d26b49fc", 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" "40b5cb25253108ed782a44af9ed4dc86c6ef9dea04864149222b13d6d26b49fc" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.70s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/build/whetstone-cli/079ba12ecc3a76e8/out/whetstone-079ba12ecc3a76e8)
[INFO] [stdout] 
[INFO] [stdout] running 315 tests
[INFO] [stdout] test changelog::tests::ignores_unknown_section_headers ... ok
[INFO] [stdout] test changelog::tests::strips_markdown_emphasis ... ok
[INFO] [stdout] test changelog::tests::skips_unreleased_section ... ok
[INFO] [stdout] test changelog::tests::preserves_multibyte_glyphs ... ok
[INFO] [stdout] test changelog::tests::strips_link_keeps_text_only ... ok
[INFO] [stdout] test claude_code::tests::detect_npm_via_mise ... ok
[INFO] [stdout] test changelog::tests::takes_first_sentence_only ... ok
[INFO] [stdout] test claude_code::tests::detect_npm_via_nvm ... ok
[INFO] [stdout] test claude_code::tests::detect_mise_native_tool_install ... ok
[INFO] [stdout] test changelog::tests::parses_release_headers_and_dates ... ok
[INFO] [stdout] test claude_code::tests::detect_npm_via_volta ... ok
[INFO] [stdout] test changelog::tests::renders_js_with_window_assignment ... ok
[INFO] [stdout] test claude_code::tests::detect_unknown_when_no_binary ... ok
[INFO] [stdout] test claude_code::tests::detect_native_binary_path ... ok
[INFO] [stdout] test claude_code::tests::detect_npm_via_node_modules ... ok
[INFO] [stdout] test changelog::tests::caps_bullets_per_section ... ok
[INFO] [stdout] test claude_code::tests::detect_mise_shim ... ok
[INFO] [stdout] test claude_code::tests::parse_claude_version_garbage ... ok
[INFO] [stdout] test claude_code::tests::parse_npm_response_invalid_json ... ok
[INFO] [stdout] test claude_code::tests::parse_npm_response_valid ... ok
[INFO] [stdout] test config::tests::empty_enable_tool_search_omitted_from_project_json ... ok
[INFO] [stdout] test config::tests::empty_savings_profile_omitted_from_project_json ... ok
[INFO] [stdout] test config::tests::empty_headroom_env_omitted_from_project_json ... ok
[INFO] [stdout] test config::tests::empty_permission_mode_omitted_from_project_json ... ok
[INFO] [stdout] test claude_code::tests::fix_install_method_noop_for_invalid_json ... ok
[INFO] [stdout] test claude_code::tests::fix_install_method_noop_when_already_npm ... ok
[INFO] [stdout] test config::tests::new_manifest_has_current_schema_and_integration_version ... ok
[INFO] [stdout] test config::tests::path_for_uses_dot_claude ... ok
[INFO] [stdout] test claude_code::tests::detect_unknown_for_unrecognized_path ... ok
[INFO] [stdout] test config::tests::load_returns_none_when_file_missing ... ok
[INFO] [stdout] test config::tests::provider_round_trip ... ok
[INFO] [stdout] test claude_code::tests::parse_claude_version_bare ... ok
[INFO] [stdout] test config::tests::resolve_enable_tool_search_off_when_unset ... ok
[INFO] [stdout] test claude_code::tests::parse_claude_version_empty ... ok
[INFO] [stdout] test claude_code::tests::parse_npm_response_missing_version ... ok
[INFO] [stdout] test claude_code::tests::fix_install_method_adds_field_when_missing ... ok
[INFO] [stdout] test claude_code::tests::fix_install_method_rewrites_native_to_npm ... ok
[INFO] [stdout] test config::tests::manifest_round_trips_dismissed_models ... ok
[INFO] [stdout] test config::tests::provider_serializes_snake_case ... ok
[INFO] [stdout] test config::tests::empty_dismissed_models_omitted_from_json ... ok
[INFO] [stdout] test config::tests::resolve_anthropic_api_url_none_when_unset ... ok
[INFO] [stdout] test claude_code::tests::parse_claude_version_standard_format ... ok
[INFO] [stdout] test config::tests::legacy_manifest_without_dismissed_models_parses ... ok
[INFO] [stdout] test config::tests::load_errors_on_malformed_json ... ok
[INFO] [stdout] test config::tests::resolve_falls_back_to_global_anthropic_api_url ... ok
[INFO] [stdout] test config::tests::resolve_falls_back_to_global_enable_tool_search ... ok
[INFO] [stdout] test config::tests::resolve_falls_back_to_global_permission_mode ... ok
[INFO] [stdout] test config::tests::resolve_falls_back_to_global_savings_profile ... ok
[INFO] [stdout] test config::tests::resolve_prefers_project_anthropic_api_url ... ok
[INFO] [stdout] test config::tests::resolve_merges_headroom_env_project_over_global ... ok
[INFO] [stdout] test config::tests::resolve_permission_mode_none_when_unset ... ok
[INFO] [stdout] test doctor::tests::green_when_no_warnings ... ok
[INFO] [stdout] test doctor::tests::merge_preserves_findings_and_mutated_flag ... ok
[INFO] [stdout] test claude_code::tests::fix_install_method_noop_when_no_config_file ... ok
[INFO] [stdout] test doctor::tests::malformed_settings_json_is_warning_not_panic ... ok
[INFO] [stdout] test doctor::tests::merge_of_clean_report_leaves_mutated_false ... ok
[INFO] [stdout] test config::tests::resolve_prefers_project_enable_tool_search ... ok
[INFO] [stdout] test config::tests::resolve_prefers_project_permission_mode ... ok
[INFO] [stdout] test config::tests::resolve_prefers_project_savings_profile ... ok
[INFO] [stdout] test config::tests::resolve_project_false_overrides_global_enable_tool_search ... ok
[INFO] [stdout] test config::tests::resolve_savings_profile_none_when_unset ... ok
[INFO] [stdout] test doctor::tests::missing_icm_is_warning ... ok
[INFO] [stdout] test doctor::tests::missing_rtk_is_warning ... ok
[INFO] [stdout] test doctor::tests::missing_settings_is_warning ... ok
[INFO] [stdout] test doctor::tests::settings_json_is_array_is_treated_as_warning ... ok
[INFO] [stdout] test headroom::tests::detect_shadow_in_mise_python ... ok
[INFO] [stdout] test config::tests::save_and_load_round_trip ... ok
[INFO] [stdout] test doctor::tests::duplicate_rtk_entries_get_deduped ... ok
[INFO] [stdout] test doctor::tests::unrelated_keys_left_alone ... ok
[INFO] [stdout] test doctor::tests::rtk_already_last_reports_ok ... ok
[INFO] [stdout] test headroom::tests::diff_reports_only_the_extras_that_are_absent ... ok
[INFO] [stdout] test headroom::tests::bare_install_is_missing_every_requested_extra ... ok
[INFO] [stdout] test doctor::tests::not_green_when_warning_present ... ok
[INFO] [stdout] test headroom::tests::detects_registered_headroom_mcp ... ok
[INFO] [stdout] test doctor::tests::rtk_first_gets_moved_to_last ... ok
[INFO] [stdout] test doctor::tests::icm_hooks_detected_when_present ... ok
[INFO] [stdout] test headroom::tests::extras_none ... ok
[INFO] [stdout] test headroom::tests::names_the_settings_key_behind_a_blocked_flag ... ok
[INFO] [stdout] test headroom::tests::disable_setting_is_a_no_op_for_an_absent_key ... ok
[INFO] [stdout] test headroom::tests::disable_setting_backs_the_file_up_before_writing ... ok
[INFO] [stdout] test headroom::tests::disable_setting_on_a_missing_file_is_not_an_error ... ok
[INFO] [stdout] test headroom::tests::extras_all ... ok
[INFO] [stdout] test headroom::tests::no_shadow_for_unknown_path ... ok
[INFO] [stdout] test headroom::tests::detect_shadow_in_pyenv ... ok
[INFO] [stdout] test headroom::tests::ignores_config_without_headroom_mcp ... ok
[INFO] [stdout] test headroom::tests::ignores_config_without_mcp_servers ... ok
[INFO] [stdout] test headroom::tests::no_shadow_for_uv_binary ... ok
[INFO] [stdout] test headroom::tests::parse_pypi_response ... ok
[INFO] [stdout] test headroom::tests::parses_extras_from_a_uv_receipt ... ok
[INFO] [stdout] test headroom::tests::unrecognized_receipt_is_unknown_not_empty ... ok
[INFO] [stdout] test headroom_env::tests::external_env_wins_over_default ... ok
[INFO] [stdout] test headroom_env::tests::external_env_wins_over_user_map ... ok
[INFO] [stdout] test headroom::tests::receipt_without_extras_means_installed_bare ... ok
[INFO] [stdout] test changelog::tests::respects_limit ... ok
[INFO] [stdout] test config::tests::touch_and_save_bumps_updated_at ... ok
[INFO] [stdout] test headroom::tests::extras_custom ... ok
[INFO] [stdout] test headroom_env::tests::icm_provider_suppresses_headroom_memory ... ok
[INFO] [stdout] test headroom_env::tests::port_is_denied_and_reported ... ok
[INFO] [stdout] test headroom_env::tests::skip_provider_leaves_memory_alone ... ok
[INFO] [stdout] test headroom::tests::disable_setting_removes_the_key_and_leaves_the_rest ... ok
[INFO] [stdout] test doctor::tests::rtk_moved_to_last_among_three_entries ... ok
[INFO] [stdout] test headroom_env::tests::omits_memory_db_path_when_none ... ok
[INFO] [stdout] test headroom::tests::unrelated_startup_errors_name_no_key ... ok
[INFO] [stdout] test headroom_env::tests::applies_code_aware_default ... ok
[INFO] [stdout] test headroom_env::tests::owned_keys_dropped_silently ... ok
[INFO] [stdout] test headroom_env::tests::external_memory_db_path_wins ... ok
[INFO] [stdout] test headroom_env::tests::pins_memory_db_path_when_provided ... ok
[INFO] [stdout] test headroom_env::tests::user_map_passthrough_applied ... ok
[INFO] [stdout] test icm::tests::parse_prefixed_icm_release_tag ... ok
[INFO] [stdout] test integrations::tests::icm_default_mode_matches_interface_contract ... ok
[INFO] [stdout] test headroom_env::tests::user_map_wins_over_default ... ok
[INFO] [stdout] test integrations::tests::icm_init_args_pinned_to_interface_contract_for_each_mode ... ok
[INFO] [stdout] test integrations::tests::finish_returns_ok_on_zero_exit ... ok
[INFO] [stdout] test integrations::tests::rtk_init_args_pinned_to_interface_contract ... ok
[INFO] [stdout] test integrations::tests::icm_mode_serializes_as_lowercase ... ok
[INFO] [stdout] test memory_consolidate::tests::dry_run_writes_nothing_but_reports ... ok
[INFO] [stdout] test integrations::tests::integration_report_defaults_false ... ok
[INFO] [stdout] test memory_consolidate::tests::conflict_only_report_reports_no_change ... ok
[INFO] [stdout] test memory_consolidate::tests::missing_stray_is_noop ... ok
[INFO] [stdout] test memory_consolidate::tests::moves_seed_dbs_when_absent_globally ... ok
[INFO] [stdout] test memory_consolidate::tests::projects_migrate_even_when_seed_set_conflicts ... ok
[INFO] [stdout] test memory_consolidate::tests::moves_foreign_project_stores_into_global ... ok
[INFO] [stdout] test memory_consolidate::tests::stray_equal_to_global_is_noop ... ok
[INFO] [stdout] test memory_consolidate::tests::idempotent_second_run_is_noop ... ok
[INFO] [stdout] test memory_consolidate::tests::conflict_is_skipped_not_overwritten ... ok
[INFO] [stdout] test memory_consolidate::tests::foreign_entries_block_removal ... ok
[INFO] [stdout] test memory_consolidate::tests::seed_conflict_skips_whole_set_all_or_nothing ... ok
[INFO] [stdout] test memory_consolidate::tests::keep_and_empty_dirs_do_not_block_removal ... ok
[INFO] [stdout] test migrate::tests::entry_is_whetstone_managed_matches_known_scripts ... ok
[INFO] [stdout] test migrate::tests::backup_settings_skips_when_absent ... ok
[INFO] [stdout] test migrate::tests::entry_is_whetstone_managed_rejects_unmanaged_scripts ... ok
[INFO] [stdout] test migrate::tests::detection_counts_v2_hook_entries ... ok
[INFO] [stdout] test migrate::tests::backup_memstack_renames_to_v2bak ... ok
[INFO] [stdout] test migrate::tests::detection_reports_no_migration_on_empty_project ... ok
[INFO] [stdout] test migrate::tests::detection_finds_automem_mcp_entry ... ok
[INFO] [stdout] test migrate::tests::detection_finds_managed_skills_and_rules ... ok
[INFO] [stdout] test migrate::tests::cleanup_archives_only_managed_skills_and_keeps_user_skills ... ok
[INFO] [stdout] test migrate::tests::detection_skipped_when_migration_id_already_stamped ... ok
[INFO] [stdout] test migrate::tests::cleanup_managed_is_idempotent_on_second_run ... ok
[INFO] [stdout] test migrate::tests::cleanup_strips_v2_hook_entries_only ... ok
[INFO] [stdout] test migrate::tests::project_topic_handles_empty_and_named ... ok
[INFO] [stdout] test migrate::tests::rollback_manifest_round_trips_through_json ... ok
[INFO] [stdout] test model_update::tests::dismiss_does_not_duplicate_existing_ids ... ok
[INFO] [stdout] test model_update::tests::effective_never_offered_and_results_deduped ... ok
[INFO] [stdout] test migrate::tests::v2_memstack_commands_still_trigger_migration ... ok
[INFO] [stdout] test model_update::tests::dismissed_excluded_but_newer_still_offered ... ok
[INFO] [stdout] test migrate::tests::import_records_assign_high_importance_to_decisions ... ok
[INFO] [stdout] test migrate::tests::v3_slash_commands_do_not_trigger_migration ... ok
[INFO] [stdout] test model_update::tests::apply_not_now_persists_nothing_returns_no_change ... ok
[INFO] [stdout] test model_update::tests::apply_pin_writes_api_model_and_returns_use_pinned ... ok
[INFO] [stdout] test model_update::tests::first_run_suppresses_brand_new_family ... ok
[INFO] [stdout] test model_update::tests::apply_session_persists_nothing_returns_use_session ... ok
[INFO] [stdout] test model_update::tests::apply_dismiss_appends_to_dismissed_models_and_returns_no_change ... ok
[INFO] [stdout] test model_update::tests::write_then_read_round_trips ... ok
[INFO] [stdout] test model_update::tests::seen_path_stable_for_same_dir ... ok
[INFO] [stdout] test model_update::tests::is_model_newer_same_id_false ... ok
[INFO] [stdout] test model_update::tests::is_model_newer_cross_family_false ... ok
[INFO] [stdout] test model_update::tests::offers_family_upgrade_for_pinned_older_sonnet ... ok
[INFO] [stdout] test model_update::tests::is_model_newer_within_family ... ok
[INFO] [stdout] test model_update::tests::no_sonnet_offer_for_opus_pin_when_sonnet_family_seen ... ok
[INFO] [stdout] test model_update::tests::seen_path_differs_across_dirs ... ok
[INFO] [stdout] test model_update::tests::offers_brand_new_family_flagship ... ok
[INFO] [stdout] test model_update::tests::offers_family_upgrade_for_pinned_opus ... ok
[INFO] [stdout] test model_update::tests::read_seen_missing_returns_empty ... ok
[INFO] [stdout] test proxy_registry::tests::kill_all_signals_every_recorded_pid ... ok
[INFO] [stdout] test proxy_registry::tests::choose_port_skips_anchor_when_claimed_by_a_live_entry ... ok
[INFO] [stdout] test proxy_registry::tests::each_field_changes_the_fingerprint ... ok
[INFO] [stdout] test proxy_registry::tests::fingerprint_is_stable_and_16_hex ... ok
[INFO] [stdout] test proxy_registry::tests::resolve_reuses_transiently_busy_matching_proxy ... ok
[INFO] [stdout] test proxy_registry::tests::resolve_prunes_dead_entry_and_spawns ... ok
[INFO] [stdout] test proxy_registry::tests::choose_port_prefers_anchor_when_free_and_unclaimed ... ok
[INFO] [stdout] test proxy_registry::tests::resolve_reports_failed_when_spawn_fails ... ok
[INFO] [stdout] test proxy_registry::tests::resolve_reuses_a_live_matching_proxy ... ok
[INFO] [stdout] test proxy_registry::tests::load_missing_file_is_empty ... ok
[INFO] [stdout] test proxy_registry::tests::choose_port_skips_anchor_when_port_busy ... ok
[INFO] [stdout] test proxy_registry::tests::fingerprint_is_order_independent_for_env ... ok
[INFO] [stdout] test proxy_registry::tests::load_corrupt_file_is_empty ... ok
[INFO] [stdout] test settings::tests::commit_edit_blank_clears_value ... ok
[INFO] [stdout] test proxy_registry::tests::resolve_spawns_new_port_when_anchor_taken ... ok
[INFO] [stdout] test rtk::tests::parse_github_release_no_v_prefix ... ok
[INFO] [stdout] test settings::tests::api_url_scope_detection ... ok
[INFO] [stdout] test rtk::tests::parse_github_release ... ok
[INFO] [stdout] test settings::tests::begin_edit_seeds_buffer_with_current_value ... ok
[INFO] [stdout] test settings::tests::edit_key_esc_cancels_without_writing ... ok
[INFO] [stdout] test settings::tests::cycle_value_on_text_opens_editor ... ok
[INFO] [stdout] test settings::tests::commit_edit_writes_env_value_knob ... ok
[INFO] [stdout] test settings::tests::commit_edit_writes_global_value ... ok
[INFO] [stdout] test settings::tests::dirty_detection ... ok
[INFO] [stdout] test settings::tests::commit_edit_writes_project_value ... ok
[INFO] [stdout] test rtk::tests::min_version_is_a_real_released_version ... ok
[INFO] [stdout] test settings::tests::beacon_is_inverted_opt_out ... ok
[INFO] [stdout] test settings::tests::edit_mode_cycles_off_through_modes ... ok
[INFO] [stdout] test settings::tests::family_order_sorts_correctly ... ok
[INFO] [stdout] test proxy_registry::tests::guard_does_not_delete_foreign_lock ... ok
[INFO] [stdout] test settings::tests::memory_toggle_on_off ... ok
[INFO] [stdout] test settings::tests::model_cycle_prev_from_off_selects_last ... ok
[INFO] [stdout] test settings::tests::helper_text_changes_with_value ... ok
[INFO] [stdout] test settings::tests::is_current_gen_accepts_latest_families ... ok
[INFO] [stdout] test settings::tests::log_messages_toggle_writes_fixed_value ... ok
[INFO] [stdout] test settings::tests::edit_key_typing_and_backspace ... ok
[INFO] [stdout] test settings::tests::newest_in_family_none_when_absent ... ok
[INFO] [stdout] test settings::tests::ratio_scope_toggle_preserves_typed_value ... ok
[INFO] [stdout] test settings::tests::is_current_gen_rejects_older_families ... ok
[INFO] [stdout] test settings::tests::is_value_editable_only_text_controls ... ok
[INFO] [stdout] test settings::tests::savings_profile_scope_toggle_preserves_value ... ok
[INFO] [stdout] test settings::tests::scope_toggle_noop_when_off ... ok
[INFO] [stdout] test proxy_registry::tests::stale_lock_is_stolen ... ok
[INFO] [stdout] test settings::tests::model_cycles_off_through_list_and_back ... ok
[INFO] [stdout] test settings::tests::model_scope_toggle_preserves_value ... ok
[INFO] [stdout] test settings::tests::newest_in_family_picks_highest_version ... ok
[INFO] [stdout] test settings::tests::savings_profile_cycles_off_through_profiles ... ok
[INFO] [stdout] test settings::tests::normalize_saved_drops_blank_urls ... ok
[INFO] [stdout] test settings::tests::normalize_saved_strips_blank_env_values ... ok
[INFO] [stdout] test proxy_registry::tests::save_then_load_roundtrips ... ok
[INFO] [stdout] test settings::tests::tool_search_scope_toggle_moves_global_project ... ok
[INFO] [stdout] test settings::tests::strip_date_suffix_extracts_base ... ok
[INFO] [stdout] test settings::tests::strip_date_suffix_returns_none_for_short_ids ... ok
[INFO] [stdout] test settings::tests::tool_search_toggle_on_off ... ok
[INFO] [stdout] test tests::already_configured_skips_prompt ... ok
[INFO] [stdout] test settings::tests::telemetry_toggle_on_off ... ok
[INFO] [stdout] test tests::unconfigured_interactive_needs_setup ... ok
[INFO] [stdout] test tools::tests::from_binary_round_trips_every_tool ... ok
[INFO] [stdout] test settings::tests::telemetry_scope_toggle_moves_global_project ... ok
[INFO] [stdout] test tools::tests::icm_expected_only_for_icm_projects ... ok
[INFO] [stdout] test settings::tests::value_label_reflects_state ... ok
[INFO] [stdout] test tools::tests::prereq_list_covers_the_preflight_dependencies ... ok
[INFO] [stdout] test tests::unconfigured_non_interactive_skips_prompt ... ok
[INFO] [stdout] test tools::tests::missing_tool_is_only_reported_in_report_mode ... ok
[INFO] [stdout] test tools::tests::presence_describes_each_state ... ok
[INFO] [stdout] test tools::tests::prompt_mode_degrades_to_report_without_a_tty ... ok
[INFO] [stdout] test tools::tests::prompt_mode_stays_prompt_when_interactive ... ok
[INFO] [stdout] test update::tests::full_flag_does_not_mark_genuine_upgrade_as_forced ... ok
[INFO] [stdout] test update::tests::at_version_skips_when_not_full ... ok
[INFO] [stdout] test update::tests::full_flag_forces_refresh_even_at_version ... ok
[INFO] [stdout] test update::tests::full_flag_forces_refresh_even_when_project_is_ahead_of_bundled ... ok
[INFO] [stdout] test update::tests::full_flag_forces_refresh_even_when_up_to_date ... ok
[INFO] [stdout] test update::tests::no_full_flag_skips_when_up_to_date ... ok
[INFO] [stdout] test update::tests::ahead_of_bundled_skips_when_not_full ... ok
[INFO] [stdout] test tools::tests::healthy_covers_ok_and_repaired_only ... ok
[INFO] [stdout] test tools::tests::repair_verb_matches_what_actually_happens ... ok
[INFO] [stdout] test update::tests::no_manifest_means_nothing_to_refresh ... ok
[INFO] [stdout] test update::tests::version_cache_parses_legacy_payload_without_integration_fields ... ok
[INFO] [stdout] test tools::tests::tool_binaries_are_the_names_whetstone_shells_out_to ... ok
[INFO] [stdout] test update::tests::behind_bundled_triggers_refresh_without_full ... ok
[INFO] [stdout] test update::tests::version_cache_round_trips_with_new_fields ... ok
[INFO] [stdout] test version::tests::bump_major ... ok
[INFO] [stdout] test version::tests::bump_minor ... ok
[INFO] [stdout] test update::tests::refresh_when_installed_is_older ... ok
[INFO] [stdout] test settings::tests::rollout_channel_and_output_shaper_write_env_value_knobs ... ok
[INFO] [stdout] test tests::already_configured_non_interactive_skips_prompt ... ok
[INFO] [stdout] test version::tests::bump_patch ... ok
[INFO] [stdout] test version::tests::cargo_pkg_version_matches_version_file ... ok
[INFO] [stdout] test update::tests::not_installed_short_circuits_regardless_of_full_flag ... ok
[INFO] [stdout] test version::tests::extract_from_version_string ... ok
[INFO] [stdout] test wrapper::tests::build_claude_args_injects_memory_when_wrap_manages_proxy ... ok
[INFO] [stdout] test wrapper::tests::build_claude_args_omits_memory_by_default ... ok
[INFO] [stdout] test wrapper::tests::build_claude_args_injects_permission_mode_when_configured ... ok
[INFO] [stdout] test wrapper::tests::build_claude_args_preserves_explicit_model ... ok
[INFO] [stdout] test wrapper::tests::build_claude_args_injects_default_model_when_absent ... ok
[INFO] [stdout] test wrapper::tests::build_claude_args_preserves_explicit_permission_mode_equals_form ... ok
[INFO] [stdout] test wrapper::tests::build_claude_args_never_emits_no_rtk ... ok
[INFO] [stdout] test wrapper::tests::build_claude_args_uses_configured_model ... ok
[INFO] [stdout] test wrapper::tests::build_claude_args_omits_no_proxy_and_port_when_proxy_not_ready ... ok
[INFO] [stdout] test wrapper::tests::build_claude_args_passes_through_arbitrary_args_unchanged ... ok
[INFO] [stdout] test wrapper::tests::build_claude_args_omits_permission_mode_when_none ... ok
[INFO] [stdout] test wrapper::tests::build_proxy_args_omits_rate_limit_flag_when_unsupported ... ok
[INFO] [stdout] test wrapper::tests::build_proxy_args_disables_rate_limiting_when_supported ... ok
[INFO] [stdout] test wrapper::tests::build_proxy_args_with_memory ... ok
[INFO] [stdout] test wrapper::tests::build_claude_args_preserves_explicit_model_equals_form ... ok
[INFO] [stdout] test wrapper::tests::build_claude_args_preserves_explicit_permission_mode ... ok
[INFO] [stdout] test wrapper::tests::build_proxy_args_with_no_telemetry ... ok
[INFO] [stdout] test version::tests::is_older_works ... ok
[INFO] [stdout] test wrapper::tests::build_claude_args_adds_no_proxy_and_port_when_proxy_ready ... ok
[INFO] [stdout] test wrapper::tests::build_proxy_args_with_savings_profile_and_memory ... ok
[INFO] [stdout] test wrapper::tests::build_proxy_args_with_savings_profile_and_no_telemetry ... ok
[INFO] [stdout] test wrapper::tests::build_proxy_args_without_savings_profile ... ok
[INFO] [stdout] test wrapper::tests::build_proxy_args_with_savings_profile ... ok
[INFO] [stdout] test wrapper::tests::choose_model_falls_back_on_no_change ... ok
[INFO] [stdout] test wrapper::tests::build_proxy_spec_excludes_memory_db_path ... ok
[INFO] [stdout] test wrapper::tests::choose_model_ignores_decision_when_user_set ... ok
[INFO] [stdout] test wrapper::tests::choose_model_uses_session_when_offered ... ok
[INFO] [stdout] test wrapper::tests::choose_model_uses_pinned_when_offered ... ok
[INFO] [stdout] test integrations::tests::finish_errors_on_nonzero_exit_and_surfaces_label ... ok
[INFO] [stdout] test wrapper::tests::proxy_flag_support_is_empty_for_an_older_headroom ... ok
[INFO] [stdout] test wrapper::tests::proxy_help_mentions_flag_empty_text ... ok
[INFO] [stdout] test wrapper::tests::proxy_flag_support_reads_both_flags_from_help ... ok
[INFO] [stdout] test wrapper::tests::proxy_help_mentions_flag_finds_present_flag ... ok
[INFO] [stdout] test wrapper::tests::proxy_help_mentions_flag_rejects_absent_flag ... ok
[INFO] [stdout] test wrapper::tests::resolve_api_url_ignores_blank_setting ... ok
[INFO] [stdout] test wrapper::tests::resolve_api_url_uses_setting_when_env_unset ... ok
[INFO] [stdout] test wrapper::tests::resolve_model_prefers_explicit_selection ... ok
[INFO] [stdout] test wrapper::tests::resolve_savings_profile_env_ignores_blank_override ... ok
[INFO] [stdout] test wrapper::tests::resolve_savings_profile_defaults_when_empty ... ok
[INFO] [stdout] test wrapper::tests::resolve_savings_profile_defaults_when_unset ... ok
[INFO] [stdout] test wrapper::tests::plan_pins_global_memory_db_path ... ok
[INFO] [stdout] test wrapper::tests::plan_from_settings_applies_code_aware ... ok
[INFO] [stdout] test wrapper::tests::free_port_returns_a_usable_port ... ok
[INFO] [stdout] test wrapper::tests::resolve_api_url_env_override_wins ... ok
[INFO] [stdout] test wrapper::tests::resolve_api_url_ignores_blank_env_override ... ok
[INFO] [stdout] test tools::tests::only_uv_claims_an_unattended_installer ... ok
[INFO] [stdout] test integrations::tests::require_binary_errors_for_missing_command ... ok
[INFO] [stdout] test wrapper::tests::startup_failure_falls_back_to_the_last_line ... ok
[INFO] [stdout] test wrapper::tests::startup_failure_ignores_library_chatter ... ok
[INFO] [stdout] test wrapper::tests::resolve_savings_profile_env_ignores_blank_setting ... ok
[INFO] [stdout] test wrapper::tests::resolve_savings_profile_env_override_wins ... ok
[INFO] [stdout] test wrapper::tests::resolve_savings_profile_env_uses_setting_when_env_unset ... ok
[INFO] [stdout] test wrapper::tests::resolve_savings_profile_honors_override ... ok
[INFO] [stdout] test wrapper::tests::startup_failure_prefers_the_error_line ... ok
[INFO] [stdout] test wrapper::tests::startup_failure_with_no_output_still_says_something ... ok
[INFO] [stdout] test wrapper::tests::smoke_reports_failure_when_the_binary_cannot_be_spawned ... ok
[INFO] [stdout] test migrate::tests::export_writes_jsonl_and_markdown ... ok
[INFO] [stdout] test proxy_registry::tests::lock_is_exclusive_then_released_on_drop ... ok
[INFO] [stdout] test wrapper::tests::smoke_reports_failure_when_the_proxy_exits_during_startup ... ok
[INFO] [stdout] test doctor::tests::no_source_references_claude_tool_input_env_var ... ok
[INFO] [stdout] test wrapper::tests::smoke_passes_when_the_proxy_survives_startup ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 315 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.88s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/migrate_roundtrip.rs (/opt/rustwide/target/debug/build/whetstone-cli/03faf2917e492a38/out/migrate_roundtrip-03faf2917e492a38)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test dry_run_over_v2_fixture_reports_markers_and_writes_nothing ... ok
[INFO] [stdout] test rollback_with_unknown_id_errors_cleanly ... ok
[INFO] [stdout] test migrate_on_clean_project_is_a_no_op ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "40b5cb25253108ed782a44af9ed4dc86c6ef9dea04864149222b13d6d26b49fc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "40b5cb25253108ed782a44af9ed4dc86c6ef9dea04864149222b13d6d26b49fc", kill_on_drop: false }`
[INFO] [stdout] 40b5cb25253108ed782a44af9ed4dc86c6ef9dea04864149222b13d6d26b49fc
