[INFO] fetching crate heal-cli 0.7.1...
[INFO] testing heal-cli-0.7.1 against 1.100.0-beta.1+cargoflags=--release for beta-release-1.100-2
[INFO] extracting crate heal-cli 0.7.1 into /workspace/builds/worker-4-tc2/source
[INFO] started tweaking crates.io crate heal-cli 0.7.1
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate heal-cli 0.7.1
[INFO] tweaked toml for crates.io crate heal-cli 0.7.1 written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate heal-cli 0.7.1 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate heal-cli 0.7.1 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:128:12
[INFO] [stderr]     |
[INFO] [stderr] 128 | homepage = "https://github.com/kechol/heal"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 134 | repository = "https://github.com/kechol/heal"
[INFO] [stderr]     |              --------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `heal-cli` (manifest) generated 1 warning
[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:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 5a6e9f9237b724013ca8673a2b785996aae74ee8b1fb075d2f2c51a847a9e55a
[INFO] running `Command { std: "docker" "start" "5a6e9f9237b724013ca8673a2b785996aae74ee8b1fb075d2f2c51a847a9e55a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5a6e9f9237b724013ca8673a2b785996aae74ee8b1fb075d2f2c51a847a9e55a", 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" "5a6e9f9237b724013ca8673a2b785996aae74ee8b1fb075d2f2c51a847a9e55a" "/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" "5a6e9f9237b724013ca8673a2b785996aae74ee8b1fb075d2f2c51a847a9e55a", 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" "5a6e9f9237b724013ca8673a2b785996aae74ee8b1fb075d2f2c51a847a9e55a" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:128:12
[INFO] [stderr]     |
[INFO] [stderr] 128 | homepage = "https://github.com/kechol/heal"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 134 | repository = "https://github.com/kechol/heal"
[INFO] [stderr]     |              --------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `heal-cli` (manifest) generated 1 warning
[INFO] [stderr]    Compiling find-msvc-tools v0.1.12
[INFO] [stderr]    Compiling tree-sitter-language v0.1.8
[INFO] [stderr]    Compiling zerocopy v0.8.57
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling siphasher v1.0.3
[INFO] [stderr]    Compiling aho-corasick v1.1.5
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling crossbeam-utils v0.8.23
[INFO] [stderr]    Compiling zmij v1.0.23
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.21
[INFO] [stderr]    Compiling log v0.4.34
[INFO] [stderr]    Compiling rustix v1.1.5
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling crossbeam-deque v0.8.8
[INFO] [stderr]    Compiling bstr v1.13.1
[INFO] [stderr]    Compiling libm v0.2.16
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling cc v1.4.5
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling phf_shared v0.11.3
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling encoding_rs v0.8.41
[INFO] [stderr]    Compiling phf v0.11.3
[INFO] [stderr]    Compiling multiversion-macros v0.9.0
[INFO] [stderr]    Compiling bitflags v2.13.2
[INFO] [stderr]    Compiling deunicode v1.6.2
[INFO] [stderr]    Compiling rustls-pki-types v1.15.1
[INFO] [stderr]    Compiling slug v0.1.6
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling smallvec v1.16.1
[INFO] [stderr]    Compiling simdutf8 v0.1.5
[INFO] [stderr]    Compiling core_detect v1.0.0
[INFO] [stderr]    Compiling either v1.18.0
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling multiversion_no_op v1.0.0
[INFO] [stderr]    Compiling humansize v2.1.3
[INFO] [stderr]    Compiling toml_parser v1.1.3+spec-1.1.0
[INFO] [stderr]    Compiling regex-automata v0.4.18
[INFO] [stderr]    Compiling clap_derive v4.6.7
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling serde_spanned v1.1.1
[INFO] [stderr]    Compiling rustls v0.23.45
[INFO] [stderr]    Compiling multiversion v0.9.0
[INFO] [stderr]    Compiling http v1.5.0
[INFO] [stderr]    Compiling itertools v0.11.0
[INFO] [stderr]    Compiling toml_datetime v0.7.5+spec-1.1.0
[INFO] [stderr]    Compiling pest_generator v2.9.1
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling libz-sys v1.1.29
[INFO] [stderr]    Compiling libgit2-sys v0.18.8+1.9.7
[INFO] [stderr]    Compiling tree-sitter v0.27.0
[INFO] [stderr]    Compiling tree-sitter-python v0.25.0
[INFO] [stderr]    Compiling tree-sitter-rust v0.24.2
[INFO] [stderr]    Compiling tree-sitter-scala v0.26.2
[INFO] [stderr]    Compiling tree-sitter-typescript v0.23.2
[INFO] [stderr]    Compiling tree-sitter-go v0.25.0
[INFO] [stderr]    Compiling tree-sitter-javascript v0.25.0
[INFO] [stderr]    Compiling memmap2 v0.9.11
[INFO] [stderr]    Compiling grep-matcher v0.1.9
[INFO] [stderr]    Compiling terminal_size v0.4.4
[INFO] [stderr]    Compiling base64 v0.23.1
[INFO] [stderr]    Compiling pest_derive v2.9.1
[INFO] [stderr]    Compiling clap_builder v4.6.7
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling json5 v0.4.1
[INFO] [stderr]    Compiling encoding_rs_io v0.1.8
[INFO] [stderr]    Compiling derive_arbitrary v1.4.2
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling etcetera v0.8.0
[INFO] [stderr]    Compiling dashmap v6.2.1
[INFO] [stderr]    Compiling arbitrary v1.4.2
[INFO] [stderr]    Compiling grep-searcher v0.1.17
[INFO] [stderr]    Compiling ureq-proto v0.6.4
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling regex v1.13.1
[INFO] [stderr]    Compiling globset v0.4.20
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling rand v0.8.8
[INFO] [stderr]    Compiling parse-zoneinfo v0.3.1
[INFO] [stderr]    Compiling ignore v0.4.33
[INFO] [stderr]    Compiling phf_generator v0.11.3
[INFO] [stderr]    Compiling phf_codegen v0.11.3
[INFO] [stderr]    Compiling clap v4.6.7
[INFO] [stderr]    Compiling chrono-tz-build v0.3.0
[INFO] [stderr]    Compiling clap-cargo v0.18.3
[INFO] [stderr]    Compiling toml v0.9.12+spec-1.1.0
[INFO] [stderr]    Compiling globwalk v0.9.1
[INFO] [stderr]    Compiling table_formatter v0.6.1
[INFO] [stderr]    Compiling chrono-tz v0.9.0
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling crossbeam-channel v0.5.17
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.20
[INFO] [stderr]    Compiling term_size v0.3.2
[INFO] [stderr]    Compiling utf8-zero v0.8.1
[INFO] [stderr]    Compiling streaming-iterator v0.1.9
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling tera v1.20.1
[INFO] [stderr]    Compiling rustls-native-certs v0.8.4
[INFO] [stderr]    Compiling toml v1.1.6+spec-1.1.0
[INFO] [stderr]    Compiling thiserror v2.0.20
[INFO] [stderr]    Compiling tokei v15.0.0
[INFO] [stderr]    Compiling rustls-webpki v0.103.15
[INFO] [stderr]    Compiling ureq v3.4.2
[INFO] [stderr]    Compiling git2 v0.21.0
[INFO] [stderr]    Compiling heal-cli v0.7.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 2m 17s
[INFO] running `Command { std: "docker" "inspect" "5a6e9f9237b724013ca8673a2b785996aae74ee8b1fb075d2f2c51a847a9e55a", 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" "5a6e9f9237b724013ca8673a2b785996aae74ee8b1fb075d2f2c51a847a9e55a" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:128:12
[INFO] [stderr]     |
[INFO] [stderr] 128 | homepage = "https://github.com/kechol/heal"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 134 | repository = "https://github.com/kechol/heal"
[INFO] [stderr]     |              --------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `heal-cli` (manifest) generated 1 warning
[INFO] [stderr]    Compiling heal-cli v0.7.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 1m 33s
[INFO] running `Command { std: "docker" "inspect" "5a6e9f9237b724013ca8673a2b785996aae74ee8b1fb075d2f2c51a847a9e55a", 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" "5a6e9f9237b724013ca8673a2b785996aae74ee8b1fb075d2f2c51a847a9e55a" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:128:12
[INFO] [stderr]     |
[INFO] [stderr] 128 | homepage = "https://github.com/kechol/heal"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 134 | repository = "https://github.com/kechol/heal"
[INFO] [stderr]     |              --------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `heal-cli` (manifest) generated 1 warning
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.39s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/build/heal-cli/56c06a8c8e576056/out/heal_cli-56c06a8c8e576056)
[INFO] [stdout] 
[INFO] [stdout] running 512 tests
[INFO] [stdout] test claude_settings::tests::unregister_is_idempotent ... ok
[INFO] [stdout] test cli::tests::parses_diff_with_revspec_and_flags ... ok
[INFO] [stdout] test claude_settings::tests::unregister_sweeps_legacy_settings_keys ... ok
[INFO] [stdout] test cli::tests::metric_kebab_to_json_key_round_trip ... ok
[INFO] [stdout] test claude_settings::tests::unregister_when_nothing_was_wired_is_noop ... ok
[INFO] [stdout] test claude_settings::tests::unregister_strips_only_legacy_heal_entries ... ok
[INFO] [stdout] test cli::tests::parses_doctor_with_and_without_json ... ok
[INFO] [stdout] test cli::tests::clap_derive_is_internally_consistent ... ok
[INFO] [stdout] test claude_settings::tests::unregister_sweeps_legacy_heal_hook_commands ... ok
[INFO] [stdout] test cli::tests::diff_revspec_is_optional ... ok
[INFO] [stdout] test cli::tests::parses_legacy_mark_fixed_alias ... ok
[INFO] [stdout] test cli::tests::parses_init_with_every_flag ... ok
[INFO] [stdout] test cli::tests::parses_mark_fix_and_accept ... ok
[INFO] [stdout] test cli::tests::parses_hook_subcommands ... ok
[INFO] [stdout] test cli::tests::parses_status_with_every_flag ... ok
[INFO] [stdout] test cli::tests::parses_metrics_with_kebab_metric_and_feature ... ok
[INFO] [stdout] test cli::tests::family_filter_round_trips_through_as_family ... ok
[INFO] [stdout] test cli::tests::rejects_unknown_metric_value ... ok
[INFO] [stdout] test cli::tests::parses_global_project_flag_before_subcommand ... ok
[INFO] [stdout] test commands::diff::tests::accepted_state_propagates_into_diff_entries ... ok
[INFO] [stdout] test cli::tests::parses_calibrate_with_force_and_json ... ok
[INFO] [stdout] test commands::diff::tests::diff_buckets_improved_when_severity_drops ... ok
[INFO] [stdout] test cli::tests::parses_semantic_ask_and_auth ... ok
[INFO] [stdout] test commands::diff::tests::diff_entry_from_hotspot_reflects_baseline_side ... ok
[INFO] [stdout] test commands::diff::tests::diff_progress_zero_when_prior_empty ... ok
[INFO] [stdout] test commands::diff::tests::diff_buckets_resolved_regressed_new_unchanged ... ok
[INFO] [stdout] test commands::diff::tests::diff_surfaces_coverage_provenance_per_side ... ok
[INFO] [stdout] test cli::tests::init_still_accepts_retired_skill_flags ... ok
[INFO] [stdout] test claude_settings::tests::unregister_legacy_only_install_collapses_settings ... ok
[INFO] [stdout] test commands::diff::tests::diff_workspace_filter_scopes_buckets_and_total ... ok
[INFO] [stdout] test commands::diff::tests::render_default_hides_below_high_entries_and_reports_hidden_count ... ok
[INFO] [stdout] test cli::tests::mark_fix_requires_finding_id_and_commit_sha ... ok
[INFO] [stdout] test commands::diff::tests::render_all_surfaces_below_high_entries_and_drops_footer ... ok
[INFO] [stdout] test cli::tests::rejects_unknown_subcommand ... ok
[INFO] [stdout] test cli::tests::parses_skills_subcommands ... ok
[INFO] [stdout] test claude_settings::tests::unregister_sweeps_legacy_marketplace_and_plugin_tree ... ok
[INFO] [stdout] test commands::diff::tests::render_hide_accepted_drops_entries_and_reports_count ... ok
[INFO] [stdout] test claude_settings::tests::unregister_keeps_a_marketplace_that_is_not_heal_local ... ok
[INFO] [stdout] test commands::doctor::tests::drift_rules_fire_independently ... ok
[INFO] [stdout] test commands::doctor::tests::enabled_docs_without_pairs_file_is_todo ... ok
[INFO] [stdout] test commands::diff::tests::render_marks_accepted_entries_with_pin ... ok
[INFO] [stdout] test commands::diff::tests::t0_progress_counts_only_critical_hotspot_baseline ... ok
[INFO] [stdout] test commands::doctor::tests::coverage_without_lcov_is_todo_and_found_paths_are_listed ... ok
[INFO] [stdout] test commands::diff::tests::diff_surfaces_accepted_rereview_in_human_and_machine_output ... ok
[INFO] [stdout] test commands::doctor::tests::semantic_needs_a_key_before_concepts ... ok
[INFO] [stdout] test commands::doctor::tests::legacy_skill_dirs_are_reported_relative_to_the_project ... ok
[INFO] [stdout] test commands::hook::tests::coverage_refresh_skipped_when_blank ... ok
[INFO] [stdout] test commands::hook::tests::coverage_refresh_skipped_when_feature_disabled ... ok
[INFO] [stdout] test commands::hook::tests::coverage_refresh_skipped_when_unset ... ok
[INFO] [stdout] test commands::hook::tests::edit_is_noop ... ok
[INFO] [stdout] test commands::hook::tests::coverage_refresh_spawns_when_configured_and_enabled ... ok
[INFO] [stdout] test commands::doctor::tests::uninitialized_project_lists_config_and_calibration_as_todo ... ok
[INFO] [stdout] test cli::tests::mark_accept_reason_defaults_to_empty_string ... ok
[INFO] [stdout] test commands::hook::tests::nudge_surfaces_accepted_hotspot_rereview_without_unaccepting ... ok
[INFO] [stdout] test commands::doctor::tests::foreign_post_commit_hook_is_a_warning ... ok
[INFO] [stdout] test commands::hook::tests::stop_is_noop ... ok
[INFO] [stdout] test commands::doctor::tests::broken_config_is_an_error_and_features_fall_back_to_off ... ok
[INFO] [stdout] test commands::hook::tests::commit_runs_observers_without_writing_snapshots ... ok
[INFO] [stdout] test commands::hook_install::tests::install_overwrites_user_hook_with_force ... ok
[INFO] [stdout] test commands::hook_install::tests::install_skips_outside_git_repo ... ok
[INFO] [stdout] test commands::calibrate::tests::calibrate_writes_calibration_toml_when_missing ... ok
[INFO] [stdout] test commands::hook::tests::nudge_is_silent_without_calibration ... ok
[INFO] [stdout] test commands::calibrate::tests::calibrate_default_does_not_rewrite_when_calibration_exists ... ok
[INFO] [stdout] test commands::init::tests::write_config_explicit_emits_full_default_body ... ok
[INFO] [stdout] test commands::init::tests::write_config_keeps_existing_without_force ... ok
[INFO] [stdout] test commands::calibrate::tests::calibrate_force_rewrites_existing_calibration ... ok
[INFO] [stdout] test commands::doctor::tests::fixes_before_calibration_do_not_count ... ok
[INFO] [stdout] test commands::hook_install::tests::install_refreshes_own_marker ... ok
[INFO] [stdout] test commands::init::tests::write_config_minimal_default_emits_near_empty_body ... ok
[INFO] [stdout] test commands::mark::tests::accept_allows_empty_reason ... ok
[INFO] [stdout] test commands::mark::tests::accept_errors_when_cache_missing ... ok
[INFO] [stdout] test commands::hook_install::tests::install_writes_executable_post_commit ... ok
[INFO] [stdout] test commands::init::tests::write_config_writes_default_when_absent ... ok
[INFO] [stdout] test commands::init::tests::write_config_overwrites_with_force ... ok
[INFO] [stdout] test commands::mark::tests::accept_errors_when_id_unknown ... ok
[INFO] [stdout] test commands::mark::tests::fix_legacy_prints_warning_and_succeeds ... ok
[INFO] [stdout] test commands::mark::tests::fix_upserts_entry ... ok
[INFO] [stdout] test commands::hook::tests::nudge_summarises_critical_count_in_one_line ... ok
[INFO] [stdout] test commands::hook::tests::nudge_says_clean_when_no_critical_or_high ... ok
[INFO] [stdout] test commands::mark::tests::accept_snapshots_finding_state ... ok
[INFO] [stdout] test commands::mark::tests::accept_overwrites_prior_entry ... ok
[INFO] [stdout] test commands::metrics::tests::matches_family_routes_via_family_for_metric ... ok
[INFO] [stdout] test commands::metrics::tests::matches_metric_passes_when_filter_none_or_equal ... ok
[INFO] [stdout] test commands::metrics::tests::run_json_uninitialized_returns_initialized_false ... ok
[INFO] [stdout] test commands::hook::tests::nudge_surfaces_missing_coverage_without_creating_a_finding ... ok
[INFO] [stdout] test commands::hook_install::tests::install_preserves_user_hook_without_force ... ok
[INFO] [stdout] test commands::diff::tests::recompute_at_ref_materialises_worktree_and_runs_observers ... ok
[INFO] [stdout] test commands::metrics::tests::run_text_uninitialized_returns_ok ... ok
[INFO] [stdout] test commands::semantic::tests::unknown_task_is_rejected_and_empty_selection_uses_enabled ... ok
[INFO] [stdout] test commands::skills::tests::retired_subcommands_fail_with_the_plugin_pointer ... ok
[INFO] [stdout] test commands::skills::tests::uninstall_is_a_noop_on_a_clean_project ... ok
[INFO] [stdout] test commands::skills::tests::uninstall_removes_legacy_skill_dirs_and_keeps_user_skills ... ok
[INFO] [stdout] test commands::status::tests::accepted_finding_does_not_displace_active_score_order ... ok
[INFO] [stdout] test commands::status::tests::accepted_rereview_is_reasoned_in_human_and_machine_output ... ok
[INFO] [stdout] test commands::status::tests::accepted_same_severity_uses_score_before_hotspot_flag ... ok
[INFO] [stdout] test commands::status::tests::all_flag_shows_medium_and_ok ... ok
[INFO] [stdout] test commands::status::tests::coverage_measurement_gap_is_guidance_not_drain_work ... ok
[INFO] [stdout] test commands::status::tests::critical_hotspot_renders_before_plain_critical ... ok
[INFO] [stdout] test commands::status::tests::cross_workspace_advisory_obeys_all_gate ... ok
[INFO] [stdout] test commands::status::tests::default_hides_medium_and_ok ... ok
[INFO] [stdout] test commands::diff::tests::from_cache_requires_matching_config_hash_and_clean_scan ... ok
[INFO] [stdout] test commands::status::tests::default_omits_ok_section_without_all ... ok
[INFO] [stdout] test commands::status::tests::effective_drain_tier_precedes_severity ... ok
[INFO] [stdout] test commands::status::tests::empty_record_renders_next_hint ... ok
[INFO] [stdout] test commands::status::tests::family_filter_drops_other_families ... ok
[INFO] [stdout] test commands::status::tests::group_labels_collapses_adjacent_repeats ... ok
[INFO] [stdout] test commands::status::tests::equal_hotspot_scores_use_deterministic_path_order ... ok
[INFO] [stdout] test commands::status::tests::group_labels_keeps_singletons_bare ... ok
[INFO] [stdout] test commands::status::tests::header_drain_queue_zero_when_codebase_clean ... ok
[INFO] [stdout] test commands::status::tests::header_shows_drain_queue_and_population ... ok
[INFO] [stdout] test commands::status::tests::metric_filter_drops_other_metrics ... ok
[INFO] [stdout] test commands::status::tests::json_filters_keep_findings_notices_summaries_and_coverage_consistent ... ok
[INFO] [stdout] test commands::status::tests::missing_hotspot_score_sorts_after_scored_findings ... ok
[INFO] [stdout] test commands::metrics::tests::build_json_metric_filter_emits_top_n_and_worst ... ok
[INFO] [stdout] test commands::metrics::tests::build_json_workspace_echoes_path ... ok
[INFO] [stdout] test commands::status::tests::override_notes_silent_when_at_default ... ok
[INFO] [stdout] test commands::status::tests::override_notes_surface_in_header ... ok
[INFO] [stdout] test commands::status::tests::path_filter_keeps_path_prefix_only ... ok
[INFO] [stdout] test commands::status::tests::ok_hotspot_renders_after_drain_sections_under_all ... ok
[INFO] [stdout] test commands::status::tests::regrouping_and_top_preserve_score_order ... ok
[INFO] [stdout] test commands::status::tests::render_groups_repeated_metric_per_file ... ok
[INFO] [stdout] test commands::status::tests::same_bucket_renders_higher_hotspot_score_before_lexical_path ... ok
[INFO] [stdout] test core::accepted::tests::decorate_findings_sets_accepted_flag_by_id ... ok
[INFO] [stdout] test core::accepted::tests::deny_unknown_fields ... ok
[INFO] [stdout] test core::accepted::tests::old_accepted_json_without_hotspot_defaults_to_false ... ok
[INFO] [stdout] test commands::status::tests::severity_filter_drops_below_floor ... ok
[INFO] [stdout] test commands::status::tests::top_counts_file_rows_after_regrouping ... ok
[INFO] [stdout] test core::accepted::tests::read_missing_returns_empty_map ... ok
[INFO] [stdout] test core::accepted::tests::read_corrupt_logs_and_returns_empty ... ok
[INFO] [stdout] test commands::metrics::tests::build_json_feature_filter_narrows_to_family_keys ... ok
[INFO] [stdout] test core::accepted::tests::reconcile_quiet_on_undetected_findings ... ok
[INFO] [stdout] test core::accepted::tests::reconcile_returns_decision_premise_changes_only ... ok
[INFO] [stdout] test core::accepted::tests::remove_returns_entry_and_drops_it ... ok
[INFO] [stdout] test core::accepted::tests::snapshot_no_value_for_label_metrics ... ok
[INFO] [stdout] test core::accepted::tests::remove_unknown_id_is_noop ... ok
[INFO] [stdout] test core::accepted::tests::round_trips_through_disk ... ok
[INFO] [stdout] test core::accepted::tests::simultaneous_severity_and_hotspot_change_is_one_notice ... ok
[INFO] [stdout] test core::accepted::tests::snapshot_extracts_ccn_value ... ok
[INFO] [stdout] test core::calibration::tests::classify_floor_critical_overrides_floor_ok ... ok
[INFO] [stdout] test core::accepted::tests::upsert_overwrites_existing_entry ... ok
[INFO] [stdout] test core::calibration::tests::classify_inclusive_at_breaks ... ok
[INFO] [stdout] test core::calibration::tests::classify_spread_gate_keeps_wide_distribution ... ok
[INFO] [stdout] test core::calibration::tests::classify_breaks_match_todo_ladder ... ok
[INFO] [stdout] test core::calibration::tests::classify_uses_floor_first ... ok
[INFO] [stdout] test core::calibration::tests::classify_spread_gate_silent_without_both_floors ... ok
[INFO] [stdout] test core::calibration::tests::classify_spread_gate_graduates_tight_distribution ... ok
[INFO] [stdout] test core::calibration::tests::classify_floor_ok_forces_ok_below_threshold ... ok
[INFO] [stdout] test core::calibration::tests::from_distribution_marks_breaks_nan_below_min_samples ... ok
[INFO] [stdout] test core::calibration::tests::from_distribution_drops_non_finite ... ok
[INFO] [stdout] test core::calibration::tests::hotspot_five_valid_scores_preserve_percentile_gate ... ok
[INFO] [stdout] test core::calibration::tests::classify_floor_ok_works_with_nan_percentiles ... ok
[INFO] [stdout] test core::calibration::tests::hotspot_flag_at_p90 ... ok
[INFO] [stdout] test core::calibration::tests::hotspot_floor_ok_disabled_falls_back_to_percentile ... ok
[INFO] [stdout] test core::calibration::tests::hotspot_non_finite_values_do_not_count_toward_minimum_sample ... ok
[INFO] [stdout] test core::calibration::tests::hotspot_small_cohorts_use_only_the_family_floor ... ok
[INFO] [stdout] test core::calibration::tests::percentile_handles_edges ... ok
[INFO] [stdout] test core::calibration::tests::percentile_linear_interpolation ... ok
[INFO] [stdout] test core::calibration::tests::legacy_nan_hotspot_without_floor_stays_inactive ... ok
[INFO] [stdout] test core::calibration::tests::toml_roundtrip_with_deny_unknown_fields ... ok
[INFO] [stdout] test core::calibration::tests::unknown_fields_are_rejected ... ok
[INFO] [stdout] test core::calibration::tests::nan_breaks_round_trip_through_toml ... ok
[INFO] [stdout] test core::calibration::tests::with_overrides_applies_floor_ok_from_config ... ok
[INFO] [stdout] test commands::doctor::tests::initialized_project_with_hook_and_calibration_is_clean ... ok
[INFO] [stdout] test core::concepts::tests::missing_file_is_none ... ok
[INFO] [stdout] test commands::metrics::tests::metric_filter_keeps_legacy_precedence_over_mismatched_family ... ok
[INFO] [stdout] test commands::metrics::tests::run_json_with_metric_filter_returns_ok ... ok
[INFO] [stdout] test core::calibration::tests::hotspot_floor_ok_blocks_top_decile_in_cold_codebase ... ok
[INFO] [stdout] test core::calibration::tests::save_prepends_provenance_header_and_round_trips ... ok
[INFO] [stdout] test core::calibration::tests::with_overrides_applies_workspace_metric_overlay ... ok
[INFO] [stdout] test core::concepts::tests::labels_append_other_once ... ok
[INFO] [stdout] test core::finding::tests::make_id_avoids_concatenation_collisions ... ok
[INFO] [stdout] test core::finding::tests::finding_serialises_without_empty_locations_or_fix_hint ... ok
[INFO] [stdout] test core::finding::tests::make_id_differs_when_any_component_differs ... ok
[INFO] [stdout] test core::concepts::tests::rejects_bad_ids_duplicates_and_empty ... ok
[INFO] [stdout] test core::config::nofollow_tests::opened_parent_handle_survives_path_replacement ... ok
[INFO] [stdout] test core::finding::tests::make_id_uses_star_when_symbol_missing ... ok
[INFO] [stdout] test core::config::nofollow_tests::final_component_replacement_is_not_followed ... ok
[INFO] [stdout] test core::finding::tests::finding_serialises_hotspot_score_when_present ... ok
[INFO] [stdout] test core::findings_cache::tests::config_hash_distinguishes_concatenation_boundary ... ok
[INFO] [stdout] test core::finding::tests::short_label_extracts_metric_number_or_falls_back ... ok
[INFO] [stdout] test core::findings_cache::tests::apply_accepted_keeps_acceptance_and_adds_ephemeral_rereview ... ok
[INFO] [stdout] test core::findings_cache::tests::cache_reuse_rejects_config_parsed_before_a_semantic_change ... ok
[INFO] [stdout] test core::findings_cache::tests::observation_hash_tracks_lcov_create_update_and_delete ... ok
[INFO] [stdout] test core::findings_cache::tests::freshness_requires_clean_worktree_on_both_sides ... ok
[INFO] [stdout] test core::findings_cache::tests::observation_hash_rejects_symlinked_lcov_input ... ok
[INFO] [stdout] test core::finding::tests::make_id_is_stable_for_identical_input ... ok
[INFO] [stdout] test core::findings_cache::tests::config_hash_is_stable_across_calls ... ok
[INFO] [stdout] test core::findings_cache::tests::observation_hash_tracks_paths_and_only_enabled_inputs ... ok
[INFO] [stdout] test core::findings_cache::tests::observation_hash_tracks_enabled_doc_pairs ... ok
[INFO] [stdout] test commands::metrics::tests::build_json_unfiltered_includes_every_section_key ... ok
[INFO] [stdout] test core::finding::tests::finding_without_hotspot_score_deserialises_for_backward_compatibility ... ok
[INFO] [stdout] test core::findings_cache::tests::project_to_workspace_narrows_findings_summary_and_workspaces ... ok
[INFO] [stdout] test core::findings_cache::tests::record_id_is_deterministic_across_calls ... ok
[INFO] [stdout] test core::findings_cache::tests::observation_hash_tracks_semantic_verdicts_only_when_enabled ... ok
[INFO] [stdout] test core::findings_cache::tests::reconcile_fixed_drops_redetected_and_records_regression ... ok
[INFO] [stdout] test core::findings_cache::tests::record_id_changes_with_head_or_config ... ok
[INFO] [stdout] test core::findings_cache::tests::record_id_distinguishes_dirty_from_clean ... ok
[INFO] [stdout] test core::hash::tests::flat_is_stable_across_calls ... ok
[INFO] [stdout] test core::hash::tests::hex_is_zero_padded_to_16_chars ... ok
[INFO] [stdout] test core::monorepo::tests::cargo_literal_member_resolved_when_dir_exists ... ok
[INFO] [stdout] test core::findings_cache::tests::upsert_fixed_overwrites_existing_entry_for_same_finding ... ok
[INFO] [stdout] test core::findings_cache::tests::write_then_read_round_trips ... ok
[INFO] [stdout] HEAL metrics (project: /tmp/.tmpXrp2Q9)
[INFO] [stdout]   config:            /tmp/.tmpXrp2Q9/.heal/config.toml
[INFO] [stdout] 
[INFO] [stdout] ── [Code] LOC ──
[INFO] [stdout]   1 LOC across 1 files
[INFO] [stdout]   primary language: Rust
[INFO] [stdout]   top languages:
[INFO] [stdout]     - Rust                  1 LOC across 1 files
[INFO] [stdout] 
[INFO] [stdout] ── [Code] Complexity ──
[INFO] [stdout]   1 functions across 1 files (max CCN=1, max Cognitive=0)
[INFO] [stdout]   highest CCN:
[INFO] [stdout]     -   1  lib.rs:1     add
[INFO] [stdout]   highest Cognitive:
[INFO] [stdout]     -   0  lib.rs:1     add
[INFO] [stdout] 
[INFO] [stdout] ── [Code] Churn ──
[INFO] [stdout]   1 files across 1 commits (last 90 days, +1/-0 lines)
[INFO] [stdout]   most-churned files:
[INFO] [stdout]     -   1  lib.rs  (+1/-0)
[INFO] [stdout] 
[INFO] [stdout] ── [Code] Change Coupling ──
[INFO] [stdout]   no pairs at min_coupling=3 (1 commits scanned)
[INFO] [stdout] 
[INFO] [stdout] ── [Code] Duplication ──
[INFO] [stdout]   no blocks ≥ 50 tokens detected
[INFO] [stdout] 
[INFO] [stdout] ── [Code] Hotspot ──
[INFO] [stdout]   1 files (max score=1.0)
[INFO] [stdout]   top hotspots (CCN_sum × commits):
[INFO] [stdout]     -    1.0  lib.rs  (CCN_sum=1, commits=1)
[INFO] [stdout] 
[INFO] [stdout] ── [Code] LCOM ──
[INFO] [stdout]   no classes scanned (supported: TS / JS / Python / Rust)
[INFO] [stdout] test core::findings_cache::tests::write_record_overwrites_in_place ... ok
[INFO] [stdout] test core::fs::tests::atomic_write_cleans_up_staging_file_when_persist_fails ... ok
[INFO] [stdout] test core::hash::tests::flat_and_chunked_diverge_for_same_bytes ... ok
[INFO] [stdout] test core::monorepo::tests::cargo_member_glob_expands_to_subdirs ... ok
[INFO] [stdout] test core::fs::tests::atomic_write_replaces_existing_file_without_touching_tmp_sibling ... ok
[INFO] [stdout] test core::findings_cache::tests::reconcile_fixed_is_noop_when_nothing_regresses ... ok
[INFO] [stdout] test commands::init::tests::run_end_to_end_creates_layout_config_and_calibration ... ok
[INFO] [stdout] test core::monorepo::tests::empty_project_yields_no_signals ... ok
[INFO] [stdout] test core::monorepo::tests::malformed_package_json_is_silent ... ok
[INFO] [stdout] test core::monorepo::tests::output_is_alphabetic_by_manifest ... ok
[INFO] [stdout] test core::monorepo::tests::package_json_with_workspaces_object_detected ... ok
[INFO] [stdout] test core::monorepo::tests::cargo_workspace_without_members_table_has_empty_member_list ... ok
[INFO] [stdout] test core::monorepo::tests::package_json_with_workspaces_array_detected ... ok
[INFO] [stdout] test core::monorepo::tests::package_json_with_empty_workspaces_ignored ... ok
[INFO] [stdout] test commands::diff::tests::old_ref_rejects_symlinked_observation_parent ... ok
[INFO] [stdout] test core::monorepo::tests::package_json_without_workspaces_ignored ... ok
[INFO] [stdout] test core::monorepo::tests::cargo_solo_package_ignored ... ok
[INFO] [stdout] test core::fs::tests::concurrent_atomic_writes_keep_one_complete_body ... ok
[INFO] [stdout] test core::monorepo::tests::pnpm_yaml_detected_by_presence ... ok
[INFO] [stdout] test core::monorepo::tests::cargo_workspace_detected ... ok
[INFO] [stdout] test core::order::tests::semantic_axes_reorder_within_severity_only ... ok
[INFO] [stdout] test core::order::tests::decorate_ranks_each_family_in_render_order ... ok
[INFO] [stdout] test core::order::tests::low_confidence_notes_are_ignored ... ok
[INFO] [stdout] test commands::metrics::tests::run_text_initialized_walks_every_section_render ... ok
[INFO] [stdout] test core::order::tests::no_notes_means_plain_hotspot_order ... ok
[INFO] [stdout] test core::severity::severity_counts_tests::render_inline_plain_has_no_ansi ... ok
[INFO] [stdout] test core::order::tests::tier_then_severity_then_hotspot_score ... ok
[INFO] [stdout] test core::severity::severity_counts_tests::render_inline_colored_has_reset_after_each_label ... ok
[INFO] [stdout] test core::severity::tests::max_picks_highest ... ok
[INFO] [stdout] test core::severity::tests::ord_runs_ok_to_critical ... ok
[INFO] [stdout] test core::severity::tests::serialises_lowercase ... ok
[INFO] [stdout] test core::severity::tests::from_str_parses_canonical_lowercase ... ok
[INFO] [stdout] test core::severity::tests::as_str_round_trips_through_from_str ... ok
[INFO] [stdout] test core::severity::tests::default_is_ok ... ok
[INFO] [stdout] test core::source_cache::tests::corrupt_or_old_cache_falls_back_to_empty ... ok
[INFO] [stdout] test core::source_cache::tests::save_does_not_create_an_unignored_cache_file ... ok
[INFO] [stdout] test core::monorepo::tests::npm_member_glob_expands_to_subdirs ... ok
[INFO] [stdout] test core::source_cache::tests::save_is_ignored_and_round_trips ... ok
[INFO] [stdout] test feature::tests::builtin_registry_emits_one_feature_per_metric ... ok
[INFO] [stdout] test commands::metrics::tests::run_json_with_feature_filter_returns_ok ... ok
[INFO] [stdout] test feature::tests::decoration_uses_the_highest_score_across_all_locations ... ok
[INFO] [stdout] test feature::tests::empty_or_uncalibrated_hotspot_index_never_marks_a_finding ... ok
[INFO] [stdout] test feature::tests::every_code_feature_is_observer_kind ... ok
[INFO] [stdout] test feature::tests::family_assignment_per_feature_name ... ok
[INFO] [stdout] test feature::tests::missing_test_hotspot_report_does_not_create_a_candidate ... ok
[INFO] [stdout] test feature::tests::small_hotspot_cohort_can_reach_the_real_t0_policy ... ok
[INFO] [stdout] test core::source_cache::tests::symlinked_cache_directories_do_not_read_or_write_outside_state ... ok
[INFO] [stdout] test observer::code::change_coupling::pair_class_tests::dist_artefact_pair_dropped ... ok
[INFO] [stdout] test observer::code::change_coupling::pair_class_tests::cross_workspace_lower::cross_workspace_pair_retagged_when_surface ... ok
[INFO] [stdout] test observer::code::change_coupling::pair_class_tests::cross_workspace_lower::cross_workspace_pair_dropped_when_hide ... ok
[INFO] [stdout] test observer::code::change_coupling::pair_class_tests::cross_workspace_lower::no_workspaces_declared_means_no_cross_workspace_tag ... ok
[INFO] [stdout] test core::monorepo::tests::enrich_with_languages_fills_primary ... ok
[INFO] [stdout] test observer::code::change_coupling::pair_class_tests::cross_workspace_lower::pair_with_one_unscoped_file_not_cross_workspace ... ok
[INFO] [stdout] test core::source_cache::tests::symlinked_cache_files_and_ignore_files_are_preserved ... ok
[INFO] [stdout] test legacy_skills::tests::finds_only_known_names_under_both_roots ... ok
[INFO] [stdout] test observer::code::change_coupling::pair_class_tests::lockfile_pair_dropped_for_typescript_project ... ok
[INFO] [stdout] test observer::code::change_coupling::pair_class_tests::scala_target_pair_dropped ... ok
[INFO] [stdout] test observer::code::change_coupling::pair_class_tests::generic_lock_suffix_matches_any_language ... ok
[INFO] [stdout] test observer::code::change_coupling::pair_class_tests::test_pair_demoted_not_dropped ... ok
[INFO] [stdout] test observer::code::change_coupling::pair_class_tests::manifest_pair_requires_same_directory ... ok
[INFO] [stdout] test observer::code::change_coupling::pair_class_tests::unknown_language_still_drops_generic_lockfiles ... ok
[INFO] [stdout] test observer::code::change_coupling::pair_class_tests::lift_below_chance_for_widespread_files ... ok
[INFO] [stdout] test observer::code::change_coupling::pair_class_tests::lift_handles_empty_universe ... ok
[INFO] [stdout] test observer::code::change_coupling::pair_class_tests::manifest_pair_dropped ... ok
[INFO] [stdout] test observer::code::change_coupling::pair_class_tests::python_specific_lockfiles ... ok
[INFO] [stdout] test observer::code::complexity::tests::outer_functions_keep_methods_and_drop_closures ... ok
[INFO] [stdout] test observer::code::change_coupling::pair_class_tests::finding_id_is_stable_across_count_changes ... ok
[INFO] [stdout] test observer::code::change_coupling::pair_class_tests::cross_workspace_lower::demoted_pair_class_is_emitted_as_expected_advisory ... ok
[INFO] [stdout] test observer::code::change_coupling::pair_class_tests::doc_pair_demoted_not_dropped ... ok
[INFO] [stdout] test observer::code::lcom::tests::into_findings_disambiguates_same_name_class_scopes ... ok
[INFO] [stdout] test observer::code::lcom::tests::go_lcom_is_a_noop_in_v0_2 ... ok
[INFO] [stdout] test observer::code::change_coupling::pair_class_tests::into_findings_emits_for_all_pairs_lower_filters_demoted ... ok
[INFO] [stdout] test observer::code::change_coupling::pair_class_tests::lift_above_chance ... ok
[INFO] [stdout] test observer::code::lcom::tests::rust_cohesive_impl_has_one_cluster ... ok
[INFO] [stdout] test observer::code::lcom::tests::rust_split_impl_has_multiple_clusters ... ok
[INFO] [stdout] test observer::code::lcom::tests::rust_method_call_merges_clusters ... ok
[INFO] [stdout] test observer::code::lcom::tests::js_split_class_has_multiple_clusters ... ok
[INFO] [stdout] test observer::code::lcom::tests::js_cohesive_class_has_one_cluster ... ok
[INFO] [stdout] test observer::code::lcom::tests::js_method_call_merges_clusters ... ok
[INFO] [stdout] test observer::code::loc::tests::substring_safe_accepts_plain_directory_patterns ... ok
[INFO] [stdout] test observer::code::loc::tests::substring_safe_rejects_anchor_negation_comment ... ok
[INFO] [stdout] test observer::code::lcom::tests::scan_strips_project_root_from_class_file ... ok
[INFO] [stdout] test observer::code::loc::tests::substring_safe_rejects_glob_metacharacters ... ok
[INFO] [stdout] test observer::code::lcom::tests::py_cohesive_class_has_one_cluster ... ok
[INFO] [stdout] test observer::code::lcom::tests::py_split_class_has_multiple_clusters ... ok
[INFO] [stdout] test observer::code::lcom::tests::py_method_call_merges_clusters ... ok
[INFO] [stdout] test commands::metrics::tests::run_json_initialized_unfiltered_returns_ok ... ok
[INFO] [stdout] test observer::docs::corpus::tests::select_filters_to_requested_subset ... ok
[INFO] [stdout] test observer::docs::corpus::tests::read_doc_bodies_dedupes_and_skips_missing ... ok
[INFO] [stdout] test observer::docs::drift::tests::extracts_inline_identifiers_outside_fences ... ok
[INFO] [stdout] test observer::docs::drift::tests::filters_cli_flags_and_hyphenated_names ... ok
[INFO] [stdout] test observer::docs::drift::tests::filters_extensions_for_six_languages ... ok
[INFO] [stdout] test observer::docs::drift::tests::filters_file_extension_mentions ... ok
[INFO] [stdout] test observer::docs::drift::tests::filters_metric_strings_but_keeps_field_references ... ok
[INFO] [stdout] test observer::docs::drift::tests::filters_module_attribute_paths_across_languages ... ok
[INFO] [stdout] test observer::docs::drift::tests::filters_module_paths_but_keeps_type_references ... ok
[INFO] [stdout] test observer::docs::drift::tests::filters_single_char_placeholders ... ok
[INFO] [stdout] test observer::docs::drift::tests::filters_yaml_keys_and_parameterized_types ... ok
[INFO] [stdout] test observer::docs::drift::tests::ignores_non_identifier_shape ... ok
[INFO] [stdout] test observer::docs::drift::tests::mention_resolves_handles_three_segment_paths ... ok
[INFO] [stdout] test observer::docs::drift::tests::mention_resolves_requires_every_segment ... ok
[INFO] [stdout] test observer::docs::drift::tests::mention_resolves_via_decomposed_qualified_identifier ... ok
[INFO] [stdout] test observer::docs::drift::tests::mention_resolves_via_exact_match ... ok
[INFO] [stdout] test observer::docs::drift::tests::skips_double_backtick_spans ... ok
[INFO] [stdout] test observer::docs::hotspot::tests::dangling_idents_contribute_to_debt ... ok
[INFO] [stdout] test observer::docs::hotspot::tests::fresh_pair_with_no_dangling_drops_out ... ok
[INFO] [stdout] test observer::docs::hotspot::tests::hot_paired_src_with_stale_doc_outranks_quiet_pair ... ok
[INFO] [stdout] test observer::docs::hotspot::tests::multi_src_pair_sums_paired_churn ... ok
[INFO] [stdout] test observer::docs::hotspot::tests::pair_with_zero_churn_drops_out ... ok
[INFO] [stdout] test observer::code::lcom::tests::empty_class_is_skipped ... ok
[INFO] [stdout] test observer::code::lcom::tests::ts_cohesive_class_has_one_cluster ... ok
[INFO] [stdout] test observer::code::lcom::tests::ts_method_call_merges_clusters ... ok
[INFO] [stdout] test observer::docs::link_health::tests::slugify_matches_github_style ... ok
[INFO] [stdout] test observer::docs::markdown::tests::extract_links_recognises_relative_paths_and_anchors ... ok
[INFO] [stdout] test observer::docs::markdown::tests::is_external_covers_common_schemes ... ok
[INFO] [stdout] test observer::docs::markdown::tests::resolve_relative_treats_leading_slash_as_project_root ... ok
[INFO] [stdout] test observer::docs::markdown::tests::resolve_relative_collapses_dotdot ... ok
[INFO] [stdout] test observer::docs::hotspot::tests::weight_drift_amplifies_dangling_contribution ... ok
[INFO] [stdout] test observer::docs::markdown::tests::split_link_target_round_trips ... ok
[INFO] [stdout] test observer::docs::drift::tests::filters_hex_sha_fragments_but_keeps_words ... ok
[INFO] [stdout] test observer::docs::markdown::tests::iter_prose_lines_skips_fenced_blocks ... ok
[INFO] [stdout] test observer::docs::markdown::tests::strip_inline_code_borrows_when_no_backticks ... ok
[INFO] [stdout] test observer::docs::markdown::tests::strip_inline_code_handles_unclosed_backtick ... ok
[INFO] [stdout] test observer::docs::markdown::tests::strip_inline_code_keeps_utf8_outside_spans ... ok
[INFO] [stdout] test observer::docs::markdown::tests::strip_inline_code_preserves_text_outside_spans ... ok
[INFO] [stdout] test observer::docs::sections::tests::front_matter_and_empty_preamble ... ok
[INFO] [stdout] test observer::docs::sections::tests::rejects_non_headings ... ok
[INFO] [stdout] test observer::docs::sections::tests::splits_on_every_heading_level_and_ignores_fences ... ok
[INFO] [stdout] test observer::shared::file_role::tests::doc_and_source_classification ... ok
[INFO] [stdout] test observer::docs::markdown::tests::strip_inline_code_replaces_single_and_double_backtick_spans ... ok
[INFO] [stdout] test observer::shared::file_role::tests::classifies_test_paths ... ok
[INFO] [stdout] test observer::shared::file_role::tests::lockfile_and_generated_take_priority_over_test ... ok
[INFO] [stdout] test observer::shared::git::tests::head_commit_info_returns_none_outside_repo ... ok
[INFO] [stdout] test observer::code::lcom::tests::ts_split_class_has_multiple_clusters ... ok
[INFO] [stdout] test observer::shared::git::tests::head_commit_info_returns_none_on_unborn_head ... ok
[INFO] [stdout] test commands::diff::tests::old_ref_never_reuses_current_lcov_as_baseline_input ... ok
[INFO] [stdout] test observer::shared::git::tests::head_sha_returns_none_outside_repo ... ok
[INFO] [stdout] test commands::init::tests::rerun_keeps_calibration_unless_forced ... ok
[INFO] [stdout] test observer::shared::git::tests::hooks_dir_returns_none_outside_repo ... ok
[INFO] [stdout] test observer::shared::git::tests::hooks_dir_resolves_to_gitdir_hooks ... ok
[INFO] [stdout] test observer::shared::git::tests::head_sha_returns_full_oid_after_commit ... ok
[INFO] [stdout] test observer::shared::git::tests::head_sha_returns_none_on_unborn_head ... ok
[INFO] [stdout] test observer::shared::git::tests::resolve_ref_returns_none_outside_repo ... ok
[INFO] [stdout] test observer::shared::git::tests::user_signature_returns_none_outside_repo ... ok
[INFO] [stdout] test observer::shared::git::tests::head_commit_info_message_summary_is_first_line_only ... ok
[INFO] [stdout] test observer::code::tests::cache_accepts_lcom_with_duplicate_method_names ... ok
[INFO] [stdout] test observer::shared::git::tests::worktree_clean_returns_none_outside_repo ... ok
[INFO] [stdout] test observer::shared::git::tests::resolve_ref_resolves_head_and_branch_to_oid ... ok
[INFO] [stdout] test observer::shared::git::tests::head_commit_info_with_parent_records_parent_sha_and_first_parent_diff ... ok
[INFO] [stdout] test observer::shared::lang::tests::dispatches_go_extension ... ok
[INFO] [stdout] test observer::shared::lang::tests::dispatches_javascript_extensions ... ok
[INFO] [stdout] test observer::shared::lang::tests::dispatches_python_extensions ... ok
[INFO] [stdout] test observer::shared::lang::tests::dispatches_rust_extension ... ok
[INFO] [stdout] test observer::shared::lang::tests::dispatches_scala_extensions ... ok
[INFO] [stdout] test observer::shared::git::tests::worktree_clean_false_when_tracked_file_modified ... ok
[INFO] [stdout] test observer::shared::lang::tests::dispatches_tsx_extension ... ok
[INFO] [stdout] test observer::shared::lang::tests::dispatches_typescript_extensions ... ok
[INFO] [stdout] test observer::shared::lang::tests::javascript_queries_compile_and_grammar_loads ... ok
[INFO] [stdout] test observer::shared::lang::tests::go_queries_compile_and_grammar_loads ... ok
[INFO] [stdout] test observer::shared::git::tests::worktree_clean_false_when_untracked_file_present ... ok
[INFO] [stdout] test observer::shared::lang::tests::loads_grammars ... ok
[INFO] [stdout] test observer::shared::git::tests::resolve_ref_returns_none_for_unresolvable_revspec ... ok
[INFO] [stdout] test observer::shared::git::tests::user_signature_formats_name_and_email_when_both_set ... ok
[INFO] [stdout] test observer::shared::git::tests::history_generates_patches_only_for_selected_deltas ... ok
[INFO] [stdout] test observer::shared::lang::tests::rejects_extensionless_paths ... ok
[INFO] [stdout] test observer::shared::lang::tests::rejects_unsupported_extensions ... ok
[INFO] [stdout] test observer::shared::walk::tests::path_under_returns_true_when_target_unset ... ok
[INFO] [stdout] test observer::shared::walk::tests::path_under_segment_wise_match ... ok
[INFO] [stdout] test observer::shared::walk::tests::resolve_workspace_target_for_relative_paths_drops_absolute_under ... ok
[INFO] [stdout] test observer::shared::walk::tests::global_ignore_match_checks_workspace_ancestors ... ok
[INFO] [stdout] test observer::shared::walk::tests::since_cutoff_is_anchored_to_observed_ref ... ok
[INFO] [stdout] test observer::shared::git::tests::head_commit_info_root_commit_has_no_parent_and_reports_own_stats ... ok
[INFO] [stdout] test observer::shared::walk::tests::since_cutoff_saturates_for_extreme_windows ... ok
[INFO] [stdout] test observer::shared::walk::tests::workspace_boundary_rejects_absolute_parent_and_symlink_escapes ... ok
[INFO] [stdout] test observer::shared::walk::tests::workspace_walk_honors_hidden_directory_whitelist ... ok
[INFO] [stdout] test observer::shared::walk::tests::workspace_walk_preserves_gitignore_above_project_root ... ok
[INFO] [stdout] test observer::shared::walk::tests::resolve_workspace_target_joins_relative_under_for_absolute_paths ... ok
[INFO] [stdout] test observer::shared::walk::tests::resolve_workspace_target_keeps_absolute_under_unchanged ... ok
[INFO] [stdout] test observer::shared::walk::tests::workspace_walk_preserves_hidden_ancestor_filtering ... ok
[INFO] [stdout] test observer::shared::lang::tests::python_queries_compile_and_grammar_loads ... ok
[INFO] [stdout] test observer::shared::walk::tests::workspace_whitelist_cannot_reinclude_an_excluded_parent ... ok
[INFO] [stdout] test observer::shared::walk::tests::workspace_walk_preserves_symlink_and_ignored_root_filtering ... ok
[INFO] [stdout] test observer::test::cases::tests::go_tests ... ok
[INFO] [stdout] test observer::test::cases::tests::js_call_style_tests ... ok
[INFO] [stdout] test observer::test::cases::tests::js_mock_sites ... ok
[INFO] [stdout] test observer::shared::walk::tests::workspace_walk_starts_at_target_and_preserves_parent_gitignore ... ok
[INFO] [stdout] test observer::test::cases::tests::python_tests_including_decorated ... ok
[INFO] [stdout] test observer::test::cases::tests::rust_mock_identifier_needs_upper_suffix ... ok
[INFO] [stdout] test observer::test::cases::tests::rust_tests_and_ignored ... ok
[INFO] [stdout] test observer::test::cases::tests::rust_test_regions_cover_cfg_test_modules ... ok
[INFO] [stdout] test observer::test::coverage::tests::disabled_observer_emits_empty_report ... ok
[INFO] [stdout] test observer::test::coverage::tests::fallback_calibration_anchors_at_literature_defaults ... ok
[INFO] [stdout] test observer::test::coverage::tests::emits_findings_only_for_uncovered_files ... ok
[INFO] [stdout] test observer::test::coverage::tests::parses_lcov_when_enabled ... ok
[INFO] [stdout] test observer::test::hotspot::tests::churn_with_no_coverage_entry_stays_unmeasured ... ok
[INFO] [stdout] test observer::test::hotspot::tests::empty_when_no_coverage_and_no_churn ... ok
[INFO] [stdout] test observer::test::hotspot::tests::lcov_entry_outside_production_universe_cannot_become_hotspot ... ok
[INFO] [stdout] test observer::test::hotspot::tests::zero_churn_file_drops_out_even_when_uncovered ... ok
[INFO] [stdout] test observer::test::hotspot::tests::non_src_extensions_excluded_from_universe ... ok
[INFO] [stdout] test observer::test::coverage::tests::ratio_for_returns_none_for_unknown_path ... ok
[INFO] [stdout] test observer::test::hotspot::tests::fully_covered_file_drops_out ... ok
[INFO] [stdout] test observer::test::lcov::tests::missing_final_end_of_record_still_emits_record ... ok
[INFO] [stdout] test observer::test::lcov::tests::normalise_lcov_path_strips_project_prefix ... ok
[INFO] [stdout] test observer::test::lcov::tests::branch_coverage_records_are_aggregated ... ok
[INFO] [stdout] test observer::test::lcov::tests::no_instrumented_lines_returns_full_coverage ... ok
[INFO] [stdout] test observer::test::lcov::tests::duplicate_sf_records_merge_taking_max ... ok
[INFO] [stdout] test observer::test::lcov::tests::parses_minimal_two_file_record ... ok
[INFO] [stdout] test observer::test::lcov::tests::recovers_lf_lh_from_da_when_summary_missing ... ok
[INFO] [stdout] test observer::test::lcov::tests::unknown_records_and_test_names_are_ignored ... ok
[INFO] [stdout] test observer::test::skip_ratio::tests::entry_finding_summary_carries_pct ... ok
[INFO] [stdout] test observer::test::skip_ratio::tests::fallback_calibration_anchors_at_todo_thresholds ... ok
[INFO] [stdout] test observer::test::skip_ratio::tests::into_findings_skips_files_with_zero_skips ... ok
[INFO] [stdout] test observer::test::skip_ratio::tests::observer_disabled_returns_empty_report ... ok
[INFO] [stdout] test observer::test::skip_ratio::tests::python_counts_test_functions_and_skip_decorators ... ok
[INFO] [stdout] test observer::test::skip_ratio::tests::observer_emits_entry_for_test_file_with_skips ... ok
[INFO] [stdout] test observer::test::skip_ratio::tests::rust_counts_test_and_ignore_attributes ... ok
[INFO] [stdout] test observer::test::skip_ratio::tests::go_counts_test_funcs_and_dedupes_multiple_skips ... ok
[INFO] [stdout] test observer::test::coverage::tests::symlinked_lcov_is_read_error_without_external_entries ... ok
[INFO] [stdout] test observers::tests::classify_id_set_matches_into_findings ... ok
[INFO] [stdout] test observer::test::skip_ratio::tests::rust_counts_scoped_test_attributes ... ok
[INFO] [stdout] test observer::test::skip_ratio::tests::typescript_counts_it_and_skip_variants ... ok
[INFO] [stdout] test observers::tests::classify_with_missing_calibration_falls_back_to_ok ... ok
[INFO] [stdout] test observers::tests::classify_flags_hotspot_for_files_above_p90 ... ok
[INFO] [stdout] test observers::tests::classify_assigns_severity_per_metric ... ok
[INFO] [stdout] test observers::tests::disabled_docs_skip_doc_hotspot_dependencies ... ok
[INFO] [stdout] test observer::code::complexity::cognitive::tests::deeply_nested_expression_uses_bounded_thread_stack ... ok
[INFO] [stdout] test observers::tests::severity_counts_from_findings_matches_classify_count ... ok
[INFO] [stdout] test observers::tests::observation_retries_until_its_hash_is_stable ... ok
[INFO] [stdout] test observers::tests::observation_fails_after_repeated_input_changes ... ok
[INFO] [stdout] test semantic::api::tests::choice_rejects_too_few_or_too_many_options ... ok
[INFO] [stdout] test semantic::api::tests::parses_a_live_response_of_every_answer_type ... ok
[INFO] [stdout] test semantic::client::tests::ask_returns_answers_and_counts_spend ... ok
[INFO] [stdout] test observers::tests::workspace_outside_project_returns_no_observer_results ... ok
[INFO] [stdout] test semantic::client::tests::auth_failure_is_not_retried ... ok
[INFO] [stdout] test semantic::client::tests::backoff_honours_retry_after_and_caps ... ok
[INFO] [stdout] test semantic::client::tests::list_models_accepts_other_envelopes ... ok
[INFO] [stdout] test observers::tests::record_build_rejects_config_changed_after_caller_load ... ok
[INFO] [stdout] test semantic::api::tests::noul_criteria_serialize_nested ... ok
[INFO] [stdout] test semantic::client::tests::too_big_splits_the_question_set_until_it_fits ... ok
[INFO] [stdout] test semantic::client::tests::server_errors_and_rate_limits_are_retried ... ok
[INFO] [stdout] test semantic::cost::tests::budgets_sit_under_the_ceilings ... ok
[INFO] [stdout] test semantic::cost::tests::estimate_rounds_up ... ok
[INFO] [stdout] test semantic::cost::tests::one_billion_tokens_cost_forty_two_dollars ... ok
[INFO] [stdout] test semantic::client::tests::unknown_model_is_a_setup_error_not_a_split ... ok
[INFO] [stdout] test semantic::credentials::tests::blank_env_values_are_ignored ... ok
[INFO] [stdout] test semantic::credentials::tests::debug_output_masks_the_key ... ok
[INFO] [stdout] test semantic::credentials::tests::credentials_path_prefers_absolute_xdg ... ok
[INFO] [stdout] test observers::tests::lexical_parent_workspace_keeps_loc_behavior ... ok
[INFO] [stdout] test semantic::credentials::tests::clear_reports_whether_a_key_existed ... ok
[INFO] [stdout] test semantic::credentials::tests::env_wins_over_file_and_primary_var_wins ... ok
[INFO] [stdout] test semantic::lower::tests::disabled_family_is_a_no_op ... ok
[INFO] [stdout] test semantic::credentials::tests::stored_file_is_private_and_loose_mode_is_rejected ... ok
[INFO] [stdout] test semantic::credentials::tests::malformed_file_errors_never_quote_the_key ... ok
[INFO] [stdout] test observer::code::tests::non_utf8_source_path_is_analyzed_without_caching ... ok
[INFO] [stdout] test semantic::lower::tests::merge_attaches_notes_and_inherits_hotspot ... ok
[INFO] [stdout] test semantic::pacer::tests::full_bucket_pays_immediately_and_empty_bucket_waits ... ok
[INFO] [stdout] test observer::shared::git::tests::worktree_clean_true_after_clean_commit ... ok
[INFO] [stdout] test semantic::credentials::tests::mask_hides_the_middle ... ok
[INFO] [stdout] test semantic::pacer::tests::oversized_request_is_capped_at_burst ... ok
[INFO] [stdout] test semantic::client::tests::list_models_reads_the_live_envelope ... ok
[INFO] [stdout] test semantic::plan::tests::many_questions_spill_into_more_requests_under_budget ... ok
[INFO] [stdout] test semantic::pacer::tests::throttle_empties_and_slows_with_a_floor ... ok
[INFO] [stdout] test semantic::plan::tests::oversized_state_is_refused ... ok
[INFO] [stdout] test semantic::plan::tests::small_groups_fit_one_request_and_duplicates_collapse ... ok
[INFO] [stdout] test semantic::store::tests::every_on_demand_task_is_local ... ok
[INFO] [stdout] test semantic::runner::tests::dry_run_prices_without_sending_or_writing ... ok
[INFO] [stdout] test semantic::store::tests::key_changes_with_every_input ... ok
[INFO] [stdout] test semantic::runner::tests::budget_guard_stops_dispatch ... ok
[INFO] [stdout] test observers::tests::family_filter_skips_unrelated_observers_but_keeps_hotspot_dependencies ... ok
[INFO] [stdout] test semantic::runner::tests::auth_failure_is_fatal_and_reported ... ok
[INFO] [stdout] test semantic::store::tests::malformed_line_reports_its_position ... ok
[INFO] [stdout] test semantic::store::tests::round_trip_is_sorted_and_byte_stable ... ok
[INFO] [stdout] test semantic::store::tests::verdict_files_are_sorted_jsonl_only ... ok
[INFO] [stdout] test semantic::task::tests::registry_ids_match_config_allowlist ... ok
[INFO] [stdout] test semantic::store::tests::prune_removes_unreferenced_and_deletes_empty_files ... ok
[INFO] [stdout] test observer::shared::walk::tests::custom_excludes_prune_only_without_negation ... ok
[INFO] [stdout] test observer::code::tests::cache_hits_expand_capabilities_and_validate_content_not_mtime ... ok
[INFO] [stdout] test semantic::tasks::common::tests::applicable_share_ignores_the_not_applicable_level ... ok
[INFO] [stdout] test semantic::runner::tests::prune_keeps_only_current_subjects ... ok
[INFO] [stdout] test semantic::tasks::doc_concepts::tests::doc_pairs_report_keeps_every_source_above_the_cutoff ... ok
[INFO] [stdout] test semantic::runner::tests::asks_once_then_serves_from_cache ... ok
[INFO] [stdout] test semantic::tasks::common::tests::level_probs_fall_back_to_the_rounded_score ... ok
[INFO] [stdout] test semantic::tasks::concept::tests::detects_mix_misplaced_and_scatter ... ok
[INFO] [stdout] test semantic::tasks::doc_concepts::tests::overlap_lowers_duplicates_and_conflicts ... ok
[INFO] [stdout] test semantic::tasks::doc_family::tests::drift_reads_probabilities_not_the_mean_score ... ok
[INFO] [stdout] test semantic::tasks::naming::tests::name_mismatch_needs_contradiction_among_applicable_readings ... ok
[INFO] [stdout] test semantic::tasks::doc_concepts::tests::path_words_split_on_separators ... ok
[INFO] [stdout] test semantic::store::tests::duplicate_keys_resolve_to_the_smallest_line ... ok
[INFO] [stdout] test semantic::tasks::refactor::tests::split_notes_collect_low_boundaries_into_steps ... ok
[INFO] [stdout] test semantic::tasks::naming::tests::plural_forms_are_one_term ... ok
[INFO] [stdout] test semantic::tasks::naming::tests::words_split_every_case_style ... ok
[INFO] [stdout] test semantic::tasks::refactor::tests::segments_merge_short_statements_and_cap ... ok
[INFO] [stdout] test semantic::tasks::common::tests::explicit_test_paths_replace_the_naming_heuristic ... ok
[INFO] [stdout] test semantic::tasks::concept::tests::low_confidence_and_other_are_ignored ... ok
[INFO] [stdout] test semantic::tasks::test_family::tests::added_ranges_parse_hunk_headers ... ok
[INFO] [stdout] test semantic::tasks::doc_family::tests::split_and_mixed_mode ... ok
[INFO] [stdout] test semantic::tasks::test_family::tests::delete_rewrite_keep ... ok
[INFO] [stdout] test semantic::tasks::test_family::tests::identical_mock_lines_get_distinct_line_free_seeds ... ok
[INFO] [stdout] test semantic::tasks::test_family::tests::jaccard_of_word_sets ... ok
[INFO] [stdout] test semantic::tasks::verify::tests::verify_proposal_defers_on_any_no ... ok
[INFO] [stdout] test semantic::store::tests::non_shared_tasks_go_to_the_untracked_cache ... ok
[INFO] [stdout] test observer::code::tests::corrupt_unwritable_and_concurrent_cache_fall_back_to_analysis ... ok
[INFO] [stdout] test observer::shared::lang::tests::scala_queries_compile_and_grammar_loads ... ok
[INFO] [stdout] test observer::code::lcom::tests::scala_lcom_is_a_noop_in_v0_2 ... ok
[INFO] [stdout] test semantic::tasks::commit_intent::tests::keys_are_stable_across_plans ... ok
[INFO] [stdout] test observer::shared::lang::tests::cached_queries_compile_and_index ... ok
[INFO] [stdout] test semantic::tasks::verify::tests::verify_patch_plans_four_checks_and_reports_flags ... ok
[INFO] [stdout] test observer::code::tests::parallel_scan_matches_single_worker_in_input_order ... ok
[INFO] [stdout] test observer::code::complexity::cognitive::tests::long_logical_chain_preserves_in_order_operators_on_worker_stack ... ok
[INFO] [stdout] test semantic::tasks::commit_intent::tests::fix_ratio_counts_fix_commits_per_file ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 512 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.85s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/release/build/heal-cli/e115799584062130/out/heal-e115799584062130)
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_json_stdout.rs (/opt/rustwide/target/release/build/heal-cli/67523cc20ae4c4f0/out/cli_json_stdout-67523cc20ae4c4f0)
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test json_commands_write_only_json_to_stdout ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.37s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/core_config.rs (/opt/rustwide/target/release/build/heal-cli/1b36f31ec6cc6718/out/core_config-1b36f31ec6cc6718)
[INFO] [stdout] 
[INFO] [stdout] running 62 tests
[INFO] [stdout] test assign_workspace_returns_none_when_no_workspaces_declared ... ok
[INFO] [stdout] test cross_workspace_hide_round_trips ... ok
[INFO] [stdout] test cross_workspace_default_is_surface ... ok
[INFO] [stdout] test exclude_lines_translates_unanchored_workspace_excludes ... ok
[INFO] [stdout] test features_docs_enable_round_trips ... ok
[INFO] [stdout] test assign_workspace_returns_none_for_files_outside_any_workspace ... ok
[INFO] [stdout] test features_docs_freshness_rejects_unknown_field ... ok
[INFO] [stdout] test features_docs_rejects_unknown_field ... ok
[INFO] [stdout] test features_docs_default_disabled ... ok
[INFO] [stdout] test drain_spec_rejects_unknown_flag ... ok
[INFO] [stdout] test exclude_lines_preserves_workspace_negation ... ok
[INFO] [stdout] test assign_workspace_segment_wise_match_not_substring ... ok
[INFO] [stdout] test deny_unknown_fields_in_metrics ... ok
[INFO] [stdout] test drain_spec_defaults_when_omitted ... ok
[INFO] [stdout] test assign_workspace_picks_matching_workspace ... ok
[INFO] [stdout] test hotspot_floor_ok_override_round_trips ... ok
[INFO] [stdout] test drain_spec_rejects_unknown_severity ... ok
[INFO] [stdout] test drain_spec_dsl_round_trip ... ok
[INFO] [stdout] test loc_section_rejects_unknown_fields ... ok
[INFO] [stdout] test exclude_lines_translates_anchored_workspace_excludes ... ok
[INFO] [stdout] test metrics_disabled_list_round_trips ... ok
[INFO] [stdout] test legacy_per_metric_enabled_field_is_rejected ... ok
[INFO] [stdout] test observation_input_paths_reject_absolute_and_parent_escape ... ok
[INFO] [stdout] test load_missing_returns_config_missing ... ok
[INFO] [stdout] test loc_config_round_trips_with_overrides ... ok
[INFO] [stdout] test metrics_disabled_rejects_unknown_metric ... ok
[INFO] [stdout] test metrics_disabled_rejects_loc ... ok
[INFO] [stdout] test drain_spec_rejects_extra_segments ... ok
[INFO] [stdout] test empty_toml_yields_recommended_metric_defaults ... ok
[INFO] [stdout] test metrics_top_n_round_trips ... ok
[INFO] [stdout] test tier_for_cross_workspace_metric_routes_to_advisory_by_default ... ok
[INFO] [stdout] test tier_for_default_policy_buckets_findings ... ok
[INFO] [stdout] test per_metric_top_n_overrides_global ... ok
[INFO] [stdout] test tier_for_per_metric_override_replaces_global ... ok
[INFO] [stdout] test programmatic_default_matches_serde_default ... ok
[INFO] [stdout] test tier_for_sub_metric_inherits_from_parent_override ... ok
[INFO] [stdout] test tier_for_sub_metric_partial_override_fills_from_parent ... ok
[INFO] [stdout] test workspace_exclude_paths_validate_rejects_dotdot ... ok
[INFO] [stdout] test observation_input_paths_reject_direct_and_parent_symlinks ... ok
[INFO] [stdout] test workspace_metric_overrides_reject_unknown_field ... ok
[INFO] [stdout] test workspace_metric_overrides_round_trip ... ok
[INFO] [stdout] test tier_for_cross_workspace_metric_respects_explicit_override ... ok
[INFO] [stdout] test tier_for_per_metric_partial_override_inherits ... ok
[INFO] [stdout] test semantic_rejects_moving_aliases_and_bad_limits ... ok
[INFO] [stdout] test workspaces_default_is_empty ... ok
[INFO] [stdout] test save_then_load_roundtrips ... ok
[INFO] [stdout] test workspaces_legacy_primary_language_key_is_rejected ... ok
[INFO] [stdout] test workspaces_round_trip ... ok
[INFO] [stdout] test workspaces_validate_rejects_dotdot ... ok
[INFO] [stdout] test workspaces_unknown_field_rejected ... ok
[INFO] [stdout] test semantic_enabled_config_round_trips ... ok
[INFO] [stdout] test tier_for_must_takes_precedence_over_should ... ok
[INFO] [stdout] test tier_for_sub_metric_override_wins_over_parent_on_same_field ... ok
[INFO] [stdout] test workspaces_validate_rejects_empty_path ... ok
[INFO] [stdout] test workspaces_validate_rejects_absolute_path ... ok
[INFO] [stdout] test workspaces_validate_rejects_nesting ... ok
[INFO] [stdout] test workspaces_validate_rejects_duplicates ... ok
[INFO] [stderr]      Running tests/core_doc_pairs.rs (/opt/rustwide/target/release/build/heal-cli/d197ad74287d122a/out/core_doc_pairs-d197ad74287d122a)
[INFO] [stdout] test workspace_exclude_paths_validate_accepts_empty_and_comment_lines ... ok
[INFO] [stdout] test workspaces_validate_allows_sibling_prefixes ... ok
[INFO] [stdout] test workspace_exclude_paths_validate_accepts_anchored_pattern ... ok
[INFO] [stdout] test semantic_is_disabled_by_default_and_minimal_toml_omits_it ... ok
[INFO] [stdout] test validate_accepts_well_formed_gitignore_patterns ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 62 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 10 tests
[INFO] [stdout] test pair_source_serializes_snake_case ... ok
[INFO] [stdout] test live_pairs_filters_dangling_entries ... ok
[INFO] [stdout] test read_round_trips_full_entry ... ok
[INFO] [stdout] test read_treats_unknown_version_as_absent ... ok
[INFO] [stdout] test read_returns_none_when_missing ... ok
[INFO] [stdout] test read_rejects_unknown_fields ... ok
[INFO] [stdout] test integrity_check_clean_when_all_paths_exist ... ok
[INFO] [stdout] test integrity_check_reports_missing_paths ... ok
[INFO] [stdout] test read_rejects_malformed_json ... ok
[INFO] [stderr]      Running tests/core_paths.rs (/opt/rustwide/target/release/build/heal-cli/bdda60bf2393a134/out/core_paths-bdda60bf2393a134)
[INFO] [stdout] test read_rejects_symlinked_pairs_file ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 7 tests
[INFO] [stdout] test find_project_root_ignores_dot_heal_file ... ok
[INFO] [stdout] test ensure_creates_all_subdirs ... ok
[INFO] [stdout] test find_project_root_walks_up_to_ancestor_with_dot_heal ... ok
[INFO] [stdout] test ensure_is_idempotent ... ok
[INFO] [stdout] test find_project_root_returns_self_when_dot_heal_at_start ... ok
[INFO] [stdout] test find_project_root_skips_empty_dot_heal_without_config ... ok
[INFO] [stderr]      Running tests/observer_code_change_coupling.rs (/opt/rustwide/target/release/build/heal-cli/a4e17afc57248884/out/observer_code_change_coupling-a4e17afc57248884)
[INFO] [stdout] test find_project_root_falls_back_to_start_when_no_dot_heal ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test empty_when_disabled_or_outside_repo ... ok
[INFO] [stdout] test excluded_substrings_skip_paths ... ok
[INFO] [stdout] test min_coupling_filters_low_count_pairs ... ok
[INFO] [stdout] test symmetric_threshold_above_one_forces_one_way ... ok
[INFO] [stdout] test symmetric_pair_when_both_conditional_probs_high ... ok
[INFO] [stdout] test worst_n_pairs_and_files_truncate_in_existing_order ... ok
[INFO] [stdout] test counts_co_occurring_pairs ... ok
[INFO] [stdout] test bulk_commits_are_skipped ... ok
[INFO] [stdout] test one_way_pair_picks_leader_by_conditional_probability ... ok
[INFO] [stderr]      Running tests/observer_code_churn.rs (/opt/rustwide/target/release/build/heal-cli/c0660773381dec90/out/observer_code_churn-c0660773381dec90)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.18s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test returns_empty_report_outside_git_repo ... ok
[INFO] [stdout] test returns_empty_report_when_disabled ... ok
[INFO] [stdout] test excluded_substrings_skip_paths ... ok
[INFO] [stdout] test since_days_excludes_old_commits ... ok
[INFO] [stdout] test counts_commits_and_lines_per_file ... ok
[INFO] [stderr]      Running tests/observer_code_complexity.rs (/opt/rustwide/target/release/build/heal-cli/968a1ab2086aab7b/out/observer_code_complexity-968a1ab2086aab7b)
[INFO] [stdout] test workspace_scope_filters_files_and_recomputes_commits ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 18 tests
[INFO] [stdout] test extracts_all_function_shaped_scopes ... ok
[INFO] [stdout] test cognitive_else_if_chain_does_not_double_nest ... ok
[INFO] [stdout] test ccn_sums_decision_points ... ok
[INFO] [stdout] test ccn_baseline_for_empty_function_is_one ... ok
[INFO] [stdout] test cognitive_baseline_for_straight_line_is_zero ... ok
[INFO] [stdout] test nested_function_isolation ... ok
[INFO] [stdout] test cognitive_nests_with_depth ... ok
[INFO] [stdout] test cognitive_logical_chain_counts_operator_switches ... ok
[INFO] [stdout] test rust_ccn_baseline_for_empty_function_is_one ... ok
[INFO] [stdout] test rust_if_let_and_while_let_smoke ... ok
[INFO] [stdout] test rust_cognitive_baseline_for_straight_line_is_zero ... ok
[INFO] [stdout] test rust_cognitive_match_treats_arms_as_one_increment ... ok
[INFO] [stdout] test rust_cognitive_nests_with_depth ... ok
[INFO] [stdout] test rust_cognitive_try_operator_counts_as_flat_increment ... ok
[INFO] [stdout] test rust_closure_isolation_from_outer_function ... ok
[INFO] [stdout] test rust_ccn_sums_decision_points ... ok
[INFO] [stdout] test rust_cognitive_else_if_chain_does_not_double_nest ... ok
[INFO] [stdout] test tsx_grammar_parses_components ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/observer_code_complexity_observer.rs (/opt/rustwide/target/release/build/heal-cli/63788852cbf69181/out/observer_code_complexity_observer-63788852cbf69181)
[INFO] [stdout] 
[INFO] [stdout] running 7 tests
[INFO] [stdout] test from_config_inherits_excludes_and_toggles ... ok
[INFO] [stdout] test into_findings_disambiguates_same_name_same_span_functions ... ok
[INFO] [stdout] test returns_empty_report_when_both_metrics_disabled ... ok
[INFO] [stdout] test excluded_substrings_skip_files ... ok
[INFO] [stdout] test gitignore_is_respected ... ok
[INFO] [stdout] test worst_n_orders_descending_by_metric ... ok
[INFO] [stdout] test aggregates_metrics_across_typescript_and_rust ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/observer_code_duplication.rs (/opt/rustwide/target/release/build/heal-cli/31d2f6866ef5b31a/out/observer_code_duplication-31d2f6866ef5b31a)
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test empty_when_disabled ... ok
[INFO] [stdout] test markdown_duplicate_pass_skips_fenced_code_blocks ... ok
[INFO] [stdout] test markdown_duplicate_pass_detects_repeated_prose ... ok
[INFO] [stdout] test skips_when_below_min_tokens_threshold ... ok
[INFO] [stdout] test detects_cross_file_duplicate ... ok
[INFO] [stdout] test unique_files_yield_no_blocks ... ok
[INFO] [stdout] test worst_n_blocks_truncates_in_existing_order ... ok
[INFO] [stdout] test excluded_substrings_skip_files ... ok
[INFO] [stdout] test typescript_duplicates_are_detected ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/observer_code_hotspot.rs (/opt/rustwide/target/release/build/heal-cli/4128e948f482fc86/out/observer_code_hotspot-4128e948f482fc86)
[INFO] [stdout] 
[INFO] [stdout] running 7 tests
[INFO] [stdout] test compose_drops_files_missing_one_signal ... ok
[INFO] [stdout] test compose_applies_weights ... ok
[INFO] [stdout] test compose_multiplies_churn_and_ccn_sum ... ok
[INFO] [stdout] test positive_weight_changes_preserve_rank_order ... ok
[INFO] [stdout] test empty_when_disabled ... ok
[INFO] [stdout] test compose_skips_zero_ccn_or_zero_commits ... ok
[INFO] [stdout] test scan_runs_underlying_observers ... ok
[INFO] [stderr]      Running tests/observer_code_loc.rs (/opt/rustwide/target/release/build/heal-cli/b53d2cc7dd38b89d/out/observer_code_loc-b53d2cc7dd38b89d)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test from_config_can_opt_out_of_git_excludes ... ok
[INFO] [stdout] test from_config_inherits_git_excludes_by_default ... ok
[INFO] [stdout] test observer_trait_returns_loc_meta ... ok
[INFO] [stdout] test empty_tree_yields_no_primary ... ok
[INFO] [stdout] test excluded_paths_skip_files ... ok
[INFO] [stdout] test primary_picks_highest_code_non_literate_language ... ok
[INFO] [stdout] test exclude_languages_drops_entries ... ok
[INFO] [stdout] test observe_matches_scan ... ok
[INFO] [stdout] test literate_only_tree_has_no_primary_but_lists_markdown ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/observer_docs_coverage.rs (/opt/rustwide/target/release/build/heal-cli/f5c13f41b59bd259/out/observer_docs_coverage-f5c13f41b59bd259)
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test empty_when_disabled ... ok
[INFO] [stdout] test into_findings_carries_doc_in_secondary_location ... ok
[INFO] [stdout] test emits_finding_when_doc_missing_but_src_present ... ok
[INFO] [stdout] test skips_srcs_that_no_longer_exist ... ok
[INFO] [stdout] test no_finding_when_doc_present ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/observer_docs_drift.rs (/opt/rustwide/target/release/build/heal-cli/002d060781eb512b/out/observer_docs_drift-002d060781eb512b)
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test empty_when_disabled ... ok
[INFO] [stdout] test skips_identifiers_inside_code_fences ... ok
[INFO] [stdout] test ignores_when_identifier_present_in_any_paired_src ... ok
[INFO] [stdout] test emits_finding_for_dangling_identifier ... ok
[INFO] [stdout] test into_findings_attach_doc_line_and_secondary_locations ... ok
[INFO] [stdout] test unsupported_src_extensions_are_ignored ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/observer_docs_freshness.rs (/opt/rustwide/target/release/build/heal-cli/46377d6ac9196cd2/out/observer_docs_freshness-46377d6ac9196cd2)
[INFO] [stdout] 
[INFO] [stdout] running 8 tests
[INFO] [stdout] test classify_assigns_severity_against_floors ... ok
[INFO] [stdout] test empty_when_disabled ... ok
[INFO] [stdout] test empty_when_no_pairs ... ok
[INFO] [stdout] test into_findings_skips_fresh_pairs ... ok
[INFO] [stdout] test fresh_pair_has_no_src_commits_since_doc ... ok
[INFO] [stdout] test doc_only_commits_reset_the_clock ... ok
[INFO] [stdout] test counts_src_commits_after_doc_last_commit ... ok
[INFO] [stdout] test multi_src_pair_collapses_co_modified_commits ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/observer_docs_layer_b.rs (/opt/rustwide/target/release/build/heal-cli/4fb9d233919eac5c/out/observer_docs_layer_b-4fb9d233919eac5c)
[INFO] [stdout] 
[INFO] [stdout] running 16 tests
[INFO] [stdout] test todo_density_classify_floors ... ok
[INFO] [stdout] test doc_link_health_skips_targets_matching_exclude_link_prefixes ... ok
[INFO] [stdout] test orphan_pages_marks_unlinked_docs ... ok
[INFO] [stdout] test orphan_pages_treats_paired_docs_as_linked ... ok
[INFO] [stdout] test todo_density_counts_markers_outside_fences ... ok
[INFO] [stdout] test doc_link_health_flags_missing_relative_path ... ok
[INFO] [stdout] test todo_density_allowlist_paths_skips_doc_entirely ... ok
[INFO] [stdout] test doc_link_health_empty_exclude_prefix_does_not_match_every_link ... ok
[INFO] [stdout] test doc_link_health_skips_external_links ... ok
[INFO] [stdout] test orphan_pages_honors_configured_entrypoints ... ok
[INFO] [stdout] test orphan_pages_treats_readme_as_entry_point ... ok
[INFO] [stdout] test todo_density_counts_inline_code_markers_when_disabled ... ok
[INFO] [stdout] test orphan_pages_treats_index_mdx_as_entry_point ... ok
[INFO] [stdout] test doc_link_health_flags_missing_anchor_in_same_doc ... ok
[INFO] [stdout] test todo_density_skips_markers_inside_inline_code_by_default ... ok
[INFO] [stdout] test walk_standalone_docs_picks_md_drops_excluded ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/observer_test_coupling_drift.rs (/opt/rustwide/target/release/build/heal-cli/0e4f4effefe1e343/out/observer_test_coupling_drift-0e4f4effefe1e343)
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test test_pair_drift_is_disabled_when_feature_off ... ok
[INFO] [stdout] test doc_pair_does_not_drift_even_when_below_p50 ... ok
[INFO] [stdout] test test_pair_below_p50_retags_as_drift_when_feature_on ... ok
[INFO] [stdout] test drift_severity_is_medium_not_advisory ... ok
[INFO] [stdout] test test_pair_above_p50_stays_expected_when_feature_on ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/observer_test_coverage.rs (/opt/rustwide/target/release/build/heal-cli/1b738e228afecfe1/out/observer_test_coverage-1b738e228afecfe1)
[INFO] [stdout] 
[INFO] [stdout] running 10 tests
[INFO] [stdout] test unreadable_report_is_distinct_from_missing_report ... ok
[INFO] [stdout] test resolves_package_relative_sf_paths ... ok
[INFO] [stdout] test into_findings_skips_fully_covered_files ... ok
[INFO] [stdout] test merges_every_existing_lcov_path ... ok
[INFO] [stdout] test ratio_for_returns_coverage_ratio ... ok
[INFO] [stdout] test partial_report_lists_only_unmeasured_production_sources ... ok
[INFO] [stdout] test returns_empty_when_feature_disabled ... ok
[INFO] [stdout] test returns_empty_when_no_lcov_file_present ... ok
[INFO] [stdout] test single_existing_lcov_path_reads_as_before ... ok
[INFO] [stderr]      Running tests/observer_test_is_test_file.rs (/opt/rustwide/target/release/build/heal-cli/bbe7479322eb1023/out/observer_test_is_test_file-bbe7479322eb1023)
[INFO] [stdout] test colliding_entries_across_files_max_merge ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 7 tests
[INFO] [stdout] test config_test_paths_default_covers_common_conventions ... ok
[INFO] [stdout] test finding_default_is_test_file_is_false ... ok
[INFO] [stdout] test finding_with_default_is_test_file_omits_field_in_json ... ok
[INFO] [stdout] test finding_with_is_test_file_round_trips_through_json ... ok
[INFO] [stdout] test lower_all_does_not_tag_when_test_feature_disabled ... ok
[INFO] [stdout] test lower_all_tags_findings_under_test_paths ... ok
[INFO] [stderr]      Running tests/observer_test_skip_ratio.rs (/opt/rustwide/target/release/build/heal-cli/026979b65474d696/out/observer_test_skip_ratio-026979b65474d696)
[INFO] [stdout] test matcher_honours_test_paths_globs ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test lower_all_emits_no_findings_when_feature_disabled ... ok
[INFO] [stdout] test lower_all_classifies_skip_ratio_against_fallback_calibration ... ok
[INFO] [stdout] test observer_walks_test_paths_and_emits_per_language_entries ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/plugin_manifest.rs (/opt/rustwide/target/release/build/heal-cli/95977b636369224c/out/plugin_manifest-95977b636369224c)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test every_skill_is_named_after_its_directory ... ok
[INFO] [stdout] test session_start_hook_points_at_a_shipped_script ... ok
[INFO] [stdout] test plugin_and_marketplace_versions_match_the_cli ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests heal_cli
[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" "5a6e9f9237b724013ca8673a2b785996aae74ee8b1fb075d2f2c51a847a9e55a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5a6e9f9237b724013ca8673a2b785996aae74ee8b1fb075d2f2c51a847a9e55a", kill_on_drop: false }`
[INFO] [stdout] 5a6e9f9237b724013ca8673a2b785996aae74ee8b1fb075d2f2c51a847a9e55a
